aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/bladerunner/game_constants.h2
-rw-r--r--engines/bladerunner/script/ai/zuben.cpp22
-rw-r--r--engines/bladerunner/script/scene/ct02.cpp1
-rw-r--r--engines/bladerunner/script/scene/rc02.cpp30
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;
}