[Scummvm-git-logs] scummvm master -> 9c562da4ede87ba5b4ad174fb804bd2529cf38e7

antoniou79 antoniou at cti.gr
Mon Mar 4 15:56:15 CET 2019


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
9c562da4ed BLADERUNNER: retirement bounty exploit fix


Commit: 9c562da4ede87ba5b4ad174fb804bd2529cf38e7
    https://github.com/scummvm/scummvm/commit/9c562da4ede87ba5b4ad174fb804bd2529cf38e7
Author: Thanasis Antoniou (a.antoniou79 at gmail.com)
Date: 2019-03-04T16:53:23+02:00

Commit Message:
BLADERUNNER: retirement bounty exploit fix

And small dialogue bits with Guzza when reporting in now only play in Act 1 where they make sense.

Also, don't allow McCoy to get the retirement bonus twice in Act 1. Also don't allow him to get money (100 cy) from Guzza if he has enough (>=300).

Changed paths:
    engines/bladerunner/script/ai/zuben.cpp
    engines/bladerunner/script/scene/ma04.cpp
    engines/bladerunner/script/scene/ps04.cpp


diff --git a/engines/bladerunner/script/ai/zuben.cpp b/engines/bladerunner/script/ai/zuben.cpp
index 8c96031..8b85126 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 0325f27..d9640d3 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 10f26d2..51fbbf6 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)





More information about the Scummvm-git-logs mailing list