aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThanasis Antoniou2019-03-26 16:27:18 +0200
committerThanasis Antoniou2019-03-26 16:27:18 +0200
commit831072d809016a9e6d3c85c8fc9ce6751125b8e6 (patch)
treed4c1a284bb96a40f5002f0adada92d13f6fe3fb1
parent805dc466d02344a1368181f3cb852771d64a48a9 (diff)
downloadscummvm-rg350-831072d809016a9e6d3c85c8fc9ce6751125b8e6.tar.gz
scummvm-rg350-831072d809016a9e6d3c85c8fc9ce6751125b8e6.tar.bz2
scummvm-rg350-831072d809016a9e6d3c85c8fc9ce6751125b8e6.zip
BLADERUNNER: Fix Dektora showing up dead at moonbus
-rw-r--r--engines/bladerunner/script/ai/dektora.cpp4
-rw-r--r--engines/bladerunner/script/scene/rc03.cpp38
-rw-r--r--engines/bladerunner/script/scene/ug04.cpp6
3 files changed, 39 insertions, 9 deletions
diff --git a/engines/bladerunner/script/ai/dektora.cpp b/engines/bladerunner/script/ai/dektora.cpp
index 7da4b97200..9d721e31cc 100644
--- a/engines/bladerunner/script/ai/dektora.cpp
+++ b/engines/bladerunner/script/ai/dektora.cpp
@@ -194,14 +194,14 @@ void AIScriptDektora::ReceivedClue(int clueId, int fromActorId) {
void AIScriptDektora::ClickedByPlayer() {
if (Actor_Query_Goal_Number(kActorDektora) == kGoalDektoraGone) {
Actor_Face_Actor(0, kActorDektora, true);
- Actor_Says(kActorMcCoy, 8630, 12);
+ Actor_Says(kActorMcCoy, 8630, 12); // What a waste
return; //true;
}
if (Actor_Query_Goal_Number(kActorDektora) < kGoalDektoraStartChapter3) {
Actor_Face_Actor(kActorMcCoy, kActorDektora, true);
- Actor_Says(kActorMcCoy, 8590, 13);
+ Actor_Says(kActorMcCoy, 8590, 13); // Not the talkative type
}
if (Actor_Query_Goal_Number(kActorDektora) == kGoalDektoraNR08Dance) {
diff --git a/engines/bladerunner/script/scene/rc03.cpp b/engines/bladerunner/script/scene/rc03.cpp
index fd18b8a460..c37edd586b 100644
--- a/engines/bladerunner/script/scene/rc03.cpp
+++ b/engines/bladerunner/script/scene/rc03.cpp
@@ -82,7 +82,9 @@ void SceneScriptRC03::InitializeScene() {
if (Game_Flag_Query(kFlagHC04toRC03)
&& Actor_Query_Goal_Number(kActorIzo) != kGoalIzoWaitingAtRC03
) {
- Scene_Loop_Start_Special(kSceneLoopModeLoseControl, 0, false);
+ if (Random_Query(1, 3) == 1) { // enhancement: don't always play this scene when exiting Hawker's Circle
+ Scene_Loop_Start_Special(kSceneLoopModeLoseControl, 0, false);
+ }
}
Scene_Loop_Set_Default(1);
}
@@ -140,18 +142,26 @@ bool SceneScriptRC03::ClickedOnItem(int itemId, bool a2) {
}
bool SceneScriptRC03::ClickedOnExit(int exitId) {
- if (exitId == 0) {
+ if (exitId == 0) { // To Runciter's shop
if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, 298.0f, -4.0f, 405.0f, 0, true, false, 0)) {
if (Game_Flag_Query(kFlagRC04McCoyShotBob)) {
Game_Flag_Set(kFlagBulletBobDead);
}
Game_Flag_Set(kFlagRC03toRC01);
Set_Enter(kSetRC01, kSceneRC01);
+#if BLADERUNNER_ORIGINAL_BUGS
Actor_Set_Goal_Number(kActorDektora, kGoalDektoraStartWalkingAround);
+#else
+ // Restrict Dektora's "walking around" goal only in Chapter 2
+ // this is a bug fix for the case where Dektora's goal gets reset from kGoalDektoraGone in Chapter 4/5
+ if (Global_Variable_Query(kVariableChapter) == 2 ) {
+ Actor_Set_Goal_Number(kActorDektora, kGoalDektoraStartWalkingAround);
+ }
+#endif // BLADERUNNER_ORIGINAL_BUGS
}
return true;
}
- if (exitId == 1) {
+ if (exitId == 1) { // to Animoid Row (Scorpion/Insect Lady)
if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -469.0f, -4.0f, 279.0f, 0, true, false, 0)) {
if (Game_Flag_Query(kFlagRC04McCoyShotBob)) {
Game_Flag_Set(kFlagBulletBobDead);
@@ -163,7 +173,7 @@ bool SceneScriptRC03::ClickedOnExit(int exitId) {
}
return true;
}
- if (exitId == 2) {
+ if (exitId == 2) { // to sewers
if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, 147.51f, -4.0f, 166.48f, 0, true, false, 0)) {
Game_Flag_Set(kFlagRC03toUG01);
Game_Flag_Reset(kFlagMcCoyInRunciters);
@@ -172,11 +182,19 @@ bool SceneScriptRC03::ClickedOnExit(int exitId) {
Game_Flag_Set(kFlagBulletBobDead);
}
Set_Enter(kSetUG01, kSceneUG01);
+#if BLADERUNNER_ORIGINAL_BUGS
Actor_Set_Goal_Number(kActorDektora, kGoalDektoraStartWalkingAround);
+#else
+ // Restrict Dektora's "walking around" goal only in Chapter 2
+ // this is a bug fix for the case where Dektora's goal gets reset from kGoalDektoraGone in Chapter 4/5
+ if (Global_Variable_Query(kVariableChapter) == 2 ) {
+ Actor_Set_Goal_Number(kActorDektora, kGoalDektoraStartWalkingAround);
+ }
+#endif // BLADERUNNER_ORIGINAL_BUGS
}
return true;
}
- if (exitId == 3) {
+ if (exitId == 3) { // to Hawker's Circle (Mama Izabella's Kingston Kitchen)
if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -487.0f, 1.0f, 116.0f, 0, true, false, 0)) {
Game_Flag_Set(kFlagRC03toHC04);
Game_Flag_Reset(kFlagMcCoyInRunciters);
@@ -185,11 +203,19 @@ bool SceneScriptRC03::ClickedOnExit(int exitId) {
Game_Flag_Set(kFlagBulletBobDead);
}
Set_Enter(kSetHC01_HC02_HC03_HC04, kSceneHC04);
+#if BLADERUNNER_ORIGINAL_BUGS
Actor_Set_Goal_Number(kActorDektora, kGoalDektoraStartWalkingAround);
+#else
+ // Restrict Dektora's "walking around" goal only in Chapter 2
+ // this is a bug fix for the case where Dektora's goal gets reset from kGoalDektoraGone in Chapter 4/5
+ if (Global_Variable_Query(kVariableChapter) == 2 ) {
+ Actor_Set_Goal_Number(kActorDektora, kGoalDektoraStartWalkingAround);
+ }
+#endif // BLADERUNNER_ORIGINAL_BUGS
}
return true;
}
- if (exitId == 4) {
+ if (exitId == 4) { // To Bullet Bob's
if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -22.0f, 1.0f, -63.0f, 0, true, false, 0)) {
if (Global_Variable_Query(kVariableChapter) == 3
|| Global_Variable_Query(kVariableChapter) == 5
diff --git a/engines/bladerunner/script/scene/ug04.cpp b/engines/bladerunner/script/scene/ug04.cpp
index 2f71899023..83234fb745 100644
--- a/engines/bladerunner/script/scene/ug04.cpp
+++ b/engines/bladerunner/script/scene/ug04.cpp
@@ -59,7 +59,11 @@ void SceneScriptUG04::InitializeScene() {
Ambient_Sounds_Add_Sound(304, 5, 50, 17, 37, -100, 100, -101, -101, 0, 0);
Ambient_Sounds_Add_Sound(305, 5, 50, 17, 37, -100, 100, -101, -101, 0, 0);
- Scene_Loop_Start_Special(kSceneLoopModeLoseControl, 0, false);
+ if ((Global_Variable_Query(kVariableChapter) == 3)
+ || (Global_Variable_Query(kVariableChapter) > 3 && Random_Query(1, 5) == 1)
+ ){ // enhancement: don't always play the passing train after chapter 3
+ Scene_Loop_Start_Special(kSceneLoopModeLoseControl, 0, false);
+ }
Scene_Loop_Set_Default(1);
}