BLADERUNNER: Fix Steele re-arresting Izo at RC03

This commit is contained in:
Thanasis Antoniou 2019-06-30 15:27:11 +03:00
parent 9fa862c0f4
commit b64e66a6b5
3 changed files with 22 additions and 2 deletions

View file

@ -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);

View file

@ -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;
}

View file

@ -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 {