[Scummvm-git-logs] scummvm master -> 20cc2c42ba083c36e13cf20ed131bf154bb4017f

peterkohaut peterkohaut at users.noreply.github.com
Tue Jun 25 00:29:54 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:
20cc2c42ba BLADERUNNER: Fix Fish dealer in chapter 5


Commit: 20cc2c42ba083c36e13cf20ed131bf154bb4017f
    https://github.com/scummvm/scummvm/commit/20cc2c42ba083c36e13cf20ed131bf154bb4017f
Author: Peter Kohaut (peter.kohaut at gmail.com)
Date: 2019-06-25T00:26:52+02:00

Commit Message:
BLADERUNNER: Fix Fish dealer in chapter 5

Fixes a wrong state for fish dealer which will end up showing her
up in chapter 5, but her model is not included in CDFRAMES.DAT for
chapter 5, that would lead to an error / engine crash.

Changed paths:
    engines/bladerunner/script/ai/fish_dealer.cpp


diff --git a/engines/bladerunner/script/ai/fish_dealer.cpp b/engines/bladerunner/script/ai/fish_dealer.cpp
index d7f517c..b7088a8 100644
--- a/engines/bladerunner/script/ai/fish_dealer.cpp
+++ b/engines/bladerunner/script/ai/fish_dealer.cpp
@@ -41,37 +41,43 @@ void AIScriptFishDealer::Initialize() {
 }
 
 bool AIScriptFishDealer::Update() {
-	if (Global_Variable_Query(kVariableChapter) == 5 && Actor_Query_Goal_Number(kActorFishDealer) < 400) {
+#if BLADERUNNER_ORIGINAL_BUGS
+	if (Global_Variable_Query(kVariableChapter) == 5
+	 && Actor_Query_Goal_Number(kActorFishDealer) < 400
+	) {
 		Actor_Set_Goal_Number(kActorFishDealer, 400);
-
 		return true;
-	}
-#if BLADERUNNER_ORIGINAL_BUGS
-	else if (Player_Query_Current_Scene()
-			 || Actor_Query_Goal_Number(kActorFishDealer) == 2
-	         || Actor_Query_Goal_Number(kActorFishDealer) == 1
-	         || Actor_Query_Goal_Number(kActorFishDealer) == 400) {
-		return false;
-	} else {
-		Actor_Set_Goal_Number(kActorFishDealer, 1);
 
+	} else if (Player_Query_Current_Scene() == kSceneAR01
+	        && Actor_Query_Goal_Number(kActorFishDealer) != 1
+	        && Actor_Query_Goal_Number(kActorFishDealer) != 2
+	        && Actor_Query_Goal_Number(kActorFishDealer) != 400
+	) {
+		Actor_Set_Goal_Number(kActorFishDealer, 1);
 		return true;
 	}
+	return false;
 #else
-	// prevent Fish Dealer from blinking out while McCoy is flying out from Animoid
-	else if (Actor_Query_Goal_Number(kActorFishDealer) == 400
-	         || ( Player_Query_Current_Scene() != kSceneAR01 )) {
-		return false;
-	}
-	else {
+	if (Global_Variable_Query(kVariableChapter) < 5) {
+		// prevent Fish Dealer from blinking out while McCoy is flying out from Animoid
 		if (Player_Query_Current_Scene() == kSceneAR01
-		    && Actor_Query_Goal_Number(kActorFishDealer) == 3) {
+		 && Actor_Query_Goal_Number(kActorFishDealer) == 3
+		) {
 			Actor_Set_Goal_Number(kActorFishDealer, 1);
+			return true;
+		}
+	} else {
+		if (Actor_Query_Goal_Number(kActorFishDealer) < 400) {
+			Actor_Set_Goal_Number(kActorFishDealer, 400);
+		} else if (Actor_Query_In_Set(kActorFishDealer, kSetAR01_AR02)) {
+			// Remove the fish dealer from AR01 if she is still there in chapter 5,
+			// this can happen only with older save games.
+			GoalChanged(400, 400);
 		}
 		return true;
 	}
+	return false;
 #endif // BLADERUNNER_ORIGINAL_BUGS
-
 }
 
 void AIScriptFishDealer::TimerExpired(int timer) {
@@ -168,6 +174,11 @@ bool AIScriptFishDealer::GoalChanged(int currentGoalNumber, int newGoalNumber) {
 		return true;
 
 	case 400:
+#if !BLADERUNNER_ORIGINAL_BUGS
+		// Movement truck is not reset and she might end-up showing up in AR01 after all.
+		// This will lead to a issue with CDFRAMES in chapter 5
+		AI_Movement_Track_Flush(kActorFishDealer);
+#endif
 		Actor_Put_In_Set(kActorFishDealer, kSetFreeSlotH);
 		Actor_Set_At_Waypoint(kActorFishDealer, 40, 0);
 		return true;





More information about the Scummvm-git-logs mailing list