aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/bladerunner/script/ai/izo.cpp1
-rw-r--r--engines/bladerunner/script/ai/steele.cpp6
-rw-r--r--engines/bladerunner/script/scene/rc03.cpp17
3 files changed, 22 insertions, 2 deletions
diff --git a/engines/bladerunner/script/ai/izo.cpp b/engines/bladerunner/script/ai/izo.cpp
index 9191ef18f5..2861e76554 100644
--- a/engines/bladerunner/script/ai/izo.cpp
+++ b/engines/bladerunner/script/ai/izo.cpp
@@ -106,6 +106,7 @@ void AIScriptIzo::CompletedMovementTrack() {
return; //true;
case kGoalIzoRC03Walk:
+ // fall through
case kGoalIzoRC03Run:
Actor_Set_Goal_Number(kActorIzo, kGoalIzoRC03RunAway);
Actor_Set_Goal_Number(kActorSteele, kGoalSteeleApprehendIzo);
diff --git a/engines/bladerunner/script/ai/steele.cpp b/engines/bladerunner/script/ai/steele.cpp
index b10ca1f002..10dd1d9b73 100644
--- a/engines/bladerunner/script/ai/steele.cpp
+++ b/engines/bladerunner/script/ai/steele.cpp
@@ -822,7 +822,9 @@ bool AIScriptSteele::GoalChanged(int currentGoalNumber, int newGoalNumber) {
// Scene_Exits_Enable() is done in Izo's kGoalIzoGetArrested - CompletedMovementTrack() case
Actor_Set_Goal_Number(kActorIzo, kGoalIzoGetArrested);
Actor_Set_Goal_Number(kActorSteele, kGoalSteeleLeaveRC03);
+#if BLADERUNNER_ORIGINAL_BUGS
Actor_Set_Goal_Number(kActorSteele, kGoalSteeleDefault); // TODO - a bug? why set to default here?
+#endif // BLADERUNNER_ORIGINAL_BUGS
return true;
case kGoalSteeleIzoBlockedByMcCoy:
@@ -2333,9 +2335,9 @@ void AIScriptSteele::SetAnimationState(int animationState, int animationFrame, i
bool AIScriptSteele::ReachedMovementTrackWaypoint(int waypointId) {
if (waypointId == 174
&& Actor_Query_Goal_Number(kActorSteele) == kGoalSteeleLeaveRC03
- )
+ ) {
Actor_Set_Goal_Number(kActorSteele, kGoalSteeleGoToPoliceStation);
-
+ }
return true;
}
diff --git a/engines/bladerunner/script/scene/rc03.cpp b/engines/bladerunner/script/scene/rc03.cpp
index 49b8b9476d..b9a022567d 100644
--- a/engines/bladerunner/script/scene/rc03.cpp
+++ b/engines/bladerunner/script/scene/rc03.cpp
@@ -51,7 +51,12 @@ void SceneScriptRC03::InitializeScene() {
Scene_Exit_Add_2D_Exit(0, 610, 0, 639, 479, 1);
Scene_Exit_Add_2D_Exit(1, 0, 0, 30, 479, 3);
if (Game_Flag_Query(kFlagRC03UnlockedToUG01)) {
+#if BLADERUNNER_ORIGINAL_BUGS
Scene_Exit_Add_2D_Exit(2, 524, 350, 573, 359, 2);
+#else
+ // prevent Izo's corpse from blocking the exit hot-spot area
+ Scene_Exit_Add_2D_Exit(2, 524, 340, 573, 359, 2);
+#endif // BLADERUNNER_ORIGINAL_BUGS
}
Scene_Exit_Add_2D_Exit(3, 85, 255, 112, 315, 0);
Scene_Exit_Add_2D_Exit(4, 428, 260, 453, 324, 0);
@@ -316,7 +321,19 @@ void SceneScriptRC03::PlayerWalkedIn() {
Loop_Actor_Walk_To_XYZ(kActorIzo, 180.0f, -4.0f, 184.0f, 0, false, false, false);
Actor_Change_Animation_Mode(kActorIzo, 6);
if (!Game_Flag_Query(kFlagIzoIsReplicant)) {
+#if BLADERUNNER_ORIGINAL_BUGS
Actor_Set_Goal_Number(kActorSteele, kGoalSteeleApprehendIzo);
+#else
+ if (Actor_Query_Goal_Number(kActorIzo) != kGoalIzoGetArrested
+ && Actor_Query_Goal_Number(kActorIzo) != kGoalIzoGotArrested
+ && Actor_Query_Goal_Number(kActorSteele) != kGoalSteeleApprehendIzo
+ && Actor_Query_Goal_Number(kActorSteele) != kGoalSteeleArrestIzo
+ && Actor_Query_Goal_Number(kActorSteele) != kGoalSteeleLeaveRC03
+ && Actor_Query_Goal_Number(kActorSteele) != kGoalSteeleGoToPoliceStation
+ ) {
+ Actor_Set_Goal_Number(kActorSteele, kGoalSteeleApprehendIzo);
+ }
+#endif // BLADERUNNER_ORIGINAL_BUGS
}
Player_Gains_Control();
} else {