diff options
author | antoniou79 | 2019-08-22 23:49:44 +0300 |
---|---|---|
committer | antoniou79 | 2019-08-22 23:50:20 +0300 |
commit | 0e691072bb352d8cfd16bd17874ca5befe3092f0 (patch) | |
tree | 1a80dd6637f7f6dd3279acb2e57dfe110c303e9f | |
parent | 06a08d9c775f305d78cd64c8db194a0c421ee415 (diff) | |
download | scummvm-rg350-0e691072bb352d8cfd16bd17874ca5befe3092f0.tar.gz scummvm-rg350-0e691072bb352d8cfd16bd17874ca5befe3092f0.tar.bz2 scummvm-rg350-0e691072bb352d8cfd16bd17874ca5befe3092f0.zip |
BLADERUNNER: Restore Animoid banter and purchases
-rw-r--r-- | engines/bladerunner/game_constants.h | 6 | ||||
-rw-r--r-- | engines/bladerunner/script/scene/ar01.cpp | 90 | ||||
-rw-r--r-- | engines/bladerunner/script/scene/ar02.cpp | 223 | ||||
-rw-r--r-- | engines/bladerunner/script/scene/rc04.cpp | 3 | ||||
-rw-r--r-- | engines/bladerunner/script/scene_script.h | 5 |
5 files changed, 289 insertions, 38 deletions
diff --git a/engines/bladerunner/game_constants.h b/engines/bladerunner/game_constants.h index a425efd7ee..36c6ab624d 100644 --- a/engines/bladerunner/game_constants.h +++ b/engines/bladerunner/game_constants.h @@ -685,7 +685,7 @@ enum Flags { // 243 is never used // 244 is never used // 245 is never used - // 246 is never used + kFlagWrongInvestigation = 246, // Re-purposed. Original: 246 is never used kFlagArrivedFromSpinner1 = 247, kFlagSpinnerAtCT01 = 248, kFlagSpinnerAtRC01 = 249, @@ -1186,7 +1186,9 @@ enum Variables { kVariablePoliceMazePS13TargetCounter = 13, kVariableMcCoyEvidenceMissed = 14, // variable 15 has no use - // variables 16 - 18 are not used + kVariableFishDealerBanterTalk = 16, // Re-purposed. Original: not used + kVariableInsectDealerBanterTalk = 17, // Re-purposed. Original: not used + kVariableHasanBanterTalk = 18, // Re-purposed. Original: not used kVariableIzoShot = 19, // has no use // variables 20 - 23 are not used kVariableBobShot = 24, // has no use 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 diff --git a/engines/bladerunner/script/scene/ar02.cpp b/engines/bladerunner/script/scene/ar02.cpp index a013c16091..81846a3be4 100644 --- a/engines/bladerunner/script/scene/ar02.cpp +++ b/engines/bladerunner/script/scene/ar02.cpp @@ -63,12 +63,12 @@ void SceneScriptAR02::InitializeScene() { Ambient_Sounds_Add_Sound(kSfxTHNDER3, 10, 180, 50, 100, 0, 0, -101, -101, 0, 0); Ambient_Sounds_Add_Sound(kSfxTHNDER4, 10, 180, 50, 100, 0, 0, -101, -101, 0, 0); if (Game_Flag_Query(kFlagSpinnerAtAR01) - && Game_Flag_Query(kFlagAR01toAR02)) { + && Game_Flag_Query(kFlagAR01toAR02)) { Scene_Loop_Start_Special(kSceneLoopModeLoseControl, 1, false); Scene_Loop_Set_Default(2); Game_Flag_Reset(kFlagAR01toAR02); } else if (!Game_Flag_Query(kFlagSpinnerAtAR01) - && Game_Flag_Query(kFlagAR01toAR02)) { + && Game_Flag_Query(kFlagAR01toAR02)) { Scene_Loop_Start_Special(kSceneLoopModeLoseControl, 0, false); Scene_Loop_Set_Default(2); Game_Flag_Reset(kFlagAR01toAR02); @@ -123,8 +123,8 @@ bool SceneScriptAR02::ClickedOnActor(int actorId) { Actor_Face_Actor(kActorMcCoy, kActorInsectDealer, true); Actor_Face_Actor(kActorInsectDealer, kActorMcCoy, true); if (Global_Variable_Query(kVariableChapter) == 2) { - if ( Game_Flag_Query(kFlagAR02InsectDealerInterviewed) - && !Game_Flag_Query(kFlagAR02InsectDealerTalk) + if (Game_Flag_Query(kFlagAR02InsectDealerInterviewed) + && !Game_Flag_Query(kFlagAR02InsectDealerTalk) ) { Game_Flag_Set(kFlagAR02InsectDealerTalk); Player_Loses_Control(); @@ -132,6 +132,9 @@ bool SceneScriptAR02::ClickedOnActor(int actorId) { ADQ_Add(kActorInsectDealer, 210, 14); Loop_Actor_Walk_To_XYZ(kActorMcCoy, -350.66f, 0.0f, -1117.19f, 0, false, false, false); Actor_Face_Actor(kActorMcCoy, kActorInsectDealer, true); + if (_vm->_cutContent) { + Actor_Says(kActorInsectDealer, 220, 14); // Doesn't she deserve a gift? + } Actor_Says(kActorMcCoy, 110, 18); Actor_Says(kActorInsectDealer, 230, 14); Actor_Says(kActorMcCoy, 115, 18); @@ -139,7 +142,7 @@ bool SceneScriptAR02::ClickedOnActor(int actorId) { Item_Pickup_Spin_Effect(kModelAnimationMaggieBracelet, 288, 257); Actor_Says(kActorInsectDealer, 250, 14); Player_Gains_Control(); - dialogueWithInsectDealer2(); + dialogueWithInsectDealerBuyBracelet(); } else if (Game_Flag_Query(kFlagAR02InsectDealerInterviewed)) { Actor_Says(kActorMcCoy, 75, 18); Actor_Says(kActorInsectDealer, 60, 12); @@ -148,15 +151,15 @@ bool SceneScriptAR02::ClickedOnActor(int actorId) { dialogueWithInsectDealer1(); } } else if (Global_Variable_Query(kVariableChapter) > 2) { - if ( Actor_Clue_Query(kActorMcCoy, kCluePeruvianLadyInterview) - && !Actor_Clue_Query(kActorMcCoy, kClueDragonflyCollection) + if (Actor_Clue_Query(kActorMcCoy, kCluePeruvianLadyInterview) + && !Actor_Clue_Query(kActorMcCoy, kClueDragonflyCollection) ) { Actor_Says(kActorMcCoy, 205, 16); Actor_Says(kActorInsectDealer, 290, 12); Actor_Says(kActorInsectDealer, 300, 13); Actor_Says(kActorMcCoy, 210, 15); Actor_Says(kActorInsectDealer, 310, 12); - Actor_Says(kActorMcCoy, 215, 13); + Actor_Says(kActorMcCoy, 215, 13); // Thanks for your help if (Game_Flag_Query(kFlagAR02DektoraBoughtScorpions)) { Actor_Says(kActorMcCoy, 220, 14); Actor_Says(kActorInsectDealer, 320, 12); @@ -170,10 +173,59 @@ bool SceneScriptAR02::ClickedOnActor(int actorId) { } Actor_Clue_Acquire(kActorMcCoy, kClueDragonflyCollection, false, kActorInsectDealer); } else { - Actor_Says(kActorMcCoy, 240, 17); - Actor_Says(kActorInsectDealer, 360, 13); - Actor_Says(kActorInsectDealer, 370, 14); - Actor_Says(kActorMcCoy, 245, 13); + // still from Act 3 and beyond + if (_vm->_cutContent) { + switch (Global_Variable_Query(kVariableInsectDealerBanterTalk)) { + case 0: + // how's business + Global_Variable_Increment(kVariableInsectDealerBanterTalk, 1); + Actor_Says(kActorMcCoy, 240, 17); // How's business? + Actor_Says(kActorInsectDealer, 360, 13); + Actor_Says(kActorInsectDealer, 370, 14); + Actor_Says(kActorMcCoy, 245, 13); + break; + case 1: + Global_Variable_Increment(kVariableInsectDealerBanterTalk, 1); + Actor_Says(kActorMcCoy, 8920, 13); // I gotta ask you a question. + Actor_Says(kActorInsectDealer, 410, 13); // Ah, perhaps you should ask someone else. + if (Player_Query_Agenda() == kPlayerAgendaSurly) { + Actor_Says(kActorMcCoy, 8450, 14); // Does this badge mean anything to you? + Actor_Says(kActorInsectDealer, 440, 14); // Please, this is all I know. + Actor_Modify_Friendliness_To_Other(kActorInsectDealer, kActorMcCoy, -5); + } + break; + case 2: + // offer to buy slug + Global_Variable_Increment(kVariableInsectDealerBanterTalk, 1); + Actor_Says(kActorMcCoy, 8520, 13); // What do you know? + Actor_Says(kActorInsectDealer, 450, 13); + if (Actor_Query_Friendliness_To_Other(kActorInsectDealer, kActorMcCoy) > 40) { + Actor_Says(kActorInsectDealer, 460, 14); + Actor_Says(kActorInsectDealer, 470, 13); // This slug, perhaps. + Item_Pickup_Spin_Effect(kModelAnimationSlug, 288, 257); + dialogueWithInsectDealerBuySlug(); + } + break; + case 3: + Global_Variable_Increment(kVariableInsectDealerBanterTalk, 1); + if (Actor_Query_Friendliness_To_Other(kActorInsectDealer, kActorMcCoy) > 45) { + Actor_Says(kActorMcCoy, 8610, 17); // What's the word, friend? + } else { + Actor_Says(kActorMcCoy, 8615, 17); // Heard anything on the street? + } + Actor_Says(kActorInsectDealer, 400, 13); // I hear very little. + break; + default: + Actor_Says(kActorMcCoy, 215, 13); + break; + } + } else { + // original behavior + Actor_Says(kActorMcCoy, 240, 17); // How's business? + Actor_Says(kActorInsectDealer, 360, 13); + Actor_Says(kActorInsectDealer, 370, 14); + Actor_Says(kActorMcCoy, 245, 13); + } } } return true; @@ -181,7 +233,7 @@ bool SceneScriptAR02::ClickedOnActor(int actorId) { } if (actorId == kActorHasan - && Global_Variable_Query(kVariableChapter) == 2 + && Global_Variable_Query(kVariableChapter) == 2 ) { if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -240.79f, 0.0f, -1328.89f, 12, true, false, false)) { Actor_Face_Actor(kActorMcCoy, kActorHasan, true); @@ -195,6 +247,58 @@ bool SceneScriptAR02::ClickedOnActor(int actorId) { dialogueWithHassan(); } } + + if (_vm->_cutContent) { + if (actorId == kActorHasan + && Global_Variable_Query(kVariableChapter) > 2) { + + if (Actor_Clue_Query(kActorMcCoy, kClueStrangeScale1) + && !Game_Flag_Query(kFlagWrongInvestigation) + ) { + dialogueWithHassan(); + } else { + switch (Global_Variable_Query(kVariableHasanBanterTalk)) { + case 0: + Global_Variable_Increment(kVariableHasanBanterTalk, 1); + Actor_Says(kActorMcCoy, 155, 13); // How's business? + Actor_Says(kActorHasan, 10, 13); + Actor_Says(kActorHasan, 20, 14); + break; + case 1: + Global_Variable_Increment(kVariableHasanBanterTalk, 1); + Actor_Says(kActorMcCoy, 6980, 13); // What's the word + Actor_Says(kActorHasan, 290, 13); + if (Actor_Query_Friendliness_To_Other(kActorHasan, kActorMcCoy) > 49) { + Actor_Says(kActorHasan, 300, 14); + Actor_Says(kActorHasan, 310, 13); + Item_Pickup_Spin_Effect(kModelAnimationGarterSnake, 328, 237); // TODO check co-ordinates + dialogueWithHassanBuySnake(); + } + break; + case 2: + // offer to buy snake + Global_Variable_Increment(kVariableHasanBanterTalk, 1); + if (Player_Query_Agenda() == kPlayerAgendaSurly + || Actor_Query_Friendliness_To_Other(kActorHasan, kActorMcCoy) <= 49 ) { + Actor_Says(kActorMcCoy, 8915, 14); // You got a minute, pal? + Actor_Says(kActorHasan, 260, 14); // My time is quite valuable, noble one + Actor_Modify_Friendliness_To_Other(kActorHasan, kActorMcCoy, -5); + } else { + Actor_Says(kActorMcCoy, 8615, 13); // Heard anything on the street? + Actor_Says(kActorHasan, 250, 13); // I'm afraid not, noble one. But you shall surely be the first to know, if I do hear something. + } + break; + default: + if (Actor_Query_Friendliness_To_Other(kActorHasan, kActorMcCoy) <= 45 ) { + Actor_Says(kActorMcCoy, 8940, 13); + } else { + Actor_Says(kActorMcCoy, 1315, 13); + } + break; + } + } + } + } return false; } @@ -280,13 +384,13 @@ void SceneScriptAR02::DialogueQueueFlushed(int a1) { void SceneScriptAR02::dialogueWithInsectDealer1() { Dialogue_Menu_Clear_List(); if (Actor_Clue_Query(kActorMcCoy, kClueDragonflyEarring) - || Actor_Clue_Query(kActorMcCoy, kClueBombingSuspect) + || Actor_Clue_Query(kActorMcCoy, kClueBombingSuspect) ) { DM_Add_To_List_Never_Repeat_Once_Selected(490, 3, 5, 5); // EARRING } - if ( Actor_Clue_Query(kActorMcCoy, kClueDragonflyAnklet) - && !Actor_Clue_Query(kActorMcCoy, kClueDragonflyEarring) - && !Actor_Clue_Query(kActorMcCoy, kClueBombingSuspect) + if (Actor_Clue_Query(kActorMcCoy, kClueDragonflyAnklet) + && !Actor_Clue_Query(kActorMcCoy, kClueDragonflyEarring) + && !Actor_Clue_Query(kActorMcCoy, kClueBombingSuspect) ) { DM_Add_To_List_Never_Repeat_Once_Selected(500, 3, 5, 5); // ANKLET } @@ -333,16 +437,16 @@ void SceneScriptAR02::dialogueWithInsectDealer1() { break; case 520: // DONE - Actor_Says(kActorMcCoy, 215, 16); + Actor_Says(kActorMcCoy, 215, 16); // Thanks for your help. break; } } -void SceneScriptAR02::dialogueWithInsectDealer2() { +void SceneScriptAR02::dialogueWithInsectDealerBuyBracelet() { Dialogue_Menu_Clear_List(); if (Global_Variable_Query(kVariableChinyen) >= 15 - || Query_Difficulty_Level() == kGameDifficultyEasy + || Query_Difficulty_Level() == kGameDifficultyEasy ) { DM_Add_To_List_Never_Repeat_Once_Selected(530, 7, 5, 3); // BUY } @@ -370,6 +474,39 @@ void SceneScriptAR02::dialogueWithInsectDealer2() { } } +/** +* This is only for cut content (purchasing the Electric Slug) +*/ +void SceneScriptAR02::dialogueWithInsectDealerBuySlug() { + 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) >= 85 + || 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, 85); + } + Actor_Clue_Acquire(kActorMcCoy, kClueSlug, true, kActorInsectDealer); + Actor_Modify_Friendliness_To_Other(kActorInsectDealer, kActorMcCoy, 5); + } else if (answerValue == 540) { // NO THANKS + Actor_Says(kActorMcCoy, 7005, 13); + Actor_Modify_Friendliness_To_Other(kActorInsectDealer, kActorMcCoy, -5); + } +} + void SceneScriptAR02::dialogueWithHassan() { Dialogue_Menu_Clear_List(); if (Actor_Clue_Query(kActorMcCoy, kClueStrangeScale1)) { @@ -386,7 +523,7 @@ void SceneScriptAR02::dialogueWithHassan() { switch (answerValue) { case 550: // SCALE - Actor_Says(kActorMcCoy, 145, 11); + Actor_Says(kActorMcCoy, 145, 11); // This your work? Actor_Says(kActorHasan, 30, 11); Actor_Says(kActorMcCoy, 160, 11); Actor_Says(kActorHasan, 40, 11); @@ -395,6 +532,9 @@ void SceneScriptAR02::dialogueWithHassan() { Actor_Says(kActorMcCoy, 170, 11); Actor_Says(kActorHasan, 60, 11); Actor_Says(kActorMcCoy, 175, 11); + if (_vm->_cutContent) { + Game_Flag_Set(kFlagWrongInvestigation); + } Game_Flag_Set(kFlagNotUsed370); break; @@ -411,9 +551,9 @@ void SceneScriptAR02::dialogueWithHassan() { Actor_Says(kActorHasan, 190, 11); Actor_Says(kActorHasan, 200, 11); Actor_Says(kActorMcCoy, 200, 11); - Actor_Says(kActorHasan, 210, 11); - Actor_Says(kActorHasan, 220, 11); - Actor_Says(kActorHasan, 230, 11); + Actor_Says(kActorHasan, 210, 11); // Perhaps you should ask the Peruvian woman next door. + Actor_Says(kActorHasan, 220, 11); // She's an expert on such things + Actor_Says(kActorHasan, 230, 11); // and will cut a wonderful deal to friends. Game_Flag_Set(kFlagNotUsed370); break; @@ -429,10 +569,43 @@ void SceneScriptAR02::dialogueWithHassan() { Actor_Modify_Friendliness_To_Other(kActorHasan, kActorMcCoy, -1); Actor_Clue_Acquire(kActorMcCoy, kClueHasanInterview, false, kActorHasan); } else { - Actor_Says(kActorMcCoy, 1315, 11); + Actor_Says(kActorMcCoy, 1315, 11); // Thanks for your time } break; } } +/** +* This is only for cut content (purchasing the Garter Snake) +*/ +void SceneScriptAR02::dialogueWithHassanBuySnake() { + 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) >= 105 + || 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, 105); + } + Actor_Clue_Acquire(kActorMcCoy, kClueGarterSnake, true, kActorHasan); + Actor_Modify_Friendliness_To_Other(kActorHasan, kActorMcCoy, 5); + } else if (answerValue == 540) { // NO THANKS + Actor_Says(kActorMcCoy, 7005, 13); + Actor_Modify_Friendliness_To_Other(kActorHasan, kActorMcCoy, -5); + } +} + } // End of namespace BladeRunner diff --git a/engines/bladerunner/script/scene/rc04.cpp b/engines/bladerunner/script/scene/rc04.cpp index 8efdaf4a24..4b4e31b014 100644 --- a/engines/bladerunner/script/scene/rc04.cpp +++ b/engines/bladerunner/script/scene/rc04.cpp @@ -209,6 +209,9 @@ void SceneScriptRC04::dialogueWithBulletBob() { Actor_Says(kActorMcCoy, 5040, 16); Actor_Says(kActorBulletBob, 550, 11); Actor_Modify_Friendliness_To_Other(kActorBulletBob, kActorMcCoy, -6); + if (_vm->_cutContent) { + Actor_Modify_Friendliness_To_Other(kActorHasan, kActorMcCoy, 6); + } Game_Flag_Set(kFlagMcCoyTalkedToBulletBobAboutHasan); break; diff --git a/engines/bladerunner/script/scene_script.h b/engines/bladerunner/script/scene_script.h index f5abd45de0..8fd586ae03 100644 --- a/engines/bladerunner/script/scene_script.h +++ b/engines/bladerunner/script/scene_script.h @@ -71,12 +71,15 @@ private: #define END_SCRIPT }; DECLARE_SCRIPT(AR01) + void dialogueWithFishDealerBuyGoldfish(); END_SCRIPT DECLARE_SCRIPT(AR02) void dialogueWithInsectDealer1(); - void dialogueWithInsectDealer2(); + void dialogueWithInsectDealerBuyBracelet(); + void dialogueWithInsectDealerBuySlug(); void dialogueWithHassan(); + void dialogueWithHassanBuySnake(); END_SCRIPT DECLARE_SCRIPT(BB01) |