[Scummvm-git-logs] scummvm master -> 031c4f6221990f0cd84367731dd745730f0f0503
antoniou79
antoniou at cti.gr
Thu Jul 25 13:59:52 CEST 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:
031c4f6221 BLADERUNNER: Fix repeat of Izo apprehending and possible freeze
Commit: 031c4f6221990f0cd84367731dd745730f0f0503
https://github.com/scummvm/scummvm/commit/031c4f6221990f0cd84367731dd745730f0f0503
Author: Thanasis Antoniou (a.antoniou79 at gmail.com)
Date: 2019-07-25T14:59:05+03:00
Commit Message:
BLADERUNNER: Fix repeat of Izo apprehending and possible freeze
Changed paths:
engines/bladerunner/script/ai/izo.cpp
engines/bladerunner/script/scene/rc03.cpp
diff --git a/engines/bladerunner/script/ai/izo.cpp b/engines/bladerunner/script/ai/izo.cpp
index 2861e76..2787636 100644
--- a/engines/bladerunner/script/ai/izo.cpp
+++ b/engines/bladerunner/script/ai/izo.cpp
@@ -109,8 +109,28 @@ void AIScriptIzo::CompletedMovementTrack() {
// fall through
case kGoalIzoRC03Run:
Actor_Set_Goal_Number(kActorIzo, kGoalIzoRC03RunAway);
+#if BLADERUNNER_ORIGINAL_BUGS
Actor_Set_Goal_Number(kActorSteele, kGoalSteeleApprehendIzo);
+ // causes unwanted repetition of the apprehend
+ // also may cause a freeze if McCoy exits the scene
Scene_Exits_Enable();
+#else
+ // prevent re-apprehending of Izo
+ if (Actor_Query_Goal_Number(kActorIzo) != kGoalIzoGetArrested
+ && Actor_Query_Goal_Number(kActorIzo) != kGoalIzoGotArrested
+ && Actor_Query_Goal_Number(kActorIzo) != kGoalIzoDie
+ && Actor_Query_Goal_Number(kActorIzo) != kGoalIzoDieHidden
+ && Actor_Query_Goal_Number(kActorIzo) != kGoalIzoEscape
+ && Actor_Query_Goal_Number(kActorSteele) != kGoalSteeleApprehendIzo
+ && Actor_Query_Goal_Number(kActorSteele) != kGoalSteeleArrestIzo
+ && Actor_Query_Goal_Number(kActorSteele) != kGoalSteeleIzoBlockedByMcCoy
+ && Actor_Query_Goal_Number(kActorSteele) != kGoalSteeleShootIzo
+ && Actor_Query_Goal_Number(kActorSteele) != kGoalSteeleLeaveRC03
+ && Actor_Query_Goal_Number(kActorSteele) != kGoalSteeleGoToPoliceStation
+ ) {
+ Actor_Set_Goal_Number(kActorSteele, kGoalSteeleApprehendIzo);
+ }
+#endif // BLADERUNNER_ORIGINAL_BUGS
return; //true;
case kGoalIzoRC03RunAway:
@@ -172,7 +192,25 @@ void AIScriptIzo::ClickedByPlayer() {
Actor_Says(kActorMcCoy, 2715, 14);
Actor_Set_Goal_Number(kActorIzo, kGoalIzoRC03Run);
Actor_Says(kActorMcCoy, 1800, 14);
+#if BLADERUNNER_ORIGINAL_BUGS
Actor_Set_Goal_Number(kActorSteele, kGoalSteeleApprehendIzo);
+#else
+ // prevent re-apprehending of Izo
+ if (Actor_Query_Goal_Number(kActorIzo) != kGoalIzoGetArrested
+ && Actor_Query_Goal_Number(kActorIzo) != kGoalIzoGotArrested
+ && Actor_Query_Goal_Number(kActorIzo) != kGoalIzoDie
+ && Actor_Query_Goal_Number(kActorIzo) != kGoalIzoDieHidden
+ && Actor_Query_Goal_Number(kActorIzo) != kGoalIzoEscape
+ && Actor_Query_Goal_Number(kActorSteele) != kGoalSteeleApprehendIzo
+ && Actor_Query_Goal_Number(kActorSteele) != kGoalSteeleArrestIzo
+ && Actor_Query_Goal_Number(kActorSteele) != kGoalSteeleIzoBlockedByMcCoy
+ && Actor_Query_Goal_Number(kActorSteele) != kGoalSteeleShootIzo
+ && Actor_Query_Goal_Number(kActorSteele) != kGoalSteeleLeaveRC03
+ && Actor_Query_Goal_Number(kActorSteele) != kGoalSteeleGoToPoliceStation
+ ) {
+ Actor_Set_Goal_Number(kActorSteele, kGoalSteeleApprehendIzo);
+ }
+#endif // BLADERUNNER_ORIGINAL_BUGS
return; //true;
}
diff --git a/engines/bladerunner/script/scene/rc03.cpp b/engines/bladerunner/script/scene/rc03.cpp
index b9a0225..17837ca 100644
--- a/engines/bladerunner/script/scene/rc03.cpp
+++ b/engines/bladerunner/script/scene/rc03.cpp
@@ -315,7 +315,21 @@ void SceneScriptRC03::PlayerWalkedIn() {
Actor_Says_With_Pause(kActorIzo, 640, 0, -1);
Actor_Says_With_Pause(kActorIzo, 650, 0, -1);
if (Game_Flag_Query(kFlagIzoIsReplicant) ) {
+#if BLADERUNNER_ORIGINAL_BUGS
Actor_Set_Goal_Number(kActorSteele, kGoalSteeleApprehendIzo);
+#else
+ // prevent re-apprehending of Izo
+ if (Actor_Query_Goal_Number(kActorIzo) != kGoalIzoDie
+ && Actor_Query_Goal_Number(kActorIzo) != kGoalIzoDieHidden
+ && Actor_Query_Goal_Number(kActorIzo) != kGoalIzoEscape
+ && Actor_Query_Goal_Number(kActorSteele) != kGoalSteeleShootIzo
+ && Actor_Query_Goal_Number(kActorSteele) != kGoalSteeleIzoBlockedByMcCoy
+ && Actor_Query_Goal_Number(kActorSteele) != kGoalSteeleLeaveRC03
+ && Actor_Query_Goal_Number(kActorSteele) != kGoalSteeleGoToPoliceStation
+ ) {
+ Actor_Set_Goal_Number(kActorSteele, kGoalSteeleApprehendIzo);
+ }
+#endif // BLADERUNNER_ORIGINAL_BUGS
}
Actor_Change_Animation_Mode(kActorMcCoy, kAnimationModeDodge);
Loop_Actor_Walk_To_XYZ(kActorIzo, 180.0f, -4.0f, 184.0f, 0, false, false, false);
@@ -324,10 +338,13 @@ void SceneScriptRC03::PlayerWalkedIn() {
#if BLADERUNNER_ORIGINAL_BUGS
Actor_Set_Goal_Number(kActorSteele, kGoalSteeleApprehendIzo);
#else
+ // prevent re-apprehending of Izo
if (Actor_Query_Goal_Number(kActorIzo) != kGoalIzoGetArrested
&& Actor_Query_Goal_Number(kActorIzo) != kGoalIzoGotArrested
+ && Actor_Query_Goal_Number(kActorIzo) != kGoalIzoEscape
&& Actor_Query_Goal_Number(kActorSteele) != kGoalSteeleApprehendIzo
&& Actor_Query_Goal_Number(kActorSteele) != kGoalSteeleArrestIzo
+ && Actor_Query_Goal_Number(kActorSteele) != kGoalSteeleIzoBlockedByMcCoy
&& Actor_Query_Goal_Number(kActorSteele) != kGoalSteeleLeaveRC03
&& Actor_Query_Goal_Number(kActorSteele) != kGoalSteeleGoToPoliceStation
) {
More information about the Scummvm-git-logs
mailing list