diff options
-rw-r--r-- | engines/bladerunner/script/ai/izo.cpp | 1 | ||||
-rw-r--r-- | engines/bladerunner/script/ai/steele.cpp | 6 | ||||
-rw-r--r-- | engines/bladerunner/script/scene/rc03.cpp | 17 |
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 { |