[Scummvm-git-logs] scummvm master -> 674e44f55b8ce29e51e1eb5cdb9c316fd5b6ddaa

antoniou79 antoniou at cti.gr
Fri May 17 13:28:20 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:
674e44f55b BLADERUNNER: Howie Lee AI and Leary overlap fixes


Commit: 674e44f55b8ce29e51e1eb5cdb9c316fd5b6ddaa
    https://github.com/scummvm/scummvm/commit/674e44f55b8ce29e51e1eb5cdb9c316fd5b6ddaa
Author: Thanasis Antoniou (a.antoniou79 at gmail.com)
Date: 2019-05-17T14:26:49+03:00

Commit Message:
BLADERUNNER: Howie Lee AI and Leary overlap fixes

Changed paths:
    engines/bladerunner/script/ai/howie_lee.cpp
    engines/bladerunner/script/scene/ct01.cpp
    engines/bladerunner/script/scene/ct12.cpp
    engines/bladerunner/script/scene/dr05.cpp
    engines/bladerunner/script/scene/ps04.cpp
    engines/bladerunner/script/scene/rc01.cpp


diff --git a/engines/bladerunner/script/ai/howie_lee.cpp b/engines/bladerunner/script/ai/howie_lee.cpp
index fb70160..87fed51 100644
--- a/engines/bladerunner/script/ai/howie_lee.cpp
+++ b/engines/bladerunner/script/ai/howie_lee.cpp
@@ -76,10 +76,8 @@ bool AIScriptHowieLee::Update() {
 	// It might cause a blink-in issue, depending when update() will be called for Howie
 	// This is kept as a backup while similar code is placed in the CT01 and CT02 scenes InitializeScene()
 	// that will handle Howie appearing there immediately (fix for blink in)
-	if ( Game_Flag_Query(kFlagMcCoyInChinaTown)
-	 && !Actor_Query_In_Set(kActorHowieLee, kSetCT01_CT12)
-	 && Global_Variable_Query(kVariableChapter) == 1 // added condition - in cut content don't force Howie to return to CT01 here after Act 1
-	) {
+	if (Game_Flag_Query(kFlagMcCoyInChinaTown)
+	    && !Actor_Query_In_Set(kActorHowieLee, kSetCT01_CT12)) {
 		AI_Movement_Track_Flush(kActorHowieLee);
 		AI_Movement_Track_Append(kActorHowieLee, 67, 0); // in kSetCT01_CT12
 		Actor_Set_Goal_Number(kActorHowieLee, kGoalHowieLeeDefault);
@@ -131,15 +129,14 @@ void AIScriptHowieLee::CompletedMovementTrack() {
 	if (Actor_Query_Goal_Number(kActorHowieLee) == kGoalHowieLeeMovesInDiner03) {
 		if (_vm->_cutContent) {
 			//
-			// *after Act 1* Howie will be going to the Garbage Bin "regularly"
+			// *after Act 1* Howie will be going to the Garbage Bin "semi-regularly"
 			// if McCoy is not in scenes CT01 and CT12 (where Howie is visible working at the diner)
 			// otherwise he'll do the short cycle (goals 0, 1, 2, 3)
-			// This will result in Howie not being at the Diner sometimes even when McCoy is in Chinatown area
-			// This won't happen in Act 1, since he is most useful during that Act
 			if (Global_Variable_Query(kVariableChapter) > 1
 			    && Player_Query_Current_Scene() != kSceneCT01
 			    && Player_Query_Current_Scene() != kSceneCT12
 			    && Player_Query_Current_Scene() != kSceneCT04
+			    && Random_Query(1, 5) == 1
 			) {
 				Actor_Set_Goal_Number(kActorHowieLee, kGoalHowieLeeGoesToCT04GarbageBin);
 				return; // true;
diff --git a/engines/bladerunner/script/scene/ct01.cpp b/engines/bladerunner/script/scene/ct01.cpp
index 3eb06e2..754d939 100644
--- a/engines/bladerunner/script/scene/ct01.cpp
+++ b/engines/bladerunner/script/scene/ct01.cpp
@@ -118,8 +118,7 @@ void SceneScriptCT01::InitializeScene() {
 #if BLADERUNNER_ORIGINAL_BUGS
 #else
 	if (!Actor_Query_In_Set(kActorHowieLee, kSetCT01_CT12)
-	    && Global_Variable_Query(kVariableChapter) == 1
-	) {
+	    && Global_Variable_Query(kVariableChapter) < 4) {
 		AI_Movement_Track_Flush(kActorHowieLee);
 		AI_Movement_Track_Append(kActorHowieLee, 67, 0); // in kSetCT01_CT12
 		Actor_Set_Goal_Number(kActorHowieLee, kGoalHowieLeeDefault);
diff --git a/engines/bladerunner/script/scene/ct12.cpp b/engines/bladerunner/script/scene/ct12.cpp
index 5eb4876..27995a8 100644
--- a/engines/bladerunner/script/scene/ct12.cpp
+++ b/engines/bladerunner/script/scene/ct12.cpp
@@ -73,8 +73,7 @@ void SceneScriptCT12::InitializeScene() {
 #if BLADERUNNER_ORIGINAL_BUGS
 #else
 	if (!Actor_Query_In_Set(kActorHowieLee, kSetCT01_CT12)
-	    && Global_Variable_Query(kVariableChapter) == 1
-	) {
+	    && Global_Variable_Query(kVariableChapter) < 4) {
 		AI_Movement_Track_Flush(kActorHowieLee);
 		AI_Movement_Track_Append(kActorHowieLee, 67, 0); // in kSetCT01_CT12
 		Actor_Set_Goal_Number(kActorHowieLee, kGoalHowieLeeDefault);
diff --git a/engines/bladerunner/script/scene/dr05.cpp b/engines/bladerunner/script/scene/dr05.cpp
index df43d2c..0ae0f28 100644
--- a/engines/bladerunner/script/scene/dr05.cpp
+++ b/engines/bladerunner/script/scene/dr05.cpp
@@ -111,7 +111,7 @@ bool SceneScriptDR05::ClickedOnItem(int itemId, bool a2) {
 
 	if (itemId == kItemChain
 	 && Player_Query_Combat_Mode()
-	 && Actor_Query_Goal_Number(kActorMoraji) == kGoalOfficerLearyDefault
+	 && Actor_Query_Goal_Number(kActorMoraji) == kGoalMorajiDefault
 	) {
 		Overlay_Play("DR05OVER", 1, false, true, 0);
 		Item_Remove_From_World(kItemChain);
diff --git a/engines/bladerunner/script/scene/ps04.cpp b/engines/bladerunner/script/scene/ps04.cpp
index 108d8a7..c856496 100644
--- a/engines/bladerunner/script/scene/ps04.cpp
+++ b/engines/bladerunner/script/scene/ps04.cpp
@@ -364,6 +364,11 @@ void SceneScriptPS04::dialogueWithGuzza() {
 			Delay(1000);
 			Actor_Face_Actor(kActorGuzza, kActorMcCoy, true);
 			Delay(1000);
+			// if McCoy confesses before the body is dumped, then the body should be found (even if in dumpster)
+			if (!Game_Flag_Query(kFlagCT04HomelessBodyThrownAway)) {
+				Game_Flag_Set(kFlagCT04HomelessBodyFound);
+				// return false;
+			}
 		}
 		Actor_Says(kActorGuzza, 700, 34);
 		Actor_Says(kActorMcCoy, 4100, 13);
diff --git a/engines/bladerunner/script/scene/rc01.cpp b/engines/bladerunner/script/scene/rc01.cpp
index c07ff46..93bbc0b 100644
--- a/engines/bladerunner/script/scene/rc01.cpp
+++ b/engines/bladerunner/script/scene/rc01.cpp
@@ -113,6 +113,15 @@ void SceneScriptRC01::InitializeScene() {
 		}
 	} else {
 		if (!Game_Flag_Query(kFlagRC02toRC01) && !Game_Flag_Query(kFlagRC03toRC01)) {
+#if BLADERUNNER_ORIGINAL_BUGS
+#else
+			// set leary at his original position since otherwise he may overlap badly
+			// with scenery during the video loop of the spinner landing
+			// This only applies in Act 1, before the flag kFlagRC01PoliceDone is set
+			if (Actor_Query_Is_In_Current_Set(kActorOfficerLeary)) {
+				Actor_Set_At_XYZ(kActorOfficerLeary, -261.80f, 6.00f, 79.58f, 512);
+			}
+#endif // BLADERUNNER_ORIGINAL_BUGS
 			Scene_Loop_Start_Special(kSceneLoopModeLoseControl, kRC01LoopInshotWithCrowd, false);
 		}
 		Scene_Loop_Set_Default(kRC01LoopWithCrowd);





More information about the Scummvm-git-logs mailing list