[Scummvm-git-logs] scummvm master -> f4a0db227f2a5522ef753485119b2758fbe5a541

antoniou79 noreply at scummvm.org
Sun Jan 9 13:42:28 UTC 2022


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:
f4a0db227f BLADERUNNER: Check Steele presence in KP03 for explosion


Commit: f4a0db227f2a5522ef753485119b2758fbe5a541
    https://github.com/scummvm/scummvm/commit/f4a0db227f2a5522ef753485119b2758fbe5a541
Author: antoniou79 (a.antoniou79 at gmail.com)
Date: 2022-01-09T15:42:18+02:00

Commit Message:
BLADERUNNER: Check Steele presence in KP03 for explosion

In the original code Steele's presence was not ensured and could potentially lead to buggy behavior

Changed paths:
    engines/bladerunner/script/scene/kp03.cpp


diff --git a/engines/bladerunner/script/scene/kp03.cpp b/engines/bladerunner/script/scene/kp03.cpp
index b55cf78fbaf..45b09089e76 100644
--- a/engines/bladerunner/script/scene/kp03.cpp
+++ b/engines/bladerunner/script/scene/kp03.cpp
@@ -198,38 +198,51 @@ void SceneScriptKP03::SceneFrameAdvanced(int frame) {
 		int bombTriggeredByActor = -1;
 
 		Actor_Query_XYZ(kActorMcCoy, &x, &y, &z);
-		if ((Game_Flag_Query(kFlagKP01toKP03)
-			&& -130.0f < x
-			)
-			|| (Game_Flag_Query(kFlagKP05toKP03)
-			&& -130.0f > x
-			)
+		if ((Game_Flag_Query(kFlagKP01toKP03) && -130.0f < x )
+		    || (Game_Flag_Query(kFlagKP05toKP03) && -130.0f > x)
 		) {
 			bombTriggeredByActor = kActorMcCoy;
 		}
 
 		Actor_Query_XYZ(kActorSteele, &x, &y, &z);
+#if BLADERUNNER_ORIGINAL_BUGS
 		if (Game_Flag_Query(kFlagMcCoyIsHelpingReplicants)
-		 && Actor_Query_Which_Set_In(kActorSteele) == kSetKP03
+		    && Actor_Query_Which_Set_In(kActorSteele) == kSetKP03
 		) {
-			if ((Game_Flag_Query(kFlagKP01toKP03)
-			  && -130.0f > x
-			 )
-			 || (Game_Flag_Query(kFlagKP05toKP03)
-			  && -130.0f < x
-			 )
+			if ((Game_Flag_Query(kFlagKP01toKP03) && -130.0f > x)
+			    || (Game_Flag_Query(kFlagKP05toKP03) && -130.0f < x)
 			) {
 				bombTriggeredByActor = kActorSteele;
 			}
-		} else if ((Game_Flag_Query(kFlagKP01toKP03)
-		         && -130.0f < x
-		        )
-		        || (Game_Flag_Query(kFlagKP05toKP03)
-		         && -130.0f > x
-		        )
+		} else if ((Game_Flag_Query(kFlagKP01toKP03) && -130.0f < x)
+		            || (Game_Flag_Query(kFlagKP05toKP03) && -130.0f > x)
 		) {
 			bombTriggeredByActor = kActorSteele;
 		}
+#else
+		// In both cases we're concerned about Steele's position within the current set
+		// So the check for her being in KP03 should cover both cases,
+		// even though, the first (when McCoy is helping Replicants) 
+		// is untriggered in the vanilla game and thus Steele won't be in this set then.
+		// (She would be in KP05 with exits disabled)
+		// The code that gets triggered (McCoy is NOT helping Replicants) 
+		// would not check for Steele's current set, and so while it did work, it was prone to errors
+		// since wherever Steele is, if she's moving or if she's teleported by some piece of code
+		// her x position (in the other set where she's in) could trigger the bomb.
+		if (Actor_Query_Which_Set_In(kActorSteele) == kSetKP03) {
+			if (Game_Flag_Query(kFlagMcCoyIsHelpingReplicants)) {
+				if ((Game_Flag_Query(kFlagKP01toKP03) && -130.0f > x)
+					|| (Game_Flag_Query(kFlagKP05toKP03) && -130.0f < x)
+				) {
+					bombTriggeredByActor = kActorSteele;
+				}
+			} else if ((Game_Flag_Query(kFlagKP01toKP03) && -130.0f < x)
+			           || (Game_Flag_Query(kFlagKP05toKP03) && -130.0f > x)
+			) {
+				bombTriggeredByActor = kActorSteele;
+			}
+		}
+#endif
 
 		if (bombTriggeredByActor != -1) {
 			Scene_Loop_Set_Default(kKP03MainLoopBombExploded);




More information about the Scummvm-git-logs mailing list