aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/bladerunner/script/ai/zuben.cpp4
-rw-r--r--engines/bladerunner/script/scene/ma04.cpp13
-rw-r--r--engines/bladerunner/script/scene/ps04.cpp65
3 files changed, 72 insertions, 10 deletions
diff --git a/engines/bladerunner/script/ai/zuben.cpp b/engines/bladerunner/script/ai/zuben.cpp
index 8c960315e5..8b85126f64 100644
--- a/engines/bladerunner/script/ai/zuben.cpp
+++ b/engines/bladerunner/script/ai/zuben.cpp
@@ -1162,7 +1162,11 @@ bool AIScriptZuben::ChangeAnimationMode(int mode) {
break;
case kAnimationModeDie:
Actor_Set_Targetable(kActorZuben, false);
+#if BLADERUNNER_ORIGINAL_BUGS
+ // original code uses no voice here
+#else
Sound_Play_Speech_Line(kActorZuben, 9020, 75, 0, 99); // add Zuben's death rattle here
+#endif // BLADERUNNER_ORIGINAL_BUGS
switch (_animationState) {
case 2:
case 4:
diff --git a/engines/bladerunner/script/scene/ma04.cpp b/engines/bladerunner/script/scene/ma04.cpp
index 0325f27ad7..d9640d3f61 100644
--- a/engines/bladerunner/script/scene/ma04.cpp
+++ b/engines/bladerunner/script/scene/ma04.cpp
@@ -575,15 +575,22 @@ void SceneScriptMA04::sleep() {
Game_Flag_Set(kFlagChapter2Intro);
Global_Variable_Set(kVariableChapter, 2);
Chapter_Enter(2, kSetMA02_MA04, kSceneMA04);
+#if BLADERUNNER_ORIGINAL_BUGS
if (Query_Difficulty_Level() != 0) {
if (!Game_Flag_Query(kFlagZubenBountyPaid)) {
Global_Variable_Increment(kVariableChinyen, 200);
}
-#if BLADERUNNER_ORIGINAL_BUGS // ensure valid kFlagZubenBountyPaid flag state
-#else
+ }
+#else // ensure valid kFlagZubenBountyPaid flag state
+ // NOTE If not for the "Report Im" to Guzza, it would be simpler to have McCoy get the money as soon as he retires Zuben
+ // so that would be in a single place in the code
+ if (!Game_Flag_Query(kFlagZubenBountyPaid) && Game_Flag_Query(kFlagZubenRetired)) { // get retirement money at end of day 1 only if Zuben was retired.
+ if (Query_Difficulty_Level() != 0) {
+ Global_Variable_Increment(kVariableChinyen, 200);
+ }
Game_Flag_Set(kFlagZubenBountyPaid); // not a proper bug, but was missing from original code, so the flag would remain in non-consistent state in this case
-#endif // BLADERUNNER_ORIGINAL_BUGS
}
+#endif // BLADERUNNER_ORIGINAL_BUGS
} else {
Set_Enter(kSetMA02_MA04, kSceneMA04);
}
diff --git a/engines/bladerunner/script/scene/ps04.cpp b/engines/bladerunner/script/scene/ps04.cpp
index 10f26d23f4..51fbbf6e8f 100644
--- a/engines/bladerunner/script/scene/ps04.cpp
+++ b/engines/bladerunner/script/scene/ps04.cpp
@@ -176,6 +176,7 @@ void SceneScriptPS04::dialogueWithGuzza() {
case 120: // MONEY
Actor_Says(kActorMcCoy, 4000, 18);
+#if BLADERUNNER_ORIGINAL_BUGS
Actor_Clue_Acquire(kActorMcCoy, kClueGuzzasCash, true, kActorGuzza);
Actor_Says(kActorGuzza, 520, 33);
Actor_Says(kActorMcCoy, 4055, 13);
@@ -188,6 +189,30 @@ void SceneScriptPS04::dialogueWithGuzza() {
if (Query_Difficulty_Level() != 0) {
Global_Variable_Increment(kVariableChinyen, 100);
}
+#else
+ if (Global_Variable_Query(kVariableChinyen) < 300) { // basically if McCoy hasn't retired Zuben or drunk away his money at the bar
+ Actor_Clue_Acquire(kActorMcCoy, kClueGuzzasCash, true, kActorGuzza);
+ Actor_Says(kActorGuzza, 520, 33);
+ Actor_Says(kActorMcCoy, 4055, 13);
+ Actor_Says(kActorGuzza, 530, 31);
+ Actor_Says(kActorMcCoy, 4060, 13);
+ Actor_Says(kActorGuzza, 540, 31);
+ Actor_Says(kActorGuzza, 550, 32);
+ Actor_Says(kActorMcCoy, 4065, 18);
+ Actor_Says(kActorGuzza, 560, 34);
+ if (Query_Difficulty_Level() != 0) {
+ Global_Variable_Increment(kVariableChinyen, 100);
+ }
+ } else { // Guzza denies the loan
+ Actor_Says(kActorGuzza, 470, 33); // Hey, I'd love to be your own personal ATM but the department's strapped right now.
+ Actor_Says(kActorGuzza, 480, 31);
+ Actor_Says(kActorGuzza, 490, 31);
+ Actor_Says(kActorGuzza, 500, 32);
+ Actor_Says(kActorMcCoy, 4045, 16);
+ Actor_Says(kActorGuzza, 510, 31);
+ Actor_Says(kActorMcCoy, 4050, 18);
+ }
+#endif // BLADERUNNER_ORIGINAL_BUGS
break;
case 130: // REPORT IN
@@ -206,8 +231,15 @@ void SceneScriptPS04::dialogueWithGuzza() {
Actor_Face_Actor(kActorMcCoy, kActorGuzza, true);
Actor_Says(kActorMcCoy, 3930, 13);
Actor_Face_Actor(kActorGuzza, kActorMcCoy, true);
- Actor_Says(kActorGuzza, 180, 34);
- Actor_Says(kActorMcCoy, 3935, 13);
+#if BLADERUNNER_ORIGINAL_BUGS
+ Actor_Says(kActorGuzza, 180, 34); // But I'm proud of you McCoy. Why don't you take the rest of the day off?
+ Actor_Says(kActorMcCoy, 3935, 13); // Thanks.
+#else
+ if (Global_Variable_Query(kVariableChapter) == 1) { // only play this dialogue (about day off) on day one. It doesn't fit in the next days
+ Actor_Says(kActorGuzza, 180, 34); // But I'm proud of you McCoy. Why don't you take the rest of the day off?
+ Actor_Says(kActorMcCoy, 3935, 13); // Thanks.
+ }
+#endif // BLADERUNNER_ORIGINAL_BUGS
Actor_Says(kActorGuzza, 190, 30);
Actor_Says(kActorMcCoy, 3940, 16);
Actor_Says(kActorGuzza, 200, 31);
@@ -221,21 +253,40 @@ void SceneScriptPS04::dialogueWithGuzza() {
Actor_Says(kActorGuzza, 260, 33);
Actor_Says(kActorGuzza, 270, 32);
Game_Flag_Set(kFlagPS04GuzzaTalkZubenRetired);
+#if BLADERUNNER_ORIGINAL_BUGS
if (Query_Difficulty_Level() != 0) {
Global_Variable_Increment(kVariableChinyen, 200);
}
Game_Flag_Set(kFlagZubenBountyPaid);
+#else
+ if (!Game_Flag_Query(kFlagZubenBountyPaid)) { // get retirement money only if haven't been auto-paid at end of Day 1 (sleep trigger)
+ if (Query_Difficulty_Level() != 0) {
+ Global_Variable_Increment(kVariableChinyen, 200);
+ }
+ Game_Flag_Set(kFlagZubenBountyPaid); // not a proper bug, but was missing from original code, so the flag would remain in non-consistent state in this case
+ }
+#endif // BLADERUNNER_ORIGINAL_BUGS
} else if ( Game_Flag_Query(kFlagZubenSpared)
&& !Game_Flag_Query(kFlagPS04GuzzaTalkZubenEscaped)
) {
Actor_Says(kActorMcCoy, 3955, 13);
Actor_Says(kActorGuzza, 280, 30);
Actor_Says(kActorMcCoy, 3960, 18);
- Actor_Says(kActorGuzza, 290, 32);
- Actor_Says(kActorGuzza, 300, 31);
- Actor_Says(kActorMcCoy, 3965, 13);
- Actor_Says(kActorGuzza, 310, 33);
- Actor_Says(kActorGuzza, 320, 34);
+#if BLADERUNNER_ORIGINAL_BUGS
+ Actor_Says(kActorGuzza, 290, 32); // Don't push it kid. You look like you're beat anyway.
+ Actor_Says(kActorGuzza, 300, 31); // Why don't you rest them dogs the rest of the day.
+ Actor_Says(kActorMcCoy, 3965, 13); // I still got plenty energy.
+ Actor_Says(kActorGuzza, 310, 33); // That's an order McCoy.
+ Actor_Says(kActorGuzza, 320, 34); // I'm ordering you to relax.
+#else
+ if (Global_Variable_Query(kVariableChapter) == 1) { // only play this dialogue (about day off) on day one. It doesn't fit in the next days
+ Actor_Says(kActorGuzza, 290, 32); // Don't push it kid. You look like you're beat anyway.
+ Actor_Says(kActorGuzza, 300, 31); // Why don't you rest them dogs the rest of the day.
+ Actor_Says(kActorMcCoy, 3965, 13); // I still got plenty energy.
+ Actor_Says(kActorGuzza, 310, 33); // That's an order McCoy.
+ Actor_Says(kActorGuzza, 320, 34); // I'm ordering you to relax.
+ }
+#endif // BLADERUNNER_ORIGINAL_BUGS
Game_Flag_Set(kFlagPS04GuzzaTalkZubenEscaped);
} else if (
( Actor_Clue_Query(kActorMcCoy, kClueChopstickWrapper)