diff options
Diffstat (limited to 'engines/bladerunner/script/scene/ar01.cpp')
-rw-r--r-- | engines/bladerunner/script/scene/ar01.cpp | 90 |
1 files changed, 80 insertions, 10 deletions
diff --git a/engines/bladerunner/script/scene/ar01.cpp b/engines/bladerunner/script/scene/ar01.cpp index 227ed73a2b..edc18bb46c 100644 --- a/engines/bladerunner/script/scene/ar01.cpp +++ b/engines/bladerunner/script/scene/ar01.cpp @@ -182,9 +182,10 @@ bool SceneScriptAR01::ClickedOnActor(int actorId) { Game_Flag_Set(kFlagAR01FishDealerTalk); Actor_Set_Goal_Number(kActorFishDealer, 1); } else { - if ( Actor_Clue_Query(kActorMcCoy, kClueStrangeScale1) - && !Actor_Clue_Query(kActorMcCoy, kClueFishLadyInterview) - ) { + if (Actor_Clue_Query(kActorMcCoy, kClueStrangeScale1) + && !Actor_Clue_Query(kActorMcCoy, kClueFishLadyInterview) + && (!_vm->_cutContent || !Game_Flag_Query(kFlagWrongInvestigation)) + ) { Actor_Says(kActorMcCoy, 40, 11); Actor_Says(kActorFishDealer, 120, 14); Actor_Says(kActorMcCoy, 45, 17); @@ -198,14 +199,50 @@ bool SceneScriptAR01::ClickedOnActor(int actorId) { Actor_Clue_Acquire(kActorMcCoy, kClueFishLadyInterview, true, kActorFishDealer); #endif // BLADERUNNER_ORIGINAL_BUGS } else { - if (Random_Query(1, 2) == 1) { - Actor_Says(kActorMcCoy, 30, 17); - Actor_Says(kActorFishDealer, 100, 14); - Actor_Says(kActorFishDealer, 110, 14); - Actor_Says(kActorMcCoy, 35, 13); + if (_vm->_cutContent) { + switch (Global_Variable_Query(kVariableFishDealerBanterTalk)) { + case 0: + Global_Variable_Increment(kVariableFishDealerBanterTalk, 1); + Actor_Says(kActorFishDealer, 230, 14); + Item_Pickup_Spin_Effect(kModelAnimationGoldfish, 88, 400); // TODO check co-ordinates + dialogueWithFishDealerBuyGoldfish(); + break; + case 1: + Global_Variable_Increment(kVariableFishDealerBanterTalk, 1); + if (Player_Query_Agenda() == kPlayerAgendaSurly + || Actor_Query_Friendliness_To_Other(kActorFishDealer, kActorMcCoy) <= 45 ) { + Actor_Says(kActorMcCoy, 8600, 17); // You keeping busy, pal? + Actor_Says(kActorFishDealer, 180, 14); // I can't stand all day gabbing away. My fish require attention. + Actor_Says(kActorMcCoy, 8450, 14); // Does this badge mean anything to you? + Actor_Says(kActorFishDealer, 190, 14); // Ah! You think you get better info somewhere else? You welcome to try. + } else { + Actor_Says(kActorMcCoy, 8514, 11); // Got anything new to tell me? + Actor_Says(kActorFishDealer, 170, 14); // Afraid not. But been busy today. Maybe you ask me later. + } + break; + + default: + if (Random_Query(1, 2) == 1) { + Actor_Says(kActorMcCoy, 30, 17); + Actor_Says(kActorFishDealer, 100, 14); + Actor_Says(kActorFishDealer, 110, 14); + Actor_Says(kActorMcCoy, 35, 13); + } else { + Actor_Says(kActorMcCoy, 30, 17); + Actor_Says(kActorFishDealer, 220, 14); + } + } } else { - Actor_Says(kActorMcCoy, 30, 17); - Actor_Says(kActorFishDealer, 220, 14); + // original behavior + if (Random_Query(1, 2) == 1) { + Actor_Says(kActorMcCoy, 30, 17); + Actor_Says(kActorFishDealer, 100, 14); + Actor_Says(kActorFishDealer, 110, 14); + Actor_Says(kActorMcCoy, 35, 13); + } else { + Actor_Says(kActorMcCoy, 30, 17); + Actor_Says(kActorFishDealer, 220, 14); + } } } Actor_Set_Goal_Number(kActorFishDealer, 1); @@ -437,4 +474,37 @@ void SceneScriptAR01::PlayerWalkedOut() { void SceneScriptAR01::DialogueQueueFlushed(int a1) { } +/** +* This is only for cut content (purchasing the Goldfish) +*/ +void SceneScriptAR01::dialogueWithFishDealerBuyGoldfish() { + Dialogue_Menu_Clear_List(); + + Dialogue_Menu_Clear_Never_Repeat_Was_Selected_Flag(530); + Dialogue_Menu_Clear_Never_Repeat_Was_Selected_Flag(540); + + if (Global_Variable_Query(kVariableChinyen) >= 75 + || Query_Difficulty_Level() == kGameDifficultyEasy + ) { + DM_Add_To_List_Never_Repeat_Once_Selected(530, 7, 5, 3); // BUY + } + DM_Add_To_List_Never_Repeat_Once_Selected(540, 3, 5, 7); // NO THANKS + + Dialogue_Menu_Appear(320, 240); + int answerValue = Dialogue_Menu_Query_Input(); + Dialogue_Menu_Disappear(); + + if (answerValue == 530) { // BUY + Actor_Says(kActorMcCoy, 7000, 12); + if (Query_Difficulty_Level() != kGameDifficultyEasy) { + Global_Variable_Decrement(kVariableChinyen, 75); + } + Actor_Clue_Acquire(kActorMcCoy, kClueGoldfish, true, kActorFishDealer); + Actor_Modify_Friendliness_To_Other(kActorFishDealer, kActorMcCoy, 5); + } else if (answerValue == 540) { // NO THANKS + Actor_Says(kActorMcCoy, 7005, 13); + Actor_Modify_Friendliness_To_Other(kActorFishDealer, kActorMcCoy, -5); + } +} + } // End of namespace BladeRunner |