diff options
-rw-r--r-- | engines/bladerunner/game_constants.h | 2 | ||||
-rw-r--r-- | engines/bladerunner/script/ai/zuben.cpp | 22 | ||||
-rw-r--r-- | engines/bladerunner/script/scene/ct02.cpp | 1 | ||||
-rw-r--r-- | engines/bladerunner/script/scene/rc02.cpp | 30 |
4 files changed, 41 insertions, 14 deletions
diff --git a/engines/bladerunner/game_constants.h b/engines/bladerunner/game_constants.h index 0e22648453..9e481d0d35 100644 --- a/engines/bladerunner/game_constants.h +++ b/engines/bladerunner/game_constants.h @@ -491,7 +491,7 @@ enum Flags { kFlagPS09GrigorianTalk1 = 49, kFlagPS09GrigorianVKChosen = 50, // re-purposed, original is never used kFlagGrigorianDislikeMcCoy = 51, - // 52 is never used + kFlagRC02McCoyCommentsOnVideoScreens = 52, // re-purposed, original is never used kFlagPS09GrigorianDialogue = 53, kFlagPS09GrigorianTalk2 = 54, kFlagGrigorianArrested = 55, diff --git a/engines/bladerunner/script/ai/zuben.cpp b/engines/bladerunner/script/ai/zuben.cpp index 38f7f3e01c..15d7e54605 100644 --- a/engines/bladerunner/script/ai/zuben.cpp +++ b/engines/bladerunner/script/ai/zuben.cpp @@ -554,25 +554,25 @@ bool AIScriptZuben::GoalChanged(int currentGoalNumber, int newGoalNumber) { switch (Random_Query(1, 8)) { case 1: AI_Movement_Track_Flush(kActorZuben); - AI_Movement_Track_Append(kActorZuben, 490, 0); + AI_Movement_Track_Append(kActorZuben, 490, 0); // kSetNR01 AI_Movement_Track_Append(kActorZuben, 491, 8); AI_Movement_Track_Append(kActorZuben, 492, 2); AI_Movement_Track_Append(kActorZuben, 493, 5); AI_Movement_Track_Append(kActorZuben, 494, 0); - AI_Movement_Track_Append(kActorZuben, 39, 10); - AI_Movement_Track_Append(kActorZuben, 33, Random_Query(15, 45)); - AI_Movement_Track_Append(kActorZuben, 39, 10); + AI_Movement_Track_Append(kActorZuben, 39, 10); // kSetFreeSlotG + AI_Movement_Track_Append(kActorZuben, 33, Random_Query(15, 45)); // kSetFreeSlotA + AI_Movement_Track_Append(kActorZuben, 39, 10); // kSetFreeSlotG AI_Movement_Track_Repeat(kActorZuben); break; case 2: AI_Movement_Track_Flush(kActorZuben); - AI_Movement_Track_Append(kActorZuben, 495, 0); + AI_Movement_Track_Append(kActorZuben, 495, 0); // kSetNR02 AI_Movement_Track_Append(kActorZuben, 496, 0); AI_Movement_Track_Append(kActorZuben, 33, Random_Query(15, 45)); AI_Movement_Track_Repeat(kActorZuben); break; case 3: - AI_Movement_Track_Append(kActorZuben, 498, 0); + AI_Movement_Track_Append(kActorZuben, 498, 0); // kSetNR03 AI_Movement_Track_Append(kActorZuben, 497, 0); AI_Movement_Track_Append(kActorZuben, 39, 10); AI_Movement_Track_Append(kActorZuben, 33, 30); @@ -581,7 +581,7 @@ bool AIScriptZuben::GoalChanged(int currentGoalNumber, int newGoalNumber) { break; case 4: AI_Movement_Track_Flush(kActorZuben); - AI_Movement_Track_Append(kActorZuben, 499, 2); + AI_Movement_Track_Append(kActorZuben, 499, 2); // kSetNR05_NR08 AI_Movement_Track_Append(kActorZuben, 500, 3); AI_Movement_Track_Append(kActorZuben, 499, 2); AI_Movement_Track_Append(kActorZuben, 39, 10); @@ -591,7 +591,7 @@ bool AIScriptZuben::GoalChanged(int currentGoalNumber, int newGoalNumber) { break; case 5: AI_Movement_Track_Flush(kActorZuben); - AI_Movement_Track_Append(kActorZuben, 503, 0); + AI_Movement_Track_Append(kActorZuben, 503, 0); // kSetNR05_NR08 AI_Movement_Track_Append(kActorZuben, 504, 0); AI_Movement_Track_Append(kActorZuben, 505, 5); AI_Movement_Track_Append(kActorZuben, 39, 10); @@ -601,7 +601,7 @@ bool AIScriptZuben::GoalChanged(int currentGoalNumber, int newGoalNumber) { break; case 6: AI_Movement_Track_Flush(kActorZuben); - AI_Movement_Track_Append(kActorZuben, 508, 0); + AI_Movement_Track_Append(kActorZuben, 508, 0); // kSetHF01 AI_Movement_Track_Append(kActorZuben, 509, 2); AI_Movement_Track_Append(kActorZuben, 39, 10); AI_Movement_Track_Append(kActorZuben, 33, 30); @@ -610,7 +610,7 @@ bool AIScriptZuben::GoalChanged(int currentGoalNumber, int newGoalNumber) { break; case 7: AI_Movement_Track_Flush(kActorZuben); - AI_Movement_Track_Append(kActorZuben, 514, 0); + AI_Movement_Track_Append(kActorZuben, 514, 0); // kSetHF03 AI_Movement_Track_Append(kActorZuben, 515, 0); AI_Movement_Track_Append(kActorZuben, 39, 10); AI_Movement_Track_Append(kActorZuben, 33, 30); @@ -619,7 +619,7 @@ bool AIScriptZuben::GoalChanged(int currentGoalNumber, int newGoalNumber) { break; case 8: AI_Movement_Track_Flush(kActorZuben); - AI_Movement_Track_Append(kActorZuben, 510, 0); + AI_Movement_Track_Append(kActorZuben, 510, 0); // kSetHF01 AI_Movement_Track_Append(kActorZuben, 511, 0); AI_Movement_Track_Append(kActorZuben, 39, 10); AI_Movement_Track_Append(kActorZuben, 33, 40); diff --git a/engines/bladerunner/script/scene/ct02.cpp b/engines/bladerunner/script/scene/ct02.cpp index f143e989de..07907d1fff 100644 --- a/engines/bladerunner/script/scene/ct02.cpp +++ b/engines/bladerunner/script/scene/ct02.cpp @@ -288,6 +288,7 @@ bool SceneScriptCT02::ClickedOnExit(int exitId) { bool SceneScriptCT02::ClickedOn2DRegion(int region) { if (_vm->_cutContent + && Global_Variable_Query(kVariableChapter) == 1 && Game_Flag_Query(kFlagCT02McCoyShouldCommentOnDumpedSoup) && (region == 0 || region == 1) ) { diff --git a/engines/bladerunner/script/scene/rc02.cpp b/engines/bladerunner/script/scene/rc02.cpp index e307fdf1dc..3aa8cc33b5 100644 --- a/engines/bladerunner/script/scene/rc02.cpp +++ b/engines/bladerunner/script/scene/rc02.cpp @@ -39,6 +39,11 @@ void SceneScriptRC02::InitializeScene() { if (Game_Flag_Query(kFlagRC51Available)) { Scene_Exit_Add_2D_Exit(kRC02ExitRC51, 265, 58, 346, 154, 0); } + if (_vm->_cutContent + && Global_Variable_Query(kVariableChapter) == 1 + && !Game_Flag_Query(kFlagRC02McCoyCommentsOnVideoScreens)) { + Scene_2D_Region_Add(0, 187, 104, 235, 150);// broken screen + } Ambient_Sounds_Remove_All_Non_Looping_Sounds(false); Ambient_Sounds_Add_Looping_Sound(kSfxBRBED5, 50, 1, 1); Ambient_Sounds_Add_Looping_Sound(kSfxWINDLOP8, 75, 1, 1); @@ -164,8 +169,8 @@ bool SceneScriptRC02::ClickedOn3DObject(const char *objectName, bool a2) { } if (_vm->_cutContent - && !Game_Flag_Query(kFlagMcCoyCommentsOnMurderedAnimals) && Global_Variable_Query(kVariableChapter) == 1 + && !Game_Flag_Query(kFlagMcCoyCommentsOnMurderedAnimals) && !Actor_Clue_Query(kActorMcCoy, kClueLabCorpses) && (Object_Query_Click("DRAPE01", objectName) || Object_Query_Click("DRAPE02", objectName) @@ -175,6 +180,15 @@ bool SceneScriptRC02::ClickedOn3DObject(const char *objectName, bool a2) { || Object_Query_Click("DRAPE06", objectName) || Object_Query_Click("DRAPE07", objectName)) ) { + if (Player_Query_Agenda() == kPlayerAgendaSurly + || (Player_Query_Agenda() == kPlayerAgendaErratic && Random_Query(0, 1) == 1) + ) { + Actor_Voice_Over(1940, kActorVoiceOver); + } else { + Actor_Voice_Over(9010, kActorMcCoy); + Actor_Voice_Over(9015, kActorMcCoy); + Actor_Voice_Over(9020, kActorMcCoy); + } Game_Flag_Set(kFlagMcCoyCommentsOnMurderedAnimals); Unclickable_Object("DRAPE01"); Unclickable_Object("DRAPE02"); @@ -183,7 +197,6 @@ bool SceneScriptRC02::ClickedOn3DObject(const char *objectName, bool a2) { Unclickable_Object("DRAPE05"); Unclickable_Object("DRAPE06"); Unclickable_Object("DRAPE07"); - Actor_Voice_Over(1940, kActorVoiceOver); return true; } return false; @@ -436,6 +449,19 @@ bool SceneScriptRC02::ClickedOnExit(int exitId) { } bool SceneScriptRC02::ClickedOn2DRegion(int region) { + + if (_vm->_cutContent + && Global_Variable_Query(kVariableChapter) == 1 + && !Game_Flag_Query(kFlagRC02McCoyCommentsOnVideoScreens) + && region == 0 + ) { + Game_Flag_Set(kFlagRC02McCoyCommentsOnVideoScreens); + Scene_2D_Region_Remove(0); + Actor_Voice_Over(9025, kActorMcCoy); + Actor_Voice_Over(9030, kActorMcCoy); + Actor_Voice_Over(9035, kActorMcCoy); + return true; + } return false; } |