[Scummvm-git-logs] scummvm master -> a7f1230980674397486af0c8ec4057d83f3ff0dd

peterkohaut peterkohaut at users.noreply.github.com
Sun Feb 3 11:45:27 CET 2019


This automated email contains information about 2 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
934ba34adb BLADERUNNER: Cleanup of KP03 bomb related scripts
a7f1230980 BLADERUNNER: Fixed end credits


Commit: 934ba34adb8189535bf121fa3b7041e4f61bfb72
    https://github.com/scummvm/scummvm/commit/934ba34adb8189535bf121fa3b7041e4f61bfb72
Author: Peter Kohaut (peter.kohaut at gmail.com)
Date: 2019-02-03T11:44:55+01:00

Commit Message:
BLADERUNNER: Cleanup of KP03 bomb related scripts

Changed paths:
    engines/bladerunner/game_constants.h
    engines/bladerunner/script/ai/clovis.cpp
    engines/bladerunner/script/ai/dektora.cpp
    engines/bladerunner/script/ai/gordo.cpp
    engines/bladerunner/script/ai/izo.cpp
    engines/bladerunner/script/ai/maggie.cpp
    engines/bladerunner/script/ai/mccoy.cpp
    engines/bladerunner/script/ai/sadik.cpp
    engines/bladerunner/script/ai/steele.cpp
    engines/bladerunner/script/ai/zuben.cpp
    engines/bladerunner/script/scene/hf01.cpp
    engines/bladerunner/script/scene/kp01.cpp
    engines/bladerunner/script/scene/kp02.cpp
    engines/bladerunner/script/scene/kp03.cpp
    engines/bladerunner/script/scene/kp04.cpp
    engines/bladerunner/script/scene/kp05.cpp
    engines/bladerunner/script/scene/kp06.cpp
    engines/bladerunner/script/scene/kp07.cpp
    engines/bladerunner/script/scene/ma02.cpp
    engines/bladerunner/script/scene/ma04.cpp
    engines/bladerunner/script/scene_script.h


diff --git a/engines/bladerunner/game_constants.h b/engines/bladerunner/game_constants.h
index 217c594..3901347 100644
--- a/engines/bladerunner/game_constants.h
+++ b/engines/bladerunner/game_constants.h
@@ -859,7 +859,8 @@ enum Flags {
 	kFlagKP03toKP01 = 418,
 	kFlagKP03toKP05 = 419,
 	kFlagKP05toKP03 = 420,
-
+	kFlagKP03BombActive = 421,
+	kFlagKP03BombExploded = 422,
 	kFlagUG07toUG10 = 423,
 	kFlagUG10toUG07 = 424, // is never checked
 	kFlagUG07toUG08 = 425, // is never checked
@@ -898,7 +899,7 @@ enum Flags {
 	// 458 is never used
 	// 459 is never used
 	kFlagSteeleWalkingAround = 460,
-	kFlagMaggieIsHurt = 461,
+	kFlagMaggieHasBomb = 461,
 	kFlagPS04GuzzaLeft = 462,
 	kFlagHC01GuzzaWalk = 463,
 	kFlagHC01GuzzaPrepare= 464,
@@ -921,7 +922,7 @@ enum Flags {
 	// 481 is never used
 	kFlagSteeleSmoking = 482,
 	kFlagTB06Introduction = 483,
-
+	kFlagKP03BombDisarmed = 484,
 	kFlagTB06Photographer = 485,
 	kFlagDNARowAvailable = 486,
 	kFlagKIAPrivacyAddon = 487,
@@ -1088,7 +1089,7 @@ enum Flags {
 	kFlagMA04PhoneMessageFromLucy = 650,
 	kFlagNR08McCoyWatchingShow = 651,
 	kFlagCrazylegsArrestedTalk = 652,
-	kFlagMcCoyIsNotHelpingReplicants = 653,
+	kFlagMcCoyIsHelpingReplicants = 653,
 
 	kFlagMA02RajifTalk = 655,
 	kFlagUG02RagiationGooglesTaken = 656,
@@ -1813,9 +1814,16 @@ enum GoalSteele {
 	kGoalSteeleNR01StartChapter4 = 290,
 	kGoalSteeleHF01StartChapter4 = 291,
 	// chapter 5
+	// kGoalSteeleKP03WillShootMcCoy = 410,
+	kGoalSteeleKP03Walk = 411,
+	kGoalSteeleKP03Exploded = 415,
+	kGoalSteeleKP03Dying = 416,
+	kGoalSteeleKP03ShootMcCoy = 418,
+	kGoalSteeleKP03Dead = 419,
 	kGoalSteeleKP01Wait = 420,
 	kGoalSteeleKP01TalkToMcCoy = 421,
 	kGoalSteeleKP01Leave = 422,
+	kGoalSteeleKP01Left = 423,
 
 	kGoalSteeleGone = 599
 };
diff --git a/engines/bladerunner/script/ai/clovis.cpp b/engines/bladerunner/script/ai/clovis.cpp
index a8f0cf2..26d545e 100644
--- a/engines/bladerunner/script/ai/clovis.cpp
+++ b/engines/bladerunner/script/ai/clovis.cpp
@@ -82,7 +82,7 @@ bool AIScriptClovis::Update() {
 		Actor_Set_Goal_Number(kActorClovis, 512);
 	}
 
-	if ( Game_Flag_Query(kFlagMcCoyIsNotHelpingReplicants)
+	if ( Game_Flag_Query(kFlagMcCoyIsHelpingReplicants)
 	 && !Game_Flag_Query(696)
 	 &&  Game_Flag_Query(697)
 	) {
@@ -149,7 +149,7 @@ void AIScriptClovis::OtherAgentExitedThisScene(int otherActorId) {
 }
 
 void AIScriptClovis::OtherAgentEnteredCombatMode(int otherActorId, int combatMode) {
-	if (Game_Flag_Query(kFlagMcCoyIsNotHelpingReplicants) && Actor_Query_In_Set(kActorMcCoy, kSetKP07)) {
+	if (Game_Flag_Query(kFlagMcCoyIsHelpingReplicants) && Actor_Query_In_Set(kActorMcCoy, kSetKP07)) {
 		Game_Flag_Set(697);
 		Game_Flag_Set(714);
 		// return true;
@@ -182,7 +182,7 @@ bool AIScriptClovis::ShotAtAndHit() {
 }
 
 void AIScriptClovis::Retired(int byActorId) {
-	if (Game_Flag_Query(kFlagMcCoyIsNotHelpingReplicants)) {
+	if (Game_Flag_Query(kFlagMcCoyIsHelpingReplicants)) {
 		if (Actor_Query_In_Set(kActorClovis, kSetKP07)) {
 			Global_Variable_Decrement(kVariableReplicants, 1);
 			Actor_Set_Goal_Number(kActorClovis, 599);
@@ -195,7 +195,7 @@ void AIScriptClovis::Retired(int byActorId) {
 				Ambient_Sounds_Remove_All_Non_Looping_Sounds(true);
 				Ambient_Sounds_Remove_All_Looping_Sounds(1);
 				Game_Flag_Set(kFlagKP07toKP06);
-				Game_Flag_Reset(kFlagMcCoyIsNotHelpingReplicants);
+				Game_Flag_Reset(kFlagMcCoyIsHelpingReplicants);
 				Set_Enter(kSetKP05_KP06, kSceneKP06);
 			}
 		}
@@ -356,7 +356,7 @@ bool AIScriptClovis::GoalChanged(int currentGoalNumber, int newGoalNumber) {
 		return true;
 
 	case 510:
-		if (Game_Flag_Query(kFlagMcCoyIsNotHelpingReplicants)) {
+		if (Game_Flag_Query(kFlagMcCoyIsHelpingReplicants)) {
 			Actor_Set_Goal_Number(kActorClovis, 513);
 		} else {
 			Actor_Set_Goal_Number(kActorClovis, 511);
@@ -383,7 +383,7 @@ bool AIScriptClovis::GoalChanged(int currentGoalNumber, int newGoalNumber) {
 	case 513:
 		Actor_Put_In_Set(kActorClovis, kSetKP07);
 		Actor_Set_Targetable(kActorClovis, true);
-		if (Game_Flag_Query(kFlagMcCoyIsNotHelpingReplicants)) {
+		if (Game_Flag_Query(kFlagMcCoyIsHelpingReplicants)) {
 			Global_Variable_Set(kVariableReplicants, 0);
 			Global_Variable_Increment(kVariableReplicants, 1);
 			Actor_Set_At_XYZ(kActorClovis, 45.0f, -41.52f, -85.0f, 750);
diff --git a/engines/bladerunner/script/ai/dektora.cpp b/engines/bladerunner/script/ai/dektora.cpp
index 8054bc8..7da4b97 100644
--- a/engines/bladerunner/script/ai/dektora.cpp
+++ b/engines/bladerunner/script/ai/dektora.cpp
@@ -305,7 +305,7 @@ void AIScriptDektora::Retired(int byActorId) {
 			Ambient_Sounds_Remove_All_Non_Looping_Sounds(true);
 			Ambient_Sounds_Remove_All_Looping_Sounds(1);
 			Game_Flag_Set(kFlagKP07toKP06);
-			Game_Flag_Reset(kFlagMcCoyIsNotHelpingReplicants);
+			Game_Flag_Reset(kFlagMcCoyIsHelpingReplicants);
 			Set_Enter(kSetKP05_KP06, kSceneKP06);
 
 			return; //true;
diff --git a/engines/bladerunner/script/ai/gordo.cpp b/engines/bladerunner/script/ai/gordo.cpp
index 1765657..700e8c0 100644
--- a/engines/bladerunner/script/ai/gordo.cpp
+++ b/engines/bladerunner/script/ai/gordo.cpp
@@ -299,7 +299,7 @@ void AIScriptGordo::Retired(int byActorId) {
 			Ambient_Sounds_Remove_All_Non_Looping_Sounds(true);
 			Ambient_Sounds_Remove_All_Looping_Sounds(1);
 			Game_Flag_Set(kFlagKP07toKP06);
-			Game_Flag_Reset(kFlagMcCoyIsNotHelpingReplicants);
+			Game_Flag_Reset(kFlagMcCoyIsHelpingReplicants);
 			Set_Enter(kSetKP05_KP06, kSceneKP06);
 			return;// true;
 		}
diff --git a/engines/bladerunner/script/ai/izo.cpp b/engines/bladerunner/script/ai/izo.cpp
index ede8b68..78c6f4f 100644
--- a/engines/bladerunner/script/ai/izo.cpp
+++ b/engines/bladerunner/script/ai/izo.cpp
@@ -249,7 +249,7 @@ void AIScriptIzo::Retired(int byActorId) {
 		Ambient_Sounds_Remove_All_Non_Looping_Sounds(true);
 		Ambient_Sounds_Remove_All_Looping_Sounds(1);
 		Game_Flag_Set(kFlagKP07toKP06);
-		Game_Flag_Reset(kFlagMcCoyIsNotHelpingReplicants);
+		Game_Flag_Reset(kFlagMcCoyIsHelpingReplicants);
 		Set_Enter(kSetKP05_KP06, kSceneKP06);
 		return; //true;
 	}
diff --git a/engines/bladerunner/script/ai/maggie.cpp b/engines/bladerunner/script/ai/maggie.cpp
index a1661ea..4feb740 100644
--- a/engines/bladerunner/script/ai/maggie.cpp
+++ b/engines/bladerunner/script/ai/maggie.cpp
@@ -37,9 +37,9 @@ enum kMaggieStates {
 	kMaggieStateGoingToSleep = 8,
 	kMaggieStateSleeping     = 9,
 	kMaggieStateWakingUp     = 10,
-	kMaggieStateHurtIdle     = 11,
-	kMaggieStateHurtWalk     = 12,
-	kMaggieStateHurtJumping  = 13,
+	kMaggieStateBombIdle     = 11,
+	kMaggieStateBombWalk     = 12,
+	kMaggieStateBombJumping  = 13,
 	kMaggieStateExploding    = 14,
 	kMaggieStateDeadExploded = 15,
 	kMaggieStateDead         = 16
@@ -149,7 +149,7 @@ void AIScriptMaggie::ReceivedClue(int clueId, int fromActorId) {
 }
 
 void AIScriptMaggie::ClickedByPlayer() {
-	if (!Game_Flag_Query(kFlagMcCoyIsNotHelpingReplicants)
+	if (!Game_Flag_Query(kFlagMcCoyIsHelpingReplicants)
 	 &&  Global_Variable_Query(kVariableChapter) == 5
 	) {
 		if (Actor_Query_Goal_Number(kActorMaggie) == 413) {
@@ -357,7 +357,7 @@ bool AIScriptMaggie::GoalChanged(int currentGoalNumber, int newGoalNumber) {
 		break;
 	case 411:
 		AI_Movement_Track_Flush(kActorMaggie);
-		Game_Flag_Set(kFlagMaggieIsHurt);
+		Game_Flag_Set(kFlagMaggieHasBomb);
 		Actor_Put_In_Set(kActorMaggie, kSetKP05_KP06);
 		Actor_Set_At_XYZ(kActorMaggie, -672.0, 0.0, -428.0, 653);
 		Actor_Change_Animation_Mode(kActorMaggie, kAnimationModeIdle);
@@ -390,24 +390,24 @@ bool AIScriptMaggie::UpdateAnimation(int *animation, int *frame) {
 			Actor_Set_At_Waypoint(kActorMaggie, 41, 0);
 		}
 		break;
-	case kMaggieStateHurtJumping:
+	case kMaggieStateBombJumping:
 		*animation = 873;
 		_animationFrame++;
 		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(873)) {
-			_animationState = kMaggieStateHurtIdle;
+			_animationState = kMaggieStateBombIdle;
 			_animationFrame = 0;
 			*animation = 875;
 			Actor_Set_Goal_Number(kActorMaggie, 414);
 		}
 		break;
-	case kMaggieStateHurtWalk:
+	case kMaggieStateBombWalk:
 		*animation = 872;
 		_animationFrame++;
 		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(872)) {
 			_animationFrame = 0;
 		}
 		break;
-	case kMaggieStateHurtIdle:
+	case kMaggieStateBombIdle:
 		*animation = 875;
 		_animationFrame++;
 		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(875)) {
@@ -540,8 +540,8 @@ bool AIScriptMaggie::UpdateAnimation(int *animation, int *frame) {
 
 bool AIScriptMaggie::ChangeAnimationMode(int mode) {
 	if (mode == kAnimationModeWalk) {
-		if (Game_Flag_Query(kFlagMaggieIsHurt)) {
-			_animationState = kMaggieStateHurtWalk;
+		if (Game_Flag_Query(kFlagMaggieHasBomb)) {
+			_animationState = kMaggieStateBombWalk;
 			_animationFrame = 0;
 		} else {
 			_animationState = kMaggieStateWalking;
@@ -550,8 +550,8 @@ bool AIScriptMaggie::ChangeAnimationMode(int mode) {
 		return true;
 	}
 	if (mode == kAnimationModeIdle) {
-		if (Game_Flag_Query(kFlagMaggieIsHurt)) {
-			_animationState = kMaggieStateHurtIdle;
+		if (Game_Flag_Query(kFlagMaggieHasBomb)) {
+			_animationState = kMaggieStateBombIdle;
 			_animationFrame = kMaggieStateIdle;
 		} else {
 			switch (_animationState) {
@@ -620,8 +620,8 @@ bool AIScriptMaggie::ChangeAnimationMode(int mode) {
 		}
 		break;
 	case kAnimationModeFeeding:
-		if (Game_Flag_Query(kFlagMaggieIsHurt)) {
-			_animationState = kMaggieStateHurtJumping;
+		if (Game_Flag_Query(kFlagMaggieHasBomb)) {
+			_animationState = kMaggieStateBombJumping;
 			_animationFrame = 0;
 		} else {
 			_animationState = kMaggieStateJumping;
diff --git a/engines/bladerunner/script/ai/mccoy.cpp b/engines/bladerunner/script/ai/mccoy.cpp
index 866ee65..6dd8c90 100644
--- a/engines/bladerunner/script/ai/mccoy.cpp
+++ b/engines/bladerunner/script/ai/mccoy.cpp
@@ -499,24 +499,24 @@ bool AIScriptMcCoy::GoalChanged(int currentGoalNumber, int newGoalNumber) {
 		}
 
 		if (Actor_Query_Friendliness_To_Other(kActorSteele, kActorMcCoy) < Actor_Query_Friendliness_To_Other(kActorClovis, kActorMcCoy)) {
-			Game_Flag_Set(kFlagMcCoyIsNotHelpingReplicants);
+			Game_Flag_Set(kFlagMcCoyIsHelpingReplicants);
 		}
 
 		affectionTowards = Global_Variable_Query(kVariableAffectionTowards);
 		if (affectionTowards == kAffectionTowardsSteele) {
-			if (Game_Flag_Query(kFlagMcCoyIsNotHelpingReplicants)) {
+			if (Game_Flag_Query(kFlagMcCoyIsHelpingReplicants)) {
 				Global_Variable_Set(kVariableAffectionTowards, kAffectionTowardsNone);
 			}
 		} else if (affectionTowards == kAffectionTowardsDektora
 		        || affectionTowards == kAffectionTowardsLucy
 		) {
-			if (!Game_Flag_Query(kFlagMcCoyIsNotHelpingReplicants)) {
+			if (!Game_Flag_Query(kFlagMcCoyIsHelpingReplicants)) {
 				Global_Variable_Set(kVariableAffectionTowards, kAffectionTowardsNone);
 			}
 		}
 
-		if (!Game_Flag_Query(kFlagMcCoyIsNotHelpingReplicants)) {
-			Game_Flag_Set(kFlagMaggieIsHurt);
+		if (!Game_Flag_Query(kFlagMcCoyIsHelpingReplicants)) {
+			Game_Flag_Set(kFlagMaggieHasBomb);
 		}
 
 		Ambient_Sounds_Remove_All_Non_Looping_Sounds(true);
diff --git a/engines/bladerunner/script/ai/sadik.cpp b/engines/bladerunner/script/ai/sadik.cpp
index fb5e725..df9ad65 100644
--- a/engines/bladerunner/script/ai/sadik.cpp
+++ b/engines/bladerunner/script/ai/sadik.cpp
@@ -214,7 +214,7 @@ void AIScriptSadik::Retired(int byActorId) {
 			Ambient_Sounds_Remove_All_Non_Looping_Sounds(true);
 			Ambient_Sounds_Remove_All_Looping_Sounds(1);
 			Game_Flag_Set(kFlagKP07toKP06);
-			Game_Flag_Reset(kFlagMcCoyIsNotHelpingReplicants);
+			Game_Flag_Reset(kFlagMcCoyIsHelpingReplicants);
 			Set_Enter(kSetKP05_KP06, kSceneKP06);
 			return; //true;
 		}
@@ -347,7 +347,7 @@ bool AIScriptSadik::GoalChanged(int currentGoalNumber, int newGoalNumber) {
 		return true;
 
 	case 410:
-		if (Game_Flag_Query(kFlagMcCoyIsNotHelpingReplicants) == 1) {
+		if (Game_Flag_Query(kFlagMcCoyIsHelpingReplicants) == 1) {
 			Actor_Set_Goal_Number(kActorSadik, 414);
 		} else {
 			Actor_Set_Goal_Number(kActorSadik, 411);
@@ -430,7 +430,7 @@ bool AIScriptSadik::GoalChanged(int currentGoalNumber, int newGoalNumber) {
 		return true;
 
 	case 418:
-		Game_Flag_Reset(kFlagMcCoyIsNotHelpingReplicants);
+		Game_Flag_Reset(kFlagMcCoyIsHelpingReplicants);
 		Actor_Set_Goal_Number(kActorClovis, 518);
 		Non_Player_Actor_Combat_Mode_On(kActorSadik, kActorCombatStateIdle, true, kActorMcCoy, 9, kAnimationModeCombatIdle, kAnimationModeCombatWalk, kAnimationModeCombatRun, 0, -1, -1, 15, 300, false);
 		return true;
diff --git a/engines/bladerunner/script/ai/steele.cpp b/engines/bladerunner/script/ai/steele.cpp
index 58ef115..2b2e1f2 100644
--- a/engines/bladerunner/script/ai/steele.cpp
+++ b/engines/bladerunner/script/ai/steele.cpp
@@ -165,7 +165,7 @@ bool AIScriptSteele::Update() {
 		break;
 
 	case 5:
-		if (Game_Flag_Query(kFlagMcCoyIsNotHelpingReplicants)
+		if (Game_Flag_Query(kFlagMcCoyIsHelpingReplicants)
 		 && Actor_Query_Goal_Number(kActorSteele) < 400
 		) {
 			Actor_Set_Goal_Number(kActorSteele, 400);
@@ -208,10 +208,10 @@ void AIScriptSteele::TimerExpired(int timer) {
 
 		AI_Countdown_Timer_Reset(kActorSteele, 1);
 
-		if (goal == 415) {
-			Actor_Set_Goal_Number(kActorSteele, 416);
-		} else if (goal == 416) {
-			Actor_Set_Goal_Number(kActorSteele, 419);
+		if (goal == kGoalSteeleKP03Exploded) {
+			Actor_Set_Goal_Number(kActorSteele, kGoalSteeleKP03Dying);
+		} else if (goal == kGoalSteeleKP03Dying) {
+			Actor_Set_Goal_Number(kActorSteele, kGoalSteeleKP03Dead);
 		}
 	}
 	return; // false;
@@ -309,8 +309,8 @@ void AIScriptSteele::CompletedMovementTrack() {
 		Actor_Set_Goal_Number(kActorSteele, kGoalSteeleHF02LucyShotBySteele);
 		break;
 
-	case 422:
-		Actor_Set_Goal_Number(kActorSteele, 423);
+	case kGoalSteeleKP01Leave:
+		Actor_Set_Goal_Number(kActorSteele, kGoalSteeleKP01Left);
 		break;
 
 	case 432:
@@ -358,15 +358,13 @@ void AIScriptSteele::ClickedByPlayer() {
 		return; //true;
 	}
 
-	if (goal - 241 <= 9) {
-		if (goal == kGoalSteeleHF02ShootLucy) {
-			Actor_Set_Goal_Number(kActorSteele, kGoalSteeleHF02LucyShotBySteele);
-			return; //true;
-		}
+	if (goal == kGoalSteeleHF02ShootLucy) {
+		Actor_Set_Goal_Number(kActorSteele, kGoalSteeleHF02LucyShotBySteele);
+		return; //true;
+	}
 
-		if (goal == kGoalSteeleNR01ConfrontGordo) {
-			return; //true;
-		}
+	if (goal == kGoalSteeleNR01ConfrontGordo) {
+		return; //true;
 	}
 
 	AI_Movement_Track_Pause(1);
@@ -460,7 +458,7 @@ void AIScriptSteele::OtherAgentEnteredCombatMode(int otherActorId, int combatMod
 	if (otherActorId == kActorMcCoy
 	 && Actor_Query_Goal_Number(kActorSteele) == 410
 	)
-		Actor_Set_Goal_Number(kActorSteele, 418);
+		Actor_Set_Goal_Number(kActorSteele, kGoalSteeleKP03ShootMcCoy);
 }
 
 void AIScriptSteele::ShotAtAndMissed() {
@@ -483,7 +481,7 @@ void AIScriptSteele::Retired(int byActorId) {
 
 	if (Actor_Query_Goal_Number(kActorSteele) == 450) {
 		Scene_Exits_Enable();
-		Game_Flag_Set(484);
+		Game_Flag_Set(kFlagKP03BombDisarmed);
 	}
 
 	if (Actor_Query_Goal_Number(kActorSteele) != kGoalSteeleGone) {
@@ -1316,23 +1314,23 @@ bool AIScriptSteele::GoalChanged(int currentGoalNumber, int newGoalNumber) {
 
 	case 400:
 	case 401:
-	case 423:
+	case kGoalSteeleKP01Left:
 		return true;
 
 	case 410:
-		Actor_Set_Targetable(kActorSteele, 1);
-		Actor_Face_Actor(kActorSteele, kActorMcCoy, 1);
+		Actor_Set_Targetable(kActorSteele, true);
+		Actor_Face_Actor(kActorSteele, kActorMcCoy, true);
 		Actor_Start_Speech_Sample(kActorSteele, 2510);
-		Actor_Change_Animation_Mode(kActorSteele, 4);
-		Actor_Face_Actor(kActorMcCoy, kActorSteele, 1);
+		Actor_Change_Animation_Mode(kActorSteele, kAnimationModeCombatIdle);
+		Actor_Face_Actor(kActorMcCoy, kActorSteele, true);
 		Delay(3000);
 		Async_Actor_Walk_To_XYZ(kActorSteele, -109.0f, -36.55f, 26.0f, 0, false);
 		return true;
 
-	case 411:
-		Actor_Face_Actor(kActorMcCoy, kActorSteele, 1);
+	case kGoalSteeleKP03Walk:
+		Actor_Face_Actor(kActorMcCoy, kActorSteele, true);
 		Actor_Says(kActorSteele, 430, 14);
-		Actor_Change_Animation_Mode(kActorSteele, 4);
+		Actor_Change_Animation_Mode(kActorSteele, kAnimationModeCombatIdle);
 		Delay(4000);
 		Async_Actor_Walk_To_XYZ(kActorSteele, -109.0f, -36.55f, 26.0f, 0, false);
 		return true;
@@ -1345,17 +1343,17 @@ bool AIScriptSteele::GoalChanged(int currentGoalNumber, int newGoalNumber) {
 		Async_Actor_Walk_To_XYZ(kActorSteele, 1.0, -36.55f, 111.0f, 0, false);
 		return true;
 
-	case 415:
+	case kGoalSteeleKP03Exploded:
 		Actor_Force_Stop_Walking(kActorSteele);
 		Actor_Change_Animation_Mode(kActorSteele, 51);
 		AI_Countdown_Timer_Start(kActorSteele, 1, 2);
 		return true;
 
-	case 416:
+	case kGoalSteeleKP03Dying:
 		Actor_Set_At_XYZ(kActorSteele, -48.83f, -36.55f, 69.98f, 280);
 		Loop_Actor_Walk_To_Actor(kActorMcCoy, kActorSteele, 36, false, true);
 		Actor_Face_Actor(kActorMcCoy, kActorSteele, true);
-		if (Game_Flag_Query(kFlagMcCoyIsNotHelpingReplicants) == 1) {
+		if (Game_Flag_Query(kFlagMcCoyIsHelpingReplicants)) {
 			Actor_Says(kActorSteele, 400, 3);
 			Actor_Says(kActorMcCoy, 2165, 14);
 			Actor_Says(kActorSteele, 410, 3);
@@ -1371,14 +1369,14 @@ bool AIScriptSteele::GoalChanged(int currentGoalNumber, int newGoalNumber) {
 		AI_Countdown_Timer_Start(kActorSteele, 1, 3);
 		return true;
 
-	case 418:
+	case kGoalSteeleKP03ShootMcCoy:
 		Actor_Face_Actor(kActorSteele, kActorMcCoy, true);
 		Actor_Change_Animation_Mode(kActorSteele, kAnimationModeCombatAttack);
 		Actor_Change_Animation_Mode(kActorMcCoy, kAnimationModeDie);
 		Actor_Retired_Here(kActorMcCoy, 72, 18, true, -1);
 		return true;
 
-	case 419:
+	case kGoalSteeleKP03Dead:
 		Actor_Set_Targetable(kActorSteele, false);
 		Game_Flag_Set(kFlagSteeleDead);
 		Actor_Set_Goal_Number(kActorSteele, kGoalSteeleGone);
@@ -1403,10 +1401,10 @@ bool AIScriptSteele::GoalChanged(int currentGoalNumber, int newGoalNumber) {
 		Actor_Says(kActorSteele, 380, 16);
 		Actor_Says(kActorMcCoy, 2160, 18);
 		Actor_Says(kActorSteele, 390, 13);
-		Actor_Set_Goal_Number(kActorSteele, 422);
+		Actor_Set_Goal_Number(kActorSteele, kGoalSteeleKP01Leave);
 		return true;
 
-	case 422:
+	case kGoalSteeleKP01Leave:
 		AI_Movement_Track_Flush(kActorSteele);
 		AI_Movement_Track_Append(kActorSteele, 530, 0);
 		AI_Movement_Track_Repeat(kActorSteele);
diff --git a/engines/bladerunner/script/ai/zuben.cpp b/engines/bladerunner/script/ai/zuben.cpp
index 3214cb6..8413901 100644
--- a/engines/bladerunner/script/ai/zuben.cpp
+++ b/engines/bladerunner/script/ai/zuben.cpp
@@ -298,7 +298,7 @@ void AIScriptZuben::Retired(int byActorId) {
 		Ambient_Sounds_Remove_All_Non_Looping_Sounds(true);
 		Ambient_Sounds_Remove_All_Looping_Sounds(1);
 		Game_Flag_Set(kFlagKP07toKP06);
-		Game_Flag_Reset(kFlagMcCoyIsNotHelpingReplicants);
+		Game_Flag_Reset(kFlagMcCoyIsHelpingReplicants);
 		Set_Enter(kSetKP05_KP06, kSceneKP06);
 		// return true;
 		return;
diff --git a/engines/bladerunner/script/scene/hf01.cpp b/engines/bladerunner/script/scene/hf01.cpp
index d01d6d8..2ceda56 100644
--- a/engines/bladerunner/script/scene/hf01.cpp
+++ b/engines/bladerunner/script/scene/hf01.cpp
@@ -158,7 +158,7 @@ bool SceneScriptHF01::ClickedOnActor(int actorId) {
 			 )
 			 && !Game_Flag_Query(kFlagCrazylegsArrested)
 			 &&  Actor_Query_Goal_Number(kActorCrazylegs) != 2
-			 &&  Game_Flag_Query(kFlagMcCoyIsNotHelpingReplicants)
+			 &&  Game_Flag_Query(kFlagMcCoyIsHelpingReplicants)
 			 && !Game_Flag_Query(662)
 			) {
 				Game_Flag_Set(662);
diff --git a/engines/bladerunner/script/scene/kp01.cpp b/engines/bladerunner/script/scene/kp01.cpp
index 80109af..8fbccd5 100644
--- a/engines/bladerunner/script/scene/kp01.cpp
+++ b/engines/bladerunner/script/scene/kp01.cpp
@@ -33,7 +33,7 @@ void SceneScriptKP01::InitializeScene() {
 		Setup_Scene_Information( 239.0f, -12.2f, -146.0f, 820);
 		Game_Flag_Reset(kFlagKP02toKP01);
 		if (!Game_Flag_Query(kFlagKP01Entered)
-		 && !Game_Flag_Query(kFlagMcCoyIsNotHelpingReplicants)
+		 && !Game_Flag_Query(kFlagMcCoyIsHelpingReplicants)
 		) {
 			Game_Flag_Set(kFlagKP01Entered);
 			Actor_Set_Goal_Number(kActorSteele, kGoalSteeleKP01Wait);
@@ -124,19 +124,19 @@ void SceneScriptKP01::SceneFrameAdvanced(int frame) {
 
 void SceneScriptKP01::ActorChangedGoal(int actorId, int newGoal, int oldGoal, bool currentSet) {
 	if (actorId == kActorSteele) {
-		if (newGoal == 422) {
+		if (newGoal == kGoalSteeleKP01Leave) {
 			if (Game_Flag_Query(kFlagDirectorsCut)) {
 				Delay(500);
 				Actor_Change_Animation_Mode(kActorMcCoy, 75);
 				Delay(4500);
 				Actor_Face_Current_Camera(kActorMcCoy, true);
-				Actor_Says(kActorMcCoy, 510, 3);
+				Actor_Says(kActorMcCoy, 510, kAnimationModeTalk);
 			} else {
 				Delay(3000);
 			}
 			Async_Actor_Walk_To_XYZ(kActorMcCoy, 76.56f, -12.2f, -405.48f, 0, false);
 			//return true;
-		} else if (newGoal == 423) {
+		} else if (newGoal == kGoalSteeleKP01Left) {
 			Player_Gains_Control();
 			Actor_Force_Stop_Walking(kActorMcCoy);
 			Ambient_Sounds_Remove_All_Non_Looping_Sounds(true);
@@ -163,7 +163,7 @@ void SceneScriptKP01::PlayerWalkedIn() {
 	}
 
 	Loop_Actor_Walk_To_XYZ(kActorMcCoy, 211.0f, -12.2f, -146.0f, 0, false, false, 0);
-	if (!Game_Flag_Query(kFlagMcCoyIsNotHelpingReplicants)
+	if (!Game_Flag_Query(kFlagMcCoyIsHelpingReplicants)
 	 && !Game_Flag_Query(714)
 	 &&  Actor_Query_Goal_Number(kActorSteele) == kGoalSteeleKP01Wait
 	 &&  Actor_Query_Goal_Number(kActorSteele) != 599
diff --git a/engines/bladerunner/script/scene/kp02.cpp b/engines/bladerunner/script/scene/kp02.cpp
index 9759a9f..50dd9c4 100644
--- a/engines/bladerunner/script/scene/kp02.cpp
+++ b/engines/bladerunner/script/scene/kp02.cpp
@@ -142,7 +142,7 @@ void SceneScriptKP02::PlayerWalkedIn() {
 		Game_Flag_Reset(kFlagKP01toKP02);
 	}
 
-	if (Game_Flag_Query(kFlagMcCoyIsNotHelpingReplicants)
+	if (Game_Flag_Query(kFlagMcCoyIsHelpingReplicants)
 	 && Actor_Query_Goal_Number(kActorSteele) != 599
 	) {
 		Actor_Set_Goal_Number(kActorSteele, 450);
diff --git a/engines/bladerunner/script/scene/kp03.cpp b/engines/bladerunner/script/scene/kp03.cpp
index 1888380..fe2746c 100644
--- a/engines/bladerunner/script/scene/kp03.cpp
+++ b/engines/bladerunner/script/scene/kp03.cpp
@@ -24,6 +24,14 @@
 
 namespace BladeRunner {
 
+enum KP03Loops {
+	kKP03MainLoopBombInactive  = 0,
+	kKP03MainLoopBombActive    = 2,
+	kKP03MainLoopBombExploding = 4,
+	kKP03MainLoopBombExploded  = 5,
+	kKP03MainLoopBombNoWire    = 7
+};
+
 void SceneScriptKP03::InitializeScene() {
 	if (Game_Flag_Query(kFlagKP05toKP03)) {
 		Setup_Scene_Information(   1.0f, -36.55f, 111.0f, 200);
@@ -40,22 +48,23 @@ void SceneScriptKP03::InitializeScene() {
 	Ambient_Sounds_Add_Sound(376, 50, 180, 50, 100, 0, 0, -101, -101, 0, 0);
 	Ambient_Sounds_Add_Sound(377, 50, 180, 50, 100, 0, 0, -101, -101, 0, 0);
 
-	if (Game_Flag_Query(422)) {
-		Scene_Loop_Set_Default(5);
-	} else if (Game_Flag_Query(484)) {
-		Scene_Loop_Set_Default(7);
+	if (Game_Flag_Query(kFlagKP03BombExploded)) {
+		Scene_Loop_Set_Default(kKP03MainLoopBombExploded);
+	} else if (Game_Flag_Query(kFlagKP03BombDisarmed)) {
+		Scene_Loop_Set_Default(kKP03MainLoopBombNoWire);
 	} else {
-		Scene_Loop_Set_Default(2);
-		Game_Flag_Set(421);
+		Scene_Loop_Set_Default(kKP03MainLoopBombActive);
+		Game_Flag_Set(kFlagKP03BombActive);
 	}
-	if (( Actor_Query_Goal_Number(kActorSteele) != 599
-	  && !Game_Flag_Query(422)
-	  && !Game_Flag_Query(484)
+
+	if (( Actor_Query_Goal_Number(kActorSteele) != kGoalSteeleGone
+	  && !Game_Flag_Query(kFlagKP03BombExploded)
+	  && !Game_Flag_Query(kFlagKP03BombDisarmed)
 	 )
-	 && ((Game_Flag_Query(kFlagMcCoyIsNotHelpingReplicants)
+	 && ((Game_Flag_Query(kFlagMcCoyIsHelpingReplicants)
 	   && Game_Flag_Query(kFlagKP05toKP03)
 	  )
-	  || (!Game_Flag_Query(kFlagMcCoyIsNotHelpingReplicants)
+	  || (!Game_Flag_Query(kFlagMcCoyIsHelpingReplicants)
 	   &&  Game_Flag_Query(kFlagKP01toKP03)
 	  )
 	 )
@@ -79,31 +88,35 @@ bool SceneScriptKP03::MouseClick(int x, int y) {
 
 bool SceneScriptKP03::ClickedOn3DObject(const char *objectName, bool combatMode) {
 	Actor_Face_Object(kActorSteele, "BRACK MID", true);
-	if (Object_Query_Click("BRACK MID", objectName) && !Game_Flag_Query(422)) {
+	if ( Object_Query_Click("BRACK MID", objectName)
+	 && !Game_Flag_Query(kFlagKP03BombExploded)
+	) {
 		if (combatMode) {
-			Scene_Loop_Set_Default(5);
-			Scene_Loop_Start_Special(kSceneLoopModeOnce, 4, true);
+			Scene_Loop_Set_Default(kKP03MainLoopBombExploded);
+			Scene_Loop_Start_Special(kSceneLoopModeOnce, kKP03MainLoopBombExploding, true);
 			Actor_Change_Animation_Mode(kActorMcCoy, 39);
 			Actor_Retired_Here(kActorMcCoy, 72, 18, 1, -1);
-			Game_Flag_Set(422);
-			Game_Flag_Reset(421);
+			Game_Flag_Set(kFlagKP03BombExploded);
+			Game_Flag_Reset(kFlagKP03BombActive);
 			return false;
 		}
-		if (Actor_Query_Goal_Number(kActorSteele) == 411) {
+
+		if (Actor_Query_Goal_Number(kActorSteele) == kGoalSteeleKP03Walk) {
 			Scene_Exits_Enable();
-			sub_401E54();
+			saveSteele();
 		} else {
 			if (Game_Flag_Query(kFlagKP01toKP03)) {
 				Loop_Actor_Walk_To_XYZ(kActorMcCoy, -137.0f, -36.55f, 26.0f, 0, 0, true, 0);
 			} else if (Game_Flag_Query(kFlagKP05toKP03)) {
 				Loop_Actor_Walk_To_XYZ(kActorMcCoy, -50.0f, -36.55f, 78.0f, 0, 0, true, 0);
 			}
-			if (Game_Flag_Query(421)) {
+
+			if (Game_Flag_Query(kFlagKP03BombActive)) {
 				Actor_Face_Object(kActorMcCoy, "BRACK MID", true);
-				Game_Flag_Set(484);
-				Game_Flag_Reset(421);
-				Scene_Loop_Set_Default(7);
-				Scene_Loop_Start_Special(kSceneLoopModeOnce, 0, false);
+				Game_Flag_Set(kFlagKP03BombDisarmed);
+				Game_Flag_Reset(kFlagKP03BombActive);
+				Scene_Loop_Set_Default(kKP03MainLoopBombNoWire);
+				Scene_Loop_Start_Special(kSceneLoopModeOnce, kKP03MainLoopBombInactive, false);
 				Actor_Voice_Over(1110, kActorVoiceOver);
 				Actor_Voice_Over(1120, kActorVoiceOver);
 			} else {
@@ -118,10 +131,10 @@ bool SceneScriptKP03::ClickedOn3DObject(const char *objectName, bool combatMode)
 
 bool SceneScriptKP03::ClickedOnActor(int actorId) {
 	if (actorId == kActorSteele
-	 && Actor_Query_Goal_Number(kActorSteele) == 411
+	 && Actor_Query_Goal_Number(kActorSteele) == kGoalSteeleKP03Walk
 	) {
 		Actor_Face_Object(kActorSteele, "BRACK MID", true);
-		sub_401E54();
+		saveSteele();
 	}
 	return false;
 }
@@ -132,7 +145,7 @@ bool SceneScriptKP03::ClickedOnItem(int itemId, bool a2) {
 
 bool SceneScriptKP03::ClickedOnExit(int exitId) {
 	if (Actor_Query_Goal_Number(kActorSteele) == 410) {
-		Actor_Set_Goal_Number(kActorSteele, 418);
+		Actor_Set_Goal_Number(kActorSteele, kGoalSteeleKP03ShootMcCoy);
 	} else {
 		if (exitId == 0) {
 			if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, 1.0f, -36.55f, 111.0f, 0, true, false, 0)) {
@@ -168,73 +181,73 @@ bool SceneScriptKP03::ClickedOn2DRegion(int region) {
 }
 
 void SceneScriptKP03::SceneFrameAdvanced(int frame) {
-	int v1;
-	float x, y, z;
-
 	if (frame == 123) {
 		Ambient_Sounds_Play_Sound(491, 99, -60, 100, 99);
 	}
 
-	if ( Game_Flag_Query(421)
-	 && !Game_Flag_Query(484)
+	if ( Game_Flag_Query(kFlagKP03BombActive)
+	 && !Game_Flag_Query(kFlagKP03BombDisarmed)
+	 && !Game_Flag_Query(kFlagKP03BombExploded)
 	) {
-		v1 = -1;
-		if (!Game_Flag_Query(422)) {
-			Actor_Query_XYZ(kActorMcCoy, &x, &y, &z);
+		float x, y, z;
+		int bombTriggeredByActor = -1;
+
+		Actor_Query_XYZ(kActorMcCoy, &x, &y, &z);
+		if ((Game_Flag_Query(kFlagKP01toKP03)
+			&& -130.0f < x
+			)
+			|| (Game_Flag_Query(kFlagKP05toKP03)
+			&& -130.0f > x
+			)
+		) {
+			bombTriggeredByActor = kActorMcCoy;
+		}
+
+		Actor_Query_XYZ(kActorSteele, &x, &y, &z);
+		if (Game_Flag_Query(kFlagMcCoyIsHelpingReplicants)
+		 && Actor_Query_Which_Set_In(kActorSteele) == kSetKP03
+		) {
 			if ((Game_Flag_Query(kFlagKP01toKP03)
-			  && -130.0f < x
+			  && -130.0f > x
 			 )
 			 || (Game_Flag_Query(kFlagKP05toKP03)
-			  && -130.0f > x
+			  && -130.0f < x
 			 )
 			) {
-				v1 = 0;
-			}
-		}
-		if (!Game_Flag_Query(422)) { //todo ? same condition as before
-			Actor_Query_XYZ(kActorSteele, &x, &y, &z);
-			if (Game_Flag_Query(kFlagMcCoyIsNotHelpingReplicants)
-			 && Actor_Query_Which_Set_In(kActorSteele) == 46
-			) {
-				if ((Game_Flag_Query(kFlagKP01toKP03)
-				  && -130.0f > x
-				 )
-				 || (Game_Flag_Query(kFlagKP05toKP03)
-				  && -130.0f < x
-				 )
-				) {
-					v1 = 1;
-				}
-			} else if ((Game_Flag_Query(kFlagKP01toKP03)
-			         && -130.0f < x
-			        )
-			        || (Game_Flag_Query(kFlagKP05toKP03)
-			         && -130.0f > x
-			        )
-			) {
-				v1 = 1;
+				bombTriggeredByActor = kActorSteele;
 			}
+		} else if ((Game_Flag_Query(kFlagKP01toKP03)
+		         && -130.0f < x
+		        )
+		        || (Game_Flag_Query(kFlagKP05toKP03)
+		         && -130.0f > x
+		        )
+		) {
+			bombTriggeredByActor = kActorSteele;
 		}
-		if (v1 != -1) {
-			Scene_Loop_Set_Default(5);
-			Scene_Loop_Start_Special(kSceneLoopModeOnce, 4, true);
-			Game_Flag_Set(422);
-			Game_Flag_Reset(421);
+
+		if (bombTriggeredByActor != -1) {
+			Scene_Loop_Set_Default(kKP03MainLoopBombExploded);
+			Scene_Loop_Start_Special(kSceneLoopModeOnce, kKP03MainLoopBombExploding, true);
+			Game_Flag_Set(kFlagKP03BombExploded);
+			Game_Flag_Reset(kFlagKP03BombActive);
 			Unclickable_Object("BRACK MID");
 			Scene_Exits_Enable();
-			if (v1 == 1) {
-				Actor_Set_Goal_Number(kActorSteele, 415);
+
+			if (bombTriggeredByActor == kActorSteele) {
+				Actor_Set_Goal_Number(kActorSteele, kGoalSteeleKP03Exploded);
 				Music_Play(12, 25, 0, 1, -1, 0, 0);
 				if (Actor_Query_Inch_Distance_From_Actor(kActorMcCoy, kActorSteele) <= 120) {
-					v1 = 0;
+					bombTriggeredByActor = kActorMcCoy;
 				}
 			}
-			if (v1) {
-				Actor_Change_Animation_Mode(kActorMcCoy, 21);
+
+			if (bombTriggeredByActor == kActorSteele) {
+				Actor_Change_Animation_Mode(kActorMcCoy, kAnimationModeHit);
 			} else {
 				Actor_Force_Stop_Walking(kActorMcCoy);
-				Actor_Change_Animation_Mode(kActorMcCoy, 48);
-				Actor_Retired_Here(kActorMcCoy, 72, 18, 1, -1);
+				Actor_Change_Animation_Mode(kActorMcCoy, kAnimationModeDie);
+				Actor_Retired_Here(kActorMcCoy, 72, 18, true, -1);
 			}
 		}
 	}
@@ -245,26 +258,26 @@ void SceneScriptKP03::ActorChangedGoal(int actorId, int newGoal, int oldGoal, bo
 
 void SceneScriptKP03::PlayerWalkedIn() {
 	if (Game_Flag_Query(kFlagKP05toKP03)) {
-		Loop_Actor_Walk_To_XYZ(kActorMcCoy, 1.0f, -36.55f, 87.0f, 0, 0, false, 0);
+		Loop_Actor_Walk_To_XYZ(kActorMcCoy, 1.0f, -36.55f, 87.0f, 0, false, false, 0);
 	}
 
 	if (Actor_Query_Is_In_Current_Set(kActorSteele)
-	 && Actor_Query_Goal_Number(kActorSteele) != 419
+	 && Actor_Query_Goal_Number(kActorSteele) != kGoalSteeleKP03Dead
 	) {
-		if (Game_Flag_Query(kFlagMcCoyIsNotHelpingReplicants)) {
+		if (Game_Flag_Query(kFlagMcCoyIsHelpingReplicants)) {
 			if (Game_Flag_Query(kFlagKP05toKP03)) {
 				Actor_Set_Goal_Number(kActorSteele, 410);
 			}
 			return;
 		}
 
-		if (!Game_Flag_Query(422)
-		 && !Game_Flag_Query(484)
+		if (!Game_Flag_Query(kFlagKP03BombExploded)
+		 && !Game_Flag_Query(kFlagKP03BombDisarmed)
 		 &&  Game_Flag_Query(kFlagKP01toKP03)
 		) {
 			Scene_Exits_Disable();
 			Delay(1000);
-			Actor_Set_Goal_Number(kActorSteele, 411);
+			Actor_Set_Goal_Number(kActorSteele, kGoalSteeleKP03Walk);
 		}
 	}
 }
@@ -275,28 +288,28 @@ void SceneScriptKP03::PlayerWalkedOut() {
 void SceneScriptKP03::DialogueQueueFlushed(int a1) {
 }
 
-void SceneScriptKP03::sub_401E54() {
+void SceneScriptKP03::saveSteele() {
 	Player_Loses_Control();
 	Actor_Says(kActorMcCoy, 2180, 14);
 	Actor_Set_Goal_Number(kActorSteele, 412);
 	Actor_Says(kActorSteele, 480, 60);
 	Actor_Face_Object(kActorMcCoy, "BRACK MID", true);
 	Actor_Says(kActorMcCoy, 2185, 14);
-	Loop_Actor_Walk_To_XYZ(kActorSteele, -137.0f, -36.55f, 26.0f, 0, 0, false, 0);
+	Loop_Actor_Walk_To_XYZ(kActorSteele, -137.0f, -36.55f, 26.0f, 0, false, false, 0);
 	Actor_Face_Object(kActorSteele, "BRACK MID", true);
 	Actor_Says(kActorSteele, 490, 58);
 	Actor_Says(kActorMcCoy, 2190, 14);
 	Actor_Says(kActorSteele, 500, 58);
 	Actor_Says(kActorSteele, 510, 59);
 	Actor_Says(kActorSteele, 520, 60);
-	Game_Flag_Set(484);
-	Game_Flag_Reset(421);
-	Scene_Loop_Set_Default(7);
-	Scene_Loop_Start_Special(kSceneLoopModeOnce, 7, false);
+	Game_Flag_Set(kFlagKP03BombDisarmed);
+	Game_Flag_Reset(kFlagKP03BombActive);
+	Scene_Loop_Set_Default(kKP03MainLoopBombNoWire);
+	Scene_Loop_Start_Special(kSceneLoopModeOnce, kKP03MainLoopBombNoWire, false);
 	Actor_Set_Goal_Number(kActorSteele, 413);
 	Actor_Says(kActorMcCoy, 2195, 14);
 	Ambient_Sounds_Play_Sound(151, 40, -60, -60, 0);
-	Loop_Actor_Walk_To_XYZ(kActorMcCoy, 1.0f, -36.55f, 111.0f, 0, 0, false, 0);
+	Loop_Actor_Walk_To_XYZ(kActorMcCoy, 1.0f, -36.55f, 111.0f, 0, false, false, 0);
 	Actor_Set_Goal_Number(kActorSteele, 430);
 	Ambient_Sounds_Remove_All_Non_Looping_Sounds(true);
 	Ambient_Sounds_Remove_All_Looping_Sounds(1);
diff --git a/engines/bladerunner/script/scene/kp04.cpp b/engines/bladerunner/script/scene/kp04.cpp
index 4de125d..a921066 100644
--- a/engines/bladerunner/script/scene/kp04.cpp
+++ b/engines/bladerunner/script/scene/kp04.cpp
@@ -74,7 +74,7 @@ bool SceneScriptKP04::ClickedOnExit(int exitId) {
 		if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -905.0f, 94.89f, 1357.0f, 0, true, false, 0)) {
 			Ambient_Sounds_Remove_All_Non_Looping_Sounds(true);
 			Ambient_Sounds_Remove_All_Looping_Sounds(1);
-			Game_Flag_Set(416);
+			Game_Flag_Set(kFlagKP04toKP01);
 			Set_Enter(kSetKP01, kSceneKP01);
 		}
 		return true;
diff --git a/engines/bladerunner/script/scene/kp05.cpp b/engines/bladerunner/script/scene/kp05.cpp
index 03f3fb2..ff3bb08 100644
--- a/engines/bladerunner/script/scene/kp05.cpp
+++ b/engines/bladerunner/script/scene/kp05.cpp
@@ -55,7 +55,7 @@ void SceneScriptKP05::SceneLoaded() {
 	Unobstacle_Object("OBSTACLEBOX20", true);
 	Clickable_Object("BRIDGE02");
 	Unclickable_Object("BRIDGE02");
-	if (!Actor_Clue_Query(kActorMcCoy, kCluePowerSource) && Game_Flag_Query(kFlagMcCoyIsNotHelpingReplicants)) {
+	if (!Actor_Clue_Query(kActorMcCoy, kCluePowerSource) && Game_Flag_Query(kFlagMcCoyIsHelpingReplicants)) {
 		Item_Add_To_World(118, 960, 9, -1095.0f, 0.0f, 770.0f, 256, 24, 24, false, true, false, true);
 	}
 }
diff --git a/engines/bladerunner/script/scene/kp06.cpp b/engines/bladerunner/script/scene/kp06.cpp
index 2a2d2b4..0cd53df 100644
--- a/engines/bladerunner/script/scene/kp06.cpp
+++ b/engines/bladerunner/script/scene/kp06.cpp
@@ -112,7 +112,7 @@ bool SceneScriptKP06::ClickedOnExit(int exitId) {
 	if (exitId == 1) {
 		if (Actor_Clue_Query(kActorSadik, kCluePowerSource) || Actor_Query_Goal_Number(kActorSadik) != 416) {
 			if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -731.0f, 8.26f, -657.0f, 0, 1, false, 0)) {
-				if (Game_Flag_Query(kFlagMcCoyIsNotHelpingReplicants)) {
+				if (Game_Flag_Query(kFlagMcCoyIsHelpingReplicants)) {
 					if (!Game_Flag_Query(714)) {
 						Player_Set_Combat_Mode(false);
 					}
@@ -155,7 +155,7 @@ void SceneScriptKP06::ActorChangedGoal(int actorId, int newGoal, int oldGoal, bo
 }
 
 void SceneScriptKP06::PlayerWalkedIn() {
-	if (!Game_Flag_Query(kFlagMcCoyIsNotHelpingReplicants)
+	if (!Game_Flag_Query(kFlagMcCoyIsHelpingReplicants)
 	 && Game_Flag_Query(kFlagKP07toKP06)
 	) {
 		Game_Flag_Reset(kFlagKP07toKP06);
diff --git a/engines/bladerunner/script/scene/kp07.cpp b/engines/bladerunner/script/scene/kp07.cpp
index 9ad6f8d..4574252 100644
--- a/engines/bladerunner/script/scene/kp07.cpp
+++ b/engines/bladerunner/script/scene/kp07.cpp
@@ -31,7 +31,7 @@ void SceneScriptKP07::InitializeScene() {
 
 	Scene_Exit_Add_2D_Exit(0, 315, 185, 381, 285, 0);
 
-	if (Game_Flag_Query(kFlagMcCoyIsNotHelpingReplicants)) {
+	if (Game_Flag_Query(kFlagMcCoyIsHelpingReplicants)) {
 		if (Game_Flag_Query(kFlagDektoraIsReplicant)
 		 && Actor_Query_Goal_Number(kActorDektora) < kGoalDektoraGone
 		) {
@@ -93,12 +93,12 @@ void SceneScriptKP07::InitializeScene() {
 }
 
 void SceneScriptKP07::SceneLoaded() {
-	if (!Game_Flag_Query(kFlagMcCoyIsNotHelpingReplicants)) {
+	if (!Game_Flag_Query(kFlagMcCoyIsHelpingReplicants)) {
 		Music_Play(19, 25, 0, 0, -1, 1, 0);
 	}
 	Obstacle_Object("BUNK_TRAY01", true);
 	Unobstacle_Object("BUNK_TRAY01", true);
-	if (Game_Flag_Query(kFlagMcCoyIsNotHelpingReplicants)) {
+	if (Game_Flag_Query(kFlagMcCoyIsHelpingReplicants)) {
 		Player_Set_Combat_Mode(false);
 		Scene_Exits_Disable();
 	}
@@ -117,7 +117,7 @@ bool SceneScriptKP07::ClickedOnActor(int actorId) {
 		if (Game_Flag_Query(697) || actorId != kActorClovis || Actor_Query_Goal_Number(kActorClovis) == 599 || Actor_Query_Goal_Number(kActorClovis) == 515) {
 			return false;
 		}
-		if (Game_Flag_Query(kFlagMcCoyIsNotHelpingReplicants)) {
+		if (Game_Flag_Query(kFlagMcCoyIsHelpingReplicants)) {
 			Actor_Set_Goal_Number(kActorClovis, 516);
 		} else {
 			Music_Play(20, 31, 0, 0, -1, 1, 0);
@@ -160,7 +160,7 @@ void SceneScriptKP07::ActorChangedGoal(int actorId, int newGoal, int oldGoal, bo
 void SceneScriptKP07::PlayerWalkedIn() {
 	Loop_Actor_Walk_To_XYZ(kActorMcCoy, 9.0f, -41.88f, -81.0f, 0, 0, false, 0);
 	if (!Game_Flag_Query(658)) {
-		if (Game_Flag_Query(kFlagMcCoyIsNotHelpingReplicants)) {
+		if (Game_Flag_Query(kFlagMcCoyIsHelpingReplicants)) {
 			Actor_Face_Actor(kActorMcCoy, kActorClovis, true);
 			Actor_Says(kActorClovis, 1240, 3);
 			Actor_Says(kActorMcCoy, 8500, 3);
diff --git a/engines/bladerunner/script/scene/ma02.cpp b/engines/bladerunner/script/scene/ma02.cpp
index 29a14a9..b3e9386 100644
--- a/engines/bladerunner/script/scene/ma02.cpp
+++ b/engines/bladerunner/script/scene/ma02.cpp
@@ -44,7 +44,7 @@ void SceneScriptMA02::InitializeScene() {
 
 	if (Global_Variable_Query(kVariableChapter) >= 4
 	 && Global_Variable_Query(kVariableChapter) == 5
-	 && Game_Flag_Query(kFlagMcCoyIsNotHelpingReplicants)
+	 && Game_Flag_Query(kFlagMcCoyIsHelpingReplicants)
 	) {
 		Actor_Set_Goal_Number(kActorMaggie, 599);
 		Actor_Change_Animation_Mode(kActorMaggie, 88);
@@ -68,7 +68,7 @@ void SceneScriptMA02::InitializeScene() {
 	}
 
 	if ( Global_Variable_Query(kVariableChapter) == 5
-	 &&  Game_Flag_Query(kFlagMcCoyIsNotHelpingReplicants)
+	 &&  Game_Flag_Query(kFlagMcCoyIsHelpingReplicants)
 	 && !Actor_Clue_Query(kActorMcCoy, kClueCrystalsCigarette)
 	) {
 		Overlay_Play("MA02OVER", 0, 1, 0, 0);
@@ -98,7 +98,7 @@ bool SceneScriptMA02::ClickedOn3DObject(const char *objectName, bool a2) {
 			Actor_Face_Object(kActorMcCoy, "BAR-MAIN", true);
 			if (Global_Variable_Query(kVariableChapter) < 4) {
 				Actor_Set_Goal_Number(kActorMaggie, 3);
-			} else if (Global_Variable_Query(kVariableChapter) == 5 && Game_Flag_Query(kFlagMcCoyIsNotHelpingReplicants) && !Actor_Clue_Query(kActorMcCoy, kClueCrystalsCigarette)) {
+			} else if (Global_Variable_Query(kVariableChapter) == 5 && Game_Flag_Query(kFlagMcCoyIsHelpingReplicants) && !Actor_Clue_Query(kActorMcCoy, kClueCrystalsCigarette)) {
 				Overlay_Remove("MA02OVER");
 				Item_Pickup_Spin_Effect(985, 480, 240);
 				Actor_Voice_Over(1150, kActorVoiceOver);
@@ -188,7 +188,7 @@ void SceneScriptMA02::PlayerWalkedIn() {
 	if ( Global_Variable_Query(kVariableChapter) == 5
 	 && !Game_Flag_Query(654)
 	) {
-		if (Game_Flag_Query(kFlagMcCoyIsNotHelpingReplicants)) {
+		if (Game_Flag_Query(kFlagMcCoyIsHelpingReplicants)) {
 			Actor_Says(kActorMcCoy, 2390, kAnimationModeIdle);
 			Music_Play(2, 25, 0, 3, -1, 0, 0);
 		} else {
diff --git a/engines/bladerunner/script/scene/ma04.cpp b/engines/bladerunner/script/scene/ma04.cpp
index d750d88..5013bb5 100644
--- a/engines/bladerunner/script/scene/ma04.cpp
+++ b/engines/bladerunner/script/scene/ma04.cpp
@@ -175,7 +175,7 @@ bool SceneScriptMA04::ClickedOn2DRegion(int region) {
 				Sound_Play(123, 100, 0, 0, 50);
 				Overlay_Remove("MA04OVER");
 				Delay(500);
-				if (Game_Flag_Query(kFlagMcCoyIsNotHelpingReplicants)) {
+				if (Game_Flag_Query(kFlagMcCoyIsHelpingReplicants)) {
 					if (Global_Variable_Query(kVariableAffectionTowards) == kAffectionTowardsDektora) {
 						phoneCallWithDektora();
 					} else if (Global_Variable_Query(kVariableAffectionTowards) == kAffectionTowardsLucy) {
diff --git a/engines/bladerunner/script/scene_script.h b/engines/bladerunner/script/scene_script.h
index 1212371..df8fe1a 100644
--- a/engines/bladerunner/script/scene_script.h
+++ b/engines/bladerunner/script/scene_script.h
@@ -242,7 +242,7 @@ DECLARE_SCRIPT(KP02)
 END_SCRIPT
 
 DECLARE_SCRIPT(KP03)
-	void sub_401E54();
+	void saveSteele();
 END_SCRIPT
 
 DECLARE_SCRIPT(KP04)


Commit: a7f1230980674397486af0c8ec4057d83f3ff0dd
    https://github.com/scummvm/scummvm/commit/a7f1230980674397486af0c8ec4057d83f3ff0dd
Author: Peter Kohaut (peter.kohaut at gmail.com)
Date: 2019-02-03T11:44:55+01:00

Commit Message:
BLADERUNNER: Fixed end credits

Game is completable for blade runner path

Changed paths:
    engines/bladerunner/bladerunner.cpp
    engines/bladerunner/game_constants.h
    engines/bladerunner/outtake.cpp
    engines/bladerunner/ui/elevator.cpp
    engines/bladerunner/ui/end_credits.cpp
    engines/bladerunner/ui/esper.cpp
    engines/bladerunner/ui/scores.cpp
    engines/bladerunner/ui/spinner.cpp
    engines/bladerunner/ui/vk.cpp


diff --git a/engines/bladerunner/bladerunner.cpp b/engines/bladerunner/bladerunner.cpp
index 4768ca5..49450e6 100644
--- a/engines/bladerunner/bladerunner.cpp
+++ b/engines/bladerunner/bladerunner.cpp
@@ -340,7 +340,7 @@ bool BladeRunnerEngine::startup(bool hasSavegames) {
 
 	_lights = new Lights(this);
 
-	// TODO: outtake player - but this is done bit differently
+	// outtake player was initialized here in the original game - but this is done bit differently
 
 	_policeMaze = new PoliceMaze(this);
 
@@ -383,11 +383,6 @@ bool BladeRunnerEngine::startup(bool hasSavegames) {
 		return false;
 	}
 
-
-	// TODO: Create datetime - not used
-
-	// TODO: Create graphics surfaces 1-4
-
 	// TODO: Allocate audio cache
 
 	if (hasSavegames) {
@@ -434,7 +429,7 @@ bool BladeRunnerEngine::startup(bool hasSavegames) {
 
 	_ambientSounds = new AmbientSounds(this);
 
-	// TODO: Read BLADE.INI
+	// BLADE.INI was read here, but it was replaced by ScummVM configuration
 
 	_chapters = new Chapters(this);
 	if (!_chapters)
@@ -546,14 +541,13 @@ bool BladeRunnerEngine::startup(bool hasSavegames) {
 
 	_crimesDatabase = new CrimesDatabase(this, "CLUES", _gameInfo->getClueCount());
 
-	// TODO: Scene
 	_scene = new Scene(this);
 
 	// Load INIT.DLL
 	InitScript initScript(this);
 	initScript.SCRIPT_Initialize_Game();
 
-	// TODO: Load AI-ACT1.DLL
+	// Load AI-ACT1.DLL
 	_aiScripts = new AIScripts(this, actorCount);
 
 	initChapterAndScene();
@@ -594,7 +588,7 @@ void BladeRunnerEngine::initChapterAndScene() {
 void BladeRunnerEngine::shutdown() {
 	_mixer->stopAll();
 
-	// TODO: Write BLADE.INI
+	// BLADE.INI as updated here
 
 	delete _vk;
 	_vk = nullptr;
@@ -721,10 +715,6 @@ void BladeRunnerEngine::shutdown() {
 	delete _waypoints;
 	_waypoints = nullptr;
 
-	// TODO: Delete Cover waypoints
-
-	// TODO: Delete Flee waypoints
-
 	delete _scores;
 	_scores = nullptr;
 
@@ -743,8 +733,6 @@ void BladeRunnerEngine::shutdown() {
 	delete _suspectsDatabase;
 	_suspectsDatabase = nullptr;
 
-	// TODO: Delete datetime - not used
-
 	int actorCount = (int)_gameInfo->getActorCount();
 	for (int i = 0; i != actorCount; ++i) {
 		delete _actors[i];
@@ -846,136 +834,141 @@ void BladeRunnerEngine::gameLoop() {
 void BladeRunnerEngine::gameTick() {
 	handleEvents();
 
-	if (_gameIsRunning && _windowIsActive) {
-		if (!_kia->isOpen() && !_sceneScript->isInsideScript() && !_aiScripts->isInsideScript()) {
-			_settings->openNewScene();
-		}
+	if (!_gameIsRunning || !_windowIsActive) {
+		return;
+	}
 
-		// TODO: Autosave
+	if (!_kia->isOpen() && !_sceneScript->isInsideScript() && !_aiScripts->isInsideScript()) {
+		_settings->openNewScene();
+	}
 
-		//probably not needed, this version of tick is just loading data from buffer
-		//_audioMixer->tick();
+	// TODO: Autosave
 
-		if (_kia->isOpen()) {
-			_kia->tick();
-			return;
-		}
+	//probably not needed, this version of tick is just loading data from buffer
+	//_audioMixer->tick();
 
-		if (_spinner->isOpen()) {
-			_spinner->tick();
-			_ambientSounds->tick();
-			return;
-		}
+	if (_kia->isOpen()) {
+		_kia->tick();
+		return;
+	}
 
-		if (_esper->isOpen()) {
-			_esper->tick();
-			return;
-		}
+	if (_spinner->isOpen()) {
+		_spinner->tick();
+		_ambientSounds->tick();
+		return;
+	}
 
-		if (_vk->isOpen()) {
-			_vk->tick();
-			_ambientSounds->tick();
-			return;
-		}
+	if (_esper->isOpen()) {
+		_esper->tick();
+		return;
+	}
 
-		if (_elevator->isOpen()) {
-			_elevator->tick();
-			_ambientSounds->tick();
-			return;
-		}
+	if (_vk->isOpen()) {
+		_vk->tick();
+		_ambientSounds->tick();
+		return;
+	}
 
-		if (_scores->isOpen()) {
-			_scores->tick();
-			_ambientSounds->tick();
-			return;
-		}
+	if (_elevator->isOpen()) {
+		_elevator->tick();
+		_ambientSounds->tick();
+		return;
+	}
 
-		_actorDialogueQueue->tick();
-		if (_scene->didPlayerWalkIn()) {
-			_sceneScript->playerWalkedIn();
-		}
-		bool inDialogueMenu = _dialogueMenu->isVisible();
-		if  (!inDialogueMenu) {
-			for (int i = 0; i < (int)_gameInfo->getActorCount(); ++i) {
-				_actors[i]->tickCombat();
-			}
-		}
+	if (_scores->isOpen()) {
+		_scores->tick();
+		_ambientSounds->tick();
+		return;
+	}
 
-		_policeMaze->tick();
+	_actorDialogueQueue->tick();
+	if (_scene->didPlayerWalkIn()) {
+		_sceneScript->playerWalkedIn();
+	}
 
-		// TODO: Gun range announcements
-		_zbuffer->clean();
+	bool inDialogueMenu = _dialogueMenu->isVisible();
+	if  (!inDialogueMenu) {
+		for (int i = 0; i < (int)_gameInfo->getActorCount(); ++i) {
+			_actors[i]->tickCombat();
+		}
+	}
 
-		_ambientSounds->tick();
+	_policeMaze->tick();
 
-		bool backgroundChanged = false;
-		int frame = _scene->advanceFrame();
-		if (frame >= 0) {
-			_sceneScript->sceneFrameAdvanced(frame);
-			backgroundChanged = true;
-		}
-		blit(_surfaceBack, _surfaceFront);
+	// TODO: Gun range announcements
+	_zbuffer->clean();
 
-		_overlays->tick();
+	_ambientSounds->tick();
 
-		if (!inDialogueMenu) {
-			actorsUpdate();
-		}
+	bool backgroundChanged = false;
+	int frame = _scene->advanceFrame();
+	if (frame >= 0) {
+		_sceneScript->sceneFrameAdvanced(frame);
+		backgroundChanged = true;
+	}
+	blit(_surfaceBack, _surfaceFront);
 
-		if (_settings->getNewScene() == -1 || _sceneScript->isInsideScript() || _aiScripts->isInsideScript()) {
-			_sliceRenderer->setView(_view);
-
-			// Tick and draw all actors in current set
-			int setId = _scene->getSetId();
-			for (int i = 0, end = _gameInfo->getActorCount(); i != end; ++i) {
-				if (_actors[i]->getSetId() == setId) {
-					Common::Rect screenRect;
-					if (_actors[i]->tick(backgroundChanged, &screenRect)) {
-						_zbuffer->mark(screenRect);
-					}
-				}
-			}
+	_overlays->tick();
 
-			_items->tick();
+	if (!inDialogueMenu) {
+		actorsUpdate();
+	}
 
-			_itemPickup->tick();
-			_itemPickup->draw();
+	if (_settings->getNewScene() != -1 && !_sceneScript->isInsideScript() && !_aiScripts->isInsideScript()) {
+		return;
+	}
 
-			Common::Point p = getMousePos();
+	_sliceRenderer->setView(_view);
 
-			if (_dialogueMenu->isVisible()) {
-				_dialogueMenu->tick(p.x, p.y);
-				_dialogueMenu->draw(_surfaceFront);
+	// Tick and draw all actors in current set
+	int setId = _scene->getSetId();
+	for (int i = 0, end = _gameInfo->getActorCount(); i != end; ++i) {
+		if (_actors[i]->getSetId() == setId) {
+			Common::Rect screenRect;
+			if (_actors[i]->tick(backgroundChanged, &screenRect)) {
+				_zbuffer->mark(screenRect);
 			}
+		}
+	}
 
-			if (_debugger->_viewZBuffer) {
-				_surfaceFront.copyRectToSurface(_zbuffer->getData(), 1280, 0, 0, 640, 480);
-			}
+	_items->tick();
 
-			_mouse->tick(p.x, p.y);
-			_mouse->draw(_surfaceFront, p.x, p.y);
+	_itemPickup->tick();
+	_itemPickup->draw();
 
-			// TODO: Process AUD
+	Common::Point p = getMousePos();
 
-			if (_walkSoundId >= 0) {
-				_audioPlayer->playAud(_gameInfo->getSfxTrack(_walkSoundId), _walkSoundVolume, _walkSoundBalance, _walkSoundBalance, 50, 0);
-				_walkSoundId = -1;
-			}
+	if (_dialogueMenu->isVisible()) {
+		_dialogueMenu->tick(p.x, p.y);
+		_dialogueMenu->draw(_surfaceFront);
+	}
 
-			if (_debugger->_isDebuggerOverlay) {
-				_debugger->drawDebuggerOverlay();
-			}
+	if (_debugger->_viewZBuffer) {
+		_surfaceFront.copyRectToSurface(_zbuffer->getData(), 1280, 0, 0, 640, 480);
+	}
 
-			if (_debugger->_viewObstacles) {
-				_obstacles->draw();
-			}
+	_mouse->tick(p.x, p.y);
+	_mouse->draw(_surfaceFront, p.x, p.y);
 
-			_subtitles->tick(_surfaceFront);
+	// TODO: Process AUD
 
-			blitToScreen(_surfaceFront);
-			_system->delayMillis(10);
-		}
+	if (_walkSoundId >= 0) {
+		_audioPlayer->playAud(_gameInfo->getSfxTrack(_walkSoundId), _walkSoundVolume, _walkSoundBalance, _walkSoundBalance, 50, 0);
+		_walkSoundId = -1;
 	}
+
+	if (_debugger->_isDebuggerOverlay) {
+		_debugger->drawDebuggerOverlay();
+	}
+
+	if (_debugger->_viewObstacles) {
+		_obstacles->draw();
+	}
+
+	_subtitles->tick(_surfaceFront);
+
+	blitToScreen(_surfaceFront);
+	_system->delayMillis(10);
 }
 
 void BladeRunnerEngine::actorsUpdate() {
diff --git a/engines/bladerunner/game_constants.h b/engines/bladerunner/game_constants.h
index 3901347..bef9b23 100644
--- a/engines/bladerunner/game_constants.h
+++ b/engines/bladerunner/game_constants.h
@@ -1275,7 +1275,7 @@ enum AnimationModes {
 	kAnimationModeDie = 48,
 	kAnimationModeCombatDie = 49,
 	kAnimationModeFeeding = 52,
-	kAnimationModeSit = 53, // TODO: check
+	kAnimationModeSit = 53,
 	kAnimationModeClimbUp = 64,
 	kAnimationModeClimbDown = 65,
 	kAnimationModeCombatClimbUp = 66,
diff --git a/engines/bladerunner/outtake.cpp b/engines/bladerunner/outtake.cpp
index d4171de..f37729f 100644
--- a/engines/bladerunner/outtake.cpp
+++ b/engines/bladerunner/outtake.cpp
@@ -72,6 +72,10 @@ void OuttakePlayer::play(const Common::String &name, bool noLocalization, int co
 	while (!_vm->_vqaStopIsRequested && !_vm->shouldQuit()) {
 		_vm->handleEvents();
 
+		if (!_vm->_windowIsActive) {
+			continue;
+		}
+
 		int frame = vqaPlayer.update();
 		blit(_surfaceVideo, _vm->_surfaceFront); // This helps to make subtitles disappear properly, if the video is rendered in separate surface and then pushed to the front surface
 		if (frame == -3) { // end of video
diff --git a/engines/bladerunner/ui/elevator.cpp b/engines/bladerunner/ui/elevator.cpp
index 759c0e7..a5e0c65 100644
--- a/engines/bladerunner/ui/elevator.cpp
+++ b/engines/bladerunner/ui/elevator.cpp
@@ -204,7 +204,7 @@ int Elevator::handleMouseDown(int x, int y) {
 }
 
 void Elevator::tick() {
-	if (!_vm->_gameIsRunning) {
+	if (!_vm->_windowIsActive) {
 		return;
 	}
 
@@ -283,8 +283,6 @@ void Elevator::buttonFocus(int buttonId) {
 void Elevator::setupDescription(int actorId, int sentenceId) {
 	_actorId = actorId;
 	_sentenceId = sentenceId;
-
-	// TODO: Use proper timer
 	_timeSpeakDescription = _vm->_time->current() + 600;
 }
 
diff --git a/engines/bladerunner/ui/end_credits.cpp b/engines/bladerunner/ui/end_credits.cpp
index 096f898..0fc97d0 100644
--- a/engines/bladerunner/ui/end_credits.cpp
+++ b/engines/bladerunner/ui/end_credits.cpp
@@ -105,7 +105,7 @@ void EndCredits::show() {
 		//soundSystem::tick(SoundSystem);
 		_vm->handleEvents();
 
-		if (!_vm->_gameIsRunning) {
+		if (!_vm->_windowIsActive) {
 			timeLast = _vm->getTotalPlayTime(); // Original game is using system timer
 
 			continue;
diff --git a/engines/bladerunner/ui/esper.cpp b/engines/bladerunner/ui/esper.cpp
index 791dd27..51e956c 100644
--- a/engines/bladerunner/ui/esper.cpp
+++ b/engines/bladerunner/ui/esper.cpp
@@ -208,7 +208,7 @@ void ESPER::handleMouseDown(int x, int y, bool mainButton) {
 }
 
 void ESPER::tick() {
-	if (!_vm->_gameIsRunning) {
+	if (!_vm->_windowIsActive) {
 		return;
 	}
 
diff --git a/engines/bladerunner/ui/scores.cpp b/engines/bladerunner/ui/scores.cpp
index 3879d81..3134299 100644
--- a/engines/bladerunner/ui/scores.cpp
+++ b/engines/bladerunner/ui/scores.cpp
@@ -95,7 +95,7 @@ void Scores::close() {
 
 	_vm->closeArchive("MODE.MIX");
 
-	// TODO: Unfreeze game time
+	_vm->_time->resume();
 	_vm->_scene->resume();
 }
 
@@ -129,7 +129,7 @@ int Scores::handleMouseDown(int x, int y) {
 }
 
 void Scores::tick() {
-	if (!_vm->_gameIsRunning) {
+	if (!_vm->_windowIsActive) {
 		return;
 	}
 
diff --git a/engines/bladerunner/ui/spinner.cpp b/engines/bladerunner/ui/spinner.cpp
index 32809e8..eb3b197 100644
--- a/engines/bladerunner/ui/spinner.cpp
+++ b/engines/bladerunner/ui/spinner.cpp
@@ -29,8 +29,9 @@
 #include "bladerunner/scene.h"
 #include "bladerunner/shape.h"
 #include "bladerunner/text_resource.h"
-#include "bladerunner/vqa_player.h"
+#include "bladerunner/time.h"
 #include "bladerunner/ui/ui_image_picker.h"
+#include "bladerunner/vqa_player.h"
 
 #include "common/rect.h"
 #include "common/system.h"
@@ -155,7 +156,8 @@ int Spinner::chooseDestination(int loopId, bool immediately) {
 		this
 	);
 
-	// TODO: Freeze game time
+	_vm->_time->pause();
+
 	_selectedDestination = -1;
 	do {
 		_vm->gameTick();
@@ -176,7 +178,7 @@ int Spinner::chooseDestination(int loopId, bool immediately) {
 
 	_isOpen = false;
 
-	// TODO: Unfreeze game time
+	_vm->_time->resume();
 	_vm->_scene->resume();
 
 	return _selectedDestination;
@@ -207,7 +209,7 @@ int Spinner::handleMouseDown(int x, int y) {
 }
 
 void Spinner::tick() {
-	if (!_vm->_gameIsRunning) {
+	if (!_vm->_windowIsActive) {
 		return;
 	}
 
diff --git a/engines/bladerunner/ui/vk.cpp b/engines/bladerunner/ui/vk.cpp
index 031ba3b..ab2b5de 100644
--- a/engines/bladerunner/ui/vk.cpp
+++ b/engines/bladerunner/ui/vk.cpp
@@ -34,14 +34,14 @@
 #include "bladerunner/mouse.h"
 #include "bladerunner/music.h"
 #include "bladerunner/scene.h"
-#include "bladerunner/shape.h"
 #include "bladerunner/script/vk_script.h"
+#include "bladerunner/shape.h"
 #include "bladerunner/slice_renderer.h"
+#include "bladerunner/subtitles.h"
 #include "bladerunner/text_resource.h"
 #include "bladerunner/time.h"
 #include "bladerunner/ui/ui_image_picker.h"
 #include "bladerunner/vqa_player.h"
-#include "bladerunner/subtitles.h"
 
 #include "common/str.h"
 #include "common/keyboard.h"
@@ -128,7 +128,7 @@ void VK::open(int actorId, int calibrationRatio) {
 
 	_script = new VKScript(_vm);
 
-	//TODO: time->lock()
+	_vm->_time->pause();
 
 	init();
 }
@@ -184,7 +184,7 @@ void VK::close() {
 	_vm->_music->setVolume(_volumeMusic);
 	_vm->_ambientSounds->setVolume(_volumeAmbient);
 
-	// TODO: time->unlock();
+	_vm->_time->resume();
 	_vm->_scene->resume();
 }
 
@@ -472,7 +472,7 @@ void VK::init() {
 }
 
 void VK::draw() {
-	if (!_isOpen || !_vm->_gameIsRunning) {
+	if (!_isOpen || !_vm->_windowIsActive) {
 		return;
 	}
 
@@ -895,7 +895,7 @@ void VK::askQuestion(int intensity) {
 
 	for (int i = 0; i < (int)_questions[intensity].size(); ++i) {
 		if (_questions[intensity][i].isPresent && !_questions[intensity][i].wasAsked) {
-			// TODO: related questions are not used in game
+			// cut content? related questions are not used in game
 			// int relatedQuestion = -1;
 			// if (_questions[intensity][i].relatedSentenceId >= 0) {
 			// 	relatedQuestion = vk::findQuestionById(this, questions, relatedQuestionId);





More information about the Scummvm-git-logs mailing list