aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorantoniou792019-08-22 23:49:44 +0300
committerantoniou792019-08-22 23:50:20 +0300
commit0e691072bb352d8cfd16bd17874ca5befe3092f0 (patch)
tree1a80dd6637f7f6dd3279acb2e57dfe110c303e9f
parent06a08d9c775f305d78cd64c8db194a0c421ee415 (diff)
downloadscummvm-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.h6
-rw-r--r--engines/bladerunner/script/scene/ar01.cpp90
-rw-r--r--engines/bladerunner/script/scene/ar02.cpp223
-rw-r--r--engines/bladerunner/script/scene/rc04.cpp3
-rw-r--r--engines/bladerunner/script/scene_script.h5
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)