[Scummvm-git-logs] scummvm master -> 95f42fde63ad09a6684ce62659273228f0b83e46

peterkohaut peterkohaut at users.noreply.github.com
Sun Feb 3 00:14:43 CET 2019


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

Summary:
1df1eefc3e BLADERUNNER: Fixed Rat interaction at UG15
ce3b731656 BLADERUNNER: Cleanup Luther & Lance related scripts
cee294137a BLADERUNNER: Cleanup for scene at UG18
f2d76c2d71 BLADERUNNER: Cleanup of scripts at start of chapter 5
95f42fde63 BLADERUNNER: Initial cleanup of Kipple scripts


Commit: 1df1eefc3e9584516fec7d7b4f09f5216f84de00
    https://github.com/scummvm/scummvm/commit/1df1eefc3e9584516fec7d7b4f09f5216f84de00
Author: Peter Kohaut (peter.kohaut at gmail.com)
Date: 2019-02-03T00:14:09+01:00

Commit Message:
BLADERUNNER: Fixed Rat interaction at UG15

Changed paths:
    engines/bladerunner/bladerunner.cpp
    engines/bladerunner/game_constants.h
    engines/bladerunner/script/ai/free_slot_a.cpp
    engines/bladerunner/script/ai/mccoy.cpp
    engines/bladerunner/script/ai_script.h
    engines/bladerunner/script/kia_script.cpp
    engines/bladerunner/script/scene/dr06.cpp
    engines/bladerunner/script/scene/nr02.cpp
    engines/bladerunner/script/scene/nr11.cpp
    engines/bladerunner/script/scene/ug05.cpp
    engines/bladerunner/script/scene/ug15.cpp
    engines/bladerunner/script/scene/ug16.cpp
    engines/bladerunner/script/scene/ug18.cpp
    engines/bladerunner/script/scene_script.h


diff --git a/engines/bladerunner/bladerunner.cpp b/engines/bladerunner/bladerunner.cpp
index 9b0ffaf..4768ca5 100644
--- a/engines/bladerunner/bladerunner.cpp
+++ b/engines/bladerunner/bladerunner.cpp
@@ -982,19 +982,26 @@ void BladeRunnerEngine::actorsUpdate() {
 	int actorCount = (int)_gameInfo->getActorCount();
 	int setId = _scene->getSetId();
 
-	if (setId != kSetUG18 || _gameVars[kVariableChapter] != 4 || !_gameFlags->query(670) || !_aiScripts->isInsideScript()) {
-		for (int i = 0; i < actorCount; i++) {
-			Actor *actor = _actors[i];
-			if (actor->getSetId() == setId || i == _actorUpdateCounter) {
-				_aiScripts->update(i);
-				actor->timersUpdate();
-			}
-		}
-		++_actorUpdateCounter;
-		if (_actorUpdateCounter >= actorCount) {
-			_actorUpdateCounter = 0;
+	// what a "nice" last minute fix...
+	if ( setId == kSetUG18
+	 && _gameVars[kVariableChapter] == 4
+	 && _gameFlags->query(kFlagCallWithGuzza)
+	 && _aiScripts->isInsideScript()
+	) {
+		return;
+	}
+
+	for (int i = 0; i < actorCount; i++) {
+		Actor *actor = _actors[i];
+		if (actor->getSetId() == setId || i == _actorUpdateCounter) {
+			_aiScripts->update(i);
+			actor->timersUpdate();
 		}
 	}
+	++_actorUpdateCounter;
+	if (_actorUpdateCounter >= actorCount) {
+		_actorUpdateCounter = 0;
+	}
 }
 
 void BladeRunnerEngine::walkingReset() {
diff --git a/engines/bladerunner/game_constants.h b/engines/bladerunner/game_constants.h
index 7aabef9..70d0923 100644
--- a/engines/bladerunner/game_constants.h
+++ b/engines/bladerunner/game_constants.h
@@ -90,7 +90,7 @@ enum Actors {
 	kActorNewscaster = 61,
 	kActorLeon = 62,
 	kActorMaleAnnouncer = 63,
-	kActorFreeSlotA = 64,
+	kActorFreeSlotA = 64, // Rat
 	kActorFreeSlotB = 65,
 	kActorMaggie = 66,
 	kActorGenwalkerA = 67,
@@ -1010,6 +1010,7 @@ enum Flags {
 	kFlagUG07Empty = 623,
 	kFlagTB07TyrellMeeting = 625,
 	kFlagNR01McCoyIsDrugged = 627,
+	kFlagRatWalkingAround = 631,
 	kFlagNR01DektoraFall = 632,
 	kFlagNR11DektoraBurning = 633,
 	kFlagNR11BurnedUp = 634,
@@ -1035,11 +1036,15 @@ enum Flags {
 	kFlagDNARowAvailableTalk = 660,
 	kFlagTB07ShadeDown = 661, // is never set
 	kFlagUG19Available = 665,
+	kFlagCallWithGuzza = 670,
 	kFlagMA07toPS14 = 672,
 	kFlagPS14toMA07 = 673,
+	kFlagUG15RatShot = 676,
+	kFlagUG15BridgeWillBreak = 677,
 	kFlagChapter2Intro = 678,
 	kFlagChapter3Intro = 679,
 	kFlagChapter4Intro = 680,
+	kFlagUG15BridgeBroken = 682,
 	kFlagNotUsed686 = 686,
 	kFlagPS05TV0 = 688,
 	kFlagPS05TV1 = 689,
@@ -1065,6 +1070,7 @@ enum Flags {
 	kFlagCT02McCoyCombatReady = 720,
 	kFlagChapter4Starting = 722,
 	kFlagZubenBountyPaid = 723,
+	kFlagUG15BridgeBreaks = 724,
 	kFlagCT11DogWrapperAvailable = 725,
 	kFlagAR02Entered = 726,
 	kFlagPS04WeaponsOrderForm = 727,
@@ -1106,8 +1112,8 @@ enum Variables {
 	kVariableAffectionTowards = 45, // 0 none, 1 steele, 2 dektora, 3 lucy
 	kVariableGunPulledInFrontOfSebastian = 46,
 	kVariableNR01GetUpCounter = 47,
-	kVariableDNAEvidences = 48,
-
+	kVariableDNAEvidence = 48,
+	kVariableCorruptedGuzzaEvidence = 49,
 	kVariableTaffyLewisMusic = 50,
 	kVariableReplicants = 51,
 	kVariableNextTvNews = 52,
@@ -1629,9 +1635,13 @@ enum GoalMcCoy {
 	kGoalMcCoyNR01LayDrugged = 212,
 	kGoalMcCoyNR04Drink = 220,
 	kGoalMcCoyNR04PassOut = 221,
-
+	kGoalMcCoyNR11Shoot = 230,
 	kGoalMcCoyNR10Fall = 231,
-	kGoalMcCoyArrested = 500
+	kGoalMcCoyCallWithGuzza = 350,
+	kGoalMcCoyUG15Fall = 390,
+	kGoalMcCoyUG15Die = 391,
+	kGoalMcCoyArrested = 500,
+	kGoalMcCoyGone = 599
 };
 
 enum GoalSteele {
@@ -2017,6 +2027,21 @@ enum GoalLeon {
 	kGoalLeonGone = 8
 };
 
+enum GoalFreeSlotA { // Rat
+	kGoalFreeSlotAUG15Wait = 300,
+	kGoalFreeSlotAUG15WalkOut = 301,
+	kGoalFreeSlotAUG15RunToOtherSide = 302,
+	kGoalFreeSlotAUG15RunBack = 303,
+	kGoalFreeSlotAUG15Attack = 304,
+	kGoalFreeSlotAWalkAround = 306,
+	kGoalFreeSlotAWalkAroundRestart = 307,
+	kGoalFreeSlotAAttackMcCoy = 308,
+	kGoalFreeSlotAUG15Die = 305,
+	kGoalFreeSlotAUG15Fall = 309,
+	kGoalFreeSlotAUG15Prepare = 310,
+	kGoalFreeSlotAGone = 599
+};
+
 } // End of namespace BladeRunner
 
 #endif
diff --git a/engines/bladerunner/script/ai/free_slot_a.cpp b/engines/bladerunner/script/ai/free_slot_a.cpp
index 6c3e9e2..f31fbaa 100644
--- a/engines/bladerunner/script/ai/free_slot_a.cpp
+++ b/engines/bladerunner/script/ai/free_slot_a.cpp
@@ -27,9 +27,9 @@ namespace BladeRunner {
 AIScriptFreeSlotA::AIScriptFreeSlotA(BladeRunnerEngine *vm) : AIScriptBase(vm) {
 	_var1 = 0;
 	_var2 = 1;
-	_var3 = 0.0f;
-	_var4 = 0.0f; // not initialized in original
-	_var5 = 0.0f; // not initialized in original
+	_fallSpeed = 0.0f;
+	_fallHeightCurrent = 0.0f; // not initialized in original
+	_fallHeightTarget = 0.0f; // not initialized in original
 }
 
 void AIScriptFreeSlotA::Initialize() {
@@ -40,9 +40,9 @@ void AIScriptFreeSlotA::Initialize() {
 
 	_var1 = 0;
 	_var2 = 1;
-	_var3 = 0.0f;
-	_var4 = 0.0f; // not initialized in original
-	_var5 = 0.0f; // not initialized in original
+	_fallSpeed = 0.0f;
+	_fallHeightCurrent = 0.0f; // not initialized in original
+	_fallHeightTarget = 0.0f; // not initialized in original
 
 	World_Waypoint_Set(525, 45, -780.0f, -615.49f, 2611.0f);
 	World_Waypoint_Set(526, 45, -780.0f, -615.49f, 2759.0f);
@@ -51,68 +51,73 @@ void AIScriptFreeSlotA::Initialize() {
 bool AIScriptFreeSlotA::Update() {
 	switch (Global_Variable_Query(kVariableChapter)) {
 	case 4:
-		if (Actor_Query_Which_Set_In(kActorMcCoy) == kSceneUG02
-		 && Actor_Query_Which_Set_In(kActorFreeSlotA) == kSceneUG02
+		if (Actor_Query_Which_Set_In(kActorMcCoy) == kSetUG15
+		 && Actor_Query_Which_Set_In(kActorFreeSlotA) == kSetUG15
 		) {
 			int goal = Actor_Query_Goal_Number(kActorFreeSlotA);
-			if ((goal == 302
-			  || goal == 303
+			if ((goal == kGoalFreeSlotAUG15RunToOtherSide
+			  || goal == kGoalFreeSlotAUG15RunBack
 			 )
 			 && Actor_Query_Inch_Distance_From_Actor(kActorFreeSlotA, kActorMcCoy) <= 48
 			) {
-				Actor_Set_Goal_Number(kActorFreeSlotA, 304);
-			} else if (goal == 309) {
+				Actor_Set_Goal_Number(kActorFreeSlotA, kGoalFreeSlotAUG15Attack);
+			} else if (goal == kGoalFreeSlotAUG15Fall) {
 				float x, y, z;
 
 				Actor_Query_XYZ(kActorMcCoy, &x, &y, &z);
-				_var4 += _var3;
-				if (_var5 < _var4) {
-					_var3 -= 0.2f;
+				_fallHeightCurrent += _fallSpeed;
+				if (_fallHeightTarget < _fallHeightCurrent) {
+					_fallSpeed -= 0.2f;
 				} else {
-					_var4 = _var5;
+					_fallHeightCurrent = _fallHeightTarget;
 					Actor_Set_Goal_Number(kActorFreeSlotA, 0);
 				}
-				Actor_Set_At_XYZ(kActorFreeSlotA, x, _var4, z, Actor_Query_Facing_1024(kActorFreeSlotA));
+				Actor_Set_At_XYZ(kActorFreeSlotA, x, _fallHeightCurrent, z, Actor_Query_Facing_1024(kActorFreeSlotA));
 			}
-		} else {
-			switch (Actor_Query_Goal_Number(kActorFreeSlotA)) {
-			case 306:
-				if (Actor_Query_Which_Set_In(kActorFreeSlotA) == Player_Query_Current_Set()
-				 && Actor_Query_Inch_Distance_From_Actor(kActorFreeSlotA, kActorMcCoy) <= 48
-				) {
-					Actor_Set_Goal_Number(kActorFreeSlotA, 308);
-				}
-				break;
 
-			case 308:
-				if (Actor_Query_Which_Set_In(kActorFreeSlotA) != Player_Query_Current_Set()) {
-					Actor_Set_Goal_Number(kActorFreeSlotA, 306);
-				}
-				break;
+			return true;
+		}
 
-			case 599:
-				if (Actor_Query_Which_Set_In(kActorFreeSlotA) != Player_Query_Current_Set()) {
-					Game_Flag_Reset(631);
-					Game_Flag_Reset(677);
-					Actor_Set_Goal_Number(kActorFreeSlotA, 0);
-				}
-				break;
+		switch (Actor_Query_Goal_Number(kActorFreeSlotA)) {
+		case kGoalFreeSlotAWalkAround:
+			if (Actor_Query_Which_Set_In(kActorFreeSlotA) == Player_Query_Current_Set()
+				&& Actor_Query_Inch_Distance_From_Actor(kActorFreeSlotA, kActorMcCoy) <= 48
+			) {
+				Actor_Set_Goal_Number(kActorFreeSlotA, kGoalFreeSlotAAttackMcCoy);
+			}
+			break;
 
-			default:
-				if (!Game_Flag_Query(631)) {
-					Game_Flag_Set(631);
-					Actor_Set_Goal_Number(kActorFreeSlotA, 306);
-					Actor_Set_Targetable(kActorFreeSlotA, 1);
-				}
+		case kGoalFreeSlotAAttackMcCoy:
+			if (Actor_Query_Which_Set_In(kActorFreeSlotA) != Player_Query_Current_Set()) {
+				Actor_Set_Goal_Number(kActorFreeSlotA, kGoalFreeSlotAWalkAround);
+			}
+			break;
+
+		case kGoalFreeSlotAGone:
+			if (Actor_Query_Which_Set_In(kActorFreeSlotA) != Player_Query_Current_Set()) {
+				Game_Flag_Reset(kFlagRatWalkingAround);
+				Game_Flag_Reset(kFlagUG15BridgeWillBreak);
+				Actor_Set_Goal_Number(kActorFreeSlotA, false);
+			}
+			break;
+
+		default:
+			if (!Game_Flag_Query(kFlagRatWalkingAround)) {
+				Game_Flag_Set(kFlagRatWalkingAround);
+				Actor_Set_Goal_Number(kActorFreeSlotA, kGoalFreeSlotAWalkAround);
+				Actor_Set_Targetable(kActorFreeSlotA, true);
 			}
 		}
+
 		return true;
 
 	case 5:
 		if (Actor_Query_Goal_Number(kActorFreeSlotA) < 400) {
 			AI_Movement_Track_Flush(kActorFreeSlotA);
 			Actor_Set_Goal_Number(kActorFreeSlotA, 400);
-		} else if (Actor_Query_Goal_Number(kActorFreeSlotA) == 405 && Actor_Query_Which_Set_In(kActorMcCoy) == kSceneKP05) {
+		} else if (Actor_Query_Goal_Number(kActorFreeSlotA) == 405
+		        && Actor_Query_Which_Set_In(kActorMcCoy) == kSceneKP05
+		) {
 			Actor_Set_Targetable(kActorFreeSlotA, 1);
 			Actor_Set_Goal_Number(kActorFreeSlotA, 406);
 		}
@@ -129,24 +134,24 @@ void AIScriptFreeSlotA::TimerExpired(int timer) {
 
 void AIScriptFreeSlotA::CompletedMovementTrack() {
 	switch (Actor_Query_Goal_Number(kActorFreeSlotA)) {
-	case 301:
-		Actor_Set_Goal_Number(kActorFreeSlotA, 302);
+	case kGoalFreeSlotAUG15WalkOut:
+		Actor_Set_Goal_Number(kActorFreeSlotA, kGoalFreeSlotAUG15RunToOtherSide);
 		break;
 
-	case 302:
-		Actor_Set_Goal_Number(kActorFreeSlotA, 303);
+	case kGoalFreeSlotAUG15RunToOtherSide:
+		Actor_Set_Goal_Number(kActorFreeSlotA, kGoalFreeSlotAUG15RunBack);
 		break;
 
-	case 303:
-		Actor_Set_Goal_Number(kActorFreeSlotA, 300);
+	case kGoalFreeSlotAUG15RunBack:
+		Actor_Set_Goal_Number(kActorFreeSlotA, kGoalFreeSlotAUG15Wait);
 		break;
 
-	case 306:
-		Actor_Set_Goal_Number(kActorFreeSlotA, 307);
+	case kGoalFreeSlotAWalkAround:
+		Actor_Set_Goal_Number(kActorFreeSlotA, kGoalFreeSlotAWalkAroundRestart);
 		break;
 
-	case 307:
-		Actor_Set_Goal_Number(kActorFreeSlotA, 306);
+	case kGoalFreeSlotAWalkAroundRestart:
+		Actor_Set_Goal_Number(kActorFreeSlotA, kGoalFreeSlotAWalkAround);
 		break;
 
 	case 400:
@@ -169,16 +174,15 @@ void AIScriptFreeSlotA::ReceivedClue(int clueId, int fromActorId) {
 }
 
 void AIScriptFreeSlotA::ClickedByPlayer() {
-	if (Actor_Query_Goal_Number(kActorFreeSlotA) != 599) {
-		return; //false;
-	}
-
-	Actor_Face_Actor(kActorMcCoy, kActorFreeSlotA, 1);
-	if (Random_Query(1, 2) == 1) {
-		Actor_Says(kActorMcCoy, 8655, 16);
-	} else {
-		Actor_Says(kActorMcCoy, 8665, 16);
+	if (Actor_Query_Goal_Number(kActorFreeSlotA) == kGoalFreeSlotAGone) {
+		Actor_Face_Actor(kActorMcCoy, kActorFreeSlotA, true);
+		if (Random_Query(1, 2) == 1) {
+			Actor_Says(kActorMcCoy, 8655, 16);
+		} else {
+			Actor_Says(kActorMcCoy, 8665, 16);
+		}
 	}
+	//return false;
 }
 
 void AIScriptFreeSlotA::EnteredScene(int sceneId) {
@@ -205,7 +209,7 @@ void AIScriptFreeSlotA::ShotAtAndMissed() {
 bool AIScriptFreeSlotA::ShotAtAndHit() {
 	if (Actor_Query_In_Set(kActorFreeSlotA, kSetUG15)) {
 		calcHit();
-		Actor_Set_Goal_Number(kActorFreeSlotA, 305);
+		Actor_Set_Goal_Number(kActorFreeSlotA, kGoalFreeSlotAUG15Die);
 		return true;
 	}
 
@@ -213,7 +217,7 @@ bool AIScriptFreeSlotA::ShotAtAndHit() {
 }
 
 void AIScriptFreeSlotA::Retired(int byActorId) {
-	Actor_Set_Goal_Number(kActorFreeSlotA, 599);
+	Actor_Set_Goal_Number(kActorFreeSlotA, kGoalFreeSlotAGone);
 }
 
 int AIScriptFreeSlotA::GetFriendlinessModifierIfGetsClue(int otherActorId, int clueId) {
@@ -222,13 +226,13 @@ int AIScriptFreeSlotA::GetFriendlinessModifierIfGetsClue(int otherActorId, int c
 
 bool AIScriptFreeSlotA::GoalChanged(int currentGoalNumber, int newGoalNumber) {
 	switch (newGoalNumber) {
-	case 300:
+	case kGoalFreeSlotAUG15Wait:
 		AI_Movement_Track_Flush(kActorFreeSlotA);
-		Actor_Change_Animation_Mode(kActorFreeSlotA, 0);
-		Actor_Set_Targetable(kActorFreeSlotA, 0);
+		Actor_Change_Animation_Mode(kActorFreeSlotA, kAnimationModeIdle);
+		Actor_Set_Targetable(kActorFreeSlotA, false);
 		break;
 
-	case 301:
+	case kGoalFreeSlotAUG15WalkOut:
 		Actor_Force_Stop_Walking(kActorMcCoy);
 		AI_Movement_Track_Flush(kActorFreeSlotA);
 		World_Waypoint_Set(444, 87, -48.75f, 44.66f, 87.57f);
@@ -236,72 +240,74 @@ bool AIScriptFreeSlotA::GoalChanged(int currentGoalNumber, int newGoalNumber) {
 		AI_Movement_Track_Repeat(kActorFreeSlotA);
 		break;
 
-	case 302:
+	case kGoalFreeSlotAUG15RunToOtherSide:
 		AI_Movement_Track_Flush(kActorFreeSlotA);
 		World_Waypoint_Set(444, 87, -237.0f, 48.07f, 208.0f);
 		AI_Movement_Track_Append(kActorFreeSlotA, 444, 1);
 		AI_Movement_Track_Repeat(kActorFreeSlotA);
-		Actor_Set_Targetable(kActorFreeSlotA, 1);
+		Actor_Set_Targetable(kActorFreeSlotA, true);
 		break;
 
-	case 303:
+	case kGoalFreeSlotAUG15RunBack:
 		AI_Movement_Track_Flush(kActorFreeSlotA);
 		World_Waypoint_Set(444, 87, 3.52f, 52.28f, 90.68f);
 		AI_Movement_Track_Append(kActorFreeSlotA, 444, 0);
 		AI_Movement_Track_Repeat(kActorFreeSlotA);
 		break;
 
-	case 304:
+	case kGoalFreeSlotAUG15Attack:
 		Player_Loses_Control();
 		Actor_Force_Stop_Walking(kActorMcCoy);
 		AI_Movement_Track_Flush(kActorFreeSlotA);
-		Actor_Face_Actor(kActorFreeSlotA, kActorMcCoy, 1);
-		Actor_Change_Animation_Mode(kActorFreeSlotA, 6);
-		Actor_Change_Animation_Mode(kActorMcCoy, 48);
+		Actor_Face_Actor(kActorFreeSlotA, kActorMcCoy, true);
+		Actor_Change_Animation_Mode(kActorFreeSlotA, kAnimationModeCombatAttack);
+		Actor_Change_Animation_Mode(kActorMcCoy, kAnimationModeDie);
 		break;
 
-	case 305:
+	case kGoalFreeSlotAUG15Die:
 		AI_Movement_Track_Flush(kActorFreeSlotA);
-		Actor_Set_Targetable(kActorFreeSlotA, 0);
-		Game_Flag_Set(676);
+		Actor_Set_Targetable(kActorFreeSlotA, false);
+		Game_Flag_Set(kFlagUG15RatShot);
 		_animationState = 7;
 		_animationFrame = 0;
 		break;
 
-	case 306:
+	case kGoalFreeSlotAWalkAround:
 		AI_Movement_Track_Flush(kActorFreeSlotA);
-		processGoal306();
+		goToRandomUGxx();
 		AI_Movement_Track_Repeat(kActorFreeSlotA);
 		break;
 
-	case 307:
+	case kGoalFreeSlotAWalkAroundRestart:
 		AI_Movement_Track_Flush(kActorFreeSlotA);
 		AI_Movement_Track_Append(kActorFreeSlotA, 39, 1);
 		AI_Movement_Track_Repeat(kActorFreeSlotA);
 		break;
 
-	case 308:
-		Actor_Set_Targetable(kActorFreeSlotA, 1);
+	case kGoalFreeSlotAAttackMcCoy:
+		Actor_Set_Targetable(kActorFreeSlotA, true);
 		Non_Player_Actor_Combat_Mode_On(kActorFreeSlotA, 0, 0, 0, 8, 4, 7, 8, 25, 0, 75, 5, 300, 0);
 		break;
 
-	case 309:
+	case kGoalFreeSlotAUG15Fall:
 		Actor_Force_Stop_Walking(kActorFreeSlotA);
 		AI_Movement_Track_Flush(kActorFreeSlotA);
-		_var4 = 52.46f;
-		_var3 = -4.0f;
-		_var5 = -10.0f;
-		if (_animationState != 7 && _animationState != 8) {
+		_fallHeightCurrent = 52.46f;
+		_fallSpeed = -4.0f;
+		_fallHeightTarget = -10.0f;
+		if (_animationState != 7
+		 && _animationState != 8
+		) {
 			_animationState = 7;
 			_animationFrame = 0;
 		}
 		break;
 
-	case 310:
+	case kGoalFreeSlotAUG15Prepare:
 		AI_Movement_Track_Flush(kActorFreeSlotA);
 		Actor_Put_In_Set(kActorFreeSlotA, kSetUG15);
 		Actor_Set_At_XYZ(kActorFreeSlotA, 3.52f, 52.28f, 90.68f, 700);
-		Actor_Set_Goal_Number(kActorFreeSlotA, 300);
+		Actor_Set_Goal_Number(kActorFreeSlotA, kGoalFreeSlotAUG15Wait);
 		break;
 
 	case 400:
@@ -315,7 +321,7 @@ bool AIScriptFreeSlotA::GoalChanged(int currentGoalNumber, int newGoalNumber) {
 		AI_Movement_Track_Repeat(kActorFreeSlotA);
 		break;
 
-	case 599:
+	case kGoalFreeSlotAGone:
 		Actor_Set_Health(kActorFreeSlotA, 20, 20);
 		Actor_Set_Friendliness_To_Other(kActorFreeSlotA, kActorMcCoy, 40);
 		break;
@@ -395,7 +401,7 @@ bool AIScriptFreeSlotA::UpdateAnimation(int *animation, int *frame) {
 		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(857)) {
 			_animationState = 0;
 			_animationFrame = 0;
-			Actor_Change_Animation_Mode(kActorFreeSlotA, 4);
+			Actor_Change_Animation_Mode(kActorFreeSlotA, kAnimationModeCombatIdle);
 		}
 		break;
 
@@ -403,7 +409,7 @@ bool AIScriptFreeSlotA::UpdateAnimation(int *animation, int *frame) {
 		*animation = 874;
 		_animationFrame++;
 		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(874) - 1) { // bug? shuld not be '-1'
-			Actor_Change_Animation_Mode(kActorFreeSlotA, 0);
+			Actor_Change_Animation_Mode(kActorFreeSlotA, kAnimationModeIdle);
 		}
 		break;
 
@@ -416,7 +422,7 @@ bool AIScriptFreeSlotA::UpdateAnimation(int *animation, int *frame) {
 		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(860)) {
 			_animationFrame = 0;
 			_animationState = 0;
-			Actor_Change_Animation_Mode(kActorFreeSlotA, 0);
+			Actor_Change_Animation_Mode(kActorFreeSlotA, kAnimationModeIdle);
 		}
 		break;
 
@@ -429,7 +435,7 @@ bool AIScriptFreeSlotA::UpdateAnimation(int *animation, int *frame) {
 		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(859) - 1) { // bug? shuld not be '-1'
 			_animationFrame = Slice_Animation_Query_Number_Of_Frames(859) - 1;
 			_animationState = 8;
-			Actor_Set_Goal_Number(kActorFreeSlotA, 599);
+			Actor_Set_Goal_Number(kActorFreeSlotA, kGoalFreeSlotAGone);
 		}
 		break;
 
@@ -523,7 +529,7 @@ bool AIScriptFreeSlotA::ReachedMovementTrackWaypoint(int waypointId) {
 			Actor_Change_Animation_Mode(kActorFreeSlotA, 43);
 		}
 	} else if (Actor_Query_Goal_Number(kActorFreeSlotA) == 302) {
-		Actor_Face_Actor(kActorFreeSlotA, kActorMcCoy, 1);
+		Actor_Face_Actor(kActorFreeSlotA, kActorMcCoy, true);
 	}
 
 	return true;
@@ -538,12 +544,14 @@ void AIScriptFreeSlotA::calcHit() {
 
 	Actor_Query_XYZ(kActorFreeSlotA, &x, &y, &z);
 
-	if (x >= -30.0f && x < -150.0f) {
-		Game_Flag_Set(677);
+	if (x >= -30.0f
+	 && x < -150.0f
+	) {
+		Game_Flag_Set(kFlagUG15BridgeWillBreak);
 	}
 }
 
-void AIScriptFreeSlotA::processGoal306() {
+void AIScriptFreeSlotA::goToRandomUGxx() {
 	switch (Random_Query(1, 14)) {
 	case 1:
 		AI_Movement_Track_Append(kActorFreeSlotA, 450, 1);
diff --git a/engines/bladerunner/script/ai/mccoy.cpp b/engines/bladerunner/script/ai/mccoy.cpp
index 7edb639..d5fb581 100644
--- a/engines/bladerunner/script/ai/mccoy.cpp
+++ b/engines/bladerunner/script/ai/mccoy.cpp
@@ -33,7 +33,7 @@ AIScriptMcCoy::AIScriptMcCoy(BladeRunnerEngine *vm) : AIScriptBase(vm) {
 	dword_45A0E8 = 0;
 	_animationStateNextSpecial = 0;
 	_animationNextSpecial = 0;
-	dword_45A0F8 = 0;
+	_nextSoundId = 0;
 	_NR10SteeleShooting = false;
 	_fallSpeed = 0.0f;
 	_fallHeightCurrent = 0.0f;
@@ -51,16 +51,16 @@ void AIScriptMcCoy::Initialize() {
 	dword_45A0E8 = 3;
 	_animationStateNextSpecial = 3;
 	_animationNextSpecial = 20;
-	dword_45A0F8 = -1;
+	_nextSoundId = -1;
 	_NR10SteeleShooting = false;
 	_fallSpeed = 0;
 	Actor_Set_Goal_Number(kActorMcCoy, kGoalMcCoyDefault);
 }
 
 bool AIScriptMcCoy::Update() {
-	if (dword_45A0F8 != -1) {
-		Sound_Play(dword_45A0F8, 100, 0, 0, 50);
-		dword_45A0F8 = -1;
+	if (_nextSoundId != -1) {
+		Sound_Play(_nextSoundId, 100, 0, 0, 50);
+		_nextSoundId = -1;
 	}
 
 	switch (Actor_Query_Goal_Number(kActorMcCoy)) {
@@ -109,13 +109,13 @@ bool AIScriptMcCoy::Update() {
 		fallDown();
 		break;
 
-	case 309:
+	case kGoalMcCoyUG15Fall:
 		fallDown();
 		break;
 
-	case 391:
-		Actor_Retired_Here(kActorMcCoy, 12, 48, 1, -1);
-		Actor_Set_Goal_Number(kActorMcCoy, 599);
+	case kGoalMcCoyUG15Die:
+		Actor_Retired_Here(kActorMcCoy, 12, 48, true, -1);
+		Actor_Set_Goal_Number(kActorMcCoy, kGoalMcCoyGone);
 		break;
 	}
 	return false;
@@ -163,21 +163,21 @@ void AIScriptMcCoy::ReceivedClue(int clueId, int fromActorId) {
 	case kClueWeaponsOrderForm:
 	case kClueShippingForm:
 	case kCluePoliceIssueWeapons:
-		Global_Variable_Increment(49, 1);
+		Global_Variable_Increment(kVariableCorruptedGuzzaEvidence, 1);
 		break;
 
 	case kClueFolder:
-		Global_Variable_Increment(49, 5);
+		Global_Variable_Increment(kVariableCorruptedGuzzaEvidence, 5);
 		break;
 
 	case kClueHomelessManKid:
 	case kClueOriginalRequisitionForm:
-		Global_Variable_Increment(49, 3);
+		Global_Variable_Increment(kVariableCorruptedGuzzaEvidence, 3);
 		break;
 
 	case kClueScaryChair:
 	case kClueIzosStashRaided:
-		Global_Variable_Increment(49, 2);
+		Global_Variable_Increment(kVariableCorruptedGuzzaEvidence, 2);
 		break;
 
 	case kClueDNATyrell:
@@ -186,11 +186,11 @@ void AIScriptMcCoy::ReceivedClue(int clueId, int fromActorId) {
 	case kClueDNAMoraji:
 	case kClueDNALutherLance:
 	case kClueDNAMarcus:
-		Global_Variable_Increment(kVariableDNAEvidences, 1);
+		Global_Variable_Increment(kVariableDNAEvidence, 1);
 		break;
 	}
 
-	if ( Global_Variable_Query(49) > 6
+	if ( Global_Variable_Query(kVariableCorruptedGuzzaEvidence) > 6
 	 &&  Global_Variable_Query(kVariableChapter) > 3
 	 && !Actor_Clue_Query(kActorMcCoy, kClueGuzzaFramedMcCoy)
 	) {
@@ -328,7 +328,8 @@ bool AIScriptMcCoy::GoalChanged(int currentGoalNumber, int newGoalNumber) {
 		return true;
 
 	case 2:
-		sub_405920();
+		_animationFrame = 0;
+		_animationState = 47;
 		return true;
 
 	case kGoalMcCoyBB11GetUp:
@@ -391,7 +392,7 @@ bool AIScriptMcCoy::GoalChanged(int currentGoalNumber, int newGoalNumber) {
 		Actor_Change_Animation_Mode(kActorMcCoy, 75);
 		return true;
 
-	case 230:
+	case kGoalMcCoyNR11Shoot:
 		_NR10SteeleShooting = Actor_Query_Goal_Number(kActorSteele) == kGoalSteeleNR11Shoot;
 		Actor_Change_Animation_Mode(kActorMcCoy, kAnimationModeCombatAttack);
 		return true;
@@ -427,7 +428,7 @@ bool AIScriptMcCoy::GoalChanged(int currentGoalNumber, int newGoalNumber) {
 		_animationFrame = 0;
 		return true;
 
-	case 350:
+	case kGoalMcCoyCallWithGuzza:
 		Sound_Play(123, 50, 0, 0, 50);
 		Delay(1000);
 		Sound_Play(403, 30, 0, 0, 50);
@@ -465,13 +466,15 @@ bool AIScriptMcCoy::GoalChanged(int currentGoalNumber, int newGoalNumber) {
 		Sound_Play(123, 50, 0, 0, 50);
 		return true;
 
-	case 390:
+	case kGoalMcCoyUG15Fall:
 		Actor_Force_Stop_Walking(kActorMcCoy);
 		Player_Loses_Control();
 		_fallHeightCurrent = 48.07f;
 		_fallSpeed = -4.0f;
 		_fallHeightTarget = -20.0f;
-		if (_animationState != 27 && _animationState != 50) {
+		if (_animationState != 27
+		 && _animationState != 50
+		) {
 			_animationState = 50;
 			_animationFrame = Slice_Animation_Query_Number_Of_Frames(18) - 1;
 		}
@@ -1004,7 +1007,7 @@ bool AIScriptMcCoy::UpdateAnimation(int *animation, int *frame) {
 		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(5)) {
 			_animationFrame = Slice_Animation_Query_Number_Of_Frames(*animation) - 1;
 			_animationState = 50;
-			sub_4054F0();
+			UG15fall();
 		}
 		break;
 	case 27:
@@ -1013,7 +1016,7 @@ bool AIScriptMcCoy::UpdateAnimation(int *animation, int *frame) {
 		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(18)) {
 			_animationFrame = Slice_Animation_Query_Number_Of_Frames(*animation) - 1;
 			_animationState = 50;
-			sub_4054F0();
+			UG15fall();
 			if (Actor_Query_Goal_Number(kActorMcCoy) == kGoalMcCoyNR04Drink) {
 				Actor_Set_Goal_Number(kActorMcCoy, kGoalMcCoyNR04PassOut);
 			}
@@ -1068,16 +1071,16 @@ bool AIScriptMcCoy::UpdateAnimation(int *animation, int *frame) {
 		*animation = 12;
 		_animationFrame++;
 		if (_animationFrame == 1
-		 && Actor_Query_Goal_Number(kActorMcCoy) == 230
+		 && Actor_Query_Goal_Number(kActorMcCoy) == kGoalMcCoyNR11Shoot
 		 && _NR10SteeleShooting
 		) {
-			dword_45A0F8 = 27;
+			_nextSoundId = 27;
 		}
 		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(12)) {
 			_animationState = 17;
 			_animationFrame = 0;
 			*animation = 12;
-			if (Actor_Query_Goal_Number(kActorMcCoy) == 230) {
+			if (Actor_Query_Goal_Number(kActorMcCoy) == kGoalMcCoyNR11Shoot) {
 				_animationFrame = 0;
 				_animationState = 21;
 				_NR10SteeleShooting = true;
@@ -1790,24 +1793,29 @@ void AIScriptMcCoy::fallDown() {
 	return Actor_Set_At_XYZ(kActorMcCoy, x, _fallHeightCurrent, z, Actor_Query_Facing_1024(kActorMcCoy));
 }
 
-void AIScriptMcCoy::sub_4054F0() {
-	if (Actor_Query_Which_Set_In(kActorMcCoy) == kSetUG15
-	 && Actor_Query_Goal_Number(kActorMcCoy) != 390
-	 && !Game_Flag_Query(682)
+void AIScriptMcCoy::UG15fall() {
+	if ( Actor_Query_Which_Set_In(kActorMcCoy) == kSetUG15
+	 &&  Actor_Query_Goal_Number(kActorMcCoy) != kGoalMcCoyUG15Fall
+	 && !Game_Flag_Query(kFlagUG15BridgeBroken)
 	) {
 		float x, y, z;
 		Actor_Query_XYZ(kActorMcCoy, &x, &y, &z);
-		if ((z < 220.0f) && (-210.0f < x) && (-70.0f > x)) {
-			Game_Flag_Set(682);
-			Scene_Loop_Set_Default(3);
-			Scene_Loop_Start_Special(kSceneLoopModeOnce, 2, true);
-			Actor_Set_Goal_Number(kActorMcCoy, 390);
+		if ( 220.0f > z
+		 && -210.0f < x
+		 &&  -70.0f > x
+		) {
+			Game_Flag_Set(kFlagUG15BridgeBroken); 
+			Scene_Loop_Set_Default(3); // kUG15LoopMainLoopBridgeBroken
+			Scene_Loop_Start_Special(kSceneLoopModeOnce, 2, true); // kUG15LoopBridgeBreaks
+			Actor_Set_Goal_Number(kActorMcCoy, kGoalMcCoyUG15Fall);
 			Actor_Query_XYZ(kActorFreeSlotA, &x, &y, &z);
-			if (-200.0 < x && -62.0f > x) {
-				Actor_Set_Goal_Number(kActorFreeSlotA, 309);
+			if (-200.0 < x
+			 && -62.0f > x
+			) {
+				Actor_Set_Goal_Number(kActorFreeSlotA, kGoalFreeSlotAUG15Fall);
 			}
 		} else {
-			Actor_Set_Goal_Number(kActorMcCoy, 391);
+			Actor_Set_Goal_Number(kActorMcCoy, kGoalMcCoyUG15Die);
 		}
 	}
 }
@@ -1929,11 +1937,6 @@ void AIScriptMcCoy::dodge() {
 	}
 }
 
-void AIScriptMcCoy::sub_405920() {
-	_animationFrame = 0;
-	_animationState = 47;
-}
-
 void AIScriptMcCoy::sub_405940(float a1) {
 	float x, y, z;
 	int currentAngle = Actor_Query_Facing_1024(kActorMcCoy);
diff --git a/engines/bladerunner/script/ai_script.h b/engines/bladerunner/script/ai_script.h
index de09f87..73cc4c5 100644
--- a/engines/bladerunner/script/ai_script.h
+++ b/engines/bladerunner/script/ai_script.h
@@ -104,18 +104,17 @@ DECLARE_SCRIPT(McCoy)
 	int dword_45A0E8;
 	int _animationStateNextSpecial;
 	int _animationNextSpecial;
-	int dword_45A0F8;
+	int _nextSoundId;
 	bool _NR10SteeleShooting;
 	float _fallSpeed;
 	float _fallHeightCurrent;
 	float _fallHeightTarget;
 
 	void fallDown();
-	void sub_4054F0();
+	void UG15fall();
 	void sub_405660();
 	void sub_405800();
 	void dodge();
-	void sub_405920();
 	void sub_405940(float a1);
 	void sub_4059D0(float a1);
 END_SCRIPT
@@ -459,12 +458,12 @@ END_SCRIPT
 DECLARE_SCRIPT(FreeSlotA)
 	int _var1;
 	int _var2;
-	float _var3;
-	float _var4;
-	float _var5;
+	float _fallSpeed;
+	float _fallHeightCurrent;
+	float _fallHeightTarget;
 
 	void calcHit();
-	void processGoal306();
+	void goToRandomUGxx();
 END_SCRIPT
 
 DECLARE_SCRIPT(FreeSlotB)
diff --git a/engines/bladerunner/script/kia_script.cpp b/engines/bladerunner/script/kia_script.cpp
index 13c5300..56a2e48 100644
--- a/engines/bladerunner/script/kia_script.cpp
+++ b/engines/bladerunner/script/kia_script.cpp
@@ -654,7 +654,7 @@ void KIAScript::SCRIPT_KIA_DLL_Play_Clue_Asset_Script(int notUsed, int clueId) {
 	case kClueDNALutherLance:
 	case kClueDNAMarcus:
 		{
-			int dnaEvidences = Global_Variable_Query(kVariableDNAEvidences);
+			int dnaEvidences = Global_Variable_Query(kVariableDNAEvidence);
 			if (dnaEvidences == 1) {
 				KIA_Play_Slice_Model(988);
 			} else if (dnaEvidences == 2) {
diff --git a/engines/bladerunner/script/scene/dr06.cpp b/engines/bladerunner/script/scene/dr06.cpp
index afbdf7c..d2317b2 100644
--- a/engines/bladerunner/script/scene/dr06.cpp
+++ b/engines/bladerunner/script/scene/dr06.cpp
@@ -117,10 +117,10 @@ bool SceneScriptDR06::ClickedOn3DObject(const char *objectName, bool a2) {
 			Actor_Face_Heading(kActorMcCoy, 329, false);
 			if ( Actor_Clue_Query(kActorMcCoy, kClueFolder)
 			 &&  Actor_Clue_Query(kActorMcCoy, kClueGuzzaFramedMcCoy)
-			 && !Game_Flag_Query(670)
+			 && !Game_Flag_Query(kFlagCallWithGuzza)
 			) {
-				Actor_Set_Goal_Number(kActorMcCoy, 350);
-				Game_Flag_Set(670);
+				Actor_Set_Goal_Number(kActorMcCoy, kGoalMcCoyCallWithGuzza);
+				Game_Flag_Set(kFlagCallWithGuzza);
 			} else if (!Game_Flag_Query(kFlagDR06VidphoneChecked)) {
 				Actor_Voice_Over(770, kActorVoiceOver);
 				Actor_Voice_Over(780, kActorVoiceOver);
diff --git a/engines/bladerunner/script/scene/nr02.cpp b/engines/bladerunner/script/scene/nr02.cpp
index 38851b4..f485fdf 100644
--- a/engines/bladerunner/script/scene/nr02.cpp
+++ b/engines/bladerunner/script/scene/nr02.cpp
@@ -81,10 +81,10 @@ bool SceneScriptNR02::ClickedOn3DObject(const char *objectName, bool a2) {
 			Actor_Face_Heading(kActorMcCoy, 13, false);
 			if ( Actor_Clue_Query(kActorMcCoy, kClueFolder)
 			 &&  Actor_Clue_Query(kActorMcCoy, kClueGuzzaFramedMcCoy)
-			 && !Game_Flag_Query(670)
+			 && !Game_Flag_Query(kFlagCallWithGuzza)
 			) {
-				Actor_Set_Goal_Number(kActorMcCoy, 350);
-				Game_Flag_Set(670);
+				Actor_Set_Goal_Number(kActorMcCoy, kGoalMcCoyCallWithGuzza);
+				Game_Flag_Set(kFlagCallWithGuzza);
 			} else {
 				Sound_Play(123, 50, 0, 0, 50);
 				Delay(1000);
diff --git a/engines/bladerunner/script/scene/nr11.cpp b/engines/bladerunner/script/scene/nr11.cpp
index 447dfda..99f2bc7 100644
--- a/engines/bladerunner/script/scene/nr11.cpp
+++ b/engines/bladerunner/script/scene/nr11.cpp
@@ -146,7 +146,7 @@ bool SceneScriptNR11::ClickedOn3DObject(const char *objectName, bool combatMode)
 			if (!Player_Query_Combat_Mode()) {
 				Player_Set_Combat_Mode(true);
 			}
-			Actor_Set_Goal_Number(kActorMcCoy, 230);
+			Actor_Set_Goal_Number(kActorMcCoy, kGoalMcCoyNR11Shoot);
 			Scene_Loop_Set_Default(kNR11LoopMainLoopFires);
 			Scene_Loop_Start_Special(kSceneLoopModeOnce, kNR11LoopGunshots, true);
 		} else if (Actor_Query_Goal_Number(kActorDektora) == kGoalDektoraNR11Hiding) {
@@ -162,7 +162,7 @@ bool SceneScriptNR11::ClickedOn3DObject(const char *objectName, bool combatMode)
 					Delay(500);
 					Actor_Change_Animation_Mode(kActorMcCoy, kAnimationModeDie);
 					Delay(2000);
-					Actor_Set_Goal_Number(kActorMcCoy, 231);
+					Actor_Set_Goal_Number(kActorMcCoy, kGoalMcCoyNR10Fall);
 				} else {
 					Actor_Says(kActorMcCoy, 3840, 18);
 					Delay(1000);
@@ -298,7 +298,7 @@ void SceneScriptNR11::SceneFrameAdvanced(int frame) {
 		if (!Player_Query_Combat_Mode()) {
 			Player_Set_Combat_Mode(true);
 		}
-		Actor_Set_Goal_Number(kActorMcCoy, 230);
+		Actor_Set_Goal_Number(kActorMcCoy, kGoalMcCoyNR11Shoot);
 		Scene_Loop_Set_Default(kNR11LoopMainLoopFires);
 		Scene_Loop_Start_Special(kSceneLoopModeOnce, kNR11LoopGunshots, true);
 		Game_Flag_Reset(kFlagNR11SteeleShoot);
diff --git a/engines/bladerunner/script/scene/ug05.cpp b/engines/bladerunner/script/scene/ug05.cpp
index cbce58e..1062f45 100644
--- a/engines/bladerunner/script/scene/ug05.cpp
+++ b/engines/bladerunner/script/scene/ug05.cpp
@@ -269,7 +269,7 @@ void SceneScriptUG05::sub_402218() {
 
 	if (affectionTowardsActor == kActorLucy) {
 		if (Game_Flag_Query(kFlagLucyIsReplicant)) {
-			if (Global_Variable_Query(kVariableDNAEvidences) > 3) {
+			if (Global_Variable_Query(kVariableDNAEvidence) > 3) {
 				Outtake_Play(kOuttakeEnd1B, false, -1);
 			} else {
 				Outtake_Play(kOuttakeEnd1C, false, -1);
@@ -279,7 +279,7 @@ void SceneScriptUG05::sub_402218() {
 		}
 	} else if (affectionTowardsActor == kActorDektora) {
 		if (Game_Flag_Query(kFlagDektoraIsReplicant)) {
-			if (Global_Variable_Query(kVariableDNAEvidences) > 3) {
+			if (Global_Variable_Query(kVariableDNAEvidence) > 3) {
 				Outtake_Play(kOuttakeEnd1E, false, -1);
 			} else {
 				Outtake_Play(kOuttakeEnd1F, false, -1);
diff --git a/engines/bladerunner/script/scene/ug15.cpp b/engines/bladerunner/script/scene/ug15.cpp
index ef1ca2f..436c6f2 100644
--- a/engines/bladerunner/script/scene/ug15.cpp
+++ b/engines/bladerunner/script/scene/ug15.cpp
@@ -24,6 +24,12 @@
 
 namespace BladeRunner {
 
+enum UG15Loops {
+	kUG15LoopMainLoop             = 0,
+	kUG15LoopBridgeBreaks         = 2,
+	kUG15LoopMainLoopBridgeBroken = 3
+};
+
 void SceneScriptUG15::InitializeScene() {
 	if (Game_Flag_Query(kFlagUG17toUG15)) {
 		Setup_Scene_Information( -25.0f, 26.31f, -434.0f, 520);
@@ -33,14 +39,15 @@ void SceneScriptUG15::InitializeScene() {
 		Setup_Scene_Information( -18.0f, 48.07f,   62.0f, 650);
 	} else {
 		Setup_Scene_Information(-238.0f, 48.07f,  222.0f, 180);
-		if (Game_Flag_Query(676)
+		if (Game_Flag_Query(kFlagUG15RatShot)
 		 && Random_Query(1, 10) == 10
 		) {
-			Game_Flag_Reset(676);
+			Game_Flag_Reset(kFlagUG15RatShot);
 		}
 	}
-	if (Game_Flag_Query(682)) {
-		Scene_Loop_Set_Default(3);
+
+	if (Game_Flag_Query(kFlagUG15BridgeBroken)) {
+		Scene_Loop_Set_Default(kUG15LoopMainLoopBridgeBroken);
 	}
 
 	if (Game_Flag_Query(kFlagUG17toUG15)
@@ -107,7 +114,6 @@ bool SceneScriptUG15::ClickedOnItem(int itemId, bool a2) {
 }
 
 bool SceneScriptUG15::ClickedOnExit(int exitId) {
-
 	if (exitId == 0) {
 		if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -25.0f, 26.31f, -434.0f, 0, true, false, 0)) {
 			Ambient_Sounds_Remove_All_Non_Looping_Sounds(true);
@@ -160,39 +166,40 @@ bool SceneScriptUG15::ClickedOn2DRegion(int region) {
 }
 
 void SceneScriptUG15::SceneFrameAdvanced(int frame) {
-	if (Actor_Query_Goal_Number(kActorFreeSlotA) == 300) {
+	if (Actor_Query_Goal_Number(kActorFreeSlotA) == kGoalFreeSlotAUG15Wait) {
 		float x, y, z;
 		Actor_Query_XYZ(kActorMcCoy, &x, &y, &z);
 		if (-160.0f <= x
 		 &&  220.0f > z
 		) {
-			Actor_Set_Goal_Number(kActorFreeSlotA, 301);
+			Actor_Set_Goal_Number(kActorFreeSlotA, kGoalFreeSlotAUG15WalkOut);
 		}
 	}
+
 	if (frame == 61) {
 		Ambient_Sounds_Play_Sound(583, 80, 0, 0, 99);
 	}
 
-	if ( Game_Flag_Query(677)
-	 && !Game_Flag_Query(682)
+	if ( Game_Flag_Query(kFlagUG15BridgeWillBreak)
+	 && !Game_Flag_Query(kFlagUG15BridgeBroken)
 	) {
 		float x, y, z;
 		Actor_Query_XYZ(kActorMcCoy, &x, &y, &z);
 		if ( -180.0f <= x
 		 &&   220.0f > z
-		 && !Game_Flag_Query(724)
+		 && !Game_Flag_Query(kFlagUG15BridgeBreaks)
 		) {
-			Game_Flag_Set(724);
-			Game_Flag_Set(682);
-			Scene_Loop_Set_Default(3);
-			Scene_Loop_Start_Special(kSceneLoopModeOnce, 2, true);
-			Actor_Set_Goal_Number(kActorMcCoy, 390);
+			Game_Flag_Set(kFlagUG15BridgeBreaks);
+			Game_Flag_Set(kFlagUG15BridgeBroken);
+			Scene_Loop_Set_Default(kUG15LoopMainLoopBridgeBroken);
+			Scene_Loop_Start_Special(kSceneLoopModeOnce, kUG15LoopBridgeBreaks, true);
+			Actor_Set_Goal_Number(kActorMcCoy, kGoalMcCoyUG15Fall);
 			Actor_Query_XYZ(kActorFreeSlotA, &x, &y, &z);
 
 			if (-200.0f < x
 			 &&  -62.0f > x
 			) {
-				Actor_Set_Goal_Number(kActorFreeSlotA, 309);
+				Actor_Set_Goal_Number(kActorFreeSlotA, kGoalFreeSlotAUG15Fall);
 			}
 		}
 	}
@@ -208,8 +215,8 @@ void SceneScriptUG15::PlayerWalkedIn() {
 		Game_Flag_Reset(kFlagUG16toUG15b);
 	} else if (Game_Flag_Query(kFlagUG13toUG15)) {
 		Game_Flag_Reset(kFlagUG13toUG15);
-		if (!Game_Flag_Query(676)) {
-			Actor_Set_Goal_Number(kActorFreeSlotA, 310);
+		if (!Game_Flag_Query(kFlagUG15RatShot)) {
+			Actor_Set_Goal_Number(kActorFreeSlotA, kGoalFreeSlotAUG15Prepare);
 		}
 	}
 }
diff --git a/engines/bladerunner/script/scene/ug16.cpp b/engines/bladerunner/script/scene/ug16.cpp
index 6d075ab..dc2f5da 100644
--- a/engines/bladerunner/script/scene/ug16.cpp
+++ b/engines/bladerunner/script/scene/ug16.cpp
@@ -135,7 +135,7 @@ bool SceneScriptUG16::ClickedOn3DObject(const char *objectName, bool a2) {
 
 bool SceneScriptUG16::ClickedOnActor(int actorId) {
 	if (Actor_Query_Goal_Number(kActorLuther) < 490) {
-		sub_401D78();
+		dialogueWithLuther();
 		return true;
 	}
 	return false;
@@ -234,7 +234,7 @@ void SceneScriptUG16::PlayerWalkedOut() {
 void SceneScriptUG16::DialogueQueueFlushed(int a1) {
 }
 
-void SceneScriptUG16::sub_401D78() {
+void SceneScriptUG16::dialogueWithLuther() {
 	Dialogue_Menu_Clear_List();
 	DM_Add_To_List_Never_Repeat_Once_Selected(1400, 5, 6, 2);
 	DM_Add_To_List_Never_Repeat_Once_Selected(1410, 5, 4, 8);
@@ -245,7 +245,7 @@ void SceneScriptUG16::sub_401D78() {
 		DM_Add_To_List_Never_Repeat_Once_Selected(1430, 6, 4, 5);
 		DM_Add_To_List_Never_Repeat_Once_Selected(1440, 6, 4, 5);
 	}
-	if ( Global_Variable_Query(49) > 1
+	if ( Global_Variable_Query(kVariableCorruptedGuzzaEvidence) > 1
 	 && !Actor_Clue_Query(kActorMcCoy, kClueFolder)
 	 ) {
 		DM_Add_To_List_Never_Repeat_Once_Selected(1450, 6, 4, 5);
diff --git a/engines/bladerunner/script/scene/ug18.cpp b/engines/bladerunner/script/scene/ug18.cpp
index 7d45274..35b4661 100644
--- a/engines/bladerunner/script/scene/ug18.cpp
+++ b/engines/bladerunner/script/scene/ug18.cpp
@@ -59,7 +59,7 @@ void SceneScriptUG18::InitializeScene() {
 
 	Scene_Loop_Set_Default(4);
 
-	if ( Game_Flag_Query(670)
+	if ( Game_Flag_Query(kFlagCallWithGuzza)
 	 && !Game_Flag_Query(671)
 	 &&  Global_Variable_Query(kVariableChapter) == 4
 	) {
@@ -85,7 +85,7 @@ void SceneScriptUG18::SceneLoaded() {
 			Actor_Set_At_Waypoint(kActorSadik, 33, 0);
 		}
 	}
-	if ( Game_Flag_Query(670)
+	if ( Game_Flag_Query(kFlagCallWithGuzza)
 	 && !Game_Flag_Query(671)
 	 &&  Global_Variable_Query(kVariableChapter) == 4
 	) {
@@ -192,7 +192,7 @@ void SceneScriptUG18::ActorChangedGoal(int actorId, int newGoal, int oldGoal, bo
 void SceneScriptUG18::PlayerWalkedIn() {
 	Loop_Actor_Walk_To_XYZ(kActorMcCoy, -488.71f, 0.0f, 123.59f, 0, false, false, 0);
 
-	if ( Game_Flag_Query(670)
+	if ( Game_Flag_Query(kFlagCallWithGuzza)
 	 && !Game_Flag_Query(671)
 	 &&  Actor_Query_Is_In_Current_Set(kActorGuzza)
 	) {
diff --git a/engines/bladerunner/script/scene_script.h b/engines/bladerunner/script/scene_script.h
index 8d45053..a1899a3 100644
--- a/engines/bladerunner/script/scene_script.h
+++ b/engines/bladerunner/script/scene_script.h
@@ -497,7 +497,7 @@ DECLARE_SCRIPT(UG15)
 END_SCRIPT
 
 DECLARE_SCRIPT(UG16)
-	void sub_401D78();
+	void dialogueWithLuther();
 END_SCRIPT
 
 DECLARE_SCRIPT(UG17)


Commit: ce3b7316568b10bcfc21b314b4d2658bc75e29d1
    https://github.com/scummvm/scummvm/commit/ce3b7316568b10bcfc21b314b4d2658bc75e29d1
Author: Peter Kohaut (peter.kohaut at gmail.com)
Date: 2019-02-03T00:14:09+01:00

Commit Message:
BLADERUNNER: Cleanup Luther & Lance related scripts

Changed paths:
    engines/bladerunner/game_constants.h
    engines/bladerunner/script/ai/clovis.cpp
    engines/bladerunner/script/ai/luther.cpp
    engines/bladerunner/script/ai/tyrell_guard.cpp
    engines/bladerunner/script/init_script.cpp
    engines/bladerunner/script/scene/dr06.cpp
    engines/bladerunner/script/scene/kp07.cpp
    engines/bladerunner/script/scene/ps14.cpp
    engines/bladerunner/script/scene/tb02.cpp
    engines/bladerunner/script/scene/tb03.cpp
    engines/bladerunner/script/scene/tb07.cpp
    engines/bladerunner/script/scene/ug06.cpp
    engines/bladerunner/script/scene/ug16.cpp


diff --git a/engines/bladerunner/game_constants.h b/engines/bladerunner/game_constants.h
index 70d0923..b5d21e0 100644
--- a/engines/bladerunner/game_constants.h
+++ b/engines/bladerunner/game_constants.h
@@ -960,7 +960,10 @@ enum Flags {
 	kFlagUG16toDR06 = 551, // is never checked
 	kFlagDR06toUG16 = 552,
 	kFlagUG13Entered = 553,
+	kFlagUG16LutherLanceTalk1 = 556,
+	kFlagNotUsed557, // is never checked
 	kFlagDR01toCT11 = 558,
+	kFlagLutherLanceIsReplicant = 560,
 	kFlagNR02GordoLeaveLighter = 561,
 	kFlagHF05CrazyLegsTalk1 = 562,
 	kFlagHF05CrazyLegsTalk2 = 563,
@@ -968,6 +971,7 @@ enum Flags {
 	kFlagNotUsed565 = 565, // has no use
 	kFlagHF03toHF04 = 566, // is never checked
 	kFlagHF04toHF03 = 567,
+	kFlagUG16ComputerOff = 568,
 	kFlagNR04EarlyQWalkedIn = 569,
 	// 570 is never used
 	// 571 is never used
@@ -979,6 +983,7 @@ enum Flags {
 	kFlagHF04DoorsClosed = 584,
 	kFlagHF04CloseDoors = 585,
 	kFlagHF04OpenDoors = 586,
+	kFlagUG15LutherLanceStartedDying = 587,
 	kFlagNR05BartenderTalk1 = 588,
 	kFlagNR05BartenderTalk2 = 589,
 	kFlagNR05EarlyQTalk = 590,
@@ -986,12 +991,18 @@ enum Flags {
 	kFlagGordoRanAway = 592,
 	kFlagLucyRanAway = 593,
 	kFlagNR02GordoJumpDown = 594,
+	kFlagLutherLanceAreDead = 595,
+	kFlagUG16PulledGun = 596,
+	kFlagUG16FolderFound = 597,
 	kFlagKIAPrivacyAddonIntro = 599,
+	kFlagUG16LutherLanceTalkReplicants1 = 600,
+	kFlagUG16LutherLanceTalkReplicants2 = 601,
 	// 602 is never used
 	kFlagSteeleAimingAtGordo = 603,
 	kFlagNR03McCoyThrownOut = 604,
 	kFlagNR04DiscFound = 605,
 	kFlagNR04EarlyQStungByScorpions = 606,
+
 	kFlagTB07toTB02 = 608,
 	kFlagNR04McCoyAimedAtEarlyQ = 609,
 	kFlagUG08Entered = 610,
@@ -1053,6 +1064,7 @@ enum Flags {
 	kFlagPS05TV4 = 692,
 	kFlagUG03DeadHomeless = 693,
 	kFlagUG14DeadHomeless = 694,
+	kFlagUG15LanceLuthorTrade = 698,
 	kFlagBulletBobDead = 702,
 	kFlagRC02EnteredChapter4 = 704,
 	kFlagRC02RunciterTalkWithGun = 705,
@@ -1064,6 +1076,7 @@ enum Flags {
 	kFlagMA04WatchedTV = 711,
 	kFlagMcCoyShotAtZuben = 712,
 	kFlagDR04McCoyShotMoraji = 713,
+	kFlagDR06UnlockedToUG16 = 715,
 	kFlagRC04BobTalk3 = 717,
 	kflagPS01toPS02 = 718,
 	kFlagCT02McCoyFell = 719,
@@ -1094,7 +1107,7 @@ enum Variables {
 	kVariableBobShot = 24, // has no use
 	kVariableGeneralDollShot = 25, // has no use
 	// variables 26 - 28 are not used
-
+	kVariableLutherLanceShot = 29,
 	// variables 30 - 31 are not used
 	kVariableGenericWalkerAModel = 32,
 	kVariableGenericWalkerBModel = 33,
@@ -1509,12 +1522,23 @@ enum GameItems {
 	kItemCandy = 79,
 	kItemCheese = 81,
 	kItemChopstickWrapper = 82,
+	kItemDNATyrell = 83,
 	kItemDogCollar = 84,
 	kItemRagDoll = 85,
+	// 86 is never used
+	// 87 is never used
 	kItemRadiationGoogles = 88,
 	kItemGordosLighter1 = 89,
 	kItemGordosLighter2 = 90,
+
+	// 92 is never used
+	// 93 is never used
+	// 94 is never used
+	// 95 is never used
+	// 96 is never used
+	// 97 is never used
 	kItemToyDog = 98,
+	// 99 is never used
 	kItemShellCasingA = 100,
 	kItemShellCasingB = 101,
 	kItemShellCasingC = 102,
@@ -1527,7 +1551,13 @@ enum GameItems {
 	kItemChair = 109,
 	kItemWeaponsCrate = 110,
 	kItemWeaponsOrderForm = 111,
+	// 112 is never used
+	// 113 is never used
+	// 114 is never used
 	kItemDogWrapper = 115,
+	// 116 is never used
+	// 117 is never used
+
 	kItemTyrellSalesPamphlet = 119,
 	kItemMoonbusPhoto = 120,
 	kItemGreenPawnLock = 121,
@@ -1870,6 +1900,20 @@ enum GoalSadik {
 	kGoalSadikBB11TalkWithClovis = 107
 };
 
+enum GoalLuther {
+	kGoalLutherDefault = 400,
+	kGoalLutherMoveAround = 401,
+	kGoalLutherMoveAroundRestart = 402,
+	kGoalLutherStop = 403,
+	kGoalLutherShot = 494,
+	kGoalLutherDyingStarted = 495,
+	kGoalLutherDyingWait = 496,
+	kGoalLutherDyingCheck = 497,
+	kGoalLutherDie = 498,
+	kGoalLutherDead = 499,
+	kGoalLutherGone = 599
+};
+
 enum GoalTransient {
 	kGoalTransientDefault = 0,
 	kGoalTransientCT04Leave = 2
@@ -1893,10 +1937,17 @@ enum GoalRunciter {
 	kGoalRunciterDead = 599
 };
 
+enum GoalTyrellGuard {
+	kGoalTyrellGuardSleeping = 300,
+	kGoalTyrellGuardWakeUpAndArrestMcCoy = 301,
+	kGoalTyrellGuardWakeUp = 302,
+	kGoalTyrellGuardArrestMcCoy = 303,
+	kGoalTyrellGuardWait = 304
+};
+
 enum GoalEarlyQ {
 	// cut feature? goals 0 - 200 has no use as EarlyQ is walking around NR which is not accessible
 	kGoalEarlyQWalkAround = 200,
-
 	kGoalEarlyQNR04Enter = 201,
 	kGoalEarlyQNR04Talk1 = 202,
 	kGoalEarlyQNR04GoToBar = 203,
diff --git a/engines/bladerunner/script/ai/clovis.cpp b/engines/bladerunner/script/ai/clovis.cpp
index 41d188e..c8a57ee 100644
--- a/engines/bladerunner/script/ai/clovis.cpp
+++ b/engines/bladerunner/script/ai/clovis.cpp
@@ -453,7 +453,7 @@ bool AIScriptClovis::GoalChanged(int currentGoalNumber, int newGoalNumber) {
 			Global_Variable_Decrement(kVariableReplicants, 1);
 		}
 		if (Global_Variable_Query(kVariableChapter) == 5 && Actor_Query_In_Set(kActorLuther, kSetKP07)) {
-			Actor_Set_Goal_Number(kActorLuther, 599);
+			Actor_Set_Goal_Number(kActorLuther, kGoalLutherGone);
 			Global_Variable_Decrement(kVariableReplicants, 1);
 		}
 		if (Global_Variable_Query(kVariableChapter) == 5 && Actor_Query_In_Set(kActorDektora, kSetKP07)) {
diff --git a/engines/bladerunner/script/ai/luther.cpp b/engines/bladerunner/script/ai/luther.cpp
index 21df880..696bfc0 100644
--- a/engines/bladerunner/script/ai/luther.cpp
+++ b/engines/bladerunner/script/ai/luther.cpp
@@ -38,84 +38,98 @@ void AIScriptLuther::Initialize() {
 
 	Actor_Put_In_Set(kActorLuther, kSetUG16);
 	Actor_Set_At_XYZ(kActorLuther, 176.91f, -40.67f, 225.92f, 486);
-	Actor_Set_Goal_Number(kActorLuther, 400);
-	Actor_Set_Targetable(kActorLuther, 1);
+	Actor_Set_Goal_Number(kActorLuther, kGoalLutherDefault);
+	Actor_Set_Targetable(kActorLuther, true);
 }
 
 bool AIScriptLuther::Update() {
-	if (!Actor_Query_Is_In_Current_Set(kActorLuther)
-			|| Player_Query_Combat_Mode() != 1
-			|| Global_Variable_Query(29)
-			|| Game_Flag_Query(596)
-			|| Global_Variable_Query(kVariableChapter) != 4) {
-		if (Actor_Query_Goal_Number(kActorLuther) == 400 && Actor_Query_Goal_Number(kActorLuther) != 499) {
-			Actor_Set_Goal_Number(kActorLuther, 401);
-		} else if (Actor_Query_Goal_Number(kActorLuther) == 494) {
-			Actor_Set_Goal_Number(kActorLuther, 495);
-			ChangeAnimationMode(48);
-		} else if (Actor_Query_Goal_Number(kActorLuther) != 495 || Game_Flag_Query(587)) {
-			if (Actor_Query_Goal_Number(kActorLuther) != 497
-					|| Global_Variable_Query(29) >= 2
-					|| Game_Flag_Query(568)) {
-				if (Actor_Query_Goal_Number(kActorLuther) != 497
-						|| Global_Variable_Query(29) <= 1
-						|| Game_Flag_Query(568)) {
-					if (Actor_Query_Goal_Number(kActorLuther) == 498) {
-						Game_Flag_Set(595);
-						Actor_Set_Goal_Number(kActorLuther, 499);
-						Actor_Set_Targetable(kActorLuther, 0);
-					} else {
-						return false;
-					}
-				} else {
-					Actor_Set_Targetable(kActorLuther, 0);
-					Actor_Set_Goal_Number(kActorLuther, 498);
-					Actor_Set_Targetable(kActorLuther, 0);
-				}
-			} else {
-				Game_Flag_Set(568);
-				ChangeAnimationMode(50);
-				ChangeAnimationMode(48);
-				Actor_Set_Goal_Number(kActorLuther, 498);
-				Actor_Set_Targetable(kActorLuther, 0);
-				Scene_Loop_Set_Default(5);
-				Scene_Loop_Start_Special(2, 4, 1);
-				Ambient_Sounds_Play_Sound(559, 50, 0, 0, 99);
-				Ambient_Sounds_Remove_Looping_Sound(516, 1);
-			}
-		} else {
-			AI_Countdown_Timer_Reset(kActorLuther, 2);
-			AI_Countdown_Timer_Start(kActorLuther, 2, 5);
-			Actor_Set_Goal_Number(kActorLuther, 496);
-			Game_Flag_Set(587);
-		}
-	} else {
+	if ( Actor_Query_Is_In_Current_Set(kActorLuther)
+	 &&  Player_Query_Combat_Mode()
+	 &&  Global_Variable_Query(kVariableLutherLanceShot) == 0
+	 && !Game_Flag_Query(kFlagUG16PulledGun)
+	 &&  Global_Variable_Query(kVariableChapter) == 4
+	) {
 		Actor_Says(kActorMcCoy, 5720, 12);
 		Actor_Says(kActorLuther, 80, 13);
 		Actor_Says(kActorLance, 40, 12);
-		Game_Flag_Set(596);
+		Game_Flag_Set(kFlagUG16PulledGun);
+		return false;
+	}
+
+	if (Actor_Query_Goal_Number(kActorLuther) == kGoalLutherDefault
+	 && Actor_Query_Goal_Number(kActorLuther) != kGoalLutherDead
+	) {
+		Actor_Set_Goal_Number(kActorLuther, kGoalLutherMoveAround);
+		return false;
+	}
+
+	if (Actor_Query_Goal_Number(kActorLuther) == kGoalLutherShot) {
+		Actor_Set_Goal_Number(kActorLuther, kGoalLutherDyingStarted);
+		ChangeAnimationMode(kAnimationModeDie);
+		return false;
+	}
+
+	if ( Actor_Query_Goal_Number(kActorLuther) == kGoalLutherDyingStarted
+	 && !Game_Flag_Query(kFlagUG15LutherLanceStartedDying)
+	) {
+		AI_Countdown_Timer_Reset(kActorLuther, 2);
+		AI_Countdown_Timer_Start(kActorLuther, 2, 5);
+		Actor_Set_Goal_Number(kActorLuther, kGoalLutherDyingWait);
+		Game_Flag_Set(kFlagUG15LutherLanceStartedDying);
+		return false;
+	}
+
+	if ( Actor_Query_Goal_Number(kActorLuther) == kGoalLutherDyingCheck
+	 &&  Global_Variable_Query(kVariableLutherLanceShot) < 2
+	 && !Game_Flag_Query(kFlagUG16ComputerOff)
+	) {
+		Game_Flag_Set(kFlagUG16ComputerOff);
+		ChangeAnimationMode(50);
+		ChangeAnimationMode(kAnimationModeDie);
+		Actor_Set_Goal_Number(kActorLuther, kGoalLutherDie);
+		Actor_Set_Targetable(kActorLuther, false);
+		Scene_Loop_Set_Default(5); // UG16MainLoopNoComputerLight
+		Scene_Loop_Start_Special(kSceneLoopModeOnce, 4, true); // UG16SparkLoop
+		Ambient_Sounds_Play_Sound(559, 50, 0, 0, 99);
+		Ambient_Sounds_Remove_Looping_Sound(516, 1);
+		return false;
+	}
+
+	if ( Actor_Query_Goal_Number(kActorLuther) == kGoalLutherDyingCheck
+	 &&  Global_Variable_Query(kVariableLutherLanceShot) > 1
+	 && !Game_Flag_Query(kFlagUG16ComputerOff)
+	) {
+		Actor_Set_Targetable(kActorLuther, false);
+		Actor_Set_Goal_Number(kActorLuther, kGoalLutherDie);
+		Actor_Set_Targetable(kActorLuther, false);
+		return false;
+	}
+
+	if (Actor_Query_Goal_Number(kActorLuther) == kGoalLutherDie) {
+		Game_Flag_Set(kFlagLutherLanceAreDead);
+		Actor_Set_Goal_Number(kActorLuther, kGoalLutherDead);
+		Actor_Set_Targetable(kActorLuther, false);
+		return false;
 	}
 
 	return false;
 }
 
 void AIScriptLuther::TimerExpired(int timer) {
-	if (timer != 2)
-		return; //false;
-
-	AI_Countdown_Timer_Reset(kActorLuther, 2);
-	Actor_Set_Goal_Number(kActorLuther, 497);
-
-	return; //true;
+	if (timer == 2) {
+		AI_Countdown_Timer_Reset(kActorLuther, 2);
+		Actor_Set_Goal_Number(kActorLuther, kGoalLutherDyingCheck);
+		// return true;
+	}
+	// return false;
 }
 
 void AIScriptLuther::CompletedMovementTrack() {
-	if (Actor_Query_Goal_Number(kActorLuther) != 401)
-		return; //false;
-
-	Actor_Set_Goal_Number(kActorLuther, 402);
-
-	return; //true;
+	if (Actor_Query_Goal_Number(kActorLuther) == kGoalLutherMoveAround) {
+		Actor_Set_Goal_Number(kActorLuther, kGoalLutherMoveAroundRestart);
+		// return true;
+	}
+	//return false;
 }
 
 void AIScriptLuther::ReceivedClue(int clueId, int fromActorId) {
@@ -147,24 +161,26 @@ void AIScriptLuther::ShotAtAndMissed() {
 }
 
 bool AIScriptLuther::ShotAtAndHit() {
-	if (Actor_Query_Which_Set_In(kActorLuther) == 19) {
+	if (Actor_Query_Which_Set_In(kActorLuther) == kSetUG16) {
 		Actor_Set_Health(kActorLuther, 50, 50);
 	}
-	Global_Variable_Increment(29, 1);
+
+	Global_Variable_Increment(kVariableLutherLanceShot, 1);
 	Music_Stop(2);
-	if (Global_Variable_Query(29) <= 0) {
-		return false;
-	}
-	if (!Game_Flag_Query(560)) {
-		Game_Flag_Set(557);
+
+	if (Global_Variable_Query(kVariableLutherLanceShot) > 0) {
+		if (!Game_Flag_Query(kFlagLutherLanceIsReplicant)) {
+			Game_Flag_Set(kFlagNotUsed557);
+		}
+		Actor_Set_Goal_Number(kActorLuther, kGoalLutherShot);
+		return true;
 	}
-	Actor_Set_Goal_Number(kActorLuther, 494);
 
-	return true;
+	return false;
 }
 
 void AIScriptLuther::Retired(int byActorId) {
-	Actor_Set_Goal_Number(kActorLuther, 599);
+	Actor_Set_Goal_Number(kActorLuther, kGoalLutherGone);
 }
 
 int AIScriptLuther::GetFriendlinessModifierIfGetsClue(int otherActorId, int clueId) {
@@ -173,7 +189,7 @@ int AIScriptLuther::GetFriendlinessModifierIfGetsClue(int otherActorId, int clue
 
 bool AIScriptLuther::GoalChanged(int currentGoalNumber, int newGoalNumber) {
 	switch (newGoalNumber) {
-	case 401:
+	case kGoalLutherMoveAround:
 		AI_Movement_Track_Flush(kActorLuther);
 		AI_Movement_Track_Append(kActorLuther, 39, 20);
 		AI_Movement_Track_Append_With_Facing(kActorLuther, 368, 120, 486);
@@ -181,16 +197,16 @@ bool AIScriptLuther::GoalChanged(int currentGoalNumber, int newGoalNumber) {
 		AI_Movement_Track_Repeat(kActorLuther);
 		break;
 
-	case 402:
-		Actor_Set_Goal_Number(kActorLuther, 401);
+	case kGoalLutherMoveAroundRestart:
+		Actor_Set_Goal_Number(kActorLuther, kGoalLutherMoveAround);
 		break;
 
-	case 403:
+	case kGoalLutherStop:
 		AI_Movement_Track_Flush(kActorLuther);
 		break;
 
 	case 499:
-		Actor_Set_Goal_Number(kActorLuther, 599);
+		Actor_Set_Goal_Number(kActorLuther, kGoalLutherGone);
 		break;
 	}
 
@@ -202,7 +218,7 @@ bool AIScriptLuther::UpdateAnimation(int *animation, int *frame) {
 	case 0:
 		*animation = 346;
 		_animationFrame++;
-		if (_animationFrame > Slice_Animation_Query_Number_Of_Frames(346) - 1) {
+		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
 			_animationFrame = 0;
 		}
 		break;
@@ -210,7 +226,7 @@ bool AIScriptLuther::UpdateAnimation(int *animation, int *frame) {
 	case 1:
 		*animation = 348;
 		_animationFrame++;
-		if (_animationFrame > Slice_Animation_Query_Number_Of_Frames(348) - 1) {
+		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
 			*animation = 346;
 			_animationFrame = 0;
 			_animationState = 0;
@@ -219,13 +235,15 @@ bool AIScriptLuther::UpdateAnimation(int *animation, int *frame) {
 		break;
 
 	case 2:
-		if (!_animationFrame && _flag) {
+		if (_animationFrame == 0
+		 && _flag
+		) {
 			*animation = 346;
 			_animationState = 0;
 		} else {
 			*animation = 349;
 			_animationFrame++;
-			if (_animationFrame > Slice_Animation_Query_Number_Of_Frames(349) - 1) {
+			if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
 				_animationFrame = 0;
 			}
 		}
@@ -234,7 +252,7 @@ bool AIScriptLuther::UpdateAnimation(int *animation, int *frame) {
 	case 3:
 		*animation = 350;
 		_animationFrame++;
-		if (_animationFrame > Slice_Animation_Query_Number_Of_Frames(350) - 1) {
+		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
 			_animationFrame = 0;
 			_animationState = 2;
 			*animation = 349;
@@ -244,7 +262,7 @@ bool AIScriptLuther::UpdateAnimation(int *animation, int *frame) {
 	case 4:
 		*animation = 351;
 		_animationFrame++;
-		if (_animationFrame > Slice_Animation_Query_Number_Of_Frames(351) - 1) {
+		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
 			_animationFrame = 0;
 			_animationState = 2;
 			*animation = 349;
@@ -254,7 +272,7 @@ bool AIScriptLuther::UpdateAnimation(int *animation, int *frame) {
 	case 5:
 		*animation = 352;
 		_animationFrame++;
-		if (_animationFrame > Slice_Animation_Query_Number_Of_Frames(352) - 1) {
+		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
 			_animationFrame = 0;
 			_animationState = 2;
 			*animation = 349;
@@ -264,7 +282,7 @@ bool AIScriptLuther::UpdateAnimation(int *animation, int *frame) {
 	case 6:
 		*animation = 353;
 		_animationFrame++;
-		if (_animationFrame > Slice_Animation_Query_Number_Of_Frames(353) - 1) {
+		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
 			_animationFrame = 0;
 			_animationState = 2;
 			*animation = 349;
@@ -274,7 +292,7 @@ bool AIScriptLuther::UpdateAnimation(int *animation, int *frame) {
 	case 7:
 		*animation = 354;
 		_animationFrame++;
-		if (_animationFrame > Slice_Animation_Query_Number_Of_Frames(354) - 1) {
+		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
 			_animationFrame = 0;
 			_animationState = 2;
 			*animation = 349;
@@ -284,7 +302,7 @@ bool AIScriptLuther::UpdateAnimation(int *animation, int *frame) {
 	case 8:
 		*animation = 355;
 		_animationFrame++;
-		if (_animationFrame > Slice_Animation_Query_Number_Of_Frames(355) - 1) {
+		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
 			_animationFrame = 0;
 			_animationState = 2;
 			*animation = 349;
@@ -294,7 +312,7 @@ bool AIScriptLuther::UpdateAnimation(int *animation, int *frame) {
 	case 9:
 		*animation = 356;
 		_animationFrame++;
-		if (_animationFrame > Slice_Animation_Query_Number_Of_Frames(356) - 1) {
+		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
 			*animation = 346;
 			_animationFrame = 0;
 			_animationState = 0;
@@ -305,7 +323,7 @@ bool AIScriptLuther::UpdateAnimation(int *animation, int *frame) {
 	case 10:
 		*animation = 357;
 		_animationFrame++;
-		if (_animationFrame > Slice_Animation_Query_Number_Of_Frames(357) - 1) {
+		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
 			Actor_Change_Animation_Mode(kActorLuther, 50);
 			*animation = 358;
 			_animationFrame = 0;
@@ -314,7 +332,7 @@ bool AIScriptLuther::UpdateAnimation(int *animation, int *frame) {
 
 	case 11:
 		*animation = 358;
-		if (_animationFrame < Slice_Animation_Query_Number_Of_Frames(358) - 1) {
+		if (_animationFrame < Slice_Animation_Query_Number_Of_Frames(*animation) - 1) {
 			_animationFrame++;
 		}
 		break;
@@ -329,8 +347,6 @@ bool AIScriptLuther::UpdateAnimation(int *animation, int *frame) {
 		}
 		break;
 
-	default:
-		break;
 	}
 	*frame = _animationFrame;
 
@@ -338,6 +354,7 @@ bool AIScriptLuther::UpdateAnimation(int *animation, int *frame) {
 }
 
 bool AIScriptLuther::ChangeAnimationMode(int mode) {
+	// these modes are differnent that other actors
 	switch (mode) {
 	case 0:
 		if ((unsigned int)(_animationState - 2) > 6) {
diff --git a/engines/bladerunner/script/ai/tyrell_guard.cpp b/engines/bladerunner/script/ai/tyrell_guard.cpp
index 5e40453..a7b9e31 100644
--- a/engines/bladerunner/script/ai/tyrell_guard.cpp
+++ b/engines/bladerunner/script/ai/tyrell_guard.cpp
@@ -49,12 +49,13 @@ void AIScriptTyrellGuard::TimerExpired(int timer) {
 	case 0:
 		AI_Countdown_Timer_Reset(kActorTyrellGuard, 0);
 		if (Actor_Query_Which_Set_In(kActorMcCoy) == kSetTB02_TB03) {
-			Actor_Set_Goal_Number(kActorTyrellGuard, 301);
+			Actor_Set_Goal_Number(kActorTyrellGuard, kGoalTyrellGuardWakeUpAndArrestMcCoy);
 		}
 		break;
+
 	case 1:
 		AI_Countdown_Timer_Reset(kActorTyrellGuard, 1);
-		Actor_Set_Goal_Number(kActorTyrellGuard, 303);
+		Actor_Set_Goal_Number(kActorTyrellGuard, kGoalTyrellGuardArrestMcCoy);
 		break;
 	}
 }
@@ -105,13 +106,14 @@ int AIScriptTyrellGuard::GetFriendlinessModifierIfGetsClue(int otherActorId, int
 
 bool AIScriptTyrellGuard::GoalChanged(int currentGoalNumber, int newGoalNumber) {
 	switch (newGoalNumber) {
-	case 300:
+	case kGoalTyrellGuardSleeping:
 		if (currentGoalNumber != newGoalNumber) {
 			Actor_Change_Animation_Mode(kActorTyrellGuard, 55);
 			AI_Countdown_Timer_Start(kActorTyrellGuard, 0, 30);
 		}
 		return true;
-	case 301:
+
+	case kGoalTyrellGuardWakeUpAndArrestMcCoy:
 		Actor_Change_Animation_Mode(kActorTyrellGuard, kAnimationModeIdle);
 		Delay(1000);
 		Actor_Says(kActorTyrellGuard, 320, 14);
@@ -121,19 +123,22 @@ bool AIScriptTyrellGuard::GoalChanged(int currentGoalNumber, int newGoalNumber)
 		Actor_Force_Stop_Walking(kActorMcCoy);
 		Actor_Set_Goal_Number(kActorMcCoy, kGoalMcCoyArrested);
 		return true;
-	case 302:
+
+	case kGoalTyrellGuardWakeUp:
 		AI_Countdown_Timer_Reset(kActorTyrellGuard, 0);
 		Actor_Says(kActorTyrellGuard, 310, 14);
 		AI_Countdown_Timer_Start(kActorTyrellGuard, 1, 20);
 		return true;
-	case 303:
+
+	case kGoalTyrellGuardArrestMcCoy:
 		Actor_Change_Animation_Mode(kActorTyrellGuard, 50);
 		Ambient_Sounds_Play_Sound(590, 100, 0, 0, 0);
 		Delay(1000);
 		Actor_Force_Stop_Walking(kActorMcCoy);
 		Actor_Set_Goal_Number(kActorMcCoy, kGoalMcCoyArrested);
 		return true;
-	case 304:
+
+	case kGoalTyrellGuardWait:
 		AI_Countdown_Timer_Reset(kActorTyrellGuard, 1);
 		return true;
 	}
@@ -149,6 +154,7 @@ bool AIScriptTyrellGuard::UpdateAnimation(int *animation, int *frame) {
 			_animationFrame = 0;
 		}
 		break;
+
 	case 1:
 		*animation = 564;
 		if (_animationFrame <= 5) {
@@ -158,6 +164,7 @@ bool AIScriptTyrellGuard::UpdateAnimation(int *animation, int *frame) {
 		}
 		_animationFrame += _frameDelta;
 		break;
+
 	case 2:
 		*animation = 564;
 		_animationFrame++;
@@ -166,9 +173,12 @@ bool AIScriptTyrellGuard::UpdateAnimation(int *animation, int *frame) {
 			_animationState = 0;
 		}
 		break;
+
 	case 3:
 		*animation = 558;
-		if (_animationFrame == 0 && _flag1) {
+		if (_animationFrame == 0
+		 && _flag1
+		) {
 			*animation = 555;
 			_animationState = 0;
 		} else {
@@ -178,6 +188,7 @@ bool AIScriptTyrellGuard::UpdateAnimation(int *animation, int *frame) {
 			}
 		}
 		break;
+
 	case 4:
 		*animation = 559;
 		_animationFrame++;
@@ -187,6 +198,7 @@ bool AIScriptTyrellGuard::UpdateAnimation(int *animation, int *frame) {
 			_animationState = 3;
 		}
 		break;
+
 	case 5:
 		*animation = 560;
 		_animationFrame++;
@@ -196,6 +208,7 @@ bool AIScriptTyrellGuard::UpdateAnimation(int *animation, int *frame) {
 			_animationState = 3;
 		}
 		break;
+
 	case 6:
 		*animation = 561;
 		_animationFrame++;
@@ -205,6 +218,7 @@ bool AIScriptTyrellGuard::UpdateAnimation(int *animation, int *frame) {
 			_animationState = 3;
 		}
 		break;
+
 	case 7:
 		*animation = 562;
 		_animationFrame++;
@@ -232,6 +246,7 @@ bool AIScriptTyrellGuard::UpdateAnimation(int *animation, int *frame) {
 			_animationState = 0;
 		}
 		break;
+
 	case 10:
 		*animation = 564;
 		_animationFrame++;
@@ -241,6 +256,7 @@ bool AIScriptTyrellGuard::UpdateAnimation(int *animation, int *frame) {
 			_animationState = 0;
 		}
 		break;
+
 	case 11:
 		*animation = 565;
 		_animationFrame++;
@@ -282,6 +298,7 @@ bool AIScriptTyrellGuard::ChangeAnimationMode(int mode) {
 			break;
 		}
 		break;
+
 	case kAnimationModeTalk:
 		if (_animationState == 1) {
 			_animationState = 2;
@@ -291,6 +308,7 @@ bool AIScriptTyrellGuard::ChangeAnimationMode(int mode) {
 			_flag1 = false;
 		}
 		break;
+
 	case 12:
 		if (_animationState == 1) {
 			_animationState = 2;
@@ -300,6 +318,7 @@ bool AIScriptTyrellGuard::ChangeAnimationMode(int mode) {
 			_flag1 = false;
 		}
 		break;
+
 	case 13:
 		if (_animationState == 1) {
 			_animationState = 2;
@@ -309,6 +328,7 @@ bool AIScriptTyrellGuard::ChangeAnimationMode(int mode) {
 			_flag1 = false;
 		}
 		break;
+
 	case 14:
 		if (_animationState == 1) {
 			_animationState = 2;
@@ -318,6 +338,7 @@ bool AIScriptTyrellGuard::ChangeAnimationMode(int mode) {
 			_flag1 = false;
 		}
 		break;
+
 	case 15:
 		if (_animationState == 1) {
 			_animationState = 2;
@@ -327,14 +348,17 @@ bool AIScriptTyrellGuard::ChangeAnimationMode(int mode) {
 			_flag1 = false;
 		}
 		break;
+
 	case 23:
 		_animationState = 8;
 		_animationFrame = 0;
 		break;
+
 	case 50:
 		_animationState = 11;
 		_animationFrame = 0;
 		break;
+
 	case 43:
 	case 55:
 		if (_animationState != 1) {
diff --git a/engines/bladerunner/script/init_script.cpp b/engines/bladerunner/script/init_script.cpp
index 9133873..4cd634e 100644
--- a/engines/bladerunner/script/init_script.cpp
+++ b/engines/bladerunner/script/init_script.cpp
@@ -97,7 +97,7 @@ void InitScript::Init_Game_Flags() {
 	}
 
 	if (Random_Query(1, 2) == 1) {
-		Game_Flag_Set(560);
+		Game_Flag_Set(kFlagLutherLanceIsReplicant);
 	}
 
 	if (!Game_Flag_Query(kFlagGordoIsReplicant)
diff --git a/engines/bladerunner/script/scene/dr06.cpp b/engines/bladerunner/script/scene/dr06.cpp
index d2317b2..0d549f5 100644
--- a/engines/bladerunner/script/scene/dr06.cpp
+++ b/engines/bladerunner/script/scene/dr06.cpp
@@ -33,7 +33,7 @@ void SceneScriptDR06::InitializeScene() {
 
 	Scene_Exit_Add_2D_Exit(0, 601, 11, 639, 479, 1);
 	if (Global_Variable_Query(kVariableChapter) > 3
-	 && Game_Flag_Query(715)
+	 && Game_Flag_Query(kFlagDR06UnlockedToUG16)
 	) {
 		Scene_Exit_Add_2D_Exit(1, 0, 272, 46, 477, 2);
 	}
diff --git a/engines/bladerunner/script/scene/kp07.cpp b/engines/bladerunner/script/scene/kp07.cpp
index 486120f..d6d1a88 100644
--- a/engines/bladerunner/script/scene/kp07.cpp
+++ b/engines/bladerunner/script/scene/kp07.cpp
@@ -71,7 +71,7 @@ void SceneScriptKP07::InitializeScene() {
 			Actor_Set_At_XYZ(kActorLucy, 78.0f, -41.52f, -119.0f, 659);
 		}
 
-		if (Actor_Query_Goal_Number(kActorLuther) < 599) {
+		if (Actor_Query_Goal_Number(kActorLuther) < kGoalLutherGone) {
 			Global_Variable_Increment(kVariableReplicants, 1);
 			Actor_Put_In_Set(kActorLuther, kSetKP07);
 			Actor_Set_At_XYZ(kActorLuther, -47.0f, 0.0f, 151.0f, 531);
diff --git a/engines/bladerunner/script/scene/ps14.cpp b/engines/bladerunner/script/scene/ps14.cpp
index 73b87e7..bd22dff 100644
--- a/engines/bladerunner/script/scene/ps14.cpp
+++ b/engines/bladerunner/script/scene/ps14.cpp
@@ -69,9 +69,10 @@ bool SceneScriptPS14::ClickedOnItem(int itemId, bool a2) {
 
 bool SceneScriptPS14::ClickedOnExit(int exitId) {
 	if (exitId == 1) {
-		if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -2101.0f, 508.14f, -1361.0f, 0, 1, false, 0)) {
+		if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -2101.0f, 508.14f, -1361.0f, 0, true, false, 0)) {
 			Actor_Face_Heading(kActorMcCoy, 819, false);
 			Loop_Actor_Travel_Stairs(kActorMcCoy, 3, true, kAnimationModeIdle);
+
 			if (Global_Variable_Query(kVariableChapter) == 4
 			 && Game_Flag_Query(671)
 			) {
diff --git a/engines/bladerunner/script/scene/tb02.cpp b/engines/bladerunner/script/scene/tb02.cpp
index 7a68812..a82f88d 100644
--- a/engines/bladerunner/script/scene/tb02.cpp
+++ b/engines/bladerunner/script/scene/tb02.cpp
@@ -40,6 +40,7 @@ void SceneScriptTB02::InitializeScene() {
 	if (Global_Variable_Query(kVariableChapter) > 3) {
 		Scene_Exit_Add_2D_Exit(0, 0, 455, 639, 479, 2);
 	}
+
 	Ambient_Sounds_Add_Looping_Sound(211, 20, 0, 1);
 	Ambient_Sounds_Add_Sound(212, 2, 15, 16, 20, 0, 0, -101, -101, 0, 0);
 	Ambient_Sounds_Add_Sound(213, 2, 15, 16, 20, 0, 0, -101, -101, 0, 0);
@@ -63,22 +64,25 @@ void SceneScriptTB02::InitializeScene() {
 		Ambient_Sounds_Add_Sound(194, 5, 70, 12, 12, -100, 100, -101, -101, 0, 0);
 		Ambient_Sounds_Add_Sound(195, 5, 70, 12, 12, -100, 100, -101, -101, 0, 0);
 	}
+
 	if (Game_Flag_Query(kFlagSpinnerAtTB02)
 	 && Global_Variable_Query(kVariableChapter) < 4
 	) {
 		Scene_Exit_Add_2D_Exit(2, 67, 0, 233, 362, 3);
 	}
+
 	if (Game_Flag_Query(kFlagTB03toTB02)) {
-		Scene_Loop_Start_Special(0, 0, 0);
+		Scene_Loop_Start_Special(kSceneLoopModeLoseControl, 0, false);
 		Scene_Loop_Set_Default(1);
 	} else {
 		Scene_Loop_Set_Default(1);
 	}
+
 	Actor_Put_In_Set(kActorTyrellGuard, kSetTB02_TB03);
 	Actor_Set_At_XYZ(kActorTyrellGuard, -38.53f, 2.93f, 1475.97f, 673);
 	if (Global_Variable_Query(kVariableChapter) == 4) {
-		if (Actor_Query_Goal_Number(kActorTyrellGuard) < 300) {
-			Actor_Set_Goal_Number(kActorTyrellGuard, 300);
+		if (Actor_Query_Goal_Number(kActorTyrellGuard) < kGoalTyrellGuardSleeping) {
+			Actor_Set_Goal_Number(kActorTyrellGuard, kGoalTyrellGuardSleeping);
 		}
 		Scene_Exit_Add_2D_Exit(1, 430, 235, 487, 396, 0);
 	}
@@ -148,8 +152,8 @@ bool SceneScriptTB02::ClickedOnActor(int actorId) {
 			}
 
 			if (chapter == 4) {
-				if (Actor_Query_Goal_Number(kActorTyrellGuard) == 300) {
-					Actor_Set_Goal_Number(kActorTyrellGuard, 301);
+				if (Actor_Query_Goal_Number(kActorTyrellGuard) == kGoalTyrellGuardSleeping) {
+					Actor_Set_Goal_Number(kActorTyrellGuard, kGoalTyrellGuardWakeUpAndArrestMcCoy);
 				}
 			}
 		}
@@ -173,6 +177,7 @@ bool SceneScriptTB02::ClickedOnExit(int exitId) {
 		}
 		return true;
 	}
+
 	if (exitId == 1) {
 		if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -32.0f, 0.0f, 1578.0f, 0, true, false, 0)) {
 			Ambient_Sounds_Remove_All_Non_Looping_Sounds(true);
@@ -187,12 +192,13 @@ bool SceneScriptTB02::ClickedOnExit(int exitId) {
 		}
 		return true;
 	}
+
 	if (exitId == 2) {
 		if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -192.0f, 0.0f, 1430.0f, 0, true, false, 0)) {
 			Actor_Face_Heading(kActorMcCoy, 800, false);
 			Loop_Actor_Travel_Stairs(kActorMcCoy, 9, false, kAnimationModeIdle);
-			if (Actor_Query_Goal_Number(kActorTyrellGuard) == 300) {
-				Actor_Set_Goal_Number(kActorTyrellGuard, 301);
+			if (Actor_Query_Goal_Number(kActorTyrellGuard) == kGoalTyrellGuardSleeping) {
+				Actor_Set_Goal_Number(kActorTyrellGuard, kGoalTyrellGuardWakeUpAndArrestMcCoy);
 			} else {
 				Game_Flag_Reset(kFlagMcCoyInChinaTown);
 				Game_Flag_Reset(kFlagMcCoyInRunciters);
@@ -295,8 +301,8 @@ void SceneScriptTB02::PlayerWalkedIn() {
 		Game_Flag_Reset(kFlagTB05toTB02);
 	} else if (Game_Flag_Query(kFlagTB07toTB02)) {
 		Game_Flag_Reset(kFlagTB07toTB02);
-		if (Actor_Query_Goal_Number(kActorTyrellGuard) == 300) {
-			Actor_Set_Goal_Number(kActorTyrellGuard, 302);
+		if (Actor_Query_Goal_Number(kActorTyrellGuard) == kGoalTyrellGuardSleeping) {
+			Actor_Set_Goal_Number(kActorTyrellGuard, kGoalTyrellGuardWakeUp);
 		}
 		Music_Play(1, 50, 0, 2, -1, 0, 0);
 	} else {
diff --git a/engines/bladerunner/script/scene/tb03.cpp b/engines/bladerunner/script/scene/tb03.cpp
index fb26584..27ac0f0 100644
--- a/engines/bladerunner/script/scene/tb03.cpp
+++ b/engines/bladerunner/script/scene/tb03.cpp
@@ -62,11 +62,11 @@ void SceneScriptTB03::InitializeScene() {
 	Actor_Set_At_XYZ(kActorTyrellGuard, -38.53f, 2.93f, 1475.97f, 673);
 	if (Global_Variable_Query(kVariableChapter) == 4) {
 		int goal = Actor_Query_Goal_Number(kActorTyrellGuard);
-		if (goal == 304) {
-			Actor_Change_Animation_Mode(kActorTyrellGuard, 0);
+		if (goal == kGoalTyrellGuardWait) {
+			Actor_Change_Animation_Mode(kActorTyrellGuard, kAnimationModeIdle);
 			Actor_Set_Goal_Number(kActorOfficerGrayford, 399);
-		} else if (goal != 302) {
-			Actor_Set_Goal_Number(kActorTyrellGuard, 300);
+		} else if (goal != kGoalTyrellGuardWakeUp) {
+			Actor_Set_Goal_Number(kActorTyrellGuard, kGoalTyrellGuardSleeping);
 		}
 	}
 
@@ -107,8 +107,8 @@ bool SceneScriptTB03::ClickedOnItem(int itemId, bool a2) {
 
 bool SceneScriptTB03::ClickedOnExit(int exitId) {
 	if (exitId == 0) {
-		if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -260.0f, 0.15f, 2014.0f, 0, 1, false, 0)) {
-			Actor_Set_Goal_Number(kActorTyrellGuard, 304);
+		if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -260.0f, 0.15f, 2014.0f, 0, true, false, 0)) {
+			Actor_Set_Goal_Number(kActorTyrellGuard, kGoalTyrellGuardWait);
 			Ambient_Sounds_Remove_All_Non_Looping_Sounds(true);
 			Ambient_Sounds_Remove_All_Looping_Sounds(1);
 			Game_Flag_Set(kFlagTB03toUG17);
@@ -118,7 +118,7 @@ bool SceneScriptTB03::ClickedOnExit(int exitId) {
 	}
 
 	if (exitId == 1) {
-		if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -152.0f, 0.0f, 1774.0f, 0, 1, false, 0)) {
+		if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -152.0f, 0.0f, 1774.0f, 0, true, false, 0)) {
 			Ambient_Sounds_Remove_All_Non_Looping_Sounds(true);
 			Ambient_Sounds_Remove_All_Looping_Sounds(1);
 			Game_Flag_Set(kFlagTB03toTB02);
@@ -141,7 +141,7 @@ void SceneScriptTB03::ActorChangedGoal(int actorId, int newGoal, int oldGoal, bo
 }
 
 void SceneScriptTB03::PlayerWalkedIn() {
-	if (Actor_Query_Goal_Number(kActorTyrellGuard) == 304) {
+	if (Actor_Query_Goal_Number(kActorTyrellGuard) == kGoalTyrellGuardWait) {
 		Player_Set_Combat_Mode(false);
 		Actor_Says(kActorOfficerGrayford, 260, -1);
 		Actor_Says(kActorMcCoy, 170, 14);
diff --git a/engines/bladerunner/script/scene/tb07.cpp b/engines/bladerunner/script/scene/tb07.cpp
index cc14203..6290ad7 100644
--- a/engines/bladerunner/script/scene/tb07.cpp
+++ b/engines/bladerunner/script/scene/tb07.cpp
@@ -49,7 +49,7 @@ void SceneScriptTB07::InitializeScene() {
 	if ( Global_Variable_Query(kVariableChapter) == 4
 	 && !Actor_Clue_Query(kActorMcCoy, kClueDNATyrell)
 	) {
-		Item_Add_To_World(83, 941, kSetTB07, 9.7f, 48.7f, -174.22f, 0, 12, 12, false, true, false, true);
+		Item_Add_To_World(kItemDNATyrell, 941, kSetTB07, 9.7f, 48.7f, -174.22f, 0, 12, 12, false, true, false, true);
 	}
 	if (Game_Flag_Query(kFlagTB07ShadeDown)) {
 		Scene_Loop_Set_Default(kTB07LoopMainShadeDown);
@@ -78,7 +78,7 @@ bool SceneScriptTB07::ClickedOnActor(int actorId) {
 bool SceneScriptTB07::ClickedOnItem(int itemId, bool a2) {
 	if (!Loop_Actor_Walk_To_Item(kActorMcCoy, itemId, 36, true, false)) {
 		Actor_Face_Item(kActorMcCoy, itemId, true);
-		if (itemId == 83) {
+		if (itemId == kItemDNATyrell) {
 			Item_Pickup_Spin_Effect(941, 331, 296);
 			Actor_Clue_Acquire(kActorMcCoy, kClueDNATyrell, false, -1);
 		}
diff --git a/engines/bladerunner/script/scene/ug06.cpp b/engines/bladerunner/script/scene/ug06.cpp
index 9ac5bca..3209d4b 100644
--- a/engines/bladerunner/script/scene/ug06.cpp
+++ b/engines/bladerunner/script/scene/ug06.cpp
@@ -29,7 +29,7 @@ void SceneScriptUG06::InitializeScene() {
 		Ambient_Sounds_Remove_All_Non_Looping_Sounds(true);
 		Ambient_Sounds_Remove_All_Looping_Sounds(1);
 		Outtake_Play(kOuttakeMovieC1, false, -1);
-		if (Game_Flag_Query(560)) {
+		if (Game_Flag_Query(kFlagLutherLanceIsReplicant)) {
 			Outtake_Play(kOuttakeMovieC3, false, -1);
 		} else {
 			Outtake_Play(kOuttakeMovieC2, false, -1);
diff --git a/engines/bladerunner/script/scene/ug16.cpp b/engines/bladerunner/script/scene/ug16.cpp
index dc2f5da..ff14e4b 100644
--- a/engines/bladerunner/script/scene/ug16.cpp
+++ b/engines/bladerunner/script/scene/ug16.cpp
@@ -44,7 +44,7 @@ void SceneScriptUG16::InitializeScene() {
 	Ambient_Sounds_Add_Looping_Sound(332, 40,  0, 1);
 	Ambient_Sounds_Add_Looping_Sound(333, 40,  0, 1);
 
-	if (Game_Flag_Query(568)) {
+	if (Game_Flag_Query(kFlagUG16ComputerOff)) {
 		Scene_Loop_Set_Default(5);
 	} else {
 		Scene_Loop_Set_Default(0);
@@ -81,10 +81,10 @@ bool SceneScriptUG16::ClickedOn3DObject(const char *objectName, bool a2) {
 	if (Object_Query_Click("QUADPATCH05", objectName)) {
 		if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, 194.0f, -35.0f, 160.8f, 0, true, false, 0)) {
 			Actor_Face_Heading(kActorMcCoy, 870, false);
-			if (!Game_Flag_Query(597)
-			 &&  Game_Flag_Query(595)
+			if (!Game_Flag_Query(kFlagUG16FolderFound)
+			 &&  Game_Flag_Query(kFlagLutherLanceAreDead)
 			) {
-				Game_Flag_Set(597);
+				Game_Flag_Set(kFlagUG16FolderFound);
 				Delay(1000);
 				Actor_Voice_Over(3480, kActorVoiceOver);
 				Actor_Change_Animation_Mode(kActorMcCoy, 38);
@@ -109,32 +109,31 @@ bool SceneScriptUG16::ClickedOn3DObject(const char *objectName, bool a2) {
 
 			Actor_Face_Heading(kActorMcCoy, 870, false);
 
-			if ((!Game_Flag_Query(595)
-			  &&  Actor_Query_Is_In_Current_Set(kActorLuther)
+			if (( Game_Flag_Query(kFlagLutherLanceAreDead)
+			  || !Actor_Query_Is_In_Current_Set(kActorLuther)
 			 )
-			 || Actor_Clue_Query(kActorMcCoy, kClueDNALutherLance)
-			 || Game_Flag_Query(568)
+			 && !Actor_Clue_Query(kActorMcCoy, kClueDNALutherLance)
+			 && !Game_Flag_Query(kFlagUG16ComputerOff)
 			) {
-				Actor_Says(kActorMcCoy, 8525, 12);
-				Actor_Says(kActorMcCoy, 8526, 12);
-				return false;
+				Delay(2000);
+				Actor_Face_Heading(kActorMcCoy, 1016, false);
+				Delay(2000);
+				Actor_Says(kActorMcCoy, 5725, 14);
+				Delay(1000);
+				Item_Pickup_Spin_Effect(941, 418, 305);
+				Actor_Clue_Acquire(kActorMcCoy, kClueDNALutherLance, true, -1);
+				return true;
 			}
 
-			Delay(2000);
-			Actor_Face_Heading(kActorMcCoy, 1016, false);
-			Delay(2000);
-			Actor_Says(kActorMcCoy, 5725, 14);
-			Delay(1000);
-			Item_Pickup_Spin_Effect(941, 418, 305);
-			Actor_Clue_Acquire(kActorMcCoy, kClueDNALutherLance, true, -1);
-			return true;
+			Actor_Says(kActorMcCoy, 8525, 12);
+			Actor_Says(kActorMcCoy, 8526, 12);
 		}
 	}
 	return false;
 }
 
 bool SceneScriptUG16::ClickedOnActor(int actorId) {
-	if (Actor_Query_Goal_Number(kActorLuther) < 490) {
+	if (Actor_Query_Goal_Number(kActorLuther) < 490) { // Luther & Lance are alive
 		dialogueWithLuther();
 		return true;
 	}
@@ -194,17 +193,17 @@ void SceneScriptUG16::ActorChangedGoal(int actorId, int newGoal, int oldGoal, bo
 }
 
 void SceneScriptUG16::PlayerWalkedIn() {
-	Game_Flag_Set(715);
+	Game_Flag_Set(kFlagDR06UnlockedToUG16);
 
-	if (!Game_Flag_Query(595)) {
-		Actor_Set_Goal_Number(kActorLuther, 403);
+	if (!Game_Flag_Query(kFlagLutherLanceAreDead)) {
+		Actor_Set_Goal_Number(kActorLuther, kGoalLutherStop);
 	}
 
-	if (!Game_Flag_Query(556)
+	if (!Game_Flag_Query(kFlagUG16LutherLanceTalk1)
 	 &&  Actor_Query_Is_In_Current_Set(kActorLuther)
 	) {
 		Player_Loses_Control();
-		Loop_Actor_Walk_To_XYZ(kActorMcCoy, 120.29f, -35.67f, 214.8f, 310, 0, false, 0);
+		Loop_Actor_Walk_To_XYZ(kActorMcCoy, 120.29f, -35.67f, 214.8f, 310, false, false, 0);
 		Actor_Face_Actor(kActorMcCoy, kActorLuther, true);
 		Actor_Says(kActorLuther, 0, 6);
 		Actor_Says(kActorLuther, 30, 13);
@@ -219,13 +218,13 @@ void SceneScriptUG16::PlayerWalkedIn() {
 		Actor_Says(kActorLance, 30, 16);
 		Actor_Says(kActorLuther, 70, 6);
 		Player_Gains_Control();
-		Game_Flag_Set(556);
+		Game_Flag_Set(kFlagUG16LutherLanceTalk1);
 	}
 }
 
 void SceneScriptUG16::PlayerWalkedOut() {
-	if (!Game_Flag_Query(595)) {
-		Actor_Set_Goal_Number(kActorLuther, 401);
+	if (!Game_Flag_Query(kFlagLutherLanceAreDead)) {
+		Actor_Set_Goal_Number(kActorLuther, kGoalLutherMoveAround);
 		//return true;
 	}
 	//return false;
@@ -236,37 +235,37 @@ void SceneScriptUG16::DialogueQueueFlushed(int a1) {
 
 void SceneScriptUG16::dialogueWithLuther() {
 	Dialogue_Menu_Clear_List();
-	DM_Add_To_List_Never_Repeat_Once_Selected(1400, 5, 6, 2);
-	DM_Add_To_List_Never_Repeat_Once_Selected(1410, 5, 4, 8);
-	if (Game_Flag_Query(600)
-	 || Game_Flag_Query(601)
+	DM_Add_To_List_Never_Repeat_Once_Selected(1400, 5, 6, 2); // REPLICANTS
+	DM_Add_To_List_Never_Repeat_Once_Selected(1410, 5, 4, 8); // WORK
+	if (Game_Flag_Query(kFlagUG16LutherLanceTalkReplicants1)
+	 || Game_Flag_Query(kFlagUG16LutherLanceTalkReplicants2)
 	) {
-		DM_Add_To_List_Never_Repeat_Once_Selected(1420, 6, 4, 5);
-		DM_Add_To_List_Never_Repeat_Once_Selected(1430, 6, 4, 5);
-		DM_Add_To_List_Never_Repeat_Once_Selected(1440, 6, 4, 5);
+		DM_Add_To_List_Never_Repeat_Once_Selected(1420, 6, 4, 5); // LIFESPAN
+		DM_Add_To_List_Never_Repeat_Once_Selected(1430, 6, 4, 5); // CLOVIS
+		DM_Add_To_List_Never_Repeat_Once_Selected(1440, 6, 4, 5); // VOIGT-KAMPFF
 	}
 	if ( Global_Variable_Query(kVariableCorruptedGuzzaEvidence) > 1
 	 && !Actor_Clue_Query(kActorMcCoy, kClueFolder)
 	 ) {
-		DM_Add_To_List_Never_Repeat_Once_Selected(1450, 6, 4, 5);
+		DM_Add_To_List_Never_Repeat_Once_Selected(1450, 6, 4, 5); // GUZZA
 	}
 	if (Actor_Clue_Query(kActorMcCoy, kClueEnvelope)) {
-		DM_Add_To_List_Never_Repeat_Once_Selected(1460, 6, 4, 5);
+		DM_Add_To_List_Never_Repeat_Once_Selected(1460, 6, 4, 5); // RUNCITER
 	}
 	if ( Actor_Clue_Query(kActorMcCoy, kClueDNATyrell)
 	 && !Actor_Clue_Query(kActorMcCoy, kClueFolder)
-	 &&  Game_Flag_Query(698)
+	 &&  Game_Flag_Query(kFlagUG15LanceLuthorTrade)
 	) {
-		DM_Add_To_List_Never_Repeat_Once_Selected(1470, 6, 4, 5);
+		DM_Add_To_List_Never_Repeat_Once_Selected(1470, 6, 4, 5); // TRADE
 	}
-	Dialogue_Menu_Add_DONE_To_List(1480);
+	Dialogue_Menu_Add_DONE_To_List(1480); // DONE
 
 	Dialogue_Menu_Appear(320, 240);
 	int answer = Dialogue_Menu_Query_Input();
 	Dialogue_Menu_Disappear();
 
 	switch (answer) {
-	case 1400:
+	case 1400: // REPLICANTS
 		Actor_Says(kActorMcCoy, 5730, 13);
 		Actor_Face_Actor(kActorMcCoy, kActorLuther, true);
 		Actor_Says(kActorLuther, 100, 18);
@@ -281,14 +280,14 @@ void SceneScriptUG16::dialogueWithLuther() {
 		Actor_Says(kActorLuther, 130, 6);
 		Actor_Says(kActorMcCoy, 5825, 13);
 		Actor_Modify_Friendliness_To_Other(kActorLuther, kActorMcCoy, -5);
-		if (Game_Flag_Query(560)) {
+		if (Game_Flag_Query(kFlagLutherLanceIsReplicant)) {
 			Actor_Says(kActorLuther, 140, 13);
 			Actor_Says(kActorLuther, 150, 14);
 			Actor_Says(kActorLuther, 160, 13);
 			Actor_Says(kActorLance, 140, 16);
 			Actor_Says(kActorMcCoy, 5790, 13);
 			Actor_Says(kActorLuther, 170, 14);
-			Game_Flag_Set(600);
+			Game_Flag_Set(kFlagUG16LutherLanceTalkReplicants1);
 			Actor_Modify_Friendliness_To_Other(kActorLuther, kActorMcCoy, 5);
 		} else {
 			Actor_Says(kActorLuther, 180, 14);
@@ -296,19 +295,19 @@ void SceneScriptUG16::dialogueWithLuther() {
 			Actor_Says(kActorLance, 150, 17);
 			Actor_Says(kActorMcCoy, 5800, 13);
 			Actor_Says(kActorLuther, 190, 15);
-			Game_Flag_Set(601);
+			Game_Flag_Set(kFlagUG16LutherLanceTalkReplicants2);
 			Actor_Modify_Friendliness_To_Other(kActorLuther, kActorMcCoy, -10);
 		}
 		break;
 
-	case 1410:
+	case 1410: // WORK
 		Actor_Says(kActorMcCoy, 5735, 13);
 		Actor_Face_Actor(kActorMcCoy, kActorLuther, true);
 		Actor_Says(kActorLance, 160, 17);
 		Actor_Says(kActorLuther, 200, 14);
 		break;
 
-	case 1420:
+	case 1420: // LIFESPAN
 		Actor_Says(kActorMcCoy, 5740, 13);
 		Actor_Face_Actor(kActorMcCoy, kActorLuther, true);
 		Actor_Says(kActorLance, 180, 15);
@@ -327,7 +326,7 @@ void SceneScriptUG16::dialogueWithLuther() {
 		Actor_Clue_Acquire(kActorMcCoy, kClueLutherLanceInterview, true, kActorLuther);
 		break;
 
-	case 1430:
+	case 1430: // CLOVIS
 		Actor_Says(kActorMcCoy, 5745, 13);
 		Actor_Face_Actor(kActorMcCoy, kActorLuther, true);
 		Actor_Says(kActorLance, 240, 15);
@@ -337,7 +336,7 @@ void SceneScriptUG16::dialogueWithLuther() {
 		Actor_Says(kActorLance, 260, 15);
 		break;
 
-	case 1440:
+	case 1440: // VOIGT-KAMPFF
 		Actor_Says(kActorMcCoy, 5750, 13);
 		Actor_Face_Actor(kActorMcCoy, kActorLuther, true);
 		Actor_Says(kActorLance, 280, 6);
@@ -346,7 +345,7 @@ void SceneScriptUG16::dialogueWithLuther() {
 		Actor_Modify_Friendliness_To_Other(kActorLuther, kActorMcCoy, -5);
 		break;
 
-	case 1450:
+	case 1450: // GUZZA
 		Actor_Says(kActorMcCoy, 5755, 13);
 		Actor_Face_Actor(kActorMcCoy, kActorLuther, true);
 		Actor_Says(kActorLance, 290, 17);
@@ -362,10 +361,10 @@ void SceneScriptUG16::dialogueWithLuther() {
 		Actor_Says(kActorMcCoy, 5830, 13);
 		Actor_Says(kActorLance, 320, 16);
 		Actor_Says(kActorLance, 330, 15);
-		Game_Flag_Set(698);
+		Game_Flag_Set(kFlagUG15LanceLuthorTrade);
 		break;
 
-	case 1460:
+	case 1460: // RUNCITER
 		Actor_Says(kActorMcCoy, 5760, 13);
 		Actor_Face_Actor(kActorMcCoy, kActorLuther, true);
 		Actor_Says(kActorLuther, 370, 15);
@@ -377,7 +376,7 @@ void SceneScriptUG16::dialogueWithLuther() {
 		Actor_Says(kActorLance, 380, 13);
 		break;
 
-	case 1470:
+	case 1470: // TRADE
 		Actor_Says(kActorMcCoy, 5765, 13);
 		Actor_Face_Actor(kActorMcCoy, kActorLuther, true);
 		Actor_Says(kActorLance, 400, 15);
@@ -397,11 +396,11 @@ void SceneScriptUG16::dialogueWithLuther() {
 		Actor_Says(kActorLance, 430, 6);
 		Actor_Says(kActorMcCoy, 5855, 13);
 		Actor_Says(kActorLuther, 410, 14);
-		Game_Flag_Set(597);
+		Game_Flag_Set(kFlagUG16FolderFound);
 		Actor_Clue_Acquire(kActorMcCoy, kClueFolder, true, kActorLuther);
 		break;
 
-	case 1480:
+	case 1480: // DONE
 		Actor_Says(kActorMcCoy, 4595, 14);
 		break;
 	}


Commit: cee294137a95742a7be711c23bc4a3dcc7a6465e
    https://github.com/scummvm/scummvm/commit/cee294137a95742a7be711c23bc4a3dcc7a6465e
Author: Peter Kohaut (peter.kohaut at gmail.com)
Date: 2019-02-03T00:14:09+01:00

Commit Message:
BLADERUNNER: Cleanup for scene at UG18

Changed paths:
    engines/bladerunner/game_constants.h
    engines/bladerunner/script/ai/clovis.cpp
    engines/bladerunner/script/ai/guzza.cpp
    engines/bladerunner/script/ai/officer_grayford.cpp
    engines/bladerunner/script/ai/officer_leary.cpp
    engines/bladerunner/script/ai/sadik.cpp
    engines/bladerunner/script/ai/transient.cpp
    engines/bladerunner/script/scene/ct12.cpp
    engines/bladerunner/script/scene/ma07.cpp
    engines/bladerunner/script/scene/ps14.cpp
    engines/bladerunner/script/scene/ug07.cpp
    engines/bladerunner/script/scene/ug18.cpp
    engines/bladerunner/script/scene_script.h


diff --git a/engines/bladerunner/game_constants.h b/engines/bladerunner/game_constants.h
index b5d21e0..f775b07 100644
--- a/engines/bladerunner/game_constants.h
+++ b/engines/bladerunner/game_constants.h
@@ -1002,7 +1002,7 @@ enum Flags {
 	kFlagNR03McCoyThrownOut = 604,
 	kFlagNR04DiscFound = 605,
 	kFlagNR04EarlyQStungByScorpions = 606,
-
+	kFlagMcCoyRetiredHuman = 607,
 	kFlagTB07toTB02 = 608,
 	kFlagNR04McCoyAimedAtEarlyQ = 609,
 	kFlagUG08Entered = 610,
@@ -1048,6 +1048,7 @@ enum Flags {
 	kFlagTB07ShadeDown = 661, // is never set
 	kFlagUG19Available = 665,
 	kFlagCallWithGuzza = 670,
+	kFlagUG18GuzzaScene = 671,
 	kFlagMA07toPS14 = 672,
 	kFlagPS14toMA07 = 673,
 	kFlagUG15RatShot = 676,
@@ -1066,6 +1067,7 @@ enum Flags {
 	kFlagUG14DeadHomeless = 694,
 	kFlagUG15LanceLuthorTrade = 698,
 	kFlagBulletBobDead = 702,
+	kFlagUG18BriefcaseTaken = 703,
 	kFlagRC02EnteredChapter4 = 704,
 	kFlagRC02RunciterTalkWithGun = 705,
 	kFlagRC02RunciterTalk2 = 706,
@@ -1530,7 +1532,7 @@ enum GameItems {
 	kItemRadiationGoogles = 88,
 	kItemGordosLighter1 = 89,
 	kItemGordosLighter2 = 90,
-
+	kItemBriefcase = 91,
 	// 92 is never used
 	// 93 is never used
 	// 94 is never used
@@ -1829,7 +1831,17 @@ enum GoalGuzza {
 	kGoalGuzzaGoToHawkersCircle2 = 103,
 	kGoalGuzzaGoToFreeSlotB = 104,
 	kGoalGuzzaGoToFreeSlotG = 105,
-	kGoalGuzzaSitAtNR03 = 201
+	kGoalGuzzaSitAtNR03 = 201,
+	kGoalGuzzaUG18Wait = 300,
+	kGoalGuzzaUG18Target = 301,
+	kGoalGuzzaUG18WillGetShotBySadik = 302,
+	kGoalGuzzaUG18HitByMcCoy = 303,
+	kGoalGuzzaUG18MissedByMcCoy = 304,
+	kGoalGuzzaUG18ShotByMcCoy = 305,
+	kGoalGuzzaUG18ShootMcCoy = 306,
+	kGoalGuzzaUG18FallDown = 307,
+	kGoalGuzzaUG18ShotBySadik = 390,
+	kGoalGuzzaGone = 599
 };
 
 enum GoalClovis {
@@ -1838,7 +1850,12 @@ enum GoalClovis {
 	kGoalClovisBB11StopSadik = 102,
 	kGoalClovisBB11TalkWithSadik = 103,
 	kGoalClovisBB11PrepareTalkToMcCoy = 104, // bug? this is not triggered when player skips dialogue too fast
-	kGoalClovisBB11TalkToMcCoy = 105 // ends Chapter 2
+	kGoalClovisBB11TalkToMcCoy = 105, // ends Chapter 2
+	kGoalClovisUG18Wait = 300,
+	kGoalClovisUG18SadikWillShootGuzza = 301,
+	kGoalClovisUG18SadikIsShootingGuzza = 302,
+	kGoalClovisUG18GuzzaDied = 303,
+	kGoalClovisUG18Leave = 310
 };
 
 enum GoalLucy {
@@ -1897,7 +1914,15 @@ enum GoalSadik {
 	kGoalSadikBB11CatchMcCoy = 104,
 	kGoalSadikBB11KnockOutMcCoy = 105,
 	kGoalSadikBB11KickMcCoy = 106,
-	kGoalSadikBB11TalkWithClovis = 107
+	kGoalSadikBB11TalkWithClovis = 107,
+	kGoalSadikUG18Wait = 300,
+	kGoalSadikUG18Move = 301,
+	kGoalSadikUG18Decide = 302,
+	// 303, 304 and 305 are never set or used
+	kGoalSadikUG18WillShootMcCoy = 306,
+	kGoalSadikUG18PrepareShootMcCoy = 307,
+	kGoalSadikUG18ShootMcCoy = 308,
+	kGoalSadikUG18Leave = 310
 };
 
 enum GoalLuther {
diff --git a/engines/bladerunner/script/ai/clovis.cpp b/engines/bladerunner/script/ai/clovis.cpp
index c8a57ee..653dd3e 100644
--- a/engines/bladerunner/script/ai/clovis.cpp
+++ b/engines/bladerunner/script/ai/clovis.cpp
@@ -305,16 +305,16 @@ bool AIScriptClovis::GoalChanged(int currentGoalNumber, int newGoalNumber) {
 		Game_Flag_Set(kFlagChapter3Intro);
 		return true;
 
-	case 300:
+	case kGoalClovisUG18Wait:
 		Actor_Put_In_Set(kActorClovis, kSetUG18);
 		Actor_Set_At_XYZ(kActorClovis, -52.26f, 0.0f, 611.02f, 900);
 		Actor_Change_Animation_Mode(kActorClovis, kAnimationModeIdle);
 		return true;
 
-	case 301:
-	case 302:
+	case kGoalClovisUG18SadikWillShootGuzza:
+	case kGoalClovisUG18SadikIsShootingGuzza:
 	case 303:
-	case 310:
+	case kGoalClovisUG18Leave:
 		return true;
 
 	case 350:
diff --git a/engines/bladerunner/script/ai/guzza.cpp b/engines/bladerunner/script/ai/guzza.cpp
index f715c0b..d76ee3e 100644
--- a/engines/bladerunner/script/ai/guzza.cpp
+++ b/engines/bladerunner/script/ai/guzza.cpp
@@ -111,7 +111,7 @@ void AIScriptGuzza::ClickedByPlayer() {
 			Actor_Says(kActorMcCoy, 3970, 13);
 			Actor_Says(kActorGuzza, 780, -1);
 		}
-		//TODO: test this, seems like a bug in game
+		//TODO: test this, looks like a bug in game
 		if (Random_Query(1, 4) == 1) {
 			AI_Movement_Track_Pause(4);
 			Actor_Says(kActorMcCoy, 4005, 15);
@@ -148,23 +148,23 @@ void AIScriptGuzza::OtherAgentEnteredCombatMode(int otherActorId, int combatMode
 }
 
 void AIScriptGuzza::ShotAtAndMissed() {
-	if (Actor_Query_Goal_Number(kActorGuzza) == 301) {
+	if (Actor_Query_Goal_Number(kActorGuzza) == kGoalGuzzaUG18Target) {
 		Actor_Change_Animation_Mode(kActorGuzza, kAnimationModeCombatHit);
-		Actor_Set_Goal_Number(kActorGuzza, 304);
+		Actor_Set_Goal_Number(kActorGuzza, kGoalGuzzaUG18MissedByMcCoy);
 	}
 	// return false;
 }
 
 bool AIScriptGuzza::ShotAtAndHit() {
-	if (Actor_Query_Goal_Number(kActorGuzza) == 301) {
+	if (Actor_Query_Goal_Number(kActorGuzza) == kGoalGuzzaUG18Target) {
 		Actor_Change_Animation_Mode(kActorGuzza, kAnimationModeCombatHit);
-		Actor_Set_Goal_Number(kActorGuzza, 303);
+		Actor_Set_Goal_Number(kActorGuzza, kGoalGuzzaUG18HitByMcCoy);
 	}
 	return false;
 }
 
 void AIScriptGuzza::Retired(int byActorId) {
-	Actor_Set_Goal_Number(kActorGuzza, 599);
+	Actor_Set_Goal_Number(kActorGuzza, kGoalGuzzaGone);
 	// return false;
 }
 
@@ -218,34 +218,34 @@ bool AIScriptGuzza::GoalChanged(int currentGoalNumber, int newGoalNumber) {
 		AI_Movement_Track_Repeat(kActorGuzza);
 		return true;
 
-	case 201:
-		Actor_Change_Animation_Mode(kActorGuzza, 53);
+	case kGoalGuzzaSitAtNR03:
+		Actor_Change_Animation_Mode(kActorGuzza, kAnimationModeSit);
 		_animationState = 1;
 		_animationFrame = 0;
 		Actor_Put_In_Set(kActorGuzza, kSetNR03);
 		Actor_Set_At_XYZ(kActorGuzza, -229.0f, -70.19f, -469.0f, 400);
 		return true;
 
-	case 300:
+	case kGoalGuzzaUG18Wait:
 		Actor_Put_In_Set(kActorGuzza, kSetUG18);
 		Actor_Set_At_XYZ(kActorGuzza, 10.79f, 0.0f, -354.17f, 400);
 		Actor_Change_Animation_Mode(kActorGuzza, kAnimationModeIdle);
 		return true;
 
-	case 301:
+	case kGoalGuzzaUG18Target:
 		Actor_Set_Targetable(kActorGuzza, true);
 		return true;
 
-	case 302:
-	case 303:
-	case 304:
+	case kGoalGuzzaUG18WillGetShotBySadik:
+	case kGoalGuzzaUG18HitByMcCoy:
+	case kGoalGuzzaUG18MissedByMcCoy:
 		Actor_Set_Targetable(kActorGuzza, false);
 		return true;
 
-	case 305:
-	case 306:
-	case 307:
-	case 390:
+	case kGoalGuzzaUG18ShotByMcCoy:
+	case kGoalGuzzaUG18ShootMcCoy:
+	case kGoalGuzzaUG18FallDown:
+	case kGoalGuzzaUG18ShotBySadik:
 		return true;
 	}
 	return false;
@@ -568,7 +568,7 @@ bool AIScriptGuzza::UpdateAnimation(int *animation, int *frame) {
 			*animation = 172;
 			_animationState = 24;
 			_flag = false;
-			Actor_Change_Animation_Mode(kActorGuzza, 4);
+			Actor_Change_Animation_Mode(kActorGuzza, kAnimationModeCombatIdle);
 			_state = 0;
 			_counter = 0;
 			_frameDelta = 1;
@@ -877,12 +877,12 @@ bool AIScriptGuzza::ChangeAnimationMode(int mode) {
 		}
 		_animationFrame = 0;
 		break;
-	
+
 	case 23:
 		_animationState = 32;
 		_animationFrame = 0;
 		break;
-	
+
 	case 30:
 		if (_animationState == 1) {
 			_animationState = 3;
@@ -894,6 +894,7 @@ bool AIScriptGuzza::ChangeAnimationMode(int mode) {
 			_flag = false;
 		}
 		break;
+
 	case 31:
 		if (_animationState == 1) {
 			_animationState = 3;
@@ -905,6 +906,7 @@ bool AIScriptGuzza::ChangeAnimationMode(int mode) {
 			_flag = false;
 		}
 		break;
+
 	case 32:
 		if (_animationState == 1) {
 			_animationState = 3;
@@ -916,6 +918,7 @@ bool AIScriptGuzza::ChangeAnimationMode(int mode) {
 			_flag = false;
 		}
 		break;
+
 	case 33:
 		if (_animationState == 1) {
 			_animationState = 3;
@@ -927,6 +930,7 @@ bool AIScriptGuzza::ChangeAnimationMode(int mode) {
 			_flag = false;
 		}
 		break;
+
 	case 34:
 		if (_animationState == 1) {
 			_animationState = 3;
@@ -938,32 +942,39 @@ bool AIScriptGuzza::ChangeAnimationMode(int mode) {
 			_flag = false;
 		}
 		break;
+
 	case kAnimationModeWalkUp:
 		_animationState = 9;
 		_animationFrame = 0;
 		break;
+
 	case kAnimationModeWalkDown:
 		_animationState = 10;
 		_animationFrame = 0;
 		break;
+
 	case 48:
 		_animationState = 28;
 		_animationFrame = 0;
 		break;
+
 	case 53:
 		_animationState = 1;
 		_animationFrame = 0;
 		break;
+
 	case 58:
 		_animationState = 22;
 		_animationFrame = 0;
 		_flag = false;
 		break;
+
 	case 59:
 		_animationState = 23;
 		_animationFrame = 0;
 		_flag = false;
 		break;
+
 	case 61:
 		_animationState = 33;
 		_animationFrame = 0;
diff --git a/engines/bladerunner/script/ai/officer_grayford.cpp b/engines/bladerunner/script/ai/officer_grayford.cpp
index da21d21..a4680c4 100644
--- a/engines/bladerunner/script/ai/officer_grayford.cpp
+++ b/engines/bladerunner/script/ai/officer_grayford.cpp
@@ -394,7 +394,7 @@ bool AIScriptOfficerGrayford::ShotAtAndHit() {
 
 void AIScriptOfficerGrayford::Retired(int byActorId) {
 	Actor_Set_Goal_Number(kActorOfficerGrayford, 599);
-	Game_Flag_Set(607);
+	Game_Flag_Set(kFlagMcCoyRetiredHuman);
 }
 
 int AIScriptOfficerGrayford::GetFriendlinessModifierIfGetsClue(int otherActorId, int clueId) {
diff --git a/engines/bladerunner/script/ai/officer_leary.cpp b/engines/bladerunner/script/ai/officer_leary.cpp
index 718a39a..2aa3fec 100644
--- a/engines/bladerunner/script/ai/officer_leary.cpp
+++ b/engines/bladerunner/script/ai/officer_leary.cpp
@@ -264,7 +264,7 @@ bool AIScriptOfficerLeary::ShotAtAndHit() {
 
 void AIScriptOfficerLeary::Retired(int byActorId) {
 	Actor_Set_Goal_Number(kActorOfficerLeary, 599);
-	Game_Flag_Set(607);
+	Game_Flag_Set(kFlagMcCoyRetiredHuman);
 }
 
 int AIScriptOfficerLeary::GetFriendlinessModifierIfGetsClue(int otherActorId, int clueId) {
diff --git a/engines/bladerunner/script/ai/sadik.cpp b/engines/bladerunner/script/ai/sadik.cpp
index 250e090..109f8d0 100644
--- a/engines/bladerunner/script/ai/sadik.cpp
+++ b/engines/bladerunner/script/ai/sadik.cpp
@@ -90,8 +90,9 @@ void AIScriptSadik::TimerExpired(int timer) {
 	if (timer == 0) {
 		AI_Countdown_Timer_Reset(kActorSadik, 0);
 
+		// goals 303, 304 and 305 are never set,  cut out part of game?
 		switch (Actor_Query_Goal_Number(kActorSadik)) {
-		case 302:
+		case kGoalSadikUG18Decide:
 			Actor_Set_Goal_Number(kActorSadik, 305);
 			break;
 
@@ -99,8 +100,8 @@ void AIScriptSadik::TimerExpired(int timer) {
 			Actor_Set_Goal_Number(kActorSadik, 305);
 			break;
 
-		case 307:
-			Actor_Set_Goal_Number(kActorSadik, 308);
+		case kGoalSadikUG18PrepareShootMcCoy:
+			Actor_Set_Goal_Number(kActorSadik, kGoalSadikUG18ShootMcCoy);
 			break;
 		}
 	}
@@ -120,8 +121,8 @@ void AIScriptSadik::CompletedMovementTrack() {
 		Actor_Set_Goal_Number(kActorSadik, kGoalSadikBB11KickMcCoy);
 		break;
 
-	case 301:
-		Actor_Set_Goal_Number(kActorSadik, 302);
+	case kGoalSadikUG18Move:
+		Actor_Set_Goal_Number(kActorSadik, kGoalSadikUG18Decide);
 		break;
 
 	default:
@@ -171,8 +172,7 @@ void AIScriptSadik::ShotAtAndMissed() {
 }
 
 bool AIScriptSadik::ShotAtAndHit() {
-
-	if (Actor_Query_Goal_Number(kActorSadik) == 301) {
+	if (Actor_Query_Goal_Number(kActorSadik) == kGoalSadikUG18Move) {
 		if (Game_Flag_Query(kFlagSadikIsReplicant)) {
 			Actor_Set_Health(kActorSadik, 60, 60);
 		} else {
@@ -289,13 +289,13 @@ bool AIScriptSadik::GoalChanged(int currentGoalNumber, int newGoalNumber) {
 		Actor_Set_Goal_Number(kActorMcCoy, 199);
 		return true;
 
-	case 300:
+	case kGoalSadikUG18Wait:
 		Actor_Put_In_Set(kActorSadik, kSetUG18);
 		Actor_Set_At_XYZ(kActorSadik, 111.89f, 0.0f, 408.42f, 0);
 		Actor_Change_Animation_Mode(kActorSadik, 4);
 		return true;
 
-	case 301:
+	case kGoalSadikUG18Move:
 		Actor_Set_Targetable(kActorSadik, true);
 		World_Waypoint_Set(436, 89, -356.11f, 0.0f, 652.42f);
 		AI_Movement_Track_Flush(kActorSadik);
@@ -303,10 +303,11 @@ bool AIScriptSadik::GoalChanged(int currentGoalNumber, int newGoalNumber) {
 		AI_Movement_Track_Repeat(kActorSadik);
 		return true;
 
-	case 302:
+	case kGoalSadikUG18Decide:
 		Actor_Set_Targetable(kActorSadik, false);
 		return true;
 
+	// goals 303, 304 and 305 are never set,  cut out part of game?
 	case 303:
 		AI_Countdown_Timer_Reset(kActorSadik, 0);
 		AI_Countdown_Timer_Start(kActorSadik, 0, 5);
@@ -318,16 +319,16 @@ bool AIScriptSadik::GoalChanged(int currentGoalNumber, int newGoalNumber) {
 		return true;
 
 	case 305:
-	case 306:
-	case 310:
+	case kGoalSadikUG18WillShootMcCoy:
+	case kGoalSadikUG18Leave:
 		return true;
 
-	case 307:
+	case kGoalSadikUG18PrepareShootMcCoy:
 		Sound_Play(12, 100, 0, 0, 50);
 		AI_Countdown_Timer_Start(kActorSadik, 0, 2);
 		return true;
 
-	case 308:
+	case kGoalSadikUG18ShootMcCoy:
 		if (Player_Query_Current_Scene() == kSceneUG18) {
 			Actor_Force_Stop_Walking(kActorMcCoy);
 			Actor_Change_Animation_Mode(kActorSadik, kAnimationModeCombatAttack);
diff --git a/engines/bladerunner/script/ai/transient.cpp b/engines/bladerunner/script/ai/transient.cpp
index 62d3c02..c5dc4ca 100644
--- a/engines/bladerunner/script/ai/transient.cpp
+++ b/engines/bladerunner/script/ai/transient.cpp
@@ -172,7 +172,7 @@ void AIScriptTransient::Retired(int byActorId) {
 	Actor_Set_Goal_Number(kActorTransient, 599);
 
 	if (Global_Variable_Query(kVariableChapter) == 4) {
-		Game_Flag_Set(607);
+		Game_Flag_Set(kFlagMcCoyRetiredHuman);
 	}
 }
 
diff --git a/engines/bladerunner/script/scene/ct12.cpp b/engines/bladerunner/script/scene/ct12.cpp
index 5bd35d8..cab008d 100644
--- a/engines/bladerunner/script/scene/ct12.cpp
+++ b/engines/bladerunner/script/scene/ct12.cpp
@@ -128,8 +128,8 @@ bool SceneScriptCT12::ClickedOnActor(int actorId) {
 
 	if (actorId == kActorOfficerGrayford
 	 && Global_Variable_Query(kVariableChapter) == 4
-	 && Game_Flag_Query(671)
-	 && Game_Flag_Query(703)
+	 && Game_Flag_Query(kFlagUG18GuzzaScene)
+	 && Game_Flag_Query(kFlagUG18BriefcaseTaken)
 	) {
 		Actor_Face_Actor(kActorOfficerGrayford, kActorMcCoy, true);
 		Actor_Face_Actor(kActorMcCoy, kActorOfficerGrayford, true);
diff --git a/engines/bladerunner/script/scene/ma07.cpp b/engines/bladerunner/script/scene/ma07.cpp
index 27b4897..f943f46 100644
--- a/engines/bladerunner/script/scene/ma07.cpp
+++ b/engines/bladerunner/script/scene/ma07.cpp
@@ -76,7 +76,7 @@ bool SceneScriptMA07::ClickedOnExit(int exitId) {
 	if (exitId == 0) {
 		if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, 104.0f, -162.0f, 56.0f, 12, true, false, 0)) {
 			if (Global_Variable_Query(kVariableChapter) == 4
-			 && Game_Flag_Query(671)
+			 && Game_Flag_Query(kFlagUG18GuzzaScene)
 			) {
 				Actor_Set_Goal_Number(kActorMcCoy, 400);
 			} else {
@@ -141,7 +141,7 @@ void SceneScriptMA07::PlayerWalkedIn() {
 	}
 
 	if (!Game_Flag_Query(648)
-	 &&  Game_Flag_Query(671)
+	 &&  Game_Flag_Query(kFlagUG18GuzzaScene)
 	 &&  Global_Variable_Query(kVariableChapter) == 4
 	) {
 		Scene_Exits_Disable();
diff --git a/engines/bladerunner/script/scene/ps14.cpp b/engines/bladerunner/script/scene/ps14.cpp
index bd22dff..392776a 100644
--- a/engines/bladerunner/script/scene/ps14.cpp
+++ b/engines/bladerunner/script/scene/ps14.cpp
@@ -74,7 +74,7 @@ bool SceneScriptPS14::ClickedOnExit(int exitId) {
 			Loop_Actor_Travel_Stairs(kActorMcCoy, 3, true, kAnimationModeIdle);
 
 			if (Global_Variable_Query(kVariableChapter) == 4
-			 && Game_Flag_Query(671)
+			 && Game_Flag_Query(kFlagUG18GuzzaScene)
 			) {
 				if (Actor_Clue_Query(kActorMcCoy, kClueBriefcase)) {
 					Game_Flag_Set(666);
diff --git a/engines/bladerunner/script/scene/ug07.cpp b/engines/bladerunner/script/scene/ug07.cpp
index 9892d16..795ab2f 100644
--- a/engines/bladerunner/script/scene/ug07.cpp
+++ b/engines/bladerunner/script/scene/ug07.cpp
@@ -116,8 +116,8 @@ bool SceneScriptUG07::ClickedOnExit(int exitId) {
 	}
 
 	if (exitId == 2) {
-		if (!Game_Flag_Query(607)
-		 &&  Game_Flag_Query(671)
+		if (!Game_Flag_Query(kFlagMcCoyRetiredHuman)
+		 &&  Game_Flag_Query(kFlagUG18GuzzaScene)
 		 &&  Global_Variable_Query(kVariableChapter) == 4
 		 && !Game_Flag_Query(598)
 		) {
diff --git a/engines/bladerunner/script/scene/ug18.cpp b/engines/bladerunner/script/scene/ug18.cpp
index 35b4661..292062a 100644
--- a/engines/bladerunner/script/scene/ug18.cpp
+++ b/engines/bladerunner/script/scene/ug18.cpp
@@ -60,12 +60,12 @@ void SceneScriptUG18::InitializeScene() {
 	Scene_Loop_Set_Default(4);
 
 	if ( Game_Flag_Query(kFlagCallWithGuzza)
-	 && !Game_Flag_Query(671)
+	 && !Game_Flag_Query(kFlagUG18GuzzaScene)
 	 &&  Global_Variable_Query(kVariableChapter) == 4
 	) {
-		Actor_Set_Goal_Number(kActorGuzza, 300);
-		Actor_Set_Goal_Number(kActorClovis, 300);
-		Actor_Set_Goal_Number(kActorSadik, 300);
+		Actor_Set_Goal_Number(kActorGuzza, kGoalGuzzaUG18Wait);
+		Actor_Set_Goal_Number(kActorClovis, kGoalClovisUG18Wait);
+		Actor_Set_Goal_Number(kActorSadik, kGoalSadikUG18Wait);
 	}
 }
 
@@ -77,7 +77,7 @@ void SceneScriptUG18::SceneLoaded() {
 	Clickable_Object("MACHINE_01");
 	Unclickable_Object("MACHINE_01");
 
-	if (Game_Flag_Query(671)) {
+	if (Game_Flag_Query(kFlagUG18GuzzaScene)) {
 		Actor_Put_In_Set(kActorGuzza, kSetFreeSlotI);
 		Actor_Set_At_Waypoint(kActorGuzza, 41, 0);
 		if (Actor_Query_Which_Set_In(kActorSadik) == kSetUG18) {
@@ -85,11 +85,12 @@ void SceneScriptUG18::SceneLoaded() {
 			Actor_Set_At_Waypoint(kActorSadik, 33, 0);
 		}
 	}
+
 	if ( Game_Flag_Query(kFlagCallWithGuzza)
-	 && !Game_Flag_Query(671)
+	 && !Game_Flag_Query(kFlagUG18GuzzaScene)
 	 &&  Global_Variable_Query(kVariableChapter) == 4
 	) {
-		Item_Add_To_World(91, 987, 89, -55.21f, 0.0f, -302.17f, 0, 12, 12, false, true, false, true);
+		Item_Add_To_World(kItemBriefcase, 987, kSetUG18, -55.21f, 0.0f, -302.17f, 0, 12, 12, false, true, false, true);
 	}
 }
 
@@ -106,13 +107,13 @@ bool SceneScriptUG18::ClickedOnActor(int actorId) {
 }
 
 bool SceneScriptUG18::ClickedOnItem(int itemId, bool combatMode) {
-	if (itemId == 91) {
+	if (itemId == kItemBriefcase) {
 		if (combatMode) {
-			Item_Remove_From_World(91);
-		} else if (!Loop_Actor_Walk_To_Item(kActorMcCoy, 91, 12, true, false)) {
+			Item_Remove_From_World(kItemBriefcase);
+		} else if (!Loop_Actor_Walk_To_Item(kActorMcCoy, kItemBriefcase, 12, true, false)) {
 			Item_Pickup_Spin_Effect(987, 368, 243);
 			Item_Remove_From_World(itemId);
-			Game_Flag_Set(703);
+			Game_Flag_Set(kFlagUG18BriefcaseTaken);
 			Actor_Clue_Acquire(kActorMcCoy, kClueBriefcase, true, kActorGuzza);
 		}
 	}
@@ -141,8 +142,9 @@ void SceneScriptUG18::SceneFrameAdvanced(int frame) {
 
 void SceneScriptUG18::ActorChangedGoal(int actorId, int newGoal, int oldGoal, bool currentSet) {
 	if (actorId == kActorGuzza) {
-		if (newGoal == 303) {
-			Game_Flag_Set(607);
+		switch (newGoal) {
+		case kGoalGuzzaUG18HitByMcCoy:
+			Game_Flag_Set(kFlagMcCoyRetiredHuman);
 			ADQ_Flush();
 			Actor_Modify_Friendliness_To_Other(kActorClovis, kActorMcCoy, 7);
 			Actor_Modify_Friendliness_To_Other(kActorSadik, kActorMcCoy, 10);
@@ -150,8 +152,10 @@ void SceneScriptUG18::ActorChangedGoal(int actorId, int newGoal, int oldGoal, bo
 			Actor_Face_Actor(kActorGuzza, kActorMcCoy, true);
 			ADQ_Add(kActorGuzza, 1220, 58);
 			Scene_Exits_Enable();
-			Actor_Set_Goal_Number(kActorGuzza, 305);
-		} else if (newGoal == 304) {
+			Actor_Set_Goal_Number(kActorGuzza, kGoalGuzzaUG18ShotByMcCoy);
+			break;
+
+		case kGoalGuzzaUG18MissedByMcCoy:
 			ADQ_Flush();
 			Actor_Modify_Friendliness_To_Other(kActorClovis, kActorMcCoy, 7);
 			Actor_Modify_Friendliness_To_Other(kActorSadik, kActorMcCoy, 10);
@@ -159,32 +163,48 @@ void SceneScriptUG18::ActorChangedGoal(int actorId, int newGoal, int oldGoal, bo
 			Actor_Face_Actor(kActorGuzza, kActorMcCoy, true);
 			ADQ_Add(kActorGuzza, 1220, 58);
 			Scene_Exits_Enable();
-			Actor_Set_Goal_Number(kActorGuzza, 306);
+			Actor_Set_Goal_Number(kActorGuzza, kGoalGuzzaUG18ShootMcCoy);
+			break;
 		}
 		return;
 	}
 
 	if (actorId == kActorSadik) {
-		if (newGoal == 302) {
+		switch (newGoal) {
+		case kGoalSadikUG18Decide:
 			if (Actor_Query_Friendliness_To_Other(kActorClovis, kActorMcCoy) > 55
-			 && Game_Flag_Query(607)
+			 && Game_Flag_Query(kFlagMcCoyRetiredHuman)
 			) {
-				sub_403588();
+				Actor_Says(kActorClovis, 660, 13);
+				Actor_Says(kActorMcCoy, 5995, 13);
+				Actor_Says(kActorClovis, 670, 13);
+				Actor_Says(kActorMcCoy, 6000, 13);
+				Actor_Says_With_Pause(kActorClovis, 680, 2.0f, 13);
+				Actor_Says(kActorClovis, 690, 13);
+				Actor_Says(kActorClovis, 700, 13);
+				Actor_Set_Goal_Number(kActorSadik, kGoalSadikUG18Leave);
+				Actor_Set_Goal_Number(kActorClovis, kGoalClovisUG18Leave);
 			} else {
-				Actor_Set_Goal_Number(kActorSadik, 307);
-				Actor_Set_Goal_Number(kActorClovis, 310);
+				Actor_Set_Goal_Number(kActorSadik, kGoalSadikUG18PrepareShootMcCoy);
+				Actor_Set_Goal_Number(kActorClovis, kGoalClovisUG18Leave);
 			}
-		} else if (newGoal == 304) {
+			break;
+
+		// goals 303, 304 and 305 are never set, cut out part of game?
+		case 304:
 			Actor_Modify_Friendliness_To_Other(kActorClovis, kActorMcCoy, -3);
 			ADQ_Add(kActorSadik, 380, -1);
-			Actor_Set_Goal_Number(kActorSadik, 306);
-		} else if (newGoal == 305) {
-			Actor_Change_Animation_Mode(kActorSadik, 6);
+			Actor_Set_Goal_Number(kActorSadik, kGoalSadikUG18WillShootMcCoy);
+			break;
+
+		case 305:
+			Actor_Change_Animation_Mode(kActorSadik, kAnimationModeCombatAttack);
 			Sound_Play(12, 100, 0, 0, 50);
 			Actor_Force_Stop_Walking(kActorMcCoy);
-			Actor_Change_Animation_Mode(kActorMcCoy, 48);
+			Actor_Change_Animation_Mode(kActorMcCoy, kAnimationModeDie);
 			Player_Loses_Control();
 			Actor_Retired_Here(kActorMcCoy, 6, 6, true, kActorSadik);
+			break;
 		}
 	}
 }
@@ -193,13 +213,13 @@ void SceneScriptUG18::PlayerWalkedIn() {
 	Loop_Actor_Walk_To_XYZ(kActorMcCoy, -488.71f, 0.0f, 123.59f, 0, false, false, 0);
 
 	if ( Game_Flag_Query(kFlagCallWithGuzza)
-	 && !Game_Flag_Query(671)
+	 && !Game_Flag_Query(kFlagUG18GuzzaScene)
 	 &&  Actor_Query_Is_In_Current_Set(kActorGuzza)
 	) {
 		Scene_Exits_Disable();
-		sub_402734();
-		sub_403278();
-		Game_Flag_Set(671);
+		talkWithGuzza();
+		talkWithClovis();
+		Game_Flag_Set(kFlagUG18GuzzaScene);
 	}
 }
 
@@ -207,32 +227,35 @@ void SceneScriptUG18::PlayerWalkedOut() {
 }
 
 void SceneScriptUG18::DialogueQueueFlushed(int a1) {
-	int v0 = Actor_Query_Goal_Number(kActorGuzza);
-	if (v0 == 301) {
-		Actor_Set_Goal_Number(kActorGuzza, 302);
-		Actor_Change_Animation_Mode(kActorSadik, 6);
+	switch (Actor_Query_Goal_Number(kActorGuzza)) {
+	case kGoalGuzzaUG18Target:
+		Actor_Set_Goal_Number(kActorGuzza, kGoalGuzzaUG18WillGetShotBySadik);
+		Actor_Change_Animation_Mode(kActorSadik, kAnimationModeCombatAttack);
 		Sound_Play(14, 100, 0, 0, 50);
-		Actor_Change_Animation_Mode(kActorGuzza, 22);
+		Actor_Change_Animation_Mode(kActorGuzza, kAnimationModeCombatHit);
 		ADQ_Add(kActorClovis, 630, 13);
-		Actor_Set_Goal_Number(kActorClovis, 301);
-	} else if (v0 == 305) {
-		Actor_Change_Animation_Mode(kActorMcCoy, 6);
+		Actor_Set_Goal_Number(kActorClovis, kGoalClovisUG18SadikWillShootGuzza);
+		break;
+
+	case kGoalGuzzaUG18ShotByMcCoy:
+		// Bug in the game, shot animation is not reset so McCoy looks still while he is shooting
+		Actor_Change_Animation_Mode(kActorMcCoy, kAnimationModeCombatAttack);
 		Sound_Play(13, 100, 0, 0, 50);
-		Actor_Change_Animation_Mode(kActorGuzza, 22);
+		Actor_Change_Animation_Mode(kActorGuzza, kAnimationModeCombatHit);
 		Delay(900);
-		Actor_Change_Animation_Mode(kActorMcCoy, 6);
+		Actor_Change_Animation_Mode(kActorMcCoy, kAnimationModeCombatAttack);
 		Sound_Play(14, 100, 0, 0, 50);
-		Actor_Change_Animation_Mode(kActorGuzza, 22);
+		Actor_Change_Animation_Mode(kActorGuzza, kAnimationModeCombatHit);
 		Delay(1100);
-		Actor_Change_Animation_Mode(kActorMcCoy, 6);
+		Actor_Change_Animation_Mode(kActorMcCoy, kAnimationModeCombatAttack);
 		Sound_Play(12, 100, 0, 0, 50);
-		Actor_Change_Animation_Mode(kActorGuzza, 22);
+		Actor_Change_Animation_Mode(kActorGuzza, kAnimationModeCombatHit);
 		Delay(900);
-		Actor_Change_Animation_Mode(kActorMcCoy, 6);
+		Actor_Change_Animation_Mode(kActorMcCoy, kAnimationModeCombatAttack);
 		Sound_Play(14, 100, 0, 0, 50);
 		Actor_Change_Animation_Mode(kActorGuzza, 61);
-		Overlay_Play("UG18over", 1, 0, 1, 0);
-		Actor_Set_Goal_Number(kActorGuzza, 307);
+		Overlay_Play("UG18over", 1, false, true, 0);
+		Actor_Set_Goal_Number(kActorGuzza, kGoalGuzzaUG18FallDown);
 		Player_Gains_Control();
 		ADQ_Add_Pause(2000);
 		ADQ_Add(kActorSadik, 360, -1);
@@ -240,48 +263,57 @@ void SceneScriptUG18::DialogueQueueFlushed(int a1) {
 		ADQ_Add(kActorClovis, 650, 14);
 		ADQ_Add(kActorSadik, 370, 14);
 		ADQ_Add(kActorClovis, 1320, 14);
-		Actor_Set_Goal_Number(kActorClovis, 303);
-	} else if (v0 == 306) {
-		Actor_Change_Animation_Mode(kActorGuzza, 6);
+		Actor_Set_Goal_Number(kActorClovis, kGoalClovisUG18GuzzaDied);
+		break;
+
+	case kGoalGuzzaUG18ShootMcCoy:
+		Actor_Change_Animation_Mode(kActorGuzza, kAnimationModeCombatAttack);
 		Sound_Play(13, 100, 0, 0, 50);
 		Actor_Force_Stop_Walking(kActorMcCoy);
-		Actor_Change_Animation_Mode(kActorMcCoy, 48);
+		Actor_Change_Animation_Mode(kActorMcCoy, kAnimationModeDie);
 		Player_Loses_Control();
-		Actor_Retired_Here(kActorMcCoy, 6, 6, 1, kActorGuzza);
-		Actor_Set_Goal_Number(kActorGuzza, 307);
+		Actor_Retired_Here(kActorMcCoy, 6, 6, true, kActorGuzza);
+		Actor_Set_Goal_Number(kActorGuzza, kGoalGuzzaUG18FallDown);
+		break;
 	}
 
-	int v1 = Actor_Query_Goal_Number(kActorClovis);
-	if (v1 == 301) {
-		Actor_Change_Animation_Mode(kActorSadik, 6);
+	switch (Actor_Query_Goal_Number(kActorClovis)) {
+	case kGoalClovisUG18SadikWillShootGuzza:
+		Actor_Change_Animation_Mode(kActorSadik, kAnimationModeCombatAttack);
 		Sound_Play(14, 100, 0, 0, 50);
-		Actor_Change_Animation_Mode(kActorGuzza, 22);
+		Actor_Change_Animation_Mode(kActorGuzza, kAnimationModeCombatHit);
 		ADQ_Add(kActorClovis, 640, 13);
 		ADQ_Add(kActorGuzza, 1210, 13);
-		Actor_Set_Goal_Number(kActorClovis, 302);
-	} else if (v1 == 302) {
-		Actor_Change_Animation_Mode(kActorSadik, 6);
+		Actor_Set_Goal_Number(kActorClovis, kGoalClovisUG18SadikIsShootingGuzza);
+		break;
+
+	case kGoalClovisUG18SadikIsShootingGuzza:
+		Actor_Change_Animation_Mode(kActorSadik, kAnimationModeCombatAttack);
 		Sound_Play(14, 100, 0, 0, 50);
 		Actor_Change_Animation_Mode(kActorGuzza, 61);
 		ADQ_Add_Pause(2000);
 		ADQ_Add(kActorClovis, 650, 14);
 		ADQ_Add(kActorSadik, 370, 14);
 		ADQ_Add(kActorClovis, 1320, 14);
-		Actor_Set_Goal_Number(kActorGuzza, 390);
-		Actor_Retired_Here(kActorGuzza, 72, 32, 1, kActorSadik);
-		Actor_Set_Goal_Number(kActorClovis, 303);
+		Actor_Set_Goal_Number(kActorGuzza, kGoalGuzzaUG18ShotBySadik);
+		Actor_Retired_Here(kActorGuzza, 72, 32, true, kActorSadik);
+		Actor_Set_Goal_Number(kActorClovis, kGoalClovisUG18GuzzaDied);
 		Scene_Exits_Enable();
-	} else if (v1 == 303) {
-		Actor_Set_Goal_Number(kActorSadik, 301);
+		break;
+
+	case kGoalClovisUG18GuzzaDied:
+		Actor_Set_Goal_Number(kActorSadik, kGoalSadikUG18Move);
+		break;
 	}
-	if (Actor_Query_Goal_Number(kActorSadik) == 306) {
-		Actor_Change_Animation_Mode(kActorSadik, 48);
-		Actor_Set_Goal_Number(kActorSadik, 307);
-		Actor_Set_Goal_Number(kActorClovis, 310);
+
+	if (Actor_Query_Goal_Number(kActorSadik) == kGoalSadikUG18WillShootMcCoy) {
+		Actor_Change_Animation_Mode(kActorSadik, kAnimationModeDie);
+		Actor_Set_Goal_Number(kActorSadik, kGoalSadikUG18PrepareShootMcCoy);
+		Actor_Set_Goal_Number(kActorClovis, kGoalClovisUG18Leave);
 	}
 }
 
-void SceneScriptUG18::sub_402734() {
+void SceneScriptUG18::talkWithGuzza() {
 	Actor_Face_Actor(kActorMcCoy, kActorGuzza, true);
 	Actor_Says(kActorMcCoy, 5860, 9);
 	Delay(500);
@@ -325,7 +357,7 @@ void SceneScriptUG18::sub_402734() {
 	Actor_Says(kActorGuzza, 950, 14);
 	Actor_Says(kActorGuzza, 960, 13);
 	Actor_Says(kActorGuzza, 970, 3);
-	if (Game_Flag_Query(607)) {
+	if (Game_Flag_Query(kFlagMcCoyRetiredHuman)) {
 		Actor_Modify_Friendliness_To_Other(kActorClovis, kActorMcCoy, 3);
 		Actor_Modify_Friendliness_To_Other(kActorSadik, kActorMcCoy, 5);
 		Loop_Actor_Walk_To_XYZ(kActorMcCoy, -117.13f, 0.0f, -284.47f, 0, false, false, 0);
@@ -337,66 +369,50 @@ void SceneScriptUG18::sub_402734() {
 		Actor_Says(kActorMcCoy, 5970, 14);
 		Actor_Says(kActorGuzza, 1000, 3);
 		Actor_Says(kActorMcCoy, 5975, 15);
-	} else {
-		sub_402DE8();
-	}
-}
-
-void SceneScriptUG18::sub_402DE8() {
-	if (Player_Query_Agenda() != kPlayerAgendaPolite) {
-		if (Global_Variable_Query(kVariableAffectionTowards) > 1
-		 || Player_Query_Agenda() == kPlayerAgendaSurly
-		) {
-			sub_403114();
-		} else {
-			sub_402F8C();
-		}
-	} else {
+	} else if (Player_Query_Agenda() == kPlayerAgendaPolite) {
 		Actor_Modify_Friendliness_To_Other(kActorClovis, kActorMcCoy, -1);
 		Actor_Modify_Friendliness_To_Other(kActorSadik, kActorMcCoy, -1);
 		Actor_Says(kActorMcCoy, 5935, 14);
 		Actor_Says(kActorMcCoy, 5940, 18);
 		Actor_Says(kActorGuzza, 1020, 13);
 		Actor_Says(kActorGuzza, 1030, 14);
+	} else if (Global_Variable_Query(kVariableAffectionTowards) > 1
+			|| Player_Query_Agenda() == kPlayerAgendaSurly
+	) {
+		Actor_Modify_Friendliness_To_Other(kActorClovis, kActorMcCoy, 20);
+		Actor_Modify_Friendliness_To_Other(kActorSadik, kActorMcCoy, 10);
+		Loop_Actor_Walk_To_XYZ(kActorMcCoy, -117.13f, 0.0f, -284.47f, 0, false, false, 0);
+		Actor_Face_Actor(kActorMcCoy, kActorGuzza, true);
+		Actor_Says(kActorMcCoy, 5950, 16);
+		Actor_Says(kActorMcCoy, 5955, 14);
+		Actor_Says(kActorGuzza, 1110, 13);
+		Actor_Says(kActorGuzza, 1120, 15);
+		Actor_Says(kActorMcCoy, 5990, 3);
+		Actor_Says(kActorGuzza, 1130, 15);
+		Actor_Says(kActorGuzza, 1140, 16);
+	} else {
+		Loop_Actor_Walk_To_XYZ(kActorMcCoy, -117.13f, 0.0f, -284.47f, 0, false, false, 0);
+		Actor_Face_Actor(kActorMcCoy, kActorGuzza, true);
+		Actor_Says(kActorMcCoy, 5945, 12);
+		Actor_Says(kActorGuzza, 1040, 15);
+		Actor_Says(kActorMcCoy, 5980, 15);
+		Actor_Says(kActorGuzza, 1050, 12);
+		Actor_Says(kActorGuzza, 1060, 13);
+		Actor_Says(kActorGuzza, 1070, 14);
+		Actor_Says(kActorMcCoy, 5985, 18);
+		Actor_Says(kActorGuzza, 1080, 3);
+		Actor_Says(kActorGuzza, 1090, 14);
+		Actor_Says(kActorGuzza, 1100, 13);
 	}
 }
 
-void SceneScriptUG18::sub_402F8C() {
-	Loop_Actor_Walk_To_XYZ(kActorMcCoy, -117.13f, 0.0f, -284.47f, 0, false, false, 0);
-	Actor_Face_Actor(kActorMcCoy, kActorGuzza, true);
-	Actor_Says(kActorMcCoy, 5945, 12);
-	Actor_Says(kActorGuzza, 1040, 15);
-	Actor_Says(kActorMcCoy, 5980, 15);
-	Actor_Says(kActorGuzza, 1050, 12);
-	Actor_Says(kActorGuzza, 1060, 13);
-	Actor_Says(kActorGuzza, 1070, 14);
-	Actor_Says(kActorMcCoy, 5985, 18);
-	Actor_Says(kActorGuzza, 1080, 3);
-	Actor_Says(kActorGuzza, 1090, 14);
-	Actor_Says(kActorGuzza, 1100, 13);
-}
-
-void SceneScriptUG18::sub_403114() {
-	Actor_Modify_Friendliness_To_Other(kActorClovis, kActorMcCoy, 20);
-	Actor_Modify_Friendliness_To_Other(kActorSadik, kActorMcCoy, 10);
-	Loop_Actor_Walk_To_XYZ(kActorMcCoy, -117.13f, 0.0f, -284.47f, 0, false, false, 0);
-	Actor_Face_Actor(kActorMcCoy, kActorGuzza, true);
-	Actor_Says(kActorMcCoy, 5950, 16);
-	Actor_Says(kActorMcCoy, 5955, 14);
-	Actor_Says(kActorGuzza, 1110, 13);
-	Actor_Says(kActorGuzza, 1120, 15);
-	Actor_Says(kActorMcCoy, 5990, 3);
-	Actor_Says(kActorGuzza, 1130, 15);
-	Actor_Says(kActorGuzza, 1140, 16);
-}
-
-void SceneScriptUG18::sub_403278() {
+void SceneScriptUG18::talkWithClovis() {
 	ADQ_Flush();
 	Actor_Start_Speech_Sample(kActorClovis, 590);
 	Delay(500);
 	Loop_Actor_Walk_To_XYZ(kActorGuzza, 126.79f, 0.0f, -362.17f, 0, false, false, 0);
 	Actor_Face_Heading(kActorGuzza, 729, false);
-	Actor_Set_Goal_Number(kActorGuzza, 301);
+	Actor_Set_Goal_Number(kActorGuzza, kGoalGuzzaUG18Target);
 	ADQ_Add(kActorSadik, 350, 13);
 	ADQ_Add_Pause(1500);
 	ADQ_Add(kActorGuzza, 1150, 58);
@@ -412,16 +428,4 @@ void SceneScriptUG18::sub_403278() {
 	ADQ_Add(kActorGuzza, 1200, 59);
 }
 
-void SceneScriptUG18::sub_403588() {
-	Actor_Says(kActorClovis, 660, 13);
-	Actor_Says(kActorMcCoy, 5995, 13);
-	Actor_Says(kActorClovis, 670, 13);
-	Actor_Says(kActorMcCoy, 6000, 13);
-	Actor_Says_With_Pause(kActorClovis, 680, 2.0f, 13);
-	Actor_Says(kActorClovis, 690, 13);
-	Actor_Says(kActorClovis, 700, 13);
-	Actor_Set_Goal_Number(kActorSadik, 310);
-	Actor_Set_Goal_Number(kActorClovis, 310);
-}
-
 } // End of namespace BladeRunner
diff --git a/engines/bladerunner/script/scene_script.h b/engines/bladerunner/script/scene_script.h
index a1899a3..ca6f416 100644
--- a/engines/bladerunner/script/scene_script.h
+++ b/engines/bladerunner/script/scene_script.h
@@ -504,12 +504,8 @@ DECLARE_SCRIPT(UG17)
 END_SCRIPT
 
 DECLARE_SCRIPT(UG18)
-	void sub_402734();
-	void sub_402DE8();
-	void sub_402F8C();
-	void sub_403114();
-	void sub_403278();
-	void sub_403588();
+	void talkWithGuzza();
+	void talkWithClovis();
 END_SCRIPT
 
 DECLARE_SCRIPT(UG19)


Commit: f2d76c2d7162d8b3e514c6cb6f865ef527e037a2
    https://github.com/scummvm/scummvm/commit/f2d76c2d7162d8b3e514c6cb6f865ef527e037a2
Author: Peter Kohaut (peter.kohaut at gmail.com)
Date: 2019-02-03T00:14:09+01:00

Commit Message:
BLADERUNNER: Cleanup of scripts at start of chapter 5

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/officer_grayford.cpp
    engines/bladerunner/script/ai/officer_leary.cpp
    engines/bladerunner/script/ai/sadik.cpp
    engines/bladerunner/script/ai/steele.cpp
    engines/bladerunner/script/ai/zuben.cpp
    engines/bladerunner/script/scene/ct12.cpp
    engines/bladerunner/script/scene/hf01.cpp
    engines/bladerunner/script/scene/hf06.cpp
    engines/bladerunner/script/scene/kp01.cpp
    engines/bladerunner/script/scene/kp02.cpp
    engines/bladerunner/script/scene/kp03.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/ma07.cpp
    engines/bladerunner/script/scene/ps14.cpp
    engines/bladerunner/script/scene/ug07.cpp
    engines/bladerunner/script/scene/ug12.cpp
    engines/bladerunner/script/scene/ug13.cpp
    engines/bladerunner/script/scene_script.h


diff --git a/engines/bladerunner/game_constants.h b/engines/bladerunner/game_constants.h
index f775b07..70afd44 100644
--- a/engines/bladerunner/game_constants.h
+++ b/engines/bladerunner/game_constants.h
@@ -811,7 +811,7 @@ enum Flags {
 	kFlagNotUsed370 = 370, // is never checked
 	// 371 is never used
 	// 372 is never used
-
+	kFlagKP02Available = 373,
 	kFlagAR02DektoraBoughtScorpions = 374,
 	kFlagBB11SadikPunchedMcCoy = 375,
 	// 376 is never used
@@ -865,6 +865,7 @@ enum Flags {
 	kFlagCT12ToUG09 = 433,
 	kFlagUG13toUG18 = 434, // is never checked
 	kFlagUG18toUG13 = 435,
+	kFlagUG13CallElevator = 436,
 	kFlagNR04toNR03 = 437,
 	kFlagNR03toNR04 = 438,
 	kFlagNR06toNR08 = 439,
@@ -873,15 +874,21 @@ enum Flags {
 	kFlagNR07toNR06 = 442,
 	kFlagGenericWalkerWaiting = 443,
 	kFlagIzoShot = 444,
+	// 445 is never used
+	// 446 is never used
 	kFlagTB03toUG17 = 447,
 	kFlagUG17toTB03 = 448,
 	kFlagUG02WeaponsChecked = 449,
 	kFlagTB02ElevatorToTB05 = 450,
 	kFlagTB05Entered = 451,
+	// 452 is never used
 	kFlagTB02GuardTalk1 = 453,
+	// 454 is never used
 	kFlagTB02GuardTalk2 = 455,
 	kFlagTB02SteeleTalk = 456,
 	kFlagTB02SteeleEnter = 457,
+	// 458 is never used
+	// 459 is never used
 	kFlagSteeleWalkingAround = 460,
 	kFlagMaggieIsHurt = 461,
 	kFlagPS04GuzzaLeft = 462,
@@ -906,9 +913,11 @@ enum Flags {
 	// 481 is never used
 	kFlagSteeleSmoking = 482,
 	kFlagTB06Introduction = 483,
+
 	kFlagTB06Photographer = 485,
 	kFlagDNARowAvailable = 486,
 	kFlagKIAPrivacyAddon = 487,
+	// 488 is never used
 	kFlagDektoraChapter2Started = 489,
 	kFlagEarlyQStartedChapter1 = 490,
 	kFlagEarlyQStartedChapter2 = 491,
@@ -920,6 +929,10 @@ enum Flags {
 	kFlagBB12Entered = 497,
 	kFlagUG02FromUG01 = 498,
 	kFlagUG02Interactive = 499,
+	// 500 is never used
+	// 501 is never used
+	// 502 is never used
+	// 503 is never used
 	kFlagAR02DektoraWillBuyScorpions = 504,
 	kFlagDR03ChewTalkExplosion = 505,
 	kFlagBB08toBB12 = 506,
@@ -928,13 +941,20 @@ enum Flags {
 	kFlagBB11SadikFight = 509,
 	kFlagNotUsed510 = 510, // is never set
 	kFlagDR05ExplodedEntered = 511,
+	// 512 is never used
+	// 513 is never used
+	// 514 is never used
 	kFlagDR05ViewExplosion = 515,
 	kFlagCT07ZubenAttack = 516,
+	// 517 is never used
+	// 518 is never used
 	kFlagTB06DogCollarTaken = 519,
 	kFlagTB06KitchenBoxTaken = 520,
 	kFlagHC03TrapDoorOpened = 521,
+
 	kFlagUG06Chapter4Started = 524,
 	kFlagCT10Entered = 525,
+	// 526 is never used
 	kFlagHF02toHF03 = 527,
 	kFlagHF03toHF02 = 528,
 	kFlagHF05toHF06 = 529, // is never checked
@@ -949,6 +969,8 @@ enum Flags {
 	kFlagCT09Entered = 538,
 	kFlagCT09LeonInterrupted = 539,
 	kFlagCT09DeskClerkTalk = 540,
+	// 541 is never used
+	kFlagClovisChapter4Started = 542,
 	kFlagGordoTalk1 = 543,
 	kFlagGordoTalk2 = 544,
 	kFlagNotUsed545 = 545, // is never set
@@ -960,9 +982,12 @@ enum Flags {
 	kFlagUG16toDR06 = 551, // is never checked
 	kFlagDR06toUG16 = 552,
 	kFlagUG13Entered = 553,
+	kFlagUG13HomelessTalk1 = 554,
+	// 555 is never used
 	kFlagUG16LutherLanceTalk1 = 556,
 	kFlagNotUsed557, // is never checked
 	kFlagDR01toCT11 = 558,
+
 	kFlagLutherLanceIsReplicant = 560,
 	kFlagNR02GordoLeaveLighter = 561,
 	kFlagHF05CrazyLegsTalk1 = 562,
@@ -994,6 +1019,7 @@ enum Flags {
 	kFlagLutherLanceAreDead = 595,
 	kFlagUG16PulledGun = 596,
 	kFlagUG16FolderFound = 597,
+	kFlagUG07ClovisCaughtMcCoy = 598,
 	kFlagKIAPrivacyAddonIntro = 599,
 	kFlagUG16LutherLanceTalkReplicants1 = 600,
 	kFlagUG16LutherLanceTalkReplicants2 = 601,
@@ -1019,8 +1045,13 @@ enum Flags {
 	// 621 is never used
 	kFlagNR08TouchedDektora = 622,
 	kFlagUG07Empty = 623,
+	// 624 is never used
 	kFlagTB07TyrellMeeting = 625,
+	// 626 is never used
 	kFlagNR01McCoyIsDrugged = 627,
+	// 628 is never used
+	kFlagUnpaseGenWalkers = 629,
+
 	kFlagRatWalkingAround = 631,
 	kFlagNR01DektoraFall = 632,
 	kFlagNR11DektoraBurning = 633,
@@ -1034,30 +1065,45 @@ enum Flags {
 	kFlagNR10toNR11 = 641, // is never checked
 	kFlagNR10McCoyBlinded = 642,
 	kFlagSteeleKnowsBulletBobIsDead = 643,
+	kFlagNotUsed644 = 644, // is never checked
 	kFlagCT11DogWrapperTaken = 645,
 	kFlagSteeleDead = 646, // is never checked
 	kFlagMA04McCoySleeping = 647,
+
 	kFlagMA04PhoneMessageFromClovis = 649,
 	kFlagMA04PhoneMessageFromLucy = 650,
 	kFlagNR08McCoyWatchingShow = 651,
 	kFlagCrazylegsArrestedTalk = 652,
+	kFlagMcCoyIsNotHelpingReplicants = 653,
+
 	kFlagMA02RajifTalk = 655,
 	kFlagUG02RagiationGooglesTaken = 656,
+
 	kFlagNR11BreakWindow = 659,
 	kFlagDNARowAvailableTalk = 660,
 	kFlagTB07ShadeDown = 661, // is never set
+
 	kFlagUG19Available = 665,
+	kFlagMcCoyFreedOfAccusations = 666,
+	// 667 is never used
+	// 668 is never used
+	// 669 is never used
 	kFlagCallWithGuzza = 670,
 	kFlagUG18GuzzaScene = 671,
 	kFlagMA07toPS14 = 672,
 	kFlagPS14toMA07 = 673,
+
+	// 675 is never used
 	kFlagUG15RatShot = 676,
 	kFlagUG15BridgeWillBreak = 677,
 	kFlagChapter2Intro = 678,
 	kFlagChapter3Intro = 679,
 	kFlagChapter4Intro = 680,
+	// 681 is never used
 	kFlagUG15BridgeBroken = 682,
+
 	kFlagNotUsed686 = 686,
+	// 687 is never used
 	kFlagPS05TV0 = 688,
 	kFlagPS05TV1 = 689,
 	kFlagPS05TV2 = 690,
@@ -1065,7 +1111,12 @@ enum Flags {
 	kFlagPS05TV4 = 692,
 	kFlagUG03DeadHomeless = 693,
 	kFlagUG14DeadHomeless = 694,
+	// 695 is never used
+
 	kFlagUG15LanceLuthorTrade = 698,
+
+	// 700 is never used
+
 	kFlagBulletBobDead = 702,
 	kFlagUG18BriefcaseTaken = 703,
 	kFlagRC02EnteredChapter4 = 704,
@@ -1078,17 +1129,21 @@ enum Flags {
 	kFlagMA04WatchedTV = 711,
 	kFlagMcCoyShotAtZuben = 712,
 	kFlagDR04McCoyShotMoraji = 713,
+
 	kFlagDR06UnlockedToUG16 = 715,
+
 	kFlagRC04BobTalk3 = 717,
 	kflagPS01toPS02 = 718,
 	kFlagCT02McCoyFell = 719,
 	kFlagCT02McCoyCombatReady = 720,
+	kFlagNotUsed721 = 721,
 	kFlagChapter4Starting = 722,
 	kFlagZubenBountyPaid = 723,
 	kFlagUG15BridgeBreaks = 724,
 	kFlagCT11DogWrapperAvailable = 725,
 	kFlagAR02Entered = 726,
 	kFlagPS04WeaponsOrderForm = 727,
+	// 728 is never used
 	kFlagNR08DektoraShow = 729
 };
 
@@ -1669,9 +1724,13 @@ enum GoalMcCoy {
 	kGoalMcCoyNR04PassOut = 221,
 	kGoalMcCoyNR11Shoot = 230,
 	kGoalMcCoyNR10Fall = 231,
+	kGoalMcCoyUG07Caught = 301,
+	kGoalMcCoyUG07BrokenFinger = 302,
+	kGoalMcCoyUG07Released = 303,
 	kGoalMcCoyCallWithGuzza = 350,
 	kGoalMcCoyUG15Fall = 390,
 	kGoalMcCoyUG15Die = 391,
+	kGoalMcCoyStartChapter5 = 400,
 	kGoalMcCoyArrested = 500,
 	kGoalMcCoyGone = 599
 };
@@ -1855,7 +1914,10 @@ enum GoalClovis {
 	kGoalClovisUG18SadikWillShootGuzza = 301,
 	kGoalClovisUG18SadikIsShootingGuzza = 302,
 	kGoalClovisUG18GuzzaDied = 303,
-	kGoalClovisUG18Leave = 310
+	kGoalClovisUG18Leave = 310,
+	kGoalClovisStartChapter4 = 400,
+	kGoalClovisUG07ChaseMcCoy = 401,
+	kGoalClovisUG07KillMcCoy = 402
 };
 
 enum GoalLucy {
diff --git a/engines/bladerunner/script/ai/clovis.cpp b/engines/bladerunner/script/ai/clovis.cpp
index 653dd3e..a2d8cf3 100644
--- a/engines/bladerunner/script/ai/clovis.cpp
+++ b/engines/bladerunner/script/ai/clovis.cpp
@@ -63,10 +63,10 @@ bool AIScriptClovis::Update() {
 	}
 
 	if ( Global_Variable_Query(kVariableChapter) == 4
-	 && !Game_Flag_Query(542)
+	 && !Game_Flag_Query(kFlagClovisChapter4Started)
 	) {
-		Game_Flag_Set(542);
-		Actor_Set_Goal_Number(kActorClovis, 400);
+		Game_Flag_Set(kFlagClovisChapter4Started);
+		Actor_Set_Goal_Number(kActorClovis, kGoalClovisStartChapter4);
 		return true;
 	}
 
@@ -82,7 +82,7 @@ bool AIScriptClovis::Update() {
 		Actor_Set_Goal_Number(kActorClovis, 512);
 	}
 
-	if ( Game_Flag_Query(653)
+	if ( Game_Flag_Query(kFlagMcCoyIsNotHelpingReplicants)
 	 && !Game_Flag_Query(696)
 	 &&  Game_Flag_Query(697)
 	) {
@@ -108,13 +108,13 @@ void AIScriptClovis::CompletedMovementTrack() {
 		Actor_Set_Goal_Number(kActorClovis, kGoalClovisBB11TalkWithSadik);
 		break;
 
-	case 401:
+	case kGoalClovisUG07ChaseMcCoy:
 		AI_Movement_Track_Flush(kActorClovis);
 
-		if (Player_Query_Current_Scene() == 92) {
-			Actor_Set_Goal_Number(kActorClovis, 402);
+		if (Player_Query_Current_Scene() == kSceneUG07) {
+			Actor_Set_Goal_Number(kActorClovis, kGoalClovisUG07KillMcCoy);
 		} else {
-			Actor_Set_Goal_Number(kActorClovis, 400);
+			Actor_Set_Goal_Number(kActorClovis, kGoalClovisStartChapter4);
 		}
 		break;
 
@@ -149,7 +149,7 @@ void AIScriptClovis::OtherAgentExitedThisScene(int otherActorId) {
 }
 
 void AIScriptClovis::OtherAgentEnteredCombatMode(int otherActorId, int combatMode) {
-	if (Game_Flag_Query(653) && Actor_Query_In_Set(kActorMcCoy, kSetKP07)) {
+	if (Game_Flag_Query(kFlagMcCoyIsNotHelpingReplicants) && 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(653)) {
+	if (Game_Flag_Query(kFlagMcCoyIsNotHelpingReplicants)) {
 		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(579);
-				Game_Flag_Reset(653);
+				Game_Flag_Reset(kFlagMcCoyIsNotHelpingReplicants);
 				Set_Enter(kSetKP05_KP06, kSceneKP06);
 			}
 		}
@@ -313,7 +313,7 @@ bool AIScriptClovis::GoalChanged(int currentGoalNumber, int newGoalNumber) {
 
 	case kGoalClovisUG18SadikWillShootGuzza:
 	case kGoalClovisUG18SadikIsShootingGuzza:
-	case 303:
+	case kGoalClovisUG18GuzzaDied:
 	case kGoalClovisUG18Leave:
 		return true;
 
@@ -322,33 +322,33 @@ bool AIScriptClovis::GoalChanged(int currentGoalNumber, int newGoalNumber) {
 		Actor_Set_At_Waypoint(kActorClovis, 33, 0);
 		return true;
 
-	case 400:
+	case kGoalClovisStartChapter4:
 		AI_Movement_Track_Flush(kActorClovis);
 		Actor_Put_In_Set(kActorClovis, kSetFreeSlotA);
 		Actor_Set_At_Waypoint(kActorClovis, 33, 0);
 		return true;
 
-	case 401:
+	case kGoalClovisUG07ChaseMcCoy:
 		AI_Movement_Track_Flush(kActorClovis);
 		AI_Movement_Track_Append(kActorClovis, 341, 0);
 		AI_Movement_Track_Append(kActorClovis, 342, 0);
 		AI_Movement_Track_Repeat(kActorClovis);
 		return true;
 
-	case 402:
+	case kGoalClovisUG07KillMcCoy:
 		Player_Loses_Control();
 		Actor_Force_Stop_Walking(kActorMcCoy);
-		Actor_Face_Actor(kActorMcCoy, kActorClovis, 1);
-		Loop_Actor_Walk_To_Actor(kActorClovis, kActorMcCoy, 48, 0, 1);
-		Actor_Face_Actor(kActorClovis, kActorMcCoy, 1);
-		Actor_Change_Animation_Mode(kActorClovis, 6);
+		Actor_Face_Actor(kActorMcCoy, kActorClovis, true);
+		Loop_Actor_Walk_To_Actor(kActorClovis, kActorMcCoy, 48, false, true);
+		Actor_Face_Actor(kActorClovis, kActorMcCoy, true);
+		Actor_Change_Animation_Mode(kActorClovis, kAnimationModeCombatAttack);
 		if (Player_Query_Combat_Mode()) {
-			Actor_Change_Animation_Mode(kActorMcCoy, 49);
+			Actor_Change_Animation_Mode(kActorMcCoy, kAnimationModeCombatDie);
 		} else {
-			Actor_Change_Animation_Mode(kActorMcCoy, 48);
+			Actor_Change_Animation_Mode(kActorMcCoy, kAnimationModeDie);
 		}
 		Delay(3000);
-		Actor_Retired_Here(kActorMcCoy, 12, 48, 1, kActorClovis);
+		Actor_Retired_Here(kActorMcCoy, 12, 48, true, kActorClovis);
 		return true;
 
 	case 500:
@@ -356,7 +356,7 @@ bool AIScriptClovis::GoalChanged(int currentGoalNumber, int newGoalNumber) {
 		return true;
 
 	case 510:
-		if (Game_Flag_Query(653)) {
+		if (Game_Flag_Query(kFlagMcCoyIsNotHelpingReplicants)) {
 			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(653)) {
+		if (Game_Flag_Query(kFlagMcCoyIsNotHelpingReplicants)) {
 			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 8ec9740..3f58af3 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(579);
-			Game_Flag_Reset(653);
+			Game_Flag_Reset(kFlagMcCoyIsNotHelpingReplicants);
 			Set_Enter(kSetKP05_KP06, kSceneKP06);
 
 			return; //true;
diff --git a/engines/bladerunner/script/ai/gordo.cpp b/engines/bladerunner/script/ai/gordo.cpp
index 742e818..0aab3d2 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(579);
-			Game_Flag_Reset(653);
+			Game_Flag_Reset(kFlagMcCoyIsNotHelpingReplicants);
 			Set_Enter(kSetKP05_KP06, kSceneKP06);
 			return;// true;
 		}
diff --git a/engines/bladerunner/script/ai/izo.cpp b/engines/bladerunner/script/ai/izo.cpp
index f7bbfce..2717db6 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(579);
-		Game_Flag_Reset(653);
+		Game_Flag_Reset(kFlagMcCoyIsNotHelpingReplicants);
 		Set_Enter(kSetKP05_KP06, kSceneKP06);
 		return; //true;
 	}
diff --git a/engines/bladerunner/script/ai/maggie.cpp b/engines/bladerunner/script/ai/maggie.cpp
index 7d56e12..5b045d5 100644
--- a/engines/bladerunner/script/ai/maggie.cpp
+++ b/engines/bladerunner/script/ai/maggie.cpp
@@ -142,7 +142,7 @@ void AIScriptMaggie::ReceivedClue(int clueId, int fromActorId) {
 }
 
 void AIScriptMaggie::ClickedByPlayer() {
-	if (!Game_Flag_Query(653) && Global_Variable_Query(kVariableChapter) == 5) {
+	if (!Game_Flag_Query(kFlagMcCoyIsNotHelpingReplicants) && Global_Variable_Query(kVariableChapter) == 5) {
 		if (Actor_Query_Goal_Number(kActorMaggie) == 413) {
 			Actor_Set_Targetable(kActorMaggie, true);
 			AI_Movement_Track_Flush(kActorMaggie);
diff --git a/engines/bladerunner/script/ai/mccoy.cpp b/engines/bladerunner/script/ai/mccoy.cpp
index d5fb581..866ee65 100644
--- a/engines/bladerunner/script/ai/mccoy.cpp
+++ b/engines/bladerunner/script/ai/mccoy.cpp
@@ -413,17 +413,17 @@ bool AIScriptMcCoy::GoalChanged(int currentGoalNumber, int newGoalNumber) {
 		_fallSpeed = -6.0f;
 		return true;
 
-	case 301:
+	case kGoalMcCoyUG07Caught:
 		_animationState = 62;
 		_animationFrame = 0;
 		return true;
 
-	case 302:
+	case kGoalMcCoyUG07BrokenFinger:
 		_animationState = 64;
 		_animationFrame = 0;
 		return true;
 
-	case 303:
+	case kGoalMcCoyUG07Released:
 		_animationState = 65;
 		_animationFrame = 0;
 		return true;
@@ -482,7 +482,7 @@ bool AIScriptMcCoy::GoalChanged(int currentGoalNumber, int newGoalNumber) {
 
 	case 400:
 		Actor_Set_Health(kActorMcCoy, 50, 50);
-		Game_Flag_Set(373);
+		Game_Flag_Set(kFlagKP02Available);
 		affectionTowards = Global_Variable_Query(kVariableAffectionTowards);
 		if (affectionTowards == kAffectionTowardsSteele) {
 			Actor_Modify_Friendliness_To_Other(kActorSteele, kActorMcCoy, 3);
@@ -493,32 +493,38 @@ bool AIScriptMcCoy::GoalChanged(int currentGoalNumber, int newGoalNumber) {
 			Actor_Modify_Friendliness_To_Other(kActorSteele, kActorMcCoy, -5);
 			Actor_Modify_Friendliness_To_Other(kActorClovis, kActorMcCoy, 5);
 		}
-		if (Game_Flag_Query(666)) {
+
+		if (Game_Flag_Query(kFlagMcCoyFreedOfAccusations)) {
 			Actor_Modify_Friendliness_To_Other(kActorSteele, kActorMcCoy, 3);
 		}
+
 		if (Actor_Query_Friendliness_To_Other(kActorSteele, kActorMcCoy) < Actor_Query_Friendliness_To_Other(kActorClovis, kActorMcCoy)) {
-			Game_Flag_Set(653);
+			Game_Flag_Set(kFlagMcCoyIsNotHelpingReplicants);
 		}
+
 		affectionTowards = Global_Variable_Query(kVariableAffectionTowards);
 		if (affectionTowards == kAffectionTowardsSteele) {
-			if (Game_Flag_Query(653)) {
+			if (Game_Flag_Query(kFlagMcCoyIsNotHelpingReplicants)) {
 				Global_Variable_Set(kVariableAffectionTowards, kAffectionTowardsNone);
 			}
 		} else if (affectionTowards == kAffectionTowardsDektora
 		        || affectionTowards == kAffectionTowardsLucy
 		) {
-			if (!Game_Flag_Query(653)) {
+			if (!Game_Flag_Query(kFlagMcCoyIsNotHelpingReplicants)) {
 				Global_Variable_Set(kVariableAffectionTowards, kAffectionTowardsNone);
 			}
 		}
-		if (!Game_Flag_Query(653)) {
+
+		if (!Game_Flag_Query(kFlagMcCoyIsNotHelpingReplicants)) {
 			Game_Flag_Set(kFlagMaggieIsHurt);
 		}
+
 		Ambient_Sounds_Remove_All_Non_Looping_Sounds(true);
 		Ambient_Sounds_Remove_All_Looping_Sounds(1);
 		Global_Variable_Set(kVariableChapter, 5);
 		Outtake_Play(kOuttakeMovieD, false, -1);
-		if (Game_Flag_Query(666)) {
+
+		if (Game_Flag_Query(kFlagMcCoyFreedOfAccusations)) {
 			Chapter_Enter(5, kSetMA07, kSceneMA07);
 		} else {
 			Game_Flag_Set(kFlagMA06ToMA02);
@@ -1804,7 +1810,7 @@ void AIScriptMcCoy::UG15fall() {
 		 && -210.0f < x
 		 &&  -70.0f > x
 		) {
-			Game_Flag_Set(kFlagUG15BridgeBroken); 
+			Game_Flag_Set(kFlagUG15BridgeBroken);
 			Scene_Loop_Set_Default(3); // kUG15LoopMainLoopBridgeBroken
 			Scene_Loop_Start_Special(kSceneLoopModeOnce, 2, true); // kUG15LoopBridgeBreaks
 			Actor_Set_Goal_Number(kActorMcCoy, kGoalMcCoyUG15Fall);
diff --git a/engines/bladerunner/script/ai/officer_grayford.cpp b/engines/bladerunner/script/ai/officer_grayford.cpp
index a4680c4..1e7484c 100644
--- a/engines/bladerunner/script/ai/officer_grayford.cpp
+++ b/engines/bladerunner/script/ai/officer_grayford.cpp
@@ -46,36 +46,69 @@ void AIScriptOfficerGrayford::Initialize() {
 }
 
 bool AIScriptOfficerGrayford::Update() {
-	if (Global_Variable_Query(kVariableChapter) == 4 && Actor_Query_Goal_Number(kActorOfficerGrayford) < 300) {
+	if (Global_Variable_Query(kVariableChapter) == 4
+	 && Actor_Query_Goal_Number(kActorOfficerGrayford) < 300) {
 		AI_Movement_Track_Flush(kActorOfficerGrayford);
 		Actor_Set_Goal_Number(kActorOfficerGrayford, 300);
-	} else if (Global_Variable_Query(kVariableChapter) == 5 && Actor_Query_Goal_Number(kActorOfficerGrayford) < 400) {
+		return false;
+	}
+
+	if (Global_Variable_Query(kVariableChapter) == 5
+	 && Actor_Query_Goal_Number(kActorOfficerGrayford) < 400
+	) {
 		AI_Movement_Track_Flush(kActorOfficerGrayford);
 		Actor_Set_Goal_Number(kActorOfficerGrayford, 400);
-	} else if (!Game_Flag_Query(kFlagMcCoyInDNARow)
-			&& Actor_Query_Goal_Number(kActorOfficerGrayford) > 102
-			&& Actor_Query_Goal_Number(kActorOfficerGrayford) < 110) {
+		return false;
+	}
+
+	if (!Game_Flag_Query(kFlagMcCoyInDNARow)
+	 &&  Actor_Query_Goal_Number(kActorOfficerGrayford) > 102
+	 &&  Actor_Query_Goal_Number(kActorOfficerGrayford) < 110
+	) {
 		Actor_Set_Goal_Number(kActorOfficerGrayford, 110);
-	} else if (Actor_Query_Goal_Number(kActorOfficerGrayford) == 0) {
+		return false;
+	}
+
+	if (Actor_Query_Goal_Number(kActorOfficerGrayford) == 0) {
 		Actor_Set_Goal_Number(kActorOfficerGrayford, 1);
-	} else 	if (Actor_Query_Goal_Number(kActorOfficerGrayford) == 10) {
+		return false;
+	}
+
+	if (Actor_Query_Goal_Number(kActorOfficerGrayford) == 10) {
 		AI_Movement_Track_Flush(kActorOfficerGrayford);
 		Actor_Set_Goal_Number(kActorOfficerGrayford, 0);
-	} else if (Actor_Query_Goal_Number(kActorOfficerGrayford) == 102) {
+		return false;
+	}
+
+	if (Actor_Query_Goal_Number(kActorOfficerGrayford) == 102) {
 		Actor_Set_Goal_Number(kActorOfficerGrayford, 103);
-	} else if (Game_Flag_Query(629)) {
+		return false;
+	}
+
+	if (Game_Flag_Query(kFlagUnpaseGenWalkers)) {
 		AI_Movement_Track_Unpause(kActorGenwalkerA);
 		AI_Movement_Track_Unpause(kActorGenwalkerB);
 		AI_Movement_Track_Unpause(kActorGenwalkerC);
-	} else if (Actor_Query_Goal_Number(kActorOfficerGrayford) == 310
-				&& Actor_Query_Which_Set_In(kActorOfficerGrayford) != Player_Query_Current_Set()) {
+		return false;
+	}
+
+	if (Actor_Query_Goal_Number(kActorOfficerGrayford) == 310
+	 && Actor_Query_Which_Set_In(kActorOfficerGrayford) != Player_Query_Current_Set()
+	) {
 		Non_Player_Actor_Combat_Mode_Off(kActorOfficerGrayford);
 		Actor_Set_Goal_Number(kActorOfficerGrayford, 305);
-	} else if (Actor_Query_Goal_Number(kActorOfficerGrayford) == 599
-				&& Actor_Query_Which_Set_In(kActorOfficerGrayford) != Player_Query_Current_Set()) {
+		return false;
+	}
+
+	if (Actor_Query_Goal_Number(kActorOfficerGrayford) == 599
+	 && Actor_Query_Which_Set_In(kActorOfficerGrayford) != Player_Query_Current_Set()
+	) {
 		Actor_Set_Health(kActorOfficerGrayford, 50, 50);
 		Actor_Set_Goal_Number(kActorOfficerGrayford, 305);
-	} else if (Actor_Query_Goal_Number(kActorOfficerGrayford) == 305) {
+		return false;
+	}
+
+	if (Actor_Query_Goal_Number(kActorOfficerGrayford) == 305) {
 		switch (Actor_Query_Which_Set_In(kActorOfficerGrayford)) {
 		case kSetRC03:
 			if (Actor_Query_Which_Set_In(kActorOfficerGrayford) == Player_Query_Current_Set()) {
@@ -164,6 +197,7 @@ bool AIScriptOfficerGrayford::Update() {
 			break;
 
 		}
+		return false;
 	}
 	return false;
 }
@@ -534,7 +568,9 @@ bool AIScriptOfficerGrayford::GoalChanged(int currentGoalNumber, int newGoalNumb
 		AI_Movement_Track_Flush(kActorOfficerGrayford);
 		AI_Countdown_Timer_Reset(kActorOfficerGrayford, 2);
 
-		if (_animationState == 35 || _animationState == 34) {
+		if (_animationState == 35
+		 || _animationState == 34
+		) {
 			_animationState = 37;
 			_animationFrame = 0;
 		}
diff --git a/engines/bladerunner/script/ai/officer_leary.cpp b/engines/bladerunner/script/ai/officer_leary.cpp
index 2aa3fec..ad94d2e 100644
--- a/engines/bladerunner/script/ai/officer_leary.cpp
+++ b/engines/bladerunner/script/ai/officer_leary.cpp
@@ -86,8 +86,8 @@ bool AIScriptOfficerLeary::Update() {
 		return false;
 	}
 
-	if (Game_Flag_Query(629)) {
-		Game_Flag_Reset(629);
+	if (Game_Flag_Query(kFlagUnpaseGenWalkers)) {
+		Game_Flag_Reset(kFlagUnpaseGenWalkers);
 		return false;
 	}
 
diff --git a/engines/bladerunner/script/ai/sadik.cpp b/engines/bladerunner/script/ai/sadik.cpp
index 109f8d0..4747d79 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(579);
-			Game_Flag_Reset(653);
+			Game_Flag_Reset(kFlagMcCoyIsNotHelpingReplicants);
 			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(653) == 1) {
+		if (Game_Flag_Query(kFlagMcCoyIsNotHelpingReplicants) == 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(653);
+		Game_Flag_Reset(kFlagMcCoyIsNotHelpingReplicants);
 		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 b07a039..2d6ce66 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(653)
+		if (Game_Flag_Query(kFlagMcCoyIsNotHelpingReplicants)
 		 && Actor_Query_Goal_Number(kActorSteele) < 400
 		) {
 			Actor_Set_Goal_Number(kActorSteele, 400);
@@ -1363,7 +1363,7 @@ bool AIScriptSteele::GoalChanged(int currentGoalNumber, int newGoalNumber) {
 		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(653) == 1) {
+		if (Game_Flag_Query(kFlagMcCoyIsNotHelpingReplicants) == 1) {
 			Actor_Says(kActorSteele, 400, 3);
 			Actor_Says(kActorMcCoy, 2165, 14);
 			Actor_Says(kActorSteele, 410, 3);
diff --git a/engines/bladerunner/script/ai/zuben.cpp b/engines/bladerunner/script/ai/zuben.cpp
index 1cc2a54..5e7ca2d 100644
--- a/engines/bladerunner/script/ai/zuben.cpp
+++ b/engines/bladerunner/script/ai/zuben.cpp
@@ -161,7 +161,7 @@ void AIScriptZuben::CompletedMovementTrack() {
 		AI_Countdown_Timer_Reset(kActorZuben, 0);
 		Game_Flag_Reset(kFlagCT02McCoyFell);
 		Game_Flag_Set(kFlagCT02McCoyCombatReady);
-		Game_Flag_Set(721); // not used anywhere
+		Game_Flag_Set(kFlagNotUsed721);
 		Music_Stop(2);
 		Actor_Set_Goal_Number(kActorZuben, kGoalZubenFled);
 		Set_Enter(kSetCT02, kSceneCT02);
@@ -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(579);
-		Game_Flag_Reset(653);
+		Game_Flag_Reset(kFlagMcCoyIsNotHelpingReplicants);
 		Set_Enter(kSetKP05_KP06, kSceneKP06);
 		// return true;
 		return;
diff --git a/engines/bladerunner/script/scene/ct12.cpp b/engines/bladerunner/script/scene/ct12.cpp
index cab008d..e7171b9 100644
--- a/engines/bladerunner/script/scene/ct12.cpp
+++ b/engines/bladerunner/script/scene/ct12.cpp
@@ -126,6 +126,7 @@ bool SceneScriptCT12::ClickedOnActor(int actorId) {
 		Actor_Says(kActorMcCoy, 8910, 16);
 	}
 
+	// cut off feature? grayford never visit CT12 as goal 308 is never triggered
 	if (actorId == kActorOfficerGrayford
 	 && Global_Variable_Query(kVariableChapter) == 4
 	 && Game_Flag_Query(kFlagUG18GuzzaScene)
@@ -147,9 +148,9 @@ bool SceneScriptCT12::ClickedOnActor(int actorId) {
 		Actor_Says(kActorOfficerGrayford, 90, kAnimationModeTalk);
 		Actor_Says(kActorOfficerGrayford, 100, kAnimationModeTalk);
 		Actor_Says(kActorOfficerGrayford, 110, kAnimationModeTalk);
-		Game_Flag_Set(629);
-		Game_Flag_Set(666);
-		Actor_Set_Goal_Number(kActorMcCoy, 400);
+		Game_Flag_Set(kFlagUnpaseGenWalkers);
+		Game_Flag_Set(kFlagMcCoyFreedOfAccusations);
+		Actor_Set_Goal_Number(kActorMcCoy, kGoalMcCoyStartChapter5);
 	}
 	return false;
 }
@@ -201,7 +202,7 @@ bool SceneScriptCT12::ClickedOnExit(int exitId) {
 	if (exitId == 4) {
 		if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -292.0f, -6.5f, 990.0f, 0, true, false, 0)) {
 			if (Global_Variable_Query(kVariableChapter) == 4) {
-				Game_Flag_Set(629);
+				Game_Flag_Set(kFlagUnpaseGenWalkers);
 			}
 			Ambient_Sounds_Remove_All_Non_Looping_Sounds(true);
 			Ambient_Sounds_Remove_All_Looping_Sounds(1);
diff --git a/engines/bladerunner/script/scene/hf01.cpp b/engines/bladerunner/script/scene/hf01.cpp
index c0e5530..d01d6d8 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(653)
+			 &&  Game_Flag_Query(kFlagMcCoyIsNotHelpingReplicants)
 			 && !Game_Flag_Query(662)
 			) {
 				Game_Flag_Set(662);
diff --git a/engines/bladerunner/script/scene/hf06.cpp b/engines/bladerunner/script/scene/hf06.cpp
index 83d96a5..19c1048 100644
--- a/engines/bladerunner/script/scene/hf06.cpp
+++ b/engines/bladerunner/script/scene/hf06.cpp
@@ -294,7 +294,7 @@ void SceneScriptHF06::sub_401EF4() {
 	Actor_Says(kActorSteele, 340, 58);
 	Actor_Says(kActorSteele, 350, 58);
 	Actor_Change_Animation_Mode(kActorSteele, kAnimationModeCombatIdle);
-	Game_Flag_Set(644);
+	Game_Flag_Set(kFlagNotUsed644);
 	Actor_Set_Goal_Number(kActorSteele, 402);
 	Actor_Face_Actor(kActorSteele, actorId, true);
 	Actor_Change_Animation_Mode(kActorSteele, kAnimationModeCombatAttack);
diff --git a/engines/bladerunner/script/scene/kp01.cpp b/engines/bladerunner/script/scene/kp01.cpp
index 273fa58..e0f2dbd 100644
--- a/engines/bladerunner/script/scene/kp01.cpp
+++ b/engines/bladerunner/script/scene/kp01.cpp
@@ -32,7 +32,7 @@ void SceneScriptKP01::InitializeScene() {
 	} else {
 		Setup_Scene_Information(239.0f, -12.2f, -146.0f, 820);
 		Game_Flag_Reset(413);
-		if (!Game_Flag_Query(674) && !Game_Flag_Query(653)) {
+		if (!Game_Flag_Query(674) && !Game_Flag_Query(kFlagMcCoyIsNotHelpingReplicants)) {
 			Game_Flag_Set(674);
 			Actor_Set_Goal_Number(kActorSteele, 420);
 		}
@@ -152,7 +152,7 @@ void SceneScriptKP01::PlayerWalkedIn() {
 		Game_Flag_Reset(418);
 	} else {
 		Loop_Actor_Walk_To_XYZ(kActorMcCoy, 211.0f, -12.2f, -146.0f, 0, 0, false, 0);
-		if (!Game_Flag_Query(653)
+		if (!Game_Flag_Query(kFlagMcCoyIsNotHelpingReplicants)
 			&& !Game_Flag_Query(714)
 			&& Actor_Query_Goal_Number(kActorSteele) == 420
 			&& Actor_Query_Goal_Number(kActorSteele) != 599) {
diff --git a/engines/bladerunner/script/scene/kp02.cpp b/engines/bladerunner/script/scene/kp02.cpp
index 3db4056..a19f0e8 100644
--- a/engines/bladerunner/script/scene/kp02.cpp
+++ b/engines/bladerunner/script/scene/kp02.cpp
@@ -132,7 +132,7 @@ void SceneScriptKP02::PlayerWalkedIn() {
 		Loop_Actor_Walk_To_XYZ(kActorMcCoy, -884.0f, -615.49f, 3035.0f, 0, 0, false, 0);
 		Game_Flag_Reset(414);
 	}
-	if (Game_Flag_Query(653)
+	if (Game_Flag_Query(kFlagMcCoyIsNotHelpingReplicants)
 	 && 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 ca4e665..fca41a0 100644
--- a/engines/bladerunner/script/scene/kp03.cpp
+++ b/engines/bladerunner/script/scene/kp03.cpp
@@ -52,10 +52,10 @@ void SceneScriptKP03::InitializeScene() {
 	  && !Game_Flag_Query(422)
 	  && !Game_Flag_Query(484)
 	 )
-	 && ((Game_Flag_Query(653)
+	 && ((Game_Flag_Query(kFlagMcCoyIsNotHelpingReplicants)
 	   && Game_Flag_Query(420)
 	  )
-	  || (!Game_Flag_Query(653)
+	  || (!Game_Flag_Query(kFlagMcCoyIsNotHelpingReplicants)
 	   &&  Game_Flag_Query(417)
 	  )
 	 )
@@ -183,7 +183,7 @@ void SceneScriptKP03::SceneFrameAdvanced(int frame) {
 		}
 		if (!Game_Flag_Query(422)) { //todo ? same condition as before
 			Actor_Query_XYZ(kActorSteele, &x, &y, &z);
-			if (Game_Flag_Query(653) && Actor_Query_Which_Set_In(kActorSteele) == 46) {
+			if (Game_Flag_Query(kFlagMcCoyIsNotHelpingReplicants) && Actor_Query_Which_Set_In(kActorSteele) == 46) {
 				if ((Game_Flag_Query(417) && -130.0f > x) || (Game_Flag_Query(420) && -130.0f < x)) {
 					v1 = 1;
 				}
@@ -224,7 +224,7 @@ void SceneScriptKP03::PlayerWalkedIn() {
 		Loop_Actor_Walk_To_XYZ(kActorMcCoy, 1.0f, -36.55f, 87.0f, 0, 0, false, 0);
 	}
 	if (Actor_Query_Is_In_Current_Set(kActorSteele) && Actor_Query_Goal_Number(kActorSteele) != 419) {
-		if (Game_Flag_Query(653)) {
+		if (Game_Flag_Query(kFlagMcCoyIsNotHelpingReplicants)) {
 			if (Game_Flag_Query(420)) {
 				Actor_Set_Goal_Number(kActorSteele, 410);
 			}
diff --git a/engines/bladerunner/script/scene/kp05.cpp b/engines/bladerunner/script/scene/kp05.cpp
index c46b739..d272606 100644
--- a/engines/bladerunner/script/scene/kp05.cpp
+++ b/engines/bladerunner/script/scene/kp05.cpp
@@ -53,7 +53,7 @@ void SceneScriptKP05::SceneLoaded() {
 	Unobstacle_Object("OBSTACLEBOX20", true);
 	Clickable_Object("BRIDGE02");
 	Unclickable_Object("BRIDGE02");
-	if (!Actor_Clue_Query(kActorMcCoy, kCluePowerSource) && Game_Flag_Query(653)) {
+	if (!Actor_Clue_Query(kActorMcCoy, kCluePowerSource) && Game_Flag_Query(kFlagMcCoyIsNotHelpingReplicants)) {
 		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 ad0bb99..e1a1e56 100644
--- a/engines/bladerunner/script/scene/kp06.cpp
+++ b/engines/bladerunner/script/scene/kp06.cpp
@@ -108,7 +108,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(653)) {
+				if (Game_Flag_Query(kFlagMcCoyIsNotHelpingReplicants)) {
 					if (!Game_Flag_Query(714)) {
 						Player_Set_Combat_Mode(false);
 					}
@@ -151,7 +151,7 @@ void SceneScriptKP06::ActorChangedGoal(int actorId, int newGoal, int oldGoal, bo
 }
 
 void SceneScriptKP06::PlayerWalkedIn() {
-	if (!Game_Flag_Query(653) && Game_Flag_Query(579)) {
+	if (!Game_Flag_Query(kFlagMcCoyIsNotHelpingReplicants) && Game_Flag_Query(579)) {
 		Game_Flag_Reset(579);
 		if (Actor_Query_Goal_Number(kActorSteele) == 499) {
 			Actor_Face_Actor(kActorSteele, kActorMcCoy, true);
diff --git a/engines/bladerunner/script/scene/kp07.cpp b/engines/bladerunner/script/scene/kp07.cpp
index d6d1a88..a4ed0ce 100644
--- a/engines/bladerunner/script/scene/kp07.cpp
+++ b/engines/bladerunner/script/scene/kp07.cpp
@@ -28,7 +28,7 @@ void SceneScriptKP07::InitializeScene() {
 	Setup_Scene_Information(-12.0f, -41.58f, 72.0f, 0);
 	Game_Flag_Reset(578);
 	Scene_Exit_Add_2D_Exit(0, 315, 185, 381, 285, 0);
-	if (Game_Flag_Query(653)) {
+	if (Game_Flag_Query(kFlagMcCoyIsNotHelpingReplicants)) {
 		if (Game_Flag_Query(kFlagDektoraIsReplicant)
 		 && Actor_Query_Goal_Number(kActorDektora) < kGoalDektoraGone
 		) {
@@ -88,12 +88,12 @@ void SceneScriptKP07::InitializeScene() {
 }
 
 void SceneScriptKP07::SceneLoaded() {
-	if (!Game_Flag_Query(653)) {
+	if (!Game_Flag_Query(kFlagMcCoyIsNotHelpingReplicants)) {
 		Music_Play(19, 25, 0, 0, -1, 1, 0);
 	}
 	Obstacle_Object("BUNK_TRAY01", true);
 	Unobstacle_Object("BUNK_TRAY01", true);
-	if (Game_Flag_Query(653)) {
+	if (Game_Flag_Query(kFlagMcCoyIsNotHelpingReplicants)) {
 		Player_Set_Combat_Mode(false);
 		Scene_Exits_Disable();
 	}
@@ -112,7 +112,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(653)) {
+		if (Game_Flag_Query(kFlagMcCoyIsNotHelpingReplicants)) {
 			Actor_Set_Goal_Number(kActorClovis, 516);
 		} else {
 			Music_Play(20, 31, 0, 0, -1, 1, 0);
@@ -155,7 +155,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(653)) {
+		if (Game_Flag_Query(kFlagMcCoyIsNotHelpingReplicants)) {
 			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 74eaedb..29a14a9 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(653)
+	 && Game_Flag_Query(kFlagMcCoyIsNotHelpingReplicants)
 	) {
 		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(653)
+	 &&  Game_Flag_Query(kFlagMcCoyIsNotHelpingReplicants)
 	 && !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(653) && !Actor_Clue_Query(kActorMcCoy, kClueCrystalsCigarette)) {
+			} else if (Global_Variable_Query(kVariableChapter) == 5 && Game_Flag_Query(kFlagMcCoyIsNotHelpingReplicants) && !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(653)) {
+		if (Game_Flag_Query(kFlagMcCoyIsNotHelpingReplicants)) {
 			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 c3c26f6..d750d88 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(653)) {
+				if (Game_Flag_Query(kFlagMcCoyIsNotHelpingReplicants)) {
 					if (Global_Variable_Query(kVariableAffectionTowards) == kAffectionTowardsDektora) {
 						phoneCallWithDektora();
 					} else if (Global_Variable_Query(kVariableAffectionTowards) == kAffectionTowardsLucy) {
diff --git a/engines/bladerunner/script/scene/ma07.cpp b/engines/bladerunner/script/scene/ma07.cpp
index f943f46..2b5c0f4 100644
--- a/engines/bladerunner/script/scene/ma07.cpp
+++ b/engines/bladerunner/script/scene/ma07.cpp
@@ -78,7 +78,7 @@ bool SceneScriptMA07::ClickedOnExit(int exitId) {
 			if (Global_Variable_Query(kVariableChapter) == 4
 			 && Game_Flag_Query(kFlagUG18GuzzaScene)
 			) {
-				Actor_Set_Goal_Number(kActorMcCoy, 400);
+				Actor_Set_Goal_Number(kActorMcCoy, kGoalMcCoyStartChapter5);
 			} else {
 				Ambient_Sounds_Remove_All_Non_Looping_Sounds(true);
 				Ambient_Sounds_Remove_All_Looping_Sounds(1);
@@ -148,14 +148,14 @@ void SceneScriptMA07::PlayerWalkedIn() {
 		Actor_Set_Goal_Number(kActorGaff, 300);
 	}
 
-	if (Game_Flag_Query(666)) {
+	if (Game_Flag_Query(kFlagMcCoyFreedOfAccusations)) {
 		Actor_Voice_Over(1360, kActorVoiceOver);
 		Actor_Voice_Over(1370, kActorVoiceOver);
 		Actor_Voice_Over(1380, kActorVoiceOver);
 		Actor_Voice_Over(1390, kActorVoiceOver);
 		Actor_Voice_Over(1400, kActorVoiceOver);
 		Delay(1000);
-		Game_Flag_Reset(666);
+		Game_Flag_Reset(kFlagMcCoyFreedOfAccusations);
 		Game_Flag_Set(kFlagMA06ToMA02);
 		Set_Enter(kSetMA02_MA04, kSceneMA02);
 	}
diff --git a/engines/bladerunner/script/scene/ps14.cpp b/engines/bladerunner/script/scene/ps14.cpp
index 392776a..4bbfa3a 100644
--- a/engines/bladerunner/script/scene/ps14.cpp
+++ b/engines/bladerunner/script/scene/ps14.cpp
@@ -77,8 +77,8 @@ bool SceneScriptPS14::ClickedOnExit(int exitId) {
 			 && Game_Flag_Query(kFlagUG18GuzzaScene)
 			) {
 				if (Actor_Clue_Query(kActorMcCoy, kClueBriefcase)) {
-					Game_Flag_Set(666);
-					Actor_Set_Goal_Number(kActorMcCoy, 400);
+					Game_Flag_Set(kFlagMcCoyFreedOfAccusations);
+					Actor_Set_Goal_Number(kActorMcCoy, kGoalMcCoyStartChapter5);
 				} else {
 					Actor_Set_Goal_Number(kActorMcCoy, kGoalMcCoyArrested);
 				}
diff --git a/engines/bladerunner/script/scene/ug07.cpp b/engines/bladerunner/script/scene/ug07.cpp
index 795ab2f..7683437 100644
--- a/engines/bladerunner/script/scene/ug07.cpp
+++ b/engines/bladerunner/script/scene/ug07.cpp
@@ -119,33 +119,33 @@ bool SceneScriptUG07::ClickedOnExit(int exitId) {
 		if (!Game_Flag_Query(kFlagMcCoyRetiredHuman)
 		 &&  Game_Flag_Query(kFlagUG18GuzzaScene)
 		 &&  Global_Variable_Query(kVariableChapter) == 4
-		 && !Game_Flag_Query(598)
+		 && !Game_Flag_Query(kFlagUG07ClovisCaughtMcCoy)
 		) {
 			if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, 49.0f, -12.21f, -130.0f, 0, true, false, 0)) {
-				Game_Flag_Set(598);
+				Game_Flag_Set(kFlagUG07ClovisCaughtMcCoy);
 				Actor_Put_In_Set(kActorClovis, kSetUG07);
 				Actor_Set_At_XYZ(kActorClovis, 118.02f, -12.21f, -154.0f, 768);
 				Player_Set_Combat_Mode(true);
 				Actor_Face_Actor(kActorMcCoy, kActorClovis, true);
 				Loop_Actor_Walk_To_XYZ(kActorClovis, 98.02f, -12.21f, -154.0f, 0, false, false, 0);
 				Actor_Face_Actor(kActorClovis, kActorMcCoy, true);
-				Actor_Set_Goal_Number(kActorMcCoy, 301);
+				Actor_Set_Goal_Number(kActorMcCoy, kGoalMcCoyUG07Caught);
 				Actor_Face_Heading(kActorMcCoy, 0, true);
 				Delay(1500);
 				Actor_Says_With_Pause(kActorClovis, 550, 1.0f, 3);
 				if (Actor_Clue_Query(kActorClovis, kClueMcCoyRetiredDektora)) {
 					Actor_Says(kActorClovis, 560, 3);
-					Actor_Set_Goal_Number(kActorMcCoy, 302);
+					Actor_Set_Goal_Number(kActorMcCoy, kGoalMcCoyUG07BrokenFinger);
 					Sound_Play(561, 100, 0, 0, 50);
 					Delay(2000);
 				}
 				if (Actor_Clue_Query(kActorClovis, kClueMcCoyRetiredLucy)) {
 					Actor_Says(kActorClovis, 570, 3);
-					Actor_Set_Goal_Number(kActorMcCoy, 302);
+					Actor_Set_Goal_Number(kActorMcCoy, kGoalMcCoyUG07BrokenFinger);
 					Sound_Play(561, 100, 0, 0, 50);
 					Delay(2000);
 				}
-				Actor_Set_Goal_Number(kActorMcCoy, 303);
+				Actor_Set_Goal_Number(kActorMcCoy, kGoalMcCoyUG07Released);
 				Delay(1000);
 				Actor_Set_Goal_Number(kActorClovis, 401);
 			}
diff --git a/engines/bladerunner/script/scene/ug12.cpp b/engines/bladerunner/script/scene/ug12.cpp
index f30f56c..58d2e8e 100644
--- a/engines/bladerunner/script/scene/ug12.cpp
+++ b/engines/bladerunner/script/scene/ug12.cpp
@@ -34,7 +34,7 @@ void SceneScriptUG12::InitializeScene() {
 	}
 
 	Scene_Exit_Add_2D_Exit(0, 538, 222, 615, 346, 1);
-	if (Game_Flag_Query(373)) {
+	if (Game_Flag_Query(kFlagKP02Available)) {
 		Scene_Exit_Add_2D_Exit(1, 334, 176, 426, 266, 0);
 	}
 
@@ -53,7 +53,7 @@ void SceneScriptUG12::InitializeScene() {
 	Ambient_Sounds_Add_Sound(304, 5,  50, 17, 37, -100, 100, -101, -101, 0, 0);
 	Ambient_Sounds_Add_Sound(305, 5,  50, 17, 37, -100, 100, -101, -101, 0, 0);
 
-	if (Game_Flag_Query(373)) {
+	if (Game_Flag_Query(kFlagKP02Available)) {
 		Scene_Loop_Set_Default(2);
 	} else {
 		Scene_Loop_Set_Default(0);
diff --git a/engines/bladerunner/script/scene/ug13.cpp b/engines/bladerunner/script/scene/ug13.cpp
index da212b7..63eb767 100644
--- a/engines/bladerunner/script/scene/ug13.cpp
+++ b/engines/bladerunner/script/scene/ug13.cpp
@@ -102,7 +102,7 @@ bool SceneScriptUG13::ClickedOn3DObject(const char *objectName, bool a2) {
 				Scene_Loop_Set_Default(1);
 				Scene_Loop_Start_Special(kSceneLoopModeOnce, 0, false);
 				Game_Flag_Reset(kFlagUB08ElevatorUp);
-				Game_Flag_Set(436);
+				Game_Flag_Set(kFlagUG13CallElevator);
 				return true;
 			} else {
 				Scene_Loop_Set_Default(4);
@@ -125,9 +125,9 @@ bool SceneScriptUG13::ClickedOnActor(int actorId) {
 			if (Actor_Query_Goal_Number(kActorTransient) != 6
 			 && Actor_Query_Goal_Number(kActorTransient) != 599
 			) {
-				if (!Game_Flag_Query(554)) {
+				if (!Game_Flag_Query(kFlagUG13HomelessTalk1)) {
 					Actor_Face_Actor(kActorMcCoy, kActorTransient, true);
-					Game_Flag_Set(554);
+					Game_Flag_Set(kFlagUG13HomelessTalk1);
 					Actor_Says(kActorMcCoy, 5560, 13);
 					Actor_Says_With_Pause(kActorMcCoy, 5565, 3.0f, 18);
 					Actor_Says(kActorTransient, 70, 31);
@@ -204,17 +204,16 @@ bool SceneScriptUG13::ClickedOnExit(int exitId) {
 			Footstep_Sound_Override_On(3);
 			Loop_Actor_Travel_Stairs(kActorMcCoy, 11, true, kAnimationModeIdle);
 			Footstep_Sound_Override_Off();
-			if (!sub_402AD0()) {
-				Loop_Actor_Walk_To_XYZ(kActorMcCoy, -477.0f, 141.9f, -870.0f, 0, false, false, 0);
-				Game_Flag_Set(kFlagUG13toUG18);
-				Set_Enter(kSetUG18, kSceneUG18);
-				return true;
-			}
-			Actor_Face_Heading(kActorMcCoy, 325, false);
-			Loop_Actor_Travel_Stairs(kActorMcCoy, 11, true, kAnimationModeIdle);
-		} else {
-			return true;
+			// This is path in unreachable in the orginal game
+			// if (false) {
+			// 	Actor_Face_Heading(kActorMcCoy, 325, false);
+			// 	Loop_Actor_Travel_Stairs(kActorMcCoy, 11, true, kAnimationModeIdle);
+			// }
+			Loop_Actor_Walk_To_XYZ(kActorMcCoy, -477.0f, 141.9f, -870.0f, 0, false, false, 0);
+			Game_Flag_Set(kFlagUG13toUG18);
+			Set_Enter(kSetUG18, kSceneUG18);
 		}
+		return true;
 	}
 
 	return false;
@@ -229,12 +228,12 @@ void SceneScriptUG13::SceneFrameAdvanced(int frame) {
 		Ambient_Sounds_Play_Sound(372, 90, 0, 0, 100);
 	}
 
-	if (Game_Flag_Query(436)
+	if (Game_Flag_Query(kFlagUG13CallElevator)
 	 && frame > 29
 	 && frame < 91
 	) {
 		Scene_Exit_Add_2D_Exit(0, 394, 205, 464, 281, 0);
-		Game_Flag_Reset(436);
+		Game_Flag_Reset(kFlagUG13CallElevator);
 		//return true;
 		return;
 	}
@@ -307,27 +306,7 @@ void SceneScriptUG13::PlayerWalkedOut() {
 void SceneScriptUG13::DialogueQueueFlushed(int a1) {
 }
 
-void SceneScriptUG13::sub_4023D8() {
-	Actor_Face_Actor(kActorMcCoy, kActorTransient, true);
-	Actor_Clue_Acquire(kActorMcCoy, kClueHomelessManInterview1, false, kActorTransient);
-	Actor_Modify_Friendliness_To_Other(kActorTransient, kActorMcCoy, -5);
-	Actor_Says(kActorMcCoy, 5575, 16);
-	Actor_Says(kActorTransient, 120, 31);
-	Actor_Says(kActorMcCoy, 5610, 15);
-	Actor_Says(kActorTransient, 140, 32);
-	Actor_Says(kActorMcCoy, 5615, 18);
-	Actor_Says(kActorTransient, 160, 33);
-	Actor_Says(kActorMcCoy, 5620, 9);
-	Actor_Says(kActorTransient, 170, 30);
-	Actor_Says(kActorMcCoy, 5625, 12);
-	Actor_Says(kActorTransient, 180, 32);
-	Actor_Says(kActorMcCoy, 5630, 18);
-	Actor_Says(kActorTransient, 190, 32);
-	Actor_Says(kActorMcCoy, 5635, 15);
-	Actor_Says(kActorTransient, 200, 31);
-}
-
-void SceneScriptUG13::sub_4025E0() {
+void SceneScriptUG13::talkAboutGuzza() {
 	Actor_Clue_Acquire(kActorMcCoy, kClueHomelessManInterview2, false, kActorTransient);
 	Actor_Modify_Friendliness_To_Other(kActorTransient, kActorMcCoy, -10);
 	Actor_Says(kActorTransient, 220, 30);
@@ -340,10 +319,6 @@ void SceneScriptUG13::sub_4025E0() {
 	Actor_Says(kActorTransient, 260, 32);
 }
 
-int SceneScriptUG13::sub_402AD0() {
-	return 0;
-}
-
 void SceneScriptUG13::dialogueWithHomeless1() {
 	Dialogue_Menu_Clear_List();
 	DM_Add_To_List_Never_Repeat_Once_Selected(1320, 6, 3, 1); // OTHERS
@@ -362,12 +337,28 @@ void SceneScriptUG13::dialogueWithHomeless1() {
 
 	switch (answer) {
 	case 1320: // OTHERS
-		sub_4023D8();
+		Actor_Face_Actor(kActorMcCoy, kActorTransient, true);
+		Actor_Clue_Acquire(kActorMcCoy, kClueHomelessManInterview1, false, kActorTransient);
+		Actor_Modify_Friendliness_To_Other(kActorTransient, kActorMcCoy, -5);
+		Actor_Says(kActorMcCoy, 5575, 16);
+		Actor_Says(kActorTransient, 120, 31);
+		Actor_Says(kActorMcCoy, 5610, 15);
+		Actor_Says(kActorTransient, 140, 32);
+		Actor_Says(kActorMcCoy, 5615, 18);
+		Actor_Says(kActorTransient, 160, 33);
+		Actor_Says(kActorMcCoy, 5620, 9);
+		Actor_Says(kActorTransient, 170, 30);
+		Actor_Says(kActorMcCoy, 5625, 12);
+		Actor_Says(kActorTransient, 180, 32);
+		Actor_Says(kActorMcCoy, 5630, 18);
+		Actor_Says(kActorTransient, 190, 32);
+		Actor_Says(kActorMcCoy, 5635, 15);
+		Actor_Says(kActorTransient, 200, 31);
 		break;
 
 	case 1330: // FAT MAN
 		Actor_Says(kActorMcCoy, 5585, 16);
-		sub_4025E0();
+		talkAboutGuzza();
 		break;
 
 	case 1340: // SEWERS
@@ -413,7 +404,8 @@ void SceneScriptUG13::dialogueWithHomeless2() {
 	int answer = Dialogue_Menu_Query_Input();
 	Dialogue_Menu_Disappear();
 
-	if (answer == 1370) { // DIRECTIONS
+	switch (answer) {
+	case 1370: // DIRECTIONS
 		Actor_Says(kActorMcCoy, 5665, 16);
 		Actor_Says(kActorTransient, 300, 32);
 		Actor_Says(kActorMcCoy, 5680, 19);
@@ -422,7 +414,9 @@ void SceneScriptUG13::dialogueWithHomeless2() {
 		Actor_Start_Speech_Sample(kActorTransient, 110);
 		Actor_Set_Goal_Number(kActorTransient, 395);
 		Actor_Says(kActorMcCoy, 5685, 18);
-	} else if (answer == 1380) { // FAT MAN
+		break;
+
+	case 1380: // FAT MAN
 		if (Actor_Clue_Query(kActorMcCoy, kClueHomelessManInterview2)) {
 			Actor_Says(kActorMcCoy, 5670, 9);
 			Actor_Says(kActorTransient, 340, 31);
@@ -435,12 +429,15 @@ void SceneScriptUG13::dialogueWithHomeless2() {
 			Actor_Clue_Acquire(kActorMcCoy, kClueHomelessManKid, false, kActorTransient);
 		} else {
 			Actor_Says(kActorMcCoy, 5700, 15);
-			sub_4025E0();
+			talkAboutGuzza();
 		}
-	} else if (answer == 1390) { // REPLICANTS
+		break;
+
+	case 1390: // REPLICANTS
 		Actor_Says(kActorMcCoy, 5675, 9);
 		Actor_Says(kActorTransient, 370, 32);
 		Actor_Says(kActorMcCoy, 5705, 10);
+		break;
 	}
 }
 
diff --git a/engines/bladerunner/script/scene_script.h b/engines/bladerunner/script/scene_script.h
index ca6f416..1212371 100644
--- a/engines/bladerunner/script/scene_script.h
+++ b/engines/bladerunner/script/scene_script.h
@@ -483,9 +483,7 @@ DECLARE_SCRIPT(UG12)
 END_SCRIPT
 
 DECLARE_SCRIPT(UG13)
-	void sub_4023D8();
-	void sub_4025E0();
-	int sub_402AD0();
+	void talkAboutGuzza();
 	void dialogueWithHomeless1();
 	void dialogueWithHomeless2();
 END_SCRIPT


Commit: 95f42fde63ad09a6684ce62659273228f0b83e46
    https://github.com/scummvm/scummvm/commit/95f42fde63ad09a6684ce62659273228f0b83e46
Author: Peter Kohaut (peter.kohaut at gmail.com)
Date: 2019-02-03T00:14:09+01:00

Commit Message:
BLADERUNNER: Initial cleanup of Kipple 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/sadik.cpp
    engines/bladerunner/script/ai/steele.cpp
    engines/bladerunner/script/ai/zuben.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


diff --git a/engines/bladerunner/game_constants.h b/engines/bladerunner/game_constants.h
index 70afd44..217c594 100644
--- a/engines/bladerunner/game_constants.h
+++ b/engines/bladerunner/game_constants.h
@@ -851,6 +851,14 @@ enum Flags {
 	kFlagBB06AndroidDestroyed = 410,
 	kFlagKP02toUG12 = 411,
 	kFlagUG12toKP02 = 412, // is never checked
+	kFlagKP02toKP01 = 413, // is never checked
+	kFlagKP01toKP02 = 414,
+	kFlagKP01toKP04 = 415, // is never checked
+	kFlagKP04toKP01 = 416,
+	kFlagKP01toKP03 = 417,
+	kFlagKP03toKP01 = 418,
+	kFlagKP03toKP05 = 419,
+	kFlagKP05toKP03 = 420,
 
 	kFlagUG07toUG10 = 423,
 	kFlagUG10toUG07 = 424, // is never checked
@@ -1002,6 +1010,12 @@ enum Flags {
 	// 571 is never used
 	// 572 is never used
 	kFlagNR03Entered = 573,
+	kFlagKP04toKP05 = 574,
+	kFlagKP05toKP04 = 575,
+	kFlagKP05toKP06 = 576,
+	kFlagKP06toKP05 = 577, // has no use
+	kFlagKP06toKP07 = 578,
+	kFlagKP07toKP06 = 579,
 	// 580 is never used
 	// 581 is never used
 	// 583 is never used
@@ -1092,7 +1106,7 @@ enum Flags {
 	kFlagUG18GuzzaScene = 671,
 	kFlagMA07toPS14 = 672,
 	kFlagPS14toMA07 = 673,
-
+	kFlagKP01Entered = 674,
 	// 675 is never used
 	kFlagUG15RatShot = 676,
 	kFlagUG15BridgeWillBreak = 677,
@@ -1317,11 +1331,11 @@ enum Scenes {
 	kSceneHF05 = 38, // Hysteria Hall - Crazy Legs Larry Autos - Inside
 	kSceneHF06 = 39, // Hysteria Hall - Crazy Legs Larry Autos - Root
 	kSceneHF07 = 40, // Hysteria Hall - Crazy Legs Larry Autos - Underground
-	kSceneKP01 = 41,
-	kSceneKP02 = 42,
-	kSceneKP03 = 43,
+	kSceneKP01 = 41, // Kipple - Rubble
+	kSceneKP02 = 42, // Kipple - Entry / Gate
+	kSceneKP03 = 43, // Kipple - Bomb
 	kSceneKP04 = 44,
-	kSceneKP05 = 45,
+	kSceneKP05 = 45, // Kipple - Moonbus - Far
 	kSceneKP06 = 46,
 	kSceneKP07 = 47, // Kipple - Moonbus - Inside
 	kSceneMA01 = 48, // McCoy's Apartment - Roof
@@ -1798,6 +1812,10 @@ enum GoalSteele {
 	kGoalSteeleImmediatelyStartChapter4 = 285,
 	kGoalSteeleNR01StartChapter4 = 290,
 	kGoalSteeleHF01StartChapter4 = 291,
+	// chapter 5
+	kGoalSteeleKP01Wait = 420,
+	kGoalSteeleKP01TalkToMcCoy = 421,
+	kGoalSteeleKP01Leave = 422,
 
 	kGoalSteeleGone = 599
 };
diff --git a/engines/bladerunner/script/ai/clovis.cpp b/engines/bladerunner/script/ai/clovis.cpp
index a2d8cf3..a8f0cf2 100644
--- a/engines/bladerunner/script/ai/clovis.cpp
+++ b/engines/bladerunner/script/ai/clovis.cpp
@@ -194,7 +194,7 @@ void AIScriptClovis::Retired(int byActorId) {
 				Loop_Actor_Walk_To_XYZ(kActorMcCoy, -12.0f, -41.58f, 72.0f, 0, true, false, 0);
 				Ambient_Sounds_Remove_All_Non_Looping_Sounds(true);
 				Ambient_Sounds_Remove_All_Looping_Sounds(1);
-				Game_Flag_Set(579);
+				Game_Flag_Set(kFlagKP07toKP06);
 				Game_Flag_Reset(kFlagMcCoyIsNotHelpingReplicants);
 				Set_Enter(kSetKP05_KP06, kSceneKP06);
 			}
diff --git a/engines/bladerunner/script/ai/dektora.cpp b/engines/bladerunner/script/ai/dektora.cpp
index 3f58af3..8054bc8 100644
--- a/engines/bladerunner/script/ai/dektora.cpp
+++ b/engines/bladerunner/script/ai/dektora.cpp
@@ -304,7 +304,7 @@ void AIScriptDektora::Retired(int byActorId) {
 			Loop_Actor_Walk_To_XYZ(kActorMcCoy, -12.0f, -41.58f, 72.0f, 0, true, false, 0);
 			Ambient_Sounds_Remove_All_Non_Looping_Sounds(true);
 			Ambient_Sounds_Remove_All_Looping_Sounds(1);
-			Game_Flag_Set(579);
+			Game_Flag_Set(kFlagKP07toKP06);
 			Game_Flag_Reset(kFlagMcCoyIsNotHelpingReplicants);
 			Set_Enter(kSetKP05_KP06, kSceneKP06);
 
diff --git a/engines/bladerunner/script/ai/gordo.cpp b/engines/bladerunner/script/ai/gordo.cpp
index 0aab3d2..1765657 100644
--- a/engines/bladerunner/script/ai/gordo.cpp
+++ b/engines/bladerunner/script/ai/gordo.cpp
@@ -298,7 +298,7 @@ void AIScriptGordo::Retired(int byActorId) {
 			Loop_Actor_Walk_To_XYZ(kActorMcCoy, -12.0f, -41.58f, 72.0f, 0, true, false, 0);
 			Ambient_Sounds_Remove_All_Non_Looping_Sounds(true);
 			Ambient_Sounds_Remove_All_Looping_Sounds(1);
-			Game_Flag_Set(579);
+			Game_Flag_Set(kFlagKP07toKP06);
 			Game_Flag_Reset(kFlagMcCoyIsNotHelpingReplicants);
 			Set_Enter(kSetKP05_KP06, kSceneKP06);
 			return;// true;
diff --git a/engines/bladerunner/script/ai/izo.cpp b/engines/bladerunner/script/ai/izo.cpp
index 2717db6..ede8b68 100644
--- a/engines/bladerunner/script/ai/izo.cpp
+++ b/engines/bladerunner/script/ai/izo.cpp
@@ -248,7 +248,7 @@ void AIScriptIzo::Retired(int byActorId) {
 		Loop_Actor_Walk_To_XYZ(kActorMcCoy, -12.0f, -41.58f, 72.0f, 0, true, false, 0);
 		Ambient_Sounds_Remove_All_Non_Looping_Sounds(true);
 		Ambient_Sounds_Remove_All_Looping_Sounds(1);
-		Game_Flag_Set(579);
+		Game_Flag_Set(kFlagKP07toKP06);
 		Game_Flag_Reset(kFlagMcCoyIsNotHelpingReplicants);
 		Set_Enter(kSetKP05_KP06, kSceneKP06);
 		return; //true;
diff --git a/engines/bladerunner/script/ai/maggie.cpp b/engines/bladerunner/script/ai/maggie.cpp
index 5b045d5..a1661ea 100644
--- a/engines/bladerunner/script/ai/maggie.cpp
+++ b/engines/bladerunner/script/ai/maggie.cpp
@@ -68,15 +68,22 @@ void AIScriptMaggie::Initialize() {
 
 bool AIScriptMaggie::Update() {
 	int goal = Actor_Query_Goal_Number(kActorMaggie);
-	if (Actor_Query_Which_Set_In(kActorMaggie) == kSetMA02_MA04 && Global_Variable_Query(kVariableChapter) == 4) {
+
+	if (Actor_Query_Which_Set_In(kActorMaggie) == kSetMA02_MA04
+	 && Global_Variable_Query(kVariableChapter) == 4
+	) {
 		Actor_Put_In_Set(kActorMaggie, kSetFreeSlotG);
 		Actor_Set_At_Waypoint(kActorMaggie, 39, 0);
 	}
+
 	if (goal == 414) {
 		Actor_Set_Goal_Number(kActorMaggie, 415);
-	} else if (goal == 413 && Actor_Query_Inch_Distance_From_Actor(kActorMcCoy, kActorMaggie) < 60) {
+	} else if (goal == 413
+	        && Actor_Query_Inch_Distance_From_Actor(kActorMcCoy, kActorMaggie) < 60
+	) {
 		Actor_Set_Goal_Number(kActorMaggie, 415);
 	}
+
 	if (Global_Variable_Query(kVariableChapter) == 5) {
 		if (Actor_Query_Goal_Number(kActorMaggie) < 400) {
 			Actor_Set_Goal_Number(kActorMaggie, 400);
@@ -142,7 +149,9 @@ void AIScriptMaggie::ReceivedClue(int clueId, int fromActorId) {
 }
 
 void AIScriptMaggie::ClickedByPlayer() {
-	if (!Game_Flag_Query(kFlagMcCoyIsNotHelpingReplicants) && Global_Variable_Query(kVariableChapter) == 5) {
+	if (!Game_Flag_Query(kFlagMcCoyIsNotHelpingReplicants)
+	 &&  Global_Variable_Query(kVariableChapter) == 5
+	) {
 		if (Actor_Query_Goal_Number(kActorMaggie) == 413) {
 			Actor_Set_Targetable(kActorMaggie, true);
 			AI_Movement_Track_Flush(kActorMaggie);
@@ -151,6 +160,7 @@ void AIScriptMaggie::ClickedByPlayer() {
 		}
 		return; // true
 	}
+
 	if (_animationState == kMaggieStateDead) {
 		return; // false
 	}
@@ -187,14 +197,17 @@ void AIScriptMaggie::ClickedByPlayer() {
 		AI_Countdown_Timer_Start(kActorMaggie, 0, Random_Query(3, 9));
 		return; // true
 	}
+
 	if (goal == 10) {
 		Actor_Change_Animation_Mode(kActorMaggie, kAnimationModeIdle);
 		return; // true
 	}
+
 	if (goal == 11) {
 		Actor_Change_Animation_Mode(kActorMaggie, 54);
 		return; // true
 	}
+
 	Actor_Set_Goal_Number(kActorMaggie, 8);
 	return; // true
 }
@@ -206,7 +219,10 @@ void AIScriptMaggie::OtherAgentEnteredThisScene(int otherActorId) {
 }
 
 void AIScriptMaggie::OtherAgentExitedThisScene(int otherActorId) {
-	if (otherActorId == kActorMcCoy && Actor_Query_Which_Set_In(kActorMaggie) == kSetMA02_MA04 && Global_Variable_Query(kVariableChapter) < 4) {
+	if (otherActorId == kActorMcCoy
+	 && Actor_Query_Which_Set_In(kActorMaggie) == kSetMA02_MA04
+	 && Global_Variable_Query(kVariableChapter) < 4
+	) {
 		AI_Movement_Track_Flush(kActorMaggie);
 		Actor_Set_Goal_Number(kActorMaggie, 0);
 	}
@@ -236,6 +252,7 @@ bool AIScriptMaggie::GoalChanged(int currentGoalNumber, int newGoalNumber) {
 	if (currentGoalNumber == 599) {
 		return true;
 	}
+
 	switch (newGoalNumber) {
 	case 11:
 		Actor_Change_Animation_Mode(kActorMaggie, 55);
@@ -335,7 +352,7 @@ bool AIScriptMaggie::GoalChanged(int currentGoalNumber, int newGoalNumber) {
 		Actor_Face_Actor(kActorMaggie, kActorMcCoy, true);
 		Actor_Change_Animation_Mode(kActorMaggie, 56);
 		Actor_Face_Actor(kActorMcCoy, kActorMaggie, true);
-		Actor_Says(kActorMcCoy, 2225, 3);
+		Actor_Says(kActorMcCoy, 2225, kAnimationModeTalk);
 		Actor_Set_Goal_Number(kActorMaggie, 413);
 		break;
 	case 411:
diff --git a/engines/bladerunner/script/ai/sadik.cpp b/engines/bladerunner/script/ai/sadik.cpp
index 4747d79..fb5e725 100644
--- a/engines/bladerunner/script/ai/sadik.cpp
+++ b/engines/bladerunner/script/ai/sadik.cpp
@@ -213,7 +213,7 @@ void AIScriptSadik::Retired(int byActorId) {
 			Loop_Actor_Walk_To_XYZ(kActorMcCoy, -12.0f, -41.58f, 72.0f, 0, true, false, 0);
 			Ambient_Sounds_Remove_All_Non_Looping_Sounds(true);
 			Ambient_Sounds_Remove_All_Looping_Sounds(1);
-			Game_Flag_Set(579);
+			Game_Flag_Set(kFlagKP07toKP06);
 			Game_Flag_Reset(kFlagMcCoyIsNotHelpingReplicants);
 			Set_Enter(kSetKP05_KP06, kSceneKP06);
 			return; //true;
diff --git a/engines/bladerunner/script/ai/steele.cpp b/engines/bladerunner/script/ai/steele.cpp
index 2d6ce66..58ef115 100644
--- a/engines/bladerunner/script/ai/steele.cpp
+++ b/engines/bladerunner/script/ai/steele.cpp
@@ -309,15 +309,7 @@ void AIScriptSteele::CompletedMovementTrack() {
 		Actor_Set_Goal_Number(kActorSteele, kGoalSteeleHF02LucyShotBySteele);
 		break;
 
-	case 423:
-	case 424:
-	case 425:
-	case 426:
-	case 427:
-	case 428:
-	case 429:
-	case 430:
-	case 431:
+	case 422:
 		Actor_Set_Goal_Number(kActorSteele, 423);
 		break;
 
@@ -337,7 +329,7 @@ void AIScriptSteele::CompletedMovementTrack() {
 		Loop_Actor_Walk_To_XYZ(kActorMcCoy, -731.0f, 8.26f, -657.0f, 0, false, false, 0);
 		Ambient_Sounds_Remove_All_Non_Looping_Sounds(true);
 		Ambient_Sounds_Remove_All_Looping_Sounds(1);
-		Game_Flag_Set(578);
+		Game_Flag_Set(kFlagKP06toKP07);
 		Set_Enter(kSetKP07, kSceneKP07);
 		break;
 
@@ -1393,16 +1385,16 @@ bool AIScriptSteele::GoalChanged(int currentGoalNumber, int newGoalNumber) {
 		Actor_Retired_Here(kActorSteele, 60, 12, true, -1);
 		return true;
 
-	case 420:
+	case kGoalSteeleKP01Wait:
 		Actor_Put_In_Set(kActorSteele, kSetKP01);
 		Actor_Set_At_XYZ(kActorSteele, 20.0f, -12.2f, -97.0f, 907);
 		Actor_Change_Animation_Mode(kActorSteele, 43);
 		return true;
 
-	case 421:
+	case kGoalSteeleKP01TalkToMcCoy:
 		Game_Flag_Reset(kFlagSteeleSmoking);
 		Delay(2000);
-		Actor_Face_Actor(kActorSteele, kActorMcCoy, 1);
+		Actor_Face_Actor(kActorSteele, kActorMcCoy, true);
 		Actor_Says(kActorSteele, 360, -1);
 		Loop_Actor_Walk_To_Actor(kActorMcCoy, kActorSteele, 48, false, false);
 		Actor_Says(kActorMcCoy, 2150, 14);
diff --git a/engines/bladerunner/script/ai/zuben.cpp b/engines/bladerunner/script/ai/zuben.cpp
index 5e7ca2d..3214cb6 100644
--- a/engines/bladerunner/script/ai/zuben.cpp
+++ b/engines/bladerunner/script/ai/zuben.cpp
@@ -297,7 +297,7 @@ void AIScriptZuben::Retired(int byActorId) {
 		Loop_Actor_Walk_To_XYZ(kActorMcCoy, -12.0f, -41.58f, 72.0f, 0, true, false, 0);
 		Ambient_Sounds_Remove_All_Non_Looping_Sounds(true);
 		Ambient_Sounds_Remove_All_Looping_Sounds(1);
-		Game_Flag_Set(579);
+		Game_Flag_Set(kFlagKP07toKP06);
 		Game_Flag_Reset(kFlagMcCoyIsNotHelpingReplicants);
 		Set_Enter(kSetKP05_KP06, kSceneKP06);
 		// return true;
diff --git a/engines/bladerunner/script/scene/kp01.cpp b/engines/bladerunner/script/scene/kp01.cpp
index e0f2dbd..80109af 100644
--- a/engines/bladerunner/script/scene/kp01.cpp
+++ b/engines/bladerunner/script/scene/kp01.cpp
@@ -25,32 +25,36 @@
 namespace BladeRunner {
 
 void SceneScriptKP01::InitializeScene() {
-	if (Game_Flag_Query(416)) {
-		Setup_Scene_Information(-125.0f, -12.2f, -61.0f, 400);
-	} else if (Game_Flag_Query(418)) {
+	if (Game_Flag_Query(kFlagKP04toKP01)) {
+		Setup_Scene_Information(-125.0f, -12.2f,  -61.0f, 400);
+	} else if (Game_Flag_Query(kFlagKP03toKP01)) {
 		Setup_Scene_Information(-284.0f, -12.2f, -789.0f, 445);
 	} else {
-		Setup_Scene_Information(239.0f, -12.2f, -146.0f, 820);
-		Game_Flag_Reset(413);
-		if (!Game_Flag_Query(674) && !Game_Flag_Query(kFlagMcCoyIsNotHelpingReplicants)) {
-			Game_Flag_Set(674);
-			Actor_Set_Goal_Number(kActorSteele, 420);
+		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_Set(kFlagKP01Entered);
+			Actor_Set_Goal_Number(kActorSteele, kGoalSteeleKP01Wait);
 		}
 	}
-	Scene_Exit_Add_2D_Exit(0, 0, 0, 30, 479, 3);
+
+	Scene_Exit_Add_2D_Exit(0,   0, 0,  30, 479, 3);
 	Scene_Exit_Add_2D_Exit(1, 150, 0, 200, 276, 0);
 	Scene_Exit_Add_2D_Exit(2, 589, 0, 639, 479, 1);
+
 	Ambient_Sounds_Add_Looping_Sound(464, 34, 1, 1);
 	Ambient_Sounds_Add_Looping_Sound(383, 27, 1, 1);
 	Ambient_Sounds_Add_Looping_Sound(384, 90, 1, 1);
-	Ambient_Sounds_Add_Sound(440, 2, 100, 25, 33, -100, 100, -101, -101, 0, 0);
-	Ambient_Sounds_Add_Sound(441, 2, 100, 25, 33, -100, 100, -101, -101, 0, 0);
-	Ambient_Sounds_Add_Sound(442, 2, 100, 25, 33, -100, 100, -101, -101, 0, 0);
+	Ambient_Sounds_Add_Sound(440, 2, 100, 25,  33, -100, 100, -101, -101, 0, 0);
+	Ambient_Sounds_Add_Sound(441, 2, 100, 25,  33, -100, 100, -101, -101, 0, 0);
+	Ambient_Sounds_Add_Sound(442, 2, 100, 25,  33, -100, 100, -101, -101, 0, 0);
 	Ambient_Sounds_Add_Sound(375, 5, 180, 50, 100, -100, 100, -101, -101, 0, 0);
 	Ambient_Sounds_Add_Sound(377, 5, 180, 50, 100, -100, 100, -101, -101, 0, 0);
-	Ambient_Sounds_Add_Sound(443, 2, 100, 25, 33, -100, 100, -101, -101, 0, 0);
-	Ambient_Sounds_Add_Sound(444, 2, 100, 25, 33, -100, 100, -101, -101, 0, 0);
-	Ambient_Sounds_Add_Sound(445, 2, 100, 25, 33, -100, 100, -101, -101, 0, 0);
+	Ambient_Sounds_Add_Sound(443, 2, 100, 25,  33, -100, 100, -101, -101, 0, 0);
+	Ambient_Sounds_Add_Sound(444, 2, 100, 25,  33, -100, 100, -101, -101, 0, 0);
+	Ambient_Sounds_Add_Sound(445, 2, 100, 25,  33, -100, 100, -101, -101, 0, 0);
 }
 
 void SceneScriptKP01::SceneLoaded() {
@@ -79,28 +83,30 @@ bool SceneScriptKP01::ClickedOnItem(int itemId, bool a2) {
 
 bool SceneScriptKP01::ClickedOnExit(int exitId) {
 	if (exitId == 0) {
-		if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -125.0f, -12.2f, -61.0f, 0, 1, false, 0)) {
+		if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -125.0f, -12.2f, -61.0f, 0, true, false, 0)) {
 			Ambient_Sounds_Remove_All_Non_Looping_Sounds(true);
 			Ambient_Sounds_Remove_All_Looping_Sounds(1);
-			Game_Flag_Set(415);
+			Game_Flag_Set(kFlagKP01toKP04);
 			Set_Enter(kSetKP04, kSceneKP04);
 		}
 		return true;
 	}
+
 	if (exitId == 1) {
-		if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -284.0f, -12.2f, -789.0f, 0, 1, false, 0)) {
+		if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -284.0f, -12.2f, -789.0f, 0, true, false, 0)) {
 			Ambient_Sounds_Remove_All_Non_Looping_Sounds(true);
 			Ambient_Sounds_Remove_All_Looping_Sounds(1);
-			Game_Flag_Set(417);
+			Game_Flag_Set(kFlagKP01toKP03);
 			Set_Enter(kSetKP03, kSceneKP03);
 		}
 		return true;
 	}
+
 	if (exitId == 2) {
-		if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, 239.0f, 12.2f, -146.0f, 0, 1, false, 0)) {
+		if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, 239.0f, 12.2f, -146.0f, 0, true, false, 0)) {
 			Ambient_Sounds_Remove_All_Non_Looping_Sounds(true);
 			Ambient_Sounds_Remove_All_Looping_Sounds(1);
-			Game_Flag_Set(414);
+			Game_Flag_Set(kFlagKP01toKP02);
 			Set_Enter(kSetKP02, kSceneKP02);
 		}
 		return true;
@@ -135,7 +141,7 @@ void SceneScriptKP01::ActorChangedGoal(int actorId, int newGoal, int oldGoal, bo
 			Actor_Force_Stop_Walking(kActorMcCoy);
 			Ambient_Sounds_Remove_All_Non_Looping_Sounds(true);
 			Ambient_Sounds_Remove_All_Looping_Sounds(1);
-			Game_Flag_Set(417);
+			Game_Flag_Set(kFlagKP01toKP03);
 			Set_Enter(kSetKP03, kSceneKP03);
 			//return true;
 		}
@@ -144,21 +150,26 @@ void SceneScriptKP01::ActorChangedGoal(int actorId, int newGoal, int oldGoal, bo
 }
 
 void SceneScriptKP01::PlayerWalkedIn() {
-	if (Game_Flag_Query(416)) {
-		Loop_Actor_Walk_To_XYZ(kActorMcCoy, -93.0f, -12.2f, -61.0f, 0, 0, false, 0);
-		Game_Flag_Reset(416);
-	} else if (Game_Flag_Query(418)) {
-		Loop_Actor_Walk_To_XYZ(kActorMcCoy, -240.0f, -12.2f, -789.0f, 0, 0, false, 0);
-		Game_Flag_Reset(418);
-	} else {
-		Loop_Actor_Walk_To_XYZ(kActorMcCoy, 211.0f, -12.2f, -146.0f, 0, 0, false, 0);
-		if (!Game_Flag_Query(kFlagMcCoyIsNotHelpingReplicants)
-			&& !Game_Flag_Query(714)
-			&& Actor_Query_Goal_Number(kActorSteele) == 420
-			&& Actor_Query_Goal_Number(kActorSteele) != 599) {
-			Player_Loses_Control();
-			Actor_Set_Goal_Number(kActorSteele, 421);
-		}
+	if (Game_Flag_Query(kFlagKP04toKP01)) {
+		Loop_Actor_Walk_To_XYZ(kActorMcCoy, -93.0f, -12.2f, -61.0f, 0, false, false, 0);
+		Game_Flag_Reset(kFlagKP04toKP01);
+		return;
+	}
+
+	if (Game_Flag_Query(kFlagKP03toKP01)) {
+		Loop_Actor_Walk_To_XYZ(kActorMcCoy, -240.0f, -12.2f, -789.0f, 0, false, false, 0);
+		Game_Flag_Reset(kFlagKP03toKP01);
+		return;
+	}
+
+	Loop_Actor_Walk_To_XYZ(kActorMcCoy, 211.0f, -12.2f, -146.0f, 0, false, false, 0);
+	if (!Game_Flag_Query(kFlagMcCoyIsNotHelpingReplicants)
+	 && !Game_Flag_Query(714)
+	 &&  Actor_Query_Goal_Number(kActorSteele) == kGoalSteeleKP01Wait
+	 &&  Actor_Query_Goal_Number(kActorSteele) != 599
+	) {
+		Player_Loses_Control();
+		Actor_Set_Goal_Number(kActorSteele, kGoalSteeleKP01TalkToMcCoy);
 	}
 }
 
diff --git a/engines/bladerunner/script/scene/kp02.cpp b/engines/bladerunner/script/scene/kp02.cpp
index a19f0e8..9759a9f 100644
--- a/engines/bladerunner/script/scene/kp02.cpp
+++ b/engines/bladerunner/script/scene/kp02.cpp
@@ -25,25 +25,29 @@
 namespace BladeRunner {
 
 void SceneScriptKP02::InitializeScene() {
-	if (Game_Flag_Query(414)) {
-		Setup_Scene_Information(-884.0f, -615.49f, 3065.0f, 20);
+	if (Game_Flag_Query(kFlagKP01toKP02)) {
+		Setup_Scene_Information( -884.0f, -615.49f, 3065.0f,  20);
 	} else {
 		Setup_Scene_Information(-1040.0f, -615.49f, 2903.0f, 339);
 		Game_Flag_Reset(kFlagUG12toKP02);
 	}
+
+	// exit 0 is missing the game, no way back
 	Scene_Exit_Add_2D_Exit(1, 0, 0, 30, 479, 3);
+
 	Ambient_Sounds_Add_Looping_Sound(464, 34, 1, 1);
 	Ambient_Sounds_Add_Looping_Sound(383, 27, 1, 1);
 	Ambient_Sounds_Add_Looping_Sound(384, 90, 1, 1);
-	Ambient_Sounds_Add_Sound(440, 2, 100, 25, 33, -100, 100, -101, -101, 0, 0);
-	Ambient_Sounds_Add_Sound(441, 2, 100, 25, 33, -100, 100, -101, -101, 0, 0);
-	Ambient_Sounds_Add_Sound(442, 2, 100, 25, 33, -100, 100, -101, -101, 0, 0);
+
+	Ambient_Sounds_Add_Sound(440, 2, 100, 25,  33, -100, 100, -101, -101, 0, 0);
+	Ambient_Sounds_Add_Sound(441, 2, 100, 25,  33, -100, 100, -101, -101, 0, 0);
+	Ambient_Sounds_Add_Sound(442, 2, 100, 25,  33, -100, 100, -101, -101, 0, 0);
 	Ambient_Sounds_Add_Sound(375, 5, 180, 50, 100, -100, 100, -101, -101, 0, 0);
 	Ambient_Sounds_Add_Sound(376, 5, 180, 50, 100, -100, 100, -101, -101, 0, 0);
 	Ambient_Sounds_Add_Sound(377, 5, 180, 50, 100, -100, 100, -101, -101, 0, 0);
-	Ambient_Sounds_Add_Sound(443, 2, 100, 25, 33, -100, 100, -101, -101, 0, 0);
-	Ambient_Sounds_Add_Sound(444, 2, 100, 25, 33, -100, 100, -101, -101, 0, 0);
-	Ambient_Sounds_Add_Sound(445, 2, 100, 25, 33, -100, 100, -101, -101, 0, 0);
+	Ambient_Sounds_Add_Sound(443, 2, 100, 25,  33, -100, 100, -101, -101, 0, 0);
+	Ambient_Sounds_Add_Sound(444, 2, 100, 25,  33, -100, 100, -101, -101, 0, 0);
+	Ambient_Sounds_Add_Sound(445, 2, 100, 25,  33, -100, 100, -101, -101, 0, 0);
 }
 
 void SceneScriptKP02::SceneLoaded() {
@@ -76,7 +80,9 @@ bool SceneScriptKP02::ClickedOnItem(int itemId, bool a2) {
 bool SceneScriptKP02::ClickedOnExit(int exitId) {
 	if (exitId == 0) {
 		if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -1040.0f, -615.49f, 2903.0f, 0, 1, false, 0)) {
-			if (Actor_Query_Goal_Number(kActorFreeSlotB) == 406 || Actor_Query_Goal_Number(kActorFreeSlotA) == 406) {
+			if (Actor_Query_Goal_Number(kActorFreeSlotB) == 406
+			 || Actor_Query_Goal_Number(kActorFreeSlotA) == 406
+			) {
 				Non_Player_Actor_Combat_Mode_Off(kActorFreeSlotB);
 				Non_Player_Actor_Combat_Mode_Off(kActorFreeSlotA);
 				Actor_Set_Goal_Number(kActorFreeSlotB, 400);
@@ -94,21 +100,24 @@ bool SceneScriptKP02::ClickedOnExit(int exitId) {
 		}
 		return true;
 	}
+
 	if (exitId == 1) {
 		if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -884.0f, -615.49f, 3065.0f, 0, 1, false, 0)) {
-			if (Actor_Query_Goal_Number(kActorFreeSlotB) == 406 || Actor_Query_Goal_Number(kActorFreeSlotA) == 406) {
+			if (Actor_Query_Goal_Number(kActorFreeSlotB) == 406
+			 || Actor_Query_Goal_Number(kActorFreeSlotA) == 406
+			) {
 				Non_Player_Actor_Combat_Mode_Off(kActorFreeSlotB);
 				Non_Player_Actor_Combat_Mode_Off(kActorFreeSlotA);
 				Actor_Set_Goal_Number(kActorFreeSlotB, 400);
 				Actor_Set_Goal_Number(kActorFreeSlotA, 400);
 				Ambient_Sounds_Remove_All_Non_Looping_Sounds(true);
 				Ambient_Sounds_Remove_All_Looping_Sounds(1);
-				Game_Flag_Set(413);
+				Game_Flag_Set(kFlagKP02toKP01);
 				Set_Enter(kSetKP01, kSceneKP01);
 			} else {
 				Ambient_Sounds_Remove_All_Non_Looping_Sounds(true);
 				Ambient_Sounds_Remove_All_Looping_Sounds(1);
-				Game_Flag_Set(413);
+				Game_Flag_Set(kFlagKP02toKP01);
 				Set_Enter(kSetKP01, kSceneKP01);
 			}
 		}
@@ -128,10 +137,11 @@ void SceneScriptKP02::ActorChangedGoal(int actorId, int newGoal, int oldGoal, bo
 }
 
 void SceneScriptKP02::PlayerWalkedIn() {
-	if (Game_Flag_Query(414)) {
-		Loop_Actor_Walk_To_XYZ(kActorMcCoy, -884.0f, -615.49f, 3035.0f, 0, 0, false, 0);
-		Game_Flag_Reset(414);
+	if (Game_Flag_Query(kFlagKP01toKP02)) {
+		Loop_Actor_Walk_To_XYZ(kActorMcCoy, -884.0f, -615.49f, 3035.0f, 0, false, false, 0);
+		Game_Flag_Reset(kFlagKP01toKP02);
 	}
+
 	if (Game_Flag_Query(kFlagMcCoyIsNotHelpingReplicants)
 	 && Actor_Query_Goal_Number(kActorSteele) != 599
 	) {
diff --git a/engines/bladerunner/script/scene/kp03.cpp b/engines/bladerunner/script/scene/kp03.cpp
index fca41a0..1888380 100644
--- a/engines/bladerunner/script/scene/kp03.cpp
+++ b/engines/bladerunner/script/scene/kp03.cpp
@@ -25,7 +25,7 @@
 namespace BladeRunner {
 
 void SceneScriptKP03::InitializeScene() {
-	if (Game_Flag_Query(420)) {
+	if (Game_Flag_Query(kFlagKP05toKP03)) {
 		Setup_Scene_Information(   1.0f, -36.55f, 111.0f, 200);
 	} else {
 		Setup_Scene_Information(-321.0f, -36.55f,  26.0f, 350);
@@ -53,10 +53,10 @@ void SceneScriptKP03::InitializeScene() {
 	  && !Game_Flag_Query(484)
 	 )
 	 && ((Game_Flag_Query(kFlagMcCoyIsNotHelpingReplicants)
-	   && Game_Flag_Query(420)
+	   && Game_Flag_Query(kFlagKP05toKP03)
 	  )
 	  || (!Game_Flag_Query(kFlagMcCoyIsNotHelpingReplicants)
-	   &&  Game_Flag_Query(417)
+	   &&  Game_Flag_Query(kFlagKP01toKP03)
 	  )
 	 )
 	) {
@@ -93,9 +93,9 @@ bool SceneScriptKP03::ClickedOn3DObject(const char *objectName, bool combatMode)
 			Scene_Exits_Enable();
 			sub_401E54();
 		} else {
-			if (Game_Flag_Query(417)) {
+			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(420)) {
+			} 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)) {
@@ -135,25 +135,26 @@ bool SceneScriptKP03::ClickedOnExit(int exitId) {
 		Actor_Set_Goal_Number(kActorSteele, 418);
 	} else {
 		if (exitId == 0) {
-			if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, 1.0f, -36.55f, 111.0f, 0, 1, false, 0)) {
+			if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, 1.0f, -36.55f, 111.0f, 0, true, false, 0)) {
 				Ambient_Sounds_Remove_All_Non_Looping_Sounds(true);
 				Ambient_Sounds_Remove_All_Looping_Sounds(1);
 				Music_Stop(2);
-				Game_Flag_Reset(417);
-				Game_Flag_Reset(420);
-				Game_Flag_Set(419);
+				Game_Flag_Reset(kFlagKP01toKP03);
+				Game_Flag_Reset(kFlagKP05toKP03);
+				Game_Flag_Set(kFlagKP03toKP05);
 				Set_Enter(kSetKP05_KP06, kSceneKP05);
 			}
 			return true;
 		}
+
 		if (exitId == 1) {
-			if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -321.0f, -36.55f, 26.0f, 0, 1, false, 0)) {
+			if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -321.0f, -36.55f, 26.0f, 0, true, false, 0)) {
 				Ambient_Sounds_Remove_All_Non_Looping_Sounds(true);
 				Ambient_Sounds_Remove_All_Looping_Sounds(1);
 				Music_Stop(2);
-				Game_Flag_Reset(417);
-				Game_Flag_Reset(420);
-				Game_Flag_Set(418);
+				Game_Flag_Reset(kFlagKP01toKP03);
+				Game_Flag_Reset(kFlagKP05toKP03);
+				Game_Flag_Set(kFlagKP03toKP01);
 				Set_Enter(kSetKP01, kSceneKP01);
 			}
 			return true;
@@ -173,21 +174,44 @@ void SceneScriptKP03::SceneFrameAdvanced(int frame) {
 	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(421)
+	 && !Game_Flag_Query(484)
+	) {
 		v1 = -1;
 		if (!Game_Flag_Query(422)) {
 			Actor_Query_XYZ(kActorMcCoy, &x, &y, &z);
-			if ((Game_Flag_Query(417) && -130.0f < x) || (Game_Flag_Query(420) && -130.0f > x)) {
+			if ((Game_Flag_Query(kFlagKP01toKP03)
+			  && -130.0f < x
+			 )
+			 || (Game_Flag_Query(kFlagKP05toKP03)
+			  && -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(417) && -130.0f > x) || (Game_Flag_Query(420) && -130.0f < x)) {
+			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(417) && -130.0f < x) || (Game_Flag_Query(420) && -130.0f > x)) {
+			} else if ((Game_Flag_Query(kFlagKP01toKP03)
+			         && -130.0f < x
+			        )
+			        || (Game_Flag_Query(kFlagKP05toKP03)
+			         && -130.0f > x
+			        )
+			) {
 				v1 = 1;
 			}
 		}
@@ -220,15 +244,24 @@ void SceneScriptKP03::ActorChangedGoal(int actorId, int newGoal, int oldGoal, bo
 }
 
 void SceneScriptKP03::PlayerWalkedIn() {
-	if (Game_Flag_Query(420)) {
+	if (Game_Flag_Query(kFlagKP05toKP03)) {
 		Loop_Actor_Walk_To_XYZ(kActorMcCoy, 1.0f, -36.55f, 87.0f, 0, 0, false, 0);
 	}
-	if (Actor_Query_Is_In_Current_Set(kActorSteele) && Actor_Query_Goal_Number(kActorSteele) != 419) {
+
+	if (Actor_Query_Is_In_Current_Set(kActorSteele)
+	 && Actor_Query_Goal_Number(kActorSteele) != 419
+	) {
 		if (Game_Flag_Query(kFlagMcCoyIsNotHelpingReplicants)) {
-			if (Game_Flag_Query(420)) {
+			if (Game_Flag_Query(kFlagKP05toKP03)) {
 				Actor_Set_Goal_Number(kActorSteele, 410);
 			}
-		} else if (!Game_Flag_Query(422) && !Game_Flag_Query(484) && Game_Flag_Query(417)) {
+			return;
+		}
+
+		if (!Game_Flag_Query(422)
+		 && !Game_Flag_Query(484)
+		 &&  Game_Flag_Query(kFlagKP01toKP03)
+		) {
 			Scene_Exits_Disable();
 			Delay(1000);
 			Actor_Set_Goal_Number(kActorSteele, 411);
@@ -267,9 +300,9 @@ void SceneScriptKP03::sub_401E54() {
 	Actor_Set_Goal_Number(kActorSteele, 430);
 	Ambient_Sounds_Remove_All_Non_Looping_Sounds(true);
 	Ambient_Sounds_Remove_All_Looping_Sounds(1);
-	Game_Flag_Reset(417);
-	Game_Flag_Reset(420);
-	Game_Flag_Set(419);
+	Game_Flag_Reset(kFlagKP01toKP03);
+	Game_Flag_Reset(kFlagKP05toKP03);
+	Game_Flag_Set(kFlagKP03toKP05);
 	Set_Enter(kSetKP05_KP06, kSceneKP05);
 	Player_Gains_Control();
 }
diff --git a/engines/bladerunner/script/scene/kp04.cpp b/engines/bladerunner/script/scene/kp04.cpp
index 4c138a1..4de125d 100644
--- a/engines/bladerunner/script/scene/kp04.cpp
+++ b/engines/bladerunner/script/scene/kp04.cpp
@@ -25,25 +25,26 @@
 namespace BladeRunner {
 
 void SceneScriptKP04::InitializeScene() {
-	if (Game_Flag_Query(575)) {
-		Setup_Scene_Information(-544.0f, 94.89f, 288.0f, 700);
+	if (Game_Flag_Query(kFlagKP05toKP04)) {
+		Setup_Scene_Information(-544.0f, 94.89f,  288.0f, 700);
 	} else {
 		Setup_Scene_Information(-905.0f, 94.89f, 1357.0f, 970);
 	}
-	Scene_Exit_Add_2D_Exit(0, 0, 455, 639, 479, 2);
+	Scene_Exit_Add_2D_Exit(0,   0, 455, 639, 479, 2);
 	Scene_Exit_Add_2D_Exit(1, 475, 247, 514, 416, 1);
+
 	Ambient_Sounds_Add_Looping_Sound(464, 34, 1, 1);
 	Ambient_Sounds_Add_Looping_Sound(383, 27, 1, 1);
 	Ambient_Sounds_Add_Looping_Sound(384, 90, 1, 1);
-	Ambient_Sounds_Add_Sound(440, 2, 100, 25, 33, -100, 100, -101, -101, 0, 0);
-	Ambient_Sounds_Add_Sound(441, 2, 100, 25, 33, -100, 100, -101, -101, 0, 0);
-	Ambient_Sounds_Add_Sound(442, 2, 100, 25, 33, -100, 100, -101, -101, 0, 0);
+	Ambient_Sounds_Add_Sound(440, 2, 100, 25,  33, -100, 100, -101, -101, 0, 0);
+	Ambient_Sounds_Add_Sound(441, 2, 100, 25,  33, -100, 100, -101, -101, 0, 0);
+	Ambient_Sounds_Add_Sound(442, 2, 100, 25,  33, -100, 100, -101, -101, 0, 0);
 	Ambient_Sounds_Add_Sound(375, 5, 180, 50, 100, -100, 100, -101, -101, 0, 0);
 	Ambient_Sounds_Add_Sound(376, 5, 180, 50, 100, -100, 100, -101, -101, 0, 0);
 	Ambient_Sounds_Add_Sound(377, 5, 180, 50, 100, -100, 100, -101, -101, 0, 0);
-	Ambient_Sounds_Add_Sound(443, 2, 100, 25, 33, -100, 100, -101, -101, 0, 0);
-	Ambient_Sounds_Add_Sound(444, 2, 100, 25, 33, -100, 100, -101, -101, 0, 0);
-	Ambient_Sounds_Add_Sound(445, 2, 100, 25, 33, -100, 100, -101, -101, 0, 0);
+	Ambient_Sounds_Add_Sound(443, 2, 100, 25,  33, -100, 100, -101, -101, 0, 0);
+	Ambient_Sounds_Add_Sound(444, 2, 100, 25,  33, -100, 100, -101, -101, 0, 0);
+	Ambient_Sounds_Add_Sound(445, 2, 100, 25,  33, -100, 100, -101, -101, 0, 0);
 }
 
 void SceneScriptKP04::SceneLoaded() {
@@ -70,7 +71,7 @@ bool SceneScriptKP04::ClickedOnItem(int itemId, bool a2) {
 
 bool SceneScriptKP04::ClickedOnExit(int exitId) {
 	if (exitId == 0) {
-		if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -905.0f, 94.89f, 1357.0f, 0, 1, false, 0)) {
+		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);
@@ -78,11 +79,12 @@ bool SceneScriptKP04::ClickedOnExit(int exitId) {
 		}
 		return true;
 	}
+
 	if (exitId == 1) {
-		if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -544.0f, 94.89f, 288.0f, 0, 1, false, 0)) {
+		if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -544.0f, 94.89f, 288.0f, 0, true, false, 0)) {
 			Ambient_Sounds_Remove_All_Non_Looping_Sounds(true);
 			Ambient_Sounds_Remove_All_Looping_Sounds(1);
-			Game_Flag_Set(574);
+			Game_Flag_Set(kFlagKP04toKP05);
 			Set_Enter(kSetKP05_KP06, kSceneKP05);
 		}
 		return true;
@@ -101,11 +103,11 @@ void SceneScriptKP04::ActorChangedGoal(int actorId, int newGoal, int oldGoal, bo
 }
 
 void SceneScriptKP04::PlayerWalkedIn() {
-	if (Game_Flag_Query(575)) {
-		Loop_Actor_Walk_To_XYZ(kActorMcCoy, -584.0f, 94.89f, 288.0f, 0, 0, false, 0);
-		Game_Flag_Reset(575);
+	if (Game_Flag_Query(kFlagKP05toKP04)) {
+		Loop_Actor_Walk_To_XYZ(kActorMcCoy, -584.0f, 94.89f, 288.0f, 0, false, false, 0);
+		Game_Flag_Reset(kFlagKP05toKP04);
 	} else {
-		Game_Flag_Reset(415);
+		Game_Flag_Reset(kFlagKP01toKP04);
 	}
 }
 
diff --git a/engines/bladerunner/script/scene/kp05.cpp b/engines/bladerunner/script/scene/kp05.cpp
index d272606..03f3fb2 100644
--- a/engines/bladerunner/script/scene/kp05.cpp
+++ b/engines/bladerunner/script/scene/kp05.cpp
@@ -25,28 +25,30 @@
 namespace BladeRunner {
 
 void SceneScriptKP05::InitializeScene() {
-	if (Game_Flag_Query(577)) {
-		Setup_Scene_Information(-868.0f, 0.0f, -68.0f, 520);
-	} else if (Game_Flag_Query(574)) {
+	if (Game_Flag_Query(kFlagKP06toKP05)) {
+		Setup_Scene_Information( -868.0f, 0.0f, -68.0f, 520);
+	} else if (Game_Flag_Query(kFlagKP04toKP05)) {
 		Setup_Scene_Information(-1142.0f, 0.0f, 932.0f, 276);
 	} else {
-		Setup_Scene_Information(-802.0f, 0.0f, 972.0f, 800);
+		Setup_Scene_Information( -802.0f, 0.0f, 972.0f, 800);
 	}
+
 	Scene_Exit_Add_2D_Exit(0, 589, 0, 639, 479, 1);
-	Scene_Exit_Add_2D_Exit(1, 0, 0, 30, 479, 3);
-	Scene_Exit_Add_2D_Exit(2, 0, 0, 257, 204, 0);
+	Scene_Exit_Add_2D_Exit(1,   0, 0,  30, 479, 3);
+	Scene_Exit_Add_2D_Exit(2,   0, 0, 257, 204, 0);
+
 	Ambient_Sounds_Add_Looping_Sound(464, 34, 1, 1);
 	Ambient_Sounds_Add_Looping_Sound(383, 27, 1, 1);
 	Ambient_Sounds_Add_Looping_Sound(384, 90, 1, 1);
-	Ambient_Sounds_Add_Sound(440, 2, 100, 25, 33, -100, 100, -101, -101, 0, 0);
-	Ambient_Sounds_Add_Sound(441, 2, 100, 25, 33, -100, 100, -101, -101, 0, 0);
-	Ambient_Sounds_Add_Sound(442, 2, 100, 25, 33, -100, 100, -101, -101, 0, 0);
+	Ambient_Sounds_Add_Sound(440, 2, 100, 25,  33, -100, 100, -101, -101, 0, 0);
+	Ambient_Sounds_Add_Sound(441, 2, 100, 25,  33, -100, 100, -101, -101, 0, 0);
+	Ambient_Sounds_Add_Sound(442, 2, 100, 25,  33, -100, 100, -101, -101, 0, 0);
 	Ambient_Sounds_Add_Sound(375, 5, 180, 50, 100, -100, 100, -101, -101, 0, 0);
 	Ambient_Sounds_Add_Sound(376, 5, 180, 50, 100, -100, 100, -101, -101, 0, 0);
 	Ambient_Sounds_Add_Sound(377, 5, 180, 50, 100, -100, 100, -101, -101, 0, 0);
-	Ambient_Sounds_Add_Sound(443, 2, 100, 25, 33, -100, 100, -101, -101, 0, 0);
-	Ambient_Sounds_Add_Sound(444, 2, 100, 25, 33, -100, 100, -101, -101, 0, 0);
-	Ambient_Sounds_Add_Sound(445, 2, 100, 25, 33, -100, 100, -101, -101, 0, 0);
+	Ambient_Sounds_Add_Sound(443, 2, 100, 25,  33, -100, 100, -101, -101, 0, 0);
+	Ambient_Sounds_Add_Sound(444, 2, 100, 25,  33, -100, 100, -101, -101, 0, 0);
+	Ambient_Sounds_Add_Sound(445, 2, 100, 25,  33, -100, 100, -101, -101, 0, 0);
 }
 
 void SceneScriptKP05::SceneLoaded() {
@@ -72,7 +74,7 @@ bool SceneScriptKP05::ClickedOnActor(int actorId) {
 
 bool SceneScriptKP05::ClickedOnItem(int itemId, bool a2) {
 	if (itemId == 118) {
-		if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -1058.0f, 0.0f, 852.0f, 0, 1, false, 0)) {
+		if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -1058.0f, 0.0f, 852.0f, 0, true, false, 0)) {
 			Actor_Face_Item(kActorMcCoy, 118, true);
 			Actor_Clue_Acquire(kActorMcCoy, kCluePowerSource, true, -1);
 			Item_Remove_From_World(118);
@@ -84,28 +86,30 @@ bool SceneScriptKP05::ClickedOnItem(int itemId, bool a2) {
 
 bool SceneScriptKP05::ClickedOnExit(int exitId) {
 	if (exitId == 0) {
-		if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -802.0f, 0.0f, 972.0f, 0, 1, false, 0)) {
+		if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -802.0f, 0.0f, 972.0f, 0, true, false, 0)) {
 			Ambient_Sounds_Remove_All_Non_Looping_Sounds(true);
 			Ambient_Sounds_Remove_All_Looping_Sounds(1);
-			Game_Flag_Set(420);
+			Game_Flag_Set(kFlagKP05toKP03);
 			Set_Enter(kSetKP03, kSceneKP03);
 		}
 		return true;
 	}
+
 	if (exitId == 1) {
-		if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -1142.0f, 0.0f, 932.0f, 0, 1, false, 0)) {
+		if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -1142.0f, 0.0f, 932.0f, 0, true, false, 0)) {
 			Ambient_Sounds_Remove_All_Non_Looping_Sounds(true);
 			Ambient_Sounds_Remove_All_Looping_Sounds(1);
-			Game_Flag_Set(575);
+			Game_Flag_Set(kFlagKP05toKP04);
 			Set_Enter(kSetKP04, kSceneKP04);
 		}
 		return true;
 	}
+
 	if (exitId == 2) {
-		if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -868.0f, 0.0f, -68.0f, 0, 1, false, 0)) {
+		if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -868.0f, 0.0f, -68.0f, 0, true, false, 0)) {
 			Ambient_Sounds_Remove_All_Non_Looping_Sounds(true);
 			Ambient_Sounds_Remove_All_Looping_Sounds(1);
-			Game_Flag_Set(576);
+			Game_Flag_Set(kFlagKP05toKP06);
 			Async_Actor_Walk_To_XYZ(kActorMcCoy, -868.0f, 0.0f, -216.0f, 0, false);
 			Set_Enter(kSetKP05_KP06, kSceneKP06);
 		}
@@ -125,18 +129,20 @@ void SceneScriptKP05::ActorChangedGoal(int actorId, int newGoal, int oldGoal, bo
 }
 
 void SceneScriptKP05::PlayerWalkedIn() {
-	if (Game_Flag_Query(577)) {
-		Game_Flag_Reset(577);
-	} else if (Game_Flag_Query(574)) {
-		Loop_Actor_Walk_To_XYZ(kActorMcCoy, -1110.0f, 0.0f, 932.0f, 0, 0, false, 0);
-		Game_Flag_Reset(574);
+	if (Game_Flag_Query(kFlagKP06toKP05)) {
+		Game_Flag_Reset(kFlagKP06toKP05);
+	} else if (Game_Flag_Query(kFlagKP04toKP05)) {
+		Loop_Actor_Walk_To_XYZ(kActorMcCoy, -1110.0f, 0.0f, 932.0f, 0, false, false, 0);
+		Game_Flag_Reset(kFlagKP04toKP05);
 	} else {
-		Loop_Actor_Walk_To_XYZ(kActorMcCoy, -846.0f, 0.0f, 972.0f, 0, 0, false, 0);
-		Game_Flag_Query(419); // bug in game?
+		Loop_Actor_Walk_To_XYZ(kActorMcCoy, -846.0f, 0.0f, 972.0f, 0, false, false, 0);
+		Game_Flag_Query(kFlagKP03toKP05); // bug in game?
 	}
+
 	if (Actor_Query_Goal_Number(kActorMaggie) == 411) {
 		Actor_Set_Goal_Number(kActorMaggie, 412);
 	}
+
 	if (Actor_Query_Goal_Number(kActorSteele) == 450) {
 		Scene_Exits_Disable();
 		Actor_Face_Actor(kActorSteele, kActorMcCoy, true);
diff --git a/engines/bladerunner/script/scene/kp06.cpp b/engines/bladerunner/script/scene/kp06.cpp
index e1a1e56..2a2d2b4 100644
--- a/engines/bladerunner/script/scene/kp06.cpp
+++ b/engines/bladerunner/script/scene/kp06.cpp
@@ -25,29 +25,32 @@
 namespace BladeRunner {
 
 void SceneScriptKP06::InitializeScene() {
-	if (Game_Flag_Query(579) ) {
+	if (Game_Flag_Query(kFlagKP07toKP06) ) {
 		Setup_Scene_Information(-755.0f, 8.26f, -665.0f, 640);
 	} else {
-		Setup_Scene_Information(-868.0f, 8.26f, -8.0f, 0);
+		Setup_Scene_Information(-868.0f, 8.26f,   -8.0f,   0);
 	}
+
 	Scene_Exit_Add_2D_Exit(0, 270, 445, 639, 479, 2);
 	Scene_Exit_Add_2D_Exit(1, 320, 158, 352, 220, 0);
+
 	Ambient_Sounds_Add_Looping_Sound(464, 34, 1, 1);
 	Ambient_Sounds_Add_Looping_Sound(383, 27, 1, 1);
 	Ambient_Sounds_Add_Looping_Sound(384, 90, 1, 1);
-	Ambient_Sounds_Add_Sound(440, 2, 100, 25, 33, -100, 100, -101, -101, 0, 0);
-	Ambient_Sounds_Add_Sound(441, 2, 100, 25, 33, -100, 100, -101, -101, 0, 0);
-	Ambient_Sounds_Add_Sound(442, 2, 100, 25, 33, -100, 100, -101, -101, 0, 0);
+	Ambient_Sounds_Add_Sound(440, 2, 100, 25,  33, -100, 100, -101, -101, 0, 0);
+	Ambient_Sounds_Add_Sound(441, 2, 100, 25,  33, -100, 100, -101, -101, 0, 0);
+	Ambient_Sounds_Add_Sound(442, 2, 100, 25,  33, -100, 100, -101, -101, 0, 0);
 	Ambient_Sounds_Add_Sound(375, 5, 180, 50, 100, -100, 100, -101, -101, 0, 0);
 	Ambient_Sounds_Add_Sound(376, 5, 180, 50, 100, -100, 100, -101, -101, 0, 0);
 	Ambient_Sounds_Add_Sound(377, 5, 180, 50, 100, -100, 100, -101, -101, 0, 0);
-	Ambient_Sounds_Add_Sound(443, 2, 100, 25, 33, -100, 100, -101, -101, 0, 0);
-	Ambient_Sounds_Add_Sound(444, 2, 100, 25, 33, -100, 100, -101, -101, 0, 0);
-	Ambient_Sounds_Add_Sound(445, 2, 100, 25, 33, -100, 100, -101, -101, 0, 0);
-	if (Game_Flag_Query(576) ) {
-		Scene_Loop_Start_Special(0, 0, 0);
+	Ambient_Sounds_Add_Sound(443, 2, 100, 25,  33, -100, 100, -101, -101, 0, 0);
+	Ambient_Sounds_Add_Sound(444, 2, 100, 25,  33, -100, 100, -101, -101, 0, 0);
+	Ambient_Sounds_Add_Sound(445, 2, 100, 25,  33, -100, 100, -101, -101, 0, 0);
+
+	if (Game_Flag_Query(kFlagKP05toKP06) ) {
+		Scene_Loop_Start_Special(kSceneLoopModeLoseControl, 0, false);
 		Scene_Loop_Set_Default(1);
-		Game_Flag_Reset(576);
+		Game_Flag_Reset(kFlagKP05toKP06);
 	} else {
 		Scene_Loop_Set_Default(1);
 	}
@@ -76,16 +79,16 @@ bool SceneScriptKP06::ClickedOnActor(int actorId) {
 		if (Actor_Clue_Query(kActorSadik, kCluePowerSource)) {
 			Actor_Face_Actor(kActorMcCoy, kActorSadik, true);
 			Actor_Says(kActorMcCoy, 8610, 15);
-			Actor_Says(kActorSadik, 290, 3);
+			Actor_Says(kActorSadik, 290, kAnimationModeTalk);
 		} else if (Actor_Clue_Query(kActorMcCoy, kCluePowerSource) ) {
-			Actor_Says(kActorSadik, 280, 3);
-			Actor_Says(kActorSadik, 290, 3);
+			Actor_Says(kActorSadik, 280, kAnimationModeTalk);
+			Actor_Says(kActorSadik, 290, kAnimationModeTalk);
 			Actor_Clue_Acquire(kActorSadik, kCluePowerSource, true, kActorMcCoy);
 		} else {
-			Actor_Says(kActorMcCoy, 2320, 3);
-			Actor_Says(kActorMcCoy, 2325, 3);
-			Actor_Says(kActorSadik, 300, 3);
-			Actor_Says(kActorSadik, 310, 3);
+			Actor_Says(kActorMcCoy, 2320, kAnimationModeTalk);
+			Actor_Says(kActorMcCoy, 2325, kAnimationModeTalk);
+			Actor_Says(kActorSadik, 300, kAnimationModeTalk);
+			Actor_Says(kActorSadik, 310, kAnimationModeTalk);
 		}
 	}
 	return false;
@@ -100,11 +103,12 @@ bool SceneScriptKP06::ClickedOnExit(int exitId) {
 		if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -868.0f, 8.26f, -68.0f, 0, 1, false, 0)) {
 			Ambient_Sounds_Remove_All_Non_Looping_Sounds(true);
 			Ambient_Sounds_Remove_All_Looping_Sounds(1);
-			Game_Flag_Set(577);
+			Game_Flag_Set(kFlagKP06toKP05);
 			Set_Enter(kSetKP05_KP06, kSceneKP05);
 		}
 		return true;
 	}
+
 	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)) {
@@ -119,7 +123,7 @@ bool SceneScriptKP06::ClickedOnExit(int exitId) {
 				}
 				Ambient_Sounds_Remove_All_Non_Looping_Sounds(true);
 				Ambient_Sounds_Remove_All_Looping_Sounds(1);
-				Game_Flag_Set(578);
+				Game_Flag_Set(kFlagKP06toKP07);
 				Set_Enter(kSetKP07, kSceneKP07);
 			}
 		} else if (Actor_Clue_Query(kActorMcCoy, kCluePowerSource) ) {
@@ -130,7 +134,7 @@ bool SceneScriptKP06::ClickedOnExit(int exitId) {
 			Player_Set_Combat_Mode(false);
 			Ambient_Sounds_Remove_All_Non_Looping_Sounds(true);
 			Ambient_Sounds_Remove_All_Looping_Sounds(1);
-			Game_Flag_Set(578);
+			Game_Flag_Set(kFlagKP06toKP07);
 			Set_Enter(kSetKP07, kSceneKP07);
 		} else {
 			Actor_Set_Goal_Number(kActorSadik, 417);
@@ -151,8 +155,11 @@ void SceneScriptKP06::ActorChangedGoal(int actorId, int newGoal, int oldGoal, bo
 }
 
 void SceneScriptKP06::PlayerWalkedIn() {
-	if (!Game_Flag_Query(kFlagMcCoyIsNotHelpingReplicants) && Game_Flag_Query(579)) {
-		Game_Flag_Reset(579);
+	if (!Game_Flag_Query(kFlagMcCoyIsNotHelpingReplicants)
+	 && Game_Flag_Query(kFlagKP07toKP06)
+	) {
+		Game_Flag_Reset(kFlagKP07toKP06);
+
 		if (Actor_Query_Goal_Number(kActorSteele) == 499) {
 			Actor_Face_Actor(kActorSteele, kActorMcCoy, true);
 			Actor_Says(kActorSteele, 2530, 13);
@@ -226,7 +233,9 @@ void SceneScriptKP06::PlayerWalkedIn() {
 }
 
 void SceneScriptKP06::PlayerWalkedOut() {
-	if (Game_Flag_Query(578) && Actor_Query_Goal_Number(kActorSteele) == 433) {
+	if (Game_Flag_Query(kFlagKP06toKP07)
+	 && Actor_Query_Goal_Number(kActorSteele) == 433
+	) {
 		Actor_Set_Goal_Number(kActorSteele, 499);
 	}
 }
diff --git a/engines/bladerunner/script/scene/kp07.cpp b/engines/bladerunner/script/scene/kp07.cpp
index a4ed0ce..9ad6f8d 100644
--- a/engines/bladerunner/script/scene/kp07.cpp
+++ b/engines/bladerunner/script/scene/kp07.cpp
@@ -26,8 +26,11 @@ namespace BladeRunner {
 
 void SceneScriptKP07::InitializeScene() {
 	Setup_Scene_Information(-12.0f, -41.58f, 72.0f, 0);
-	Game_Flag_Reset(578);
+
+	Game_Flag_Reset(kFlagKP06toKP07);
+
 	Scene_Exit_Add_2D_Exit(0, 315, 185, 381, 285, 0);
+
 	if (Game_Flag_Query(kFlagMcCoyIsNotHelpingReplicants)) {
 		if (Game_Flag_Query(kFlagDektoraIsReplicant)
 		 && Actor_Query_Goal_Number(kActorDektora) < kGoalDektoraGone
@@ -77,9 +80,11 @@ void SceneScriptKP07::InitializeScene() {
 			Actor_Set_At_XYZ(kActorLuther, -47.0f, 0.0f, 151.0f, 531);
 		}
 	}
-	Ambient_Sounds_Add_Looping_Sound(585, 7, 1, 1);
+
+	Ambient_Sounds_Add_Looping_Sound(585,  7, 1, 1);
 	Ambient_Sounds_Add_Looping_Sound(586, 52, 1, 1);
 	Ambient_Sounds_Add_Looping_Sound(109, 38, 1, 1);
+
 	if (Game_Flag_Query(582)) {
 		Scene_Loop_Set_Default(2);
 	} else {
@@ -131,10 +136,10 @@ bool SceneScriptKP07::ClickedOnItem(int itemId, bool a2) {
 
 bool SceneScriptKP07::ClickedOnExit(int exitId) {
 	if (exitId == 0) {
-		if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -12.0f, -41.58f, 72.0f, 0, 1, false, 0)) {
+		if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -12.0f, -41.58f, 72.0f, 0, true, false, 0)) {
 			Ambient_Sounds_Remove_All_Non_Looping_Sounds(true);
 			Ambient_Sounds_Remove_All_Looping_Sounds(1);
-			Game_Flag_Set(579);
+			Game_Flag_Set(kFlagKP07toKP06);
 			Set_Enter(kSetKP05_KP06, kSceneKP06);
 		}
 		return true;





More information about the Scummvm-git-logs mailing list