[Scummvm-git-logs] scummvm master -> 19d92484fdbae556a5238b13535e34f8436f399b

peterkohaut peterkohaut at users.noreply.github.com
Sat Feb 2 00:51:18 CET 2019


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

Summary:
cd43b7a11a BLADERUNNER: Cleanup of walking code
315100861c BLADERUNNER: Fixed issue with untargeting objects
a5854b524b BLADERUNNER: Fixed resource leak in game listing
19d92484fd BLADERUNNER: Cleanup of scripts at start of chapter 4


Commit: cd43b7a11a327327635d458571fc8b1ad05ffc76
    https://github.com/scummvm/scummvm/commit/cd43b7a11a327327635d458571fc8b1ad05ffc76
Author: Peter Kohaut (peter.kohaut at gmail.com)
Date: 2019-02-02T00:50:16+01:00

Commit Message:
BLADERUNNER: Cleanup of walking code

Fixed missing "must reach" in a actorwalk::tick

Changed paths:
    engines/bladerunner/actor.cpp
    engines/bladerunner/actor.h
    engines/bladerunner/actor_walk.cpp
    engines/bladerunner/actor_walk.h
    engines/bladerunner/bladerunner.cpp
    engines/bladerunner/combat.cpp
    engines/bladerunner/game_constants.h
    engines/bladerunner/script/scene/nr10.cpp
    engines/bladerunner/script/script.cpp
    engines/bladerunner/script/script.h


diff --git a/engines/bladerunner/actor.cpp b/engines/bladerunner/actor.cpp
index d0ba7cc..59af72d 100644
--- a/engines/bladerunner/actor.cpp
+++ b/engines/bladerunner/actor.cpp
@@ -59,8 +59,8 @@ Actor::Actor(BladeRunnerEngine *vm, int actorId) {
 
 	_friendlinessToOther.resize(_vm->_gameInfo->getActorCount());
 
-	_inWalkLoop                       = false;
-	_damageAnimIfMoving               = false;
+	_mustReachWalkDestination = false;
+	_damageAnimIfMoving       = false;
 
 	setup(actorId);
 }
@@ -367,19 +367,19 @@ void Actor::setAtWaypoint(int waypointId, int angle, int moving, bool retired) {
 	setAtXYZ(waypointPosition, angle, true, moving, retired);
 }
 
-bool Actor::loopWalk(const Vector3 &destination, int destinationOffset, bool interruptible, bool runFlag, const Vector3 &start, float targetWidth, float targetSize, bool a8, bool *isRunningFlag, bool async) {
+bool Actor::loopWalk(const Vector3 &destination, int proximity, bool interruptible, bool runFlag, const Vector3 &start, float targetWidth, float targetSize, bool mustReach, bool *isRunningFlag, bool async) {
 	*isRunningFlag = false;
 
-	if (destinationOffset > 0) {
+	if (proximity > 0) {
 		float dist = distance(_position, destination);
-		if (dist - targetSize <= destinationOffset) {
+		if (dist - targetSize <= proximity) {
 			return false;
 		}
 	}
 
-	if (a8 && !async && _id != kActorMcCoy && destinationOffset <= 24) {
+	if (mustReach && !async && _id != kActorMcCoy && proximity <= 24) {
 		if (distance(_vm->_playerActor->_position, destination) <= 24.0f) {
-			_vm->_playerActor->walkToNearestPoint(destination, 48.0f);
+			_vm->_playerActor->stepAway(destination, 48.0f);
 		}
 	}
 
@@ -389,18 +389,18 @@ bool Actor::loopWalk(const Vector3 &destination, int destinationOffset, bool int
 
 	Vector3 destinationX(destination);
 
-	if (destinationOffset > 0) {
-		walkFindU2(&destinationX, targetWidth, destinationOffset, targetSize, _position, destination);
+	if (proximity > 0) {
+		findNearestPosition(&destinationX, targetWidth, proximity, targetSize, _position, destination);
 	}
 
-	bool walking = walkTo(runFlag, destinationX, a8);
+	bool walking = walkTo(runFlag, destinationX, mustReach);
 
 	if (async) {
 		return false;
 	}
 
-	if (!walking && destinationOffset > 0) {
-		walking = walkTo(runFlag, destination, a8);
+	if (!walking && proximity > 0) {
+		walking = walkTo(runFlag, destination, mustReach);
 	}
 
 	if (!walking) {
@@ -419,8 +419,8 @@ bool Actor::loopWalk(const Vector3 &destination, int destinationOffset, bool int
 		_vm->playerLosesControl();
 	}
 
-	if (a8) {
-		_inWalkLoop = true;
+	if (mustReach) {
+		_mustReachWalkDestination = true;
 	}
 
 	bool wasInterrupted = false;
@@ -434,44 +434,48 @@ bool Actor::loopWalk(const Vector3 &destination, int destinationOffset, bool int
 			wasInterrupted = true;
 		}
 	}
-	if (a8) {
-		_inWalkLoop = false;
+
+	if (mustReach) {
+		_mustReachWalkDestination = false;
 	}
+
 	if (interruptible) {
 		_vm->_isWalkingInterruptible = false;
 	} else {
 		_vm->playerGainsControl();
 	}
-	if (!wasInterrupted && destinationOffset == 0 && !_vm->_playerActorIdle) {
+
+	if (!wasInterrupted && proximity == 0 && !_vm->_playerActorIdle) {
 		setAtXYZ(destination, _facing, true, false, false);
 	}
+
 	if (_id != kActorMcCoy) {
 		_vm->_mouse->enable();
 	}
+
 	return wasInterrupted;
 }
 
-bool Actor::walkTo(bool runFlag, const Vector3 &destination, bool a3) {
+bool Actor::walkTo(bool runFlag, const Vector3 &destination, bool mustReach) {
 	bool arrived;
-
-	return _walkInfo->setup(_id, runFlag, _position, destination, a3, &arrived);
+	return _walkInfo->setup(_id, runFlag, _position, destination, mustReach, &arrived);
 }
 
-bool Actor::loopWalkToActor(int otherActorId, int destinationOffset, int interruptible, bool runFlag, bool a5, bool *isRunningFlag) {
-	return loopWalk(_vm->_actors[otherActorId]->_position, destinationOffset, interruptible, runFlag, _position, 24.0f, 24.0f, a5, isRunningFlag, false);
+bool Actor::loopWalkToActor(int otherActorId, int proximity, int interruptible, bool runFlag, bool mustReach, bool *isRunningFlag) {
+	return loopWalk(_vm->_actors[otherActorId]->_position, proximity, interruptible, runFlag, _position, 24.0f, 24.0f, mustReach, isRunningFlag, false);
 }
 
-bool Actor::loopWalkToItem(int itemId, int destinationOffset, int interruptible, bool runFlag, bool a5, bool *isRunningFlag) {
+bool Actor::loopWalkToItem(int itemId, int proximity, int interruptible, bool runFlag, bool mustReach, bool *isRunningFlag) {
 	float x, y, z;
 	int width, height;
 	_vm->_items->getXYZ(itemId, &x, &y, &z);
 	_vm->_items->getWidthHeight(itemId, &width, &height);
 	Vector3 itemPosition(x, y, z);
 
-	return loopWalk(itemPosition, destinationOffset, interruptible, runFlag, _position, width, 24.0f, a5, isRunningFlag, false);
+	return loopWalk(itemPosition, proximity, interruptible, runFlag, _position, width, 24.0f, mustReach, isRunningFlag, false);
 }
 
-bool Actor::loopWalkToSceneObject(const Common::String &objectName, int destinationOffset, bool interruptible, bool runFlag, bool a5, bool *isRunningFlag) {
+bool Actor::loopWalkToSceneObject(const Common::String &objectName, int proximity, bool interruptible, bool runFlag, bool mustReach, bool *isRunningFlag) {
 	int sceneObject = _vm->_scene->_set->findObject(objectName);
 	if (sceneObject < 0) {
 		return true;
@@ -513,29 +517,29 @@ bool Actor::loopWalkToSceneObject(const Common::String &objectName, int destinat
 	float y = _vm->_scene->_set->getAltitudeAtXZ(closestX, closestZ, &inWalkbox);
 	Vector3 destination(closestX, y, closestZ);
 
-	return loopWalk(destination, destinationOffset, interruptible, runFlag, _position, 0.0f, 24.0f, a5, isRunningFlag, false);
+	return loopWalk(destination, proximity, interruptible, runFlag, _position, 0.0f, 24.0f, mustReach, isRunningFlag, false);
 }
 
-bool Actor::loopWalkToWaypoint(int waypointId, int destinationOffset, int interruptible, bool runFlag, bool a5, bool *isRunningFlag) {
+bool Actor::loopWalkToWaypoint(int waypointId, int proximity, int interruptible, bool runFlag, bool mustReach, bool *isRunningFlag) {
 	Vector3 waypointPosition;
 	_vm->_waypoints->getXYZ(waypointId, &waypointPosition.x, &waypointPosition.y, &waypointPosition.z);
-	return loopWalk(waypointPosition, destinationOffset, interruptible, runFlag, _position, 0.0f, 24.0f, a5, isRunningFlag, false);
+	return loopWalk(waypointPosition, proximity, interruptible, runFlag, _position, 0.0f, 24.0f, mustReach, isRunningFlag, false);
 }
 
-bool Actor::loopWalkToXYZ(const Vector3 &destination, int destinationOffset, bool interruptible, bool runFlag, bool a5, bool *isRunningFlag) {
-	return loopWalk(destination, destinationOffset, interruptible, runFlag, _position, 0.0f, 24.0f, a5, isRunningFlag, false);
+bool Actor::loopWalkToXYZ(const Vector3 &destination, int proximity, bool interruptible, bool runFlag, bool mustReach, bool *isRunningFlag) {
+	return loopWalk(destination, proximity, interruptible, runFlag, _position, 0.0f, 24.0f, mustReach, isRunningFlag, false);
 }
 
-bool Actor::asyncWalkToWaypoint(int waypointId, int destinationOffset, bool runFlag, bool a5) {
+bool Actor::asyncWalkToWaypoint(int waypointId, int proximity, bool runFlag, bool mustReach) {
 	bool running;
 	Vector3 waypointPosition;
 	_vm->_waypoints->getXYZ(waypointId, &waypointPosition.x, &waypointPosition.y, &waypointPosition.z);
-	return loopWalk(waypointPosition, destinationOffset, false, runFlag, _position, 0.0f, 24.0f, a5, &running, true);
+	return loopWalk(waypointPosition, proximity, false, runFlag, _position, 0.0f, 24.0f, mustReach, &running, true);
 }
 
-void Actor::asyncWalkToXYZ(const Vector3 &destination, int destinationOffset, bool runFlag, int a6) {
+void Actor::asyncWalkToXYZ(const Vector3 &destination, int proximity, bool runFlag, bool mustReach) {
 	bool running;
-	loopWalk(destination, destinationOffset, false, runFlag, _position, 0.0f, 24.0f, a6, &running, true);
+	loopWalk(destination, proximity, false, runFlag, _position, 0.0f, 24.0f, mustReach, &running, true);
 }
 
 void Actor::run() {
@@ -589,13 +593,13 @@ bool Actor::tick(bool forceDraw, Common::Rect *screenRect) {
 
 			_targetFacing = -1;
 
-			bool walked = _walkInfo->tick(_id, -positionChange.y, false);
+			bool walkInterrupted = _walkInfo->tick(_id, -positionChange.y, _mustReachWalkDestination);
 
 			Vector3 pos;
 			int facing;
 			_walkInfo->getCurrentPosition(_id, &pos, &facing);
 			setAtXYZ(pos, facing, false, _isMoving, false);
-			if (walked) {
+			if (walkInterrupted) {
 				_vm->_actors[_id]->changeAnimationMode(kAnimationModeIdle);
 
 				movementTrackWaypointReached();
@@ -1197,76 +1201,78 @@ int Actor::findTargetUnderMouse(BladeRunnerEngine *vm, int mouseX, int mouseY) {
 	return -1;
 }
 
-bool Actor::walkFindU1(const Vector3 &startPosition, const Vector3 &targetPosition, float size, Vector3 *newDestination) {
-	newDestination->x = 0.0f;
-	newDestination->y = 0.0f;
-	newDestination->z = 0.0f;
-	int facing = angle_1024(targetPosition, startPosition);
-	int facing1 = 0;
+bool Actor::findEmptyPositionAround(const Vector3 &startPosition, const Vector3 &targetPosition, float size, Vector3 *emptyPosition) {
+	emptyPosition->x = 0.0f;
+	emptyPosition->y = 0.0f;
+	emptyPosition->z = 0.0f;
+
+	int facingLeft = angle_1024(targetPosition, startPosition);
+	int facingRight = facingLeft;
+
+	int facingLeftCounter = 0;
+	int facingRightCounter = 0;
 
-	int facing2 = facing;
-	int facing3 = 0;
 	while (true) {
-		float rotatedX = targetPosition.x + size * _vm->_sinTable1024->at(facing);
-		float rotatedZ = targetPosition.z - size * _vm->_cosTable1024->at(facing);
+		float rotatedX = targetPosition.x + size * _vm->_sinTable1024->at(facingLeft);
+		float rotatedZ = targetPosition.z - size * _vm->_cosTable1024->at(facingLeft);
 
-		if (!_walkInfo->isXYZEmpty(rotatedX, targetPosition.y, rotatedZ, _id)) {
+		if (!_walkInfo->isXYZOccupied(rotatedX, targetPosition.y, rotatedZ, _id)) {
 			if (_vm->_scene->_set->findWalkbox(rotatedX, rotatedZ) >= 0) {
-				newDestination->x = rotatedX;
-				newDestination->y = targetPosition.y;
-				newDestination->z = rotatedZ;
+				emptyPosition->x = rotatedX;
+				emptyPosition->y = targetPosition.y;
+				emptyPosition->z = rotatedZ;
 				return true;
 			}
-		} else {
-			facing += 20;
-			if (facing > 1024) {
-				facing -= 1024;
+		} else { // looks like a bug as it might not find anything when there is no walkbox at this angle
+			facingLeft += 20;
+			if (facingLeft > 1024) {
+				facingLeft -= 1024;
 			}
-			facing3 += 20;
+			facingLeftCounter += 20;
 		}
 
-		rotatedX = size * _vm->_sinTable1024->at(facing2) + targetPosition.x;
-		rotatedZ = size * _vm->_cosTable1024->at(facing2) + targetPosition.z;
+		rotatedX = size * _vm->_sinTable1024->at(facingRight) + targetPosition.x;
+		rotatedZ = size * _vm->_cosTable1024->at(facingRight) + targetPosition.z;
 
-		if (!_walkInfo->isXYZEmpty(rotatedX, targetPosition.y, rotatedZ, _id)) {
+		if (!_walkInfo->isXYZOccupied(rotatedX, targetPosition.y, rotatedZ, _id)) {
 			if (_vm->_scene->_set->findWalkbox(rotatedX, rotatedZ) >= 0) {
-				newDestination->x = rotatedX;
-				newDestination->y = targetPosition.y;
-				newDestination->z = rotatedZ;
+				emptyPosition->x = rotatedX;
+				emptyPosition->y = targetPosition.y;
+				emptyPosition->z = rotatedZ;
 				return true;
 			}
-		} else {
-			facing2 -= 20;
-			if (facing2 < 0) {
-				facing2 += 1024;
+		} else { // looks like a bug as it might not find anything when there is no walkbox at this angle
+			facingRight -= 20;
+			if (facingRight < 0) {
+				facingRight += 1024;
 			}
-			facing1 += 20;
+			facingRightCounter += 20;
 		}
 
-		if (facing3 > 1024 && facing1 > 1024) {
+		if (facingLeftCounter > 1024 && facingRightCounter > 1024) {
 			return false;
 		}
 	}
 }
 
-bool Actor::walkFindU2(Vector3 *newDestination, float targetWidth, int destinationOffset, float targetSize, const Vector3 &startPosition, const Vector3 &targetPosition) {
-	newDestination->x = 0.0f;
-	newDestination->y = 0.0f;
-	newDestination->z = 0.0f;
-	float size = destinationOffset + targetSize * 0.5f + targetWidth * 0.5f;
+bool Actor::findNearestPosition(Vector3 *nearestPosition, float targetWidth, int proximity, float targetSize, const Vector3 &startPosition, const Vector3 &targetPosition) {
+	nearestPosition->x = 0.0f;
+	nearestPosition->y = 0.0f;
+	nearestPosition->z = 0.0f;
+	float size = proximity + targetSize * 0.5f + targetWidth * 0.5f;
 	float distance = (startPosition - targetPosition).length() - targetWidth * 0.5f - targetSize * 0.5f;
 	if (size < distance) {
-		return walkFindU1(startPosition, targetPosition, size, newDestination);
+		return findEmptyPositionAround(startPosition, targetPosition, size, nearestPosition);
 	} else {
-		*newDestination = targetPosition;
+		*nearestPosition = targetPosition;
 		return true;
 	}
 }
 
-bool Actor::walkToNearestPoint(const Vector3 &destination, float distance) {
+bool Actor::stepAway(const Vector3 &destination, float distance) {
 	Vector3 out;
 	bool running;
-	if (_walkInfo->findNearestEmptyPosition(_id, destination, distance, out)) {
+	if (_walkInfo->findEmptyPositionAround(_id, destination, distance, out)) {
 		loopWalk(out, 0, false, false, _position, 0.0f, 24.0f, false, &running, false);
 		return true;
 	}
diff --git a/engines/bladerunner/actor.h b/engines/bladerunner/actor.h
index 90588c8..492db6d 100644
--- a/engines/bladerunner/actor.h
+++ b/engines/bladerunner/actor.h
@@ -77,7 +77,7 @@ private:
 	bool _isTarget;
 	bool _isInvisible;
 	bool _isImmuneToObstacles;
-	bool _inWalkLoop;
+	bool _mustReachWalkDestination;
 	bool _isRetired;
 	bool _inCombat;
 	bool _isMoving;
@@ -148,15 +148,15 @@ public:
 	void movementTrackUnpause();
 	void movementTrackWaypointReached();
 
-	bool loopWalk(const Vector3 &destination, int destinationOffset, bool interruptible, bool runFlag, const Vector3 &start, float a6, float a7, bool a8, bool *isRunningFlag, bool async);
-	bool walkTo(bool runFlag, const Vector3 &destination, bool a3);
-	bool loopWalkToActor(int otherActorId, int destinationOffset, int interruptible, bool runFlag, bool a5, bool *isRunningFlag);
-	bool loopWalkToItem(int itemId, int destinationOffset, int interruptible, bool runFlag, bool a5, bool *isRunningFlag);
-	bool loopWalkToSceneObject(const Common::String &objectName, int destinationOffset, bool interruptible, bool runFlag, bool a5, bool *isRunningFlag);
-	bool loopWalkToWaypoint(int waypointId, int destinationOffset, int interruptible, bool runFlag, bool a5, bool *isRunningFlag);
-	bool loopWalkToXYZ(const Vector3 &destination, int destinationOffset, bool interruptible, bool runFlag, bool a5, bool *isRunningFlag);
-	bool asyncWalkToWaypoint(int waypointId, int destinationOffset, bool runFlag, bool a5);
-	void asyncWalkToXYZ(const Vector3 &destination, int destinationOffset, bool runFlag, int a6);
+	bool loopWalk(const Vector3 &destination, int proximity, bool interruptible, bool runFlag, const Vector3 &start, float targetWidth, float targetSize, bool mustReach, bool *isRunningFlag, bool async);
+	bool walkTo(bool runFlag, const Vector3 &destination, bool mustReach);
+	bool loopWalkToActor(int otherActorId, int proximity, int interruptible, bool runFlag, bool mustReach, bool *isRunningFlag);
+	bool loopWalkToItem(int itemId, int proximity, int interruptible, bool runFlag, bool mustReach, bool *isRunningFlag);
+	bool loopWalkToSceneObject(const Common::String &objectName, int proximity, bool interruptible, bool runFlag, bool mustReach, bool *isRunningFlag);
+	bool loopWalkToWaypoint(int waypointId, int proximity, int interruptible, bool runFlag, bool mustReach, bool *isRunningFlag);
+	bool loopWalkToXYZ(const Vector3 &destination, int proximity, bool interruptible, bool runFlag, bool mustReach, bool *isRunningFlag);
+	bool asyncWalkToWaypoint(int waypointId, int proximity, bool runFlag, bool mustReach);
+	void asyncWalkToXYZ(const Vector3 &destination, int proximity, bool runFlag, bool mustReach);
 	void run();
 
 	bool tick(bool forceUpdate, Common::Rect *screenRect);
@@ -178,7 +178,7 @@ public:
 	bool isMoving() const { return _isMoving; }
 	void setMoving(bool value) { _isMoving = value; }
 
-	bool inWalkLoop() const { return _inWalkLoop; }
+	bool mustReachWalkDestination() const { return _mustReachWalkDestination; }
 	bool isWalking() const;
 	bool isRunning() const;
 	void stopWalking(bool value);
@@ -264,9 +264,9 @@ private:
 	void setBoundingBox(const Vector3 &position, bool retired);
 	float distanceFromView(View *view) const;
 
-	bool walkFindU1(const Vector3 &startPosition, const Vector3 &targetPosition, float a3, Vector3 *newDestination);
-	bool walkFindU2(Vector3 *newDestination, float targetWidth, int destinationOffset, float targetSize, const Vector3 &startPosition, const Vector3 &targetPosition);
-	bool walkToNearestPoint(const Vector3 &destination, float distance);
+	bool findEmptyPositionAround(const Vector3 &startPosition, const Vector3 &targetPosition, float size, Vector3 *emptyPosition);
+	bool findNearestPosition(Vector3 *nearestPosition, float targetWidth, int proximity, float targetSize, const Vector3 &startPosition, const Vector3 &targetPosition);
+	bool stepAway(const Vector3 &destination, float distance);
 	//bool walkFindU3(int actorId, Vector3 from, int distance, Vector3 *out);
 };
 
diff --git a/engines/bladerunner/actor_walk.cpp b/engines/bladerunner/actor_walk.cpp
index 985c92f..25daef0 100644
--- a/engines/bladerunner/actor_walk.cpp
+++ b/engines/bladerunner/actor_walk.cpp
@@ -48,7 +48,7 @@ ActorWalk::ActorWalk(BladeRunnerEngine *vm) {
 
 ActorWalk::~ActorWalk() {}
 
-bool ActorWalk::setup(int actorId, bool runFlag, const Vector3 &from, const Vector3 &to, bool unk1, bool *arrived) {
+bool ActorWalk::setup(int actorId, bool runFlag, const Vector3 &from, const Vector3 &to, bool mustReach, bool *arrived) {
 	Vector3 next;
 
 	*arrived = false;
@@ -108,11 +108,11 @@ bool ActorWalk::setup(int actorId, bool runFlag, const Vector3 &from, const Vect
 	return true;
 }
 
-bool ActorWalk::tick(int actorId, float stepDistance, bool inWalkLoop) {
+bool ActorWalk::tick(int actorId, float stepDistance, bool mustReachWalkDestination) {
 	bool walkboxFound;
 
 	if (_status == 5) {
-		if (inWalkLoop) {
+		if (mustReachWalkDestination) {
 			stop(actorId, true, kAnimationModeCombatIdle, kAnimationModeIdle);
 			return true;
 		}
@@ -128,18 +128,18 @@ bool ActorWalk::tick(int actorId, float stepDistance, bool inWalkLoop) {
 		nearActorExists = true;
 		if (_vm->_sceneObjects->existsOnXZ(actorId + kSceneObjectOffsetActors, _destination.x, _destination.z, true, true)) {
 			if (actorId > 0) {
-				if (_vm->_actors[actorId]->inWalkLoop()) {
+				if (_vm->_actors[actorId]->mustReachWalkDestination()) {
 					stop(actorId, true, kAnimationModeCombatIdle, kAnimationModeIdle);
 					_nearActors.clear();
 					return true;
 				} else {
 					Vector3 newDestination;
-					findNearestEmptyPositionToOriginalDestination(actorId, newDestination);
+					findEmptyPositionAroundToOriginalDestination(actorId, newDestination);
 					_destination = newDestination;
 					return false;
 				}
 			} else {
-				if (_vm->_playerActor->inWalkLoop()) {
+				if (_vm->_playerActor->mustReachWalkDestination()) {
 					_destination = _current;
 				}
 				stop(0, true, kAnimationModeCombatIdle, kAnimationModeIdle);
@@ -284,7 +284,7 @@ void ActorWalk::load(SaveFileReadStream &f) {
 	_status = f.readInt();
 }
 
-bool ActorWalk::isXYZEmpty(float x, float y, float z, int actorId) const {
+bool ActorWalk::isXYZOccupied(float x, float y, float z, int actorId) const {
 	if (_vm->_scene->_set->findWalkbox(x, z) == -1) {
 		return true;
 	}
@@ -294,7 +294,7 @@ bool ActorWalk::isXYZEmpty(float x, float y, float z, int actorId) const {
 	return _vm->_sceneObjects->existsOnXZ(actorId + kSceneObjectOffsetActors, x, z, false, false);
 }
 
-bool ActorWalk::findNearestEmptyPosition(int actorId, const Vector3 &destination, int dist, Vector3 &out) const {
+bool ActorWalk::findEmptyPositionAround(int actorId, const Vector3 &destination, int dist, Vector3 &out) const {
 	bool inWalkbox;
 
 	int facingToMinDistance = -1;
@@ -328,7 +328,7 @@ bool ActorWalk::findNearestEmptyPosition(int actorId, const Vector3 &destination
 			break;
 		}
 
-		x = destination.x + _vm->_sinTable1024->at(facingLeft)  * dist;
+		x = destination.x + _vm->_sinTable1024->at(facingLeft) * dist;
 		z = destination.z - _vm->_cosTable1024->at(facingLeft) * dist;
 
 		if (!_vm->_sceneObjects->existsOnXZ(actorId + kSceneObjectOffsetActors, x, z, true, true) && _vm->_scene->_set->findWalkbox(x, z) >= 0) {
@@ -356,8 +356,8 @@ bool ActorWalk::findNearestEmptyPosition(int actorId, const Vector3 &destination
 	return false;
 }
 
-bool ActorWalk::findNearestEmptyPositionToOriginalDestination(int actorId, Vector3 &out) const {
-	return findNearestEmptyPosition(actorId, _originalDestination, 30, out);
+bool ActorWalk::findEmptyPositionAroundToOriginalDestination(int actorId, Vector3 &out) const {
+	return findEmptyPositionAround(actorId, _originalDestination, 30, out);
 }
 
 bool ActorWalk::addNearActors(int skipActorId) {
diff --git a/engines/bladerunner/actor_walk.h b/engines/bladerunner/actor_walk.h
index 45298e2..c0cdd93 100644
--- a/engines/bladerunner/actor_walk.h
+++ b/engines/bladerunner/actor_walk.h
@@ -49,15 +49,15 @@ public:
 	ActorWalk(BladeRunnerEngine *vm);
 	~ActorWalk();
 
-	bool setup(int actorId, bool runFlag, const Vector3 &from, const Vector3 &to, bool unk1, bool *arrived);
+	bool setup(int actorId, bool runFlag, const Vector3 &from, const Vector3 &to, bool mustReach, bool *arrived);
 	void getCurrentPosition(int actorId, Vector3 *pos, int *facing) const;
 	bool tick(int actorId, float stepDistance, bool flag);
 
 	bool isWalking() const { return _walking; }
 	bool isRunning() const { return _running; }
 
-	bool isXYZEmpty(float x, float y, float z, int actorId) const;
-	bool findNearestEmptyPosition(int actorId, const Vector3 &from, int distance, Vector3 &out) const;
+	bool isXYZOccupied(float x, float y, float z, int actorId) const;
+	bool findEmptyPositionAround(int actorId, const Vector3 &from, int distance, Vector3 &out) const;
 
 	void stop(int actorId, bool immediately, int combatAnimationMode, int animationMode);
 	void run(int actorId);
@@ -68,7 +68,7 @@ public:
 private:
 	int nextOnPath(int actorId, const Vector3 &from, const Vector3 &to, Vector3 &next) const;
 
-	bool findNearestEmptyPositionToOriginalDestination(int actorId, Vector3 &out) const;
+	bool findEmptyPositionAroundToOriginalDestination(int actorId, Vector3 &out) const;
 
 	bool addNearActors(int skipActorId);
 
diff --git a/engines/bladerunner/bladerunner.cpp b/engines/bladerunner/bladerunner.cpp
index e2510ca..9b0ffaf 100644
--- a/engines/bladerunner/bladerunner.cpp
+++ b/engines/bladerunner/bladerunner.cpp
@@ -1287,7 +1287,7 @@ void BladeRunnerEngine::handleMouseAction(int x, int y, bool mainButton, bool bu
 			handleMouseClick3DObject(sceneObjectId - kSceneObjectOffsetObjects, buttonDown, isClickable, isTarget);
 		}
 	} else if (buttonDown) {
-		if (_playerActor->inWalkLoop()) {
+		if (_playerActor->mustReachWalkDestination()) {
 			if (!_isWalkingInterruptible) {
 				return;
 			}
@@ -1579,7 +1579,7 @@ void BladeRunnerEngine::handleMouseClickActor(int actorId, bool mainButton, bool
 				if (!_combat->isActive()) {
 					_kia->openLastOpened();
 				}
-			} else if (!_playerActor->inWalkLoop()) {
+			} else if (!_playerActor->mustReachWalkDestination()) {
 				_combat->change();
 			}
 			return;
diff --git a/engines/bladerunner/combat.cpp b/engines/bladerunner/combat.cpp
index 90c879f..3bc876f 100644
--- a/engines/bladerunner/combat.cpp
+++ b/engines/bladerunner/combat.cpp
@@ -75,7 +75,7 @@ void Combat::deactivate() {
 }
 
 void Combat::change() {
-	if (!_vm->_playerActor->inWalkLoop() && _enabled) {
+	if (!_vm->_playerActor->mustReachWalkDestination() && _enabled) {
 		if (_active) {
 			deactivate();
 		} else {
diff --git a/engines/bladerunner/game_constants.h b/engines/bladerunner/game_constants.h
index 8eb4960..62a00ec 100644
--- a/engines/bladerunner/game_constants.h
+++ b/engines/bladerunner/game_constants.h
@@ -1790,7 +1790,7 @@ enum GoalClovis {
 	kGoalClovisBB11WalkToMcCoy = 101,
 	kGoalClovisBB11StopSadik = 102,
 	kGoalClovisBB11TalkWithSadik = 103,
-	kGoalClovisBB11PrepareTalkToMcCoy = 104, // bug? this is not triggered when player skips dialogue
+	kGoalClovisBB11PrepareTalkToMcCoy = 104, // bug? this is not triggered when player skips dialogue too fast
 	kGoalClovisBB11TalkToMcCoy = 105 // ends Chapter 2
 };
 
diff --git a/engines/bladerunner/script/scene/nr10.cpp b/engines/bladerunner/script/scene/nr10.cpp
index 6031952..a3f7adc 100644
--- a/engines/bladerunner/script/scene/nr10.cpp
+++ b/engines/bladerunner/script/scene/nr10.cpp
@@ -22,8 +22,6 @@
 
 #include "bladerunner/script/scene_script.h"
 
-#include "common/debug.h"
-
 namespace BladeRunner {
 
 void SceneScriptNR10::InitializeScene() {
@@ -121,8 +119,6 @@ bool SceneScriptNR10::ClickedOn2DRegion(int region) {
 }
 
 void SceneScriptNR10::SceneFrameAdvanced(int frame) {
-	debug("%i", frame);
-
 	if (frame == 122) {
 		Game_Flag_Set(kFlagNR10McCoyBlinded);
 		Actor_Set_Invisible(kActorMcCoy, true);
diff --git a/engines/bladerunner/script/script.cpp b/engines/bladerunner/script/script.cpp
index 9795e29..796b4da 100644
--- a/engines/bladerunner/script/script.cpp
+++ b/engines/bladerunner/script/script.cpp
@@ -475,8 +475,8 @@ int ScriptBase::Actor_Query_Animation_Mode(int actorId) {
 	return _vm->_actors[actorId]->getAnimationMode();
 }
 
-bool ScriptBase::Loop_Actor_Walk_To_Actor(int actorId, int otherActorId, int distance, bool interruptible, bool run) {
-	debugC(kDebugScript, "Loop_Actor_Walk_To_Actor(%d, %d, %d, %d, %d)", actorId, otherActorId, distance, interruptible, run);
+bool ScriptBase::Loop_Actor_Walk_To_Actor(int actorId, int otherActorId, int proximity, bool interruptible, bool run) {
+	debugC(kDebugScript, "Loop_Actor_Walk_To_Actor(%d, %d, %d, %d, %d)", actorId, otherActorId, proximity, interruptible, run);
 	_vm->gameWaitForActive();
 
 	if (_vm->_runningActorId == actorId) {
@@ -486,7 +486,7 @@ bool ScriptBase::Loop_Actor_Walk_To_Actor(int actorId, int otherActorId, int dis
 	_vm->_playerActorIdle = false;
 
 	bool isRunning;
-	bool result = _vm->_actors[actorId]->loopWalkToActor(otherActorId, distance, interruptible, run, true, &isRunning);
+	bool result = _vm->_actors[actorId]->loopWalkToActor(otherActorId, proximity, interruptible, run, true, &isRunning);
 
 	if (_vm->_playerActorIdle) {
 		result = true;
@@ -500,8 +500,8 @@ bool ScriptBase::Loop_Actor_Walk_To_Actor(int actorId, int otherActorId, int dis
 	return result;
 }
 
-bool ScriptBase::Loop_Actor_Walk_To_Item(int actorId, int itemId, int destinationOffset, bool interruptible, bool run) {
-	debugC(kDebugScript, "Loop_Actor_Walk_To_Item(%d, %d, %d, %d, %d)", actorId, itemId, destinationOffset, interruptible, run);
+bool ScriptBase::Loop_Actor_Walk_To_Item(int actorId, int itemId, int proximity, bool interruptible, bool run) {
+	debugC(kDebugScript, "Loop_Actor_Walk_To_Item(%d, %d, %d, %d, %d)", actorId, itemId, proximity, interruptible, run);
 	_vm->gameWaitForActive();
 
 	if (_vm->_runningActorId == actorId) {
@@ -511,7 +511,7 @@ bool ScriptBase::Loop_Actor_Walk_To_Item(int actorId, int itemId, int destinatio
 	_vm->_playerActorIdle = false;
 
 	bool isRunning;
-	bool result = _vm->_actors[actorId]->loopWalkToItem(itemId, destinationOffset, interruptible, run, true, &isRunning);
+	bool result = _vm->_actors[actorId]->loopWalkToItem(itemId, proximity, interruptible, run, true, &isRunning);
 
 	if (_vm->_playerActorIdle) {
 		result = true;
@@ -525,8 +525,8 @@ bool ScriptBase::Loop_Actor_Walk_To_Item(int actorId, int itemId, int destinatio
 	return result;
 }
 
-bool ScriptBase::Loop_Actor_Walk_To_Scene_Object(int actorId, const char *objectName, int destinationOffset, bool interruptible, bool run) {
-	debugC(kDebugScript, "Loop_Actor_Walk_To_Scene_Object(%d, %s, %d, %d, %d)", actorId, objectName, destinationOffset, interruptible, run);
+bool ScriptBase::Loop_Actor_Walk_To_Scene_Object(int actorId, const char *objectName, int proximity, bool interruptible, bool run) {
+	debugC(kDebugScript, "Loop_Actor_Walk_To_Scene_Object(%d, %s, %d, %d, %d)", actorId, objectName, proximity, interruptible, run);
 	_vm->gameWaitForActive();
 
 	if (_vm->_runningActorId == actorId) {
@@ -536,7 +536,7 @@ bool ScriptBase::Loop_Actor_Walk_To_Scene_Object(int actorId, const char *object
 	_vm->_playerActorIdle = false;
 
 	bool isRunning;
-	bool result = _vm->_actors[actorId]->loopWalkToSceneObject(objectName, destinationOffset, interruptible, run, true, &isRunning);
+	bool result = _vm->_actors[actorId]->loopWalkToSceneObject(objectName, proximity, interruptible, run, true, &isRunning);
 
 	if (_vm->_playerActorIdle) {
 		result = true;
@@ -550,8 +550,8 @@ bool ScriptBase::Loop_Actor_Walk_To_Scene_Object(int actorId, const char *object
 	return result;
 }
 
-bool ScriptBase::Loop_Actor_Walk_To_Waypoint(int actorId, int waypointId, int destinationOffset, bool interruptible, bool run) {
-	debugC(kDebugScript, "Loop_Actor_Walk_To_Waypoint(%d, %d, %d, %d, %d)", actorId, waypointId, destinationOffset, interruptible, run);
+bool ScriptBase::Loop_Actor_Walk_To_Waypoint(int actorId, int waypointId, int proximity, bool interruptible, bool run) {
+	debugC(kDebugScript, "Loop_Actor_Walk_To_Waypoint(%d, %d, %d, %d, %d)", actorId, waypointId, proximity, interruptible, run);
 	_vm->gameWaitForActive();
 
 	if (_vm->_runningActorId == actorId) {
@@ -561,7 +561,7 @@ bool ScriptBase::Loop_Actor_Walk_To_Waypoint(int actorId, int waypointId, int de
 	_vm->_playerActorIdle = false;
 
 	bool isRunning;
-	bool result = _vm->_actors[actorId]->loopWalkToWaypoint(waypointId, destinationOffset, interruptible, run, true, &isRunning);
+	bool result = _vm->_actors[actorId]->loopWalkToWaypoint(waypointId, proximity, interruptible, run, true, &isRunning);
 
 	if (_vm->_playerActorIdle) {
 		result = true;
@@ -575,8 +575,8 @@ bool ScriptBase::Loop_Actor_Walk_To_Waypoint(int actorId, int waypointId, int de
 	return result;
 }
 
-bool ScriptBase::Loop_Actor_Walk_To_XYZ(int actorId, float x, float y, float z, int destinationOffset, bool interruptible, bool run, int a7) {
-	debugC(kDebugScript, "Loop_Actor_Walk_To_XYZ(%d, %f, %f, %f, %d, %d, %d, %d)", actorId, x, y, z, destinationOffset, interruptible, run, a7);
+bool ScriptBase::Loop_Actor_Walk_To_XYZ(int actorId, float x, float y, float z, int proximity, bool interruptible, bool run, bool a7) {
+	debugC(kDebugScript, "Loop_Actor_Walk_To_XYZ(%d, %f, %f, %f, %d, %d, %d, %d)", actorId, x, y, z, proximity, interruptible, run, a7);
 	_vm->gameWaitForActive();
 
 	if (_vm->_runningActorId == actorId) {
@@ -589,7 +589,7 @@ bool ScriptBase::Loop_Actor_Walk_To_XYZ(int actorId, float x, float y, float z,
 	_vm->_playerActorIdle = false;
 
 	bool isRunning;
-	bool result = _vm->_actors[actorId]->loopWalkToXYZ(Vector3(x, y, z), destinationOffset, interruptible, run, true, &isRunning);
+	bool result = _vm->_actors[actorId]->loopWalkToXYZ(Vector3(x, y, z), proximity, interruptible, run, true, &isRunning);
 
 	if (_vm->_playerActorIdle) {
 		result = true;
@@ -603,26 +603,26 @@ bool ScriptBase::Loop_Actor_Walk_To_XYZ(int actorId, float x, float y, float z,
 	return result;
 }
 
-void ScriptBase::Async_Actor_Walk_To_Waypoint(int actorId, int waypointId, int destinationOffset, bool run) {
-	debugC(kDebugScript, "Async_Actor_Walk_To_Waypoint(%d, %d, %d, %d)", actorId, waypointId, destinationOffset, run);
+void ScriptBase::Async_Actor_Walk_To_Waypoint(int actorId, int waypointId, int proximity, bool run) {
+	debugC(kDebugScript, "Async_Actor_Walk_To_Waypoint(%d, %d, %d, %d)", actorId, waypointId, proximity, run);
 	_vm->gameWaitForActive();
 
 	if (_vm->_runningActorId == actorId) {
 		run = true;
 	}
 
-	_vm->_actors[actorId]->asyncWalkToWaypoint(waypointId, destinationOffset, run, true);
+	_vm->_actors[actorId]->asyncWalkToWaypoint(waypointId, proximity, run, true);
 }
 
-void ScriptBase::Async_Actor_Walk_To_XYZ(int actorId, float x, float y, float z, int destinationOffset, bool run) {
-	debugC(kDebugScript, "Async_Actor_Walk_To_XYZ(%d, %f, %f, %f, %d, %d)", actorId, x, y, z, destinationOffset, run);
+void ScriptBase::Async_Actor_Walk_To_XYZ(int actorId, float x, float y, float z, int proximity, bool run) {
+	debugC(kDebugScript, "Async_Actor_Walk_To_XYZ(%d, %f, %f, %f, %d, %d)", actorId, x, y, z, proximity, run);
 	_vm->gameWaitForActive();
 
 	if (_vm->_runningActorId == actorId) {
 		run = true;
 	}
 
-	_vm->_actors[actorId]->asyncWalkToXYZ(Vector3(x, y, z), destinationOffset, run, true);
+	_vm->_actors[actorId]->asyncWalkToXYZ(Vector3(x, y, z), proximity, run, true);
 }
 
 void ScriptBase::Actor_Force_Stop_Walking(int actorId) {
diff --git a/engines/bladerunner/script/script.h b/engines/bladerunner/script/script.h
index e2e3e27..3511461 100644
--- a/engines/bladerunner/script/script.h
+++ b/engines/bladerunner/script/script.h
@@ -103,13 +103,13 @@ protected:
 	int Slice_Animation_Query_Number_Of_Frames(int animationId);
 	void Actor_Change_Animation_Mode(int actorId, int animationMode);
 	int Actor_Query_Animation_Mode(int actorId);
-	bool Loop_Actor_Walk_To_Actor(int actorId, int otherActorId, int distance, bool interruptible, bool run);
-	bool Loop_Actor_Walk_To_Item(int actorId, int itemId, int destinationOffset, bool interruptible, bool run);
-	bool Loop_Actor_Walk_To_Scene_Object(int actorId, const char *objectName, int distance, bool interruptible, bool run);
-	bool Loop_Actor_Walk_To_Waypoint(int actorId, int waypointId, int destinationOffset, bool interruptible, bool run);
-	bool Loop_Actor_Walk_To_XYZ(int actorId, float x, float y, float z, int destinationOffset, bool interruptible, bool run, int a7);
-	void Async_Actor_Walk_To_Waypoint(int actorId, int waypointId, int destinationOffset, bool run);
-	void Async_Actor_Walk_To_XYZ(int actorId, float x, float y, float z, int destinationOffset, bool run);
+	bool Loop_Actor_Walk_To_Actor(int actorId, int otherActorId, int proximity, bool interruptible, bool run);
+	bool Loop_Actor_Walk_To_Item(int actorId, int itemId, int proximity, bool interruptible, bool run);
+	bool Loop_Actor_Walk_To_Scene_Object(int actorId, const char *objectName, int proximity, bool interruptible, bool run);
+	bool Loop_Actor_Walk_To_Waypoint(int actorId, int waypointId, int proximity, bool interruptible, bool run);
+	bool Loop_Actor_Walk_To_XYZ(int actorId, float x, float y, float z, int proximity, bool interruptible, bool run, bool a7);
+	void Async_Actor_Walk_To_Waypoint(int actorId, int waypointId, int proximity, bool run);
+	void Async_Actor_Walk_To_XYZ(int actorId, float x, float y, float z, int proximity, bool run);
 	void Actor_Force_Stop_Walking(int actorId);
 	void Loop_Actor_Travel_Stairs(int actorId, int stepCount, bool up, int animationModeEnd);
 	void Loop_Actor_Travel_Ladder(int actorId, int stepCount, bool up, int animationModeEnd);


Commit: 315100861c05365dd27013be1885f2d67c9c032c
    https://github.com/scummvm/scummvm/commit/315100861c05365dd27013be1885f2d67c9c032c
Author: Peter Kohaut (peter.kohaut at gmail.com)
Date: 2019-02-02T00:50:16+01:00

Commit Message:
BLADERUNNER: Fixed issue with untargeting objects

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


diff --git a/engines/bladerunner/script/script.cpp b/engines/bladerunner/script/script.cpp
index 796b4da..983d998 100644
--- a/engines/bladerunner/script/script.cpp
+++ b/engines/bladerunner/script/script.cpp
@@ -1498,7 +1498,7 @@ void ScriptBase::Un_Combat_Target_Object(const char *objectName) {
 	int objectId = _vm->_scene->findObject(objectName);
 	if (objectId == -1)
 		return;
-	_vm->_scene->objectSetIsTarget(objectId, true, !_vm->_sceneIsLoading);
+	_vm->_scene->objectSetIsTarget(objectId, false, !_vm->_sceneIsLoading);
 }
 
 void ScriptBase::Set_Fade_Color(float r, float g, float b) {


Commit: a5854b524b4251eb4636063fbee37f07d5f86168
    https://github.com/scummvm/scummvm/commit/a5854b524b4251eb4636063fbee37f07d5f86168
Author: Peter Kohaut (peter.kohaut at gmail.com)
Date: 2019-02-02T00:50:16+01:00

Commit Message:
BLADERUNNER: Fixed resource leak in game listing

This was causing issues with loading / saving games

Changed paths:
    engines/bladerunner/savefile.cpp


diff --git a/engines/bladerunner/savefile.cpp b/engines/bladerunner/savefile.cpp
index 55670a1..33a91b8 100644
--- a/engines/bladerunner/savefile.cpp
+++ b/engines/bladerunner/savefile.cpp
@@ -31,6 +31,9 @@
 
 #include "graphics/thumbnail.h"
 
+
+
+#include "common/debug.h"
 namespace BladeRunner {
 
 SaveStateList SaveFileManager::list(const Common::String &target) {
@@ -41,6 +44,7 @@ SaveStateList SaveFileManager::list(const Common::String &target) {
 	for (Common::StringArray::const_iterator fileName = files.begin(); fileName != files.end(); ++fileName) {
 		Common::InSaveFile *saveFile = saveFileMan->openForLoading(*fileName);
 		if (saveFile == nullptr || saveFile->err()) {
+			delete saveFile;
 			continue;
 		}
 
@@ -49,6 +53,8 @@ SaveStateList SaveFileManager::list(const Common::String &target) {
 
 		int slotNum = atoi(fileName->c_str() + fileName->size() - 3);
 		saveList.push_back(SaveStateDescriptor(slotNum, header._name));
+
+		delete saveFile;
 	}
 
 	Common::sort(saveList.begin(), saveList.end(), SaveStateDescriptorSlotComparator());


Commit: 19d92484fdbae556a5238b13535e34f8436f399b
    https://github.com/scummvm/scummvm/commit/19d92484fdbae556a5238b13535e34f8436f399b
Author: Peter Kohaut (peter.kohaut at gmail.com)
Date: 2019-02-02T00:50:16+01:00

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

Changed paths:
    engines/bladerunner/game_constants.h
    engines/bladerunner/script/ai/bullet_bob.cpp
    engines/bladerunner/script/ai/free_slot_a.cpp
    engines/bladerunner/script/ai/mutant1.cpp
    engines/bladerunner/script/ai/officer_leary.cpp
    engines/bladerunner/script/ai/rajif.cpp
    engines/bladerunner/script/ai/runciter.cpp
    engines/bladerunner/script/scene/ct04.cpp
    engines/bladerunner/script/scene/dr06.cpp
    engines/bladerunner/script/scene/hf05.cpp
    engines/bladerunner/script/scene/hf07.cpp
    engines/bladerunner/script/scene/ma02.cpp
    engines/bladerunner/script/scene/ma06.cpp
    engines/bladerunner/script/scene/ma07.cpp
    engines/bladerunner/script/scene/rc01.cpp
    engines/bladerunner/script/scene/rc02.cpp
    engines/bladerunner/script/scene/rc04.cpp
    engines/bladerunner/script/scene/ug02.cpp
    engines/bladerunner/script/scene/ug05.cpp
    engines/bladerunner/script/scene/ug06.cpp
    engines/bladerunner/script/scene/ug07.cpp
    engines/bladerunner/script/scene/ug08.cpp
    engines/bladerunner/script/scene/ug09.cpp
    engines/bladerunner/script/scene/ug13.cpp
    engines/bladerunner/script/scene/ug14.cpp
    engines/bladerunner/script/scene/ug15.cpp
    engines/bladerunner/script/scene_script.h


diff --git a/engines/bladerunner/game_constants.h b/engines/bladerunner/game_constants.h
index 62a00ec..7aabef9 100644
--- a/engines/bladerunner/game_constants.h
+++ b/engines/bladerunner/game_constants.h
@@ -626,7 +626,7 @@ enum Flags {
 	kFlagSteeleInChinaTown = 184,
 	kFlagSteeleInPoliceStation = 185,
 	kFlagRC01PoliceDone = 186,
-	kFlagRC02TalkedToRunciter = 187,
+	kFlagRC02RunciterTalk1 = 187,
 	// 188 is never used
 	// 189 is never used
 	kFlagRC02ShellCasingsTaken = 190,
@@ -860,7 +860,7 @@ enum Flags {
 	kFlagUG09ToUG07 = 428,
 	kFlagUG08toUG13 = 429,
 	kFlagUG13toUG08 = 430,
-
+	kFlagUB08ElevatorUp = 431,
 	kFlagUG09toCT12 = 432,
 	kFlagCT12ToUG09 = 433,
 	kFlagUG13toUG18 = 434, // is never checked
@@ -933,6 +933,7 @@ enum Flags {
 	kFlagTB06DogCollarTaken = 519,
 	kFlagTB06KitchenBoxTaken = 520,
 	kFlagHC03TrapDoorOpened = 521,
+	kFlagUG06Chapter4Started = 524,
 	kFlagCT10Entered = 525,
 	kFlagHF02toHF03 = 527,
 	kFlagHF03toHF02 = 528,
@@ -958,6 +959,7 @@ enum Flags {
 	kFlagMcCoyTiedDown = 550,
 	kFlagUG16toDR06 = 551, // is never checked
 	kFlagDR06toUG16 = 552,
+	kFlagUG13Entered = 553,
 	kFlagDR01toCT11 = 558,
 	kFlagNR02GordoLeaveLighter = 561,
 	kFlagHF05CrazyLegsTalk1 = 562,
@@ -992,6 +994,7 @@ enum Flags {
 	kFlagNR04EarlyQStungByScorpions = 606,
 	kFlagTB07toTB02 = 608,
 	kFlagNR04McCoyAimedAtEarlyQ = 609,
+	kFlagUG08Entered = 610,
 	kFlagNR03HanoiTalk = 611,
 	kFlagTB07RachaelTalk = 612,
 	kFlagHF03LucyTalk = 613,
@@ -1004,6 +1007,7 @@ enum Flags {
 	kFlagNR08Available = 620,
 	// 621 is never used
 	kFlagNR08TouchedDektora = 622,
+	kFlagUG07Empty = 623,
 	kFlagTB07TyrellMeeting = 625,
 	kFlagNR01McCoyIsDrugged = 627,
 	kFlagNR01DektoraFall = 632,
@@ -1025,6 +1029,7 @@ enum Flags {
 	kFlagMA04PhoneMessageFromLucy = 650,
 	kFlagNR08McCoyWatchingShow = 651,
 	kFlagCrazylegsArrestedTalk = 652,
+	kFlagMA02RajifTalk = 655,
 	kFlagUG02RagiationGooglesTaken = 656,
 	kFlagNR11BreakWindow = 659,
 	kFlagDNARowAvailableTalk = 660,
@@ -1044,6 +1049,9 @@ enum Flags {
 	kFlagUG03DeadHomeless = 693,
 	kFlagUG14DeadHomeless = 694,
 	kFlagBulletBobDead = 702,
+	kFlagRC02EnteredChapter4 = 704,
+	kFlagRC02RunciterTalkWithGun = 705,
+	kFlagRC02RunciterTalk2 = 706,
 	kFlagTB06PhotographTalk1 = 707,
 	kFlagUG02AmmoTaken = 708,
 	kFlagRC51Discovered = 709,
@@ -1275,27 +1283,27 @@ enum Scenes {
 	kSceneRC03 = 80, // Bullet Bob's Runner Surplus - Outside
 	kSceneRC04 = 81, // Bullet Bob's Runner Surplus - Inside
 	kSceneTB02 = 82, // Tyrell Building - Reception
-	kSceneTB03 = 83,
+	kSceneTB03 = 83, // Tyrell Building - Reception back
 	kSceneTB05 = 84, // Tyrell Building - Grav Test Lab - Iutside
 	kSceneTB06 = 85, // Tyrell Building - Grav Test Lab - Inside
-	kSceneUG01 = 86, // Underground - Under Bullet Bob entrance
-	kSceneUG02 = 87, // Underground - Under Green pawn
-	kSceneUG03 = 88,
-	kSceneUG04 = 89,
-	kSceneUG05 = 90,
-	kSceneUG06 = 91,
-	kSceneUG07 = 92,
-	kSceneUG08 = 93,
-	kSceneUG09 = 94,
-	kSceneUG10 = 95, // Undergound - Bridge
-	kSceneUG12 = 96,
-	kSceneUG13 = 97,
+	kSceneUG01 = 86, // Underground - Under RC03
+	kSceneUG02 = 87, // Underground - Under HC03
+	kSceneUG03 = 88, // Underground - Chair
+	kSceneUG04 = 89, // Underground - Rails with crash - start
+	kSceneUG05 = 90, // Underground - Under HF07 - Rails with cars
+	kSceneUG06 = 91, // Underground - Under NR01 - Metro entrance
+	kSceneUG07 = 92, // Underground - Pipe
+	kSceneUG08 = 93, // Underground - Elevator
+	kSceneUG09 = 94, // Underground - Behind CT12
+	kSceneUG10 = 95, // Underground - Moving bridge
+	kSceneUG12 = 96, // Underground - Gate
+	kSceneUG13 = 97, // Underground - Homeless' living room
 	kSceneUG14 = 98,
 	kSceneUG15 = 99,
-	kSceneUG16 = 100,
-	kSceneUG17 = 101,
-	kSceneUG18 = 102,
-	kSceneUG19 = 103,
+	kSceneUG16 = 100, // Underground - Under DR06
+	kSceneUG17 = 101, // Underground - Under TB03
+	kSceneUG18 = 102, // Underground - Pit
+	kSceneUG19 = 103, // Underground - Under MA07
 	kSceneBB51 = 104, // Bradbury Building - Billiard room - Back
 	kSceneCT51 = 105, // Chinatown - Yukon Hotel - Backroom - back
 	kSceneHC04 = 106, // Hawker's Circle - Kingston kitchen
@@ -1305,8 +1313,7 @@ enum Scenes {
 	kSceneBB12 = 120  // Bradbury Building - Monkey room
 };
 
-enum Sets
-{
+enum Sets {
 	kSetAR01_AR02 = 0,
 	kSetBB02_BB04_BB06_BB51 = 1,
 	kSetBB06_BB07 = 2, //BB06
@@ -1862,15 +1869,17 @@ enum GoalBulletBob {
 	kGoalBulletBobDefault = 0,
 	kGoalBulletBobWarningMcCoy = 1,
 	kGoalBulletBobShootMcCoy = 2,
-	kGoalBulletBobShotMcCoy = 3, // has no use
-	kGoalBulletBobDead = 4
+	kGoalBulletBobWillShotMcCoy = 3, // has no use
+	kGoalBulletBobDead = 4,
+	kGoalBulletBobShotMcCoy = 6,
+	kGoalBulletBobGone = 99
 };
 
 enum GoalRunciter {
 	kGoalRunciterDefault = 0,
-	kGoalRunciterWalkAroundRC02 = 1,
+	kGoalRunciterRC02WalkAround = 1,
 	kGoalRunciterGoToFreeSlotGH = 2,
-	kGoalRunciterAtShop = 300,
+	kGoalRunciterRC02Wait = 300,
 	kGoalRunciterDead = 599
 };
 
diff --git a/engines/bladerunner/script/ai/bullet_bob.cpp b/engines/bladerunner/script/ai/bullet_bob.cpp
index 1a97a82..75acdfd 100644
--- a/engines/bladerunner/script/ai/bullet_bob.cpp
+++ b/engines/bladerunner/script/ai/bullet_bob.cpp
@@ -79,7 +79,7 @@ bool AIScriptBulletBob::Update() {
 		Actor_Face_Heading(kActorBulletBob, 208, false);
 		_animationFrame = 0;
 		_animationState = 2;
-		Actor_Set_Goal_Number(kActorBulletBob, kGoalBulletBobShotMcCoy);
+		Actor_Set_Goal_Number(kActorBulletBob, kGoalBulletBobWillShotMcCoy);
 		Game_Flag_Set(kFlagRC04BobShootMcCoy);
 		return true;
 	}
@@ -142,7 +142,7 @@ bool AIScriptBulletBob::ShotAtAndHit() {
 	Global_Variable_Increment(kVariableBobShot, 1);
 	if (Global_Variable_Query(kVariableBobShot) > 0) {
 		Actor_Set_Targetable(kActorBulletBob, false);
-		Actor_Set_Goal_Number(kActorBulletBob, 99);
+		Actor_Set_Goal_Number(kActorBulletBob, kGoalBulletBobGone);
 		_animationFrame = 0;
  		_animationState = 3;
 		Ambient_Sounds_Play_Speech_Sound(kActorGordo, 9000, 100, 0, 0, 0); // not a typo, it's really from Gordo
@@ -178,7 +178,7 @@ bool AIScriptBulletBob::GoalChanged(int currentGoalNumber, int newGoalNumber) {
 		return true;
 	}
 
-	if (newGoalNumber == kGoalBulletBobDead
+	if ( newGoalNumber == kGoalBulletBobDead
 	 && !Actor_Clue_Query(kActorMcCoy, kClueVKBobGorskyReplicant)
 	) {
 		Delay(2000);
@@ -189,11 +189,11 @@ bool AIScriptBulletBob::GoalChanged(int currentGoalNumber, int newGoalNumber) {
 		return true;
 	}
 
-	if (newGoalNumber == 6) {
+	if (newGoalNumber == kGoalBulletBobShotMcCoy) {
 		Scene_Exits_Disable();
 		Actor_Force_Stop_Walking(kActorMcCoy);
 		Ambient_Sounds_Play_Speech_Sound(kActorMcCoy, 9900, 100, 0, 0, 0);
-		Actor_Change_Animation_Mode(kActorMcCoy, 48);
+		Actor_Change_Animation_Mode(kActorMcCoy, kAnimationModeDie);
 		Actor_Retired_Here(kActorMcCoy, 6, 6, 1, -1);
 		Scene_Exits_Enable();
 		return true;
@@ -268,7 +268,7 @@ bool AIScriptBulletBob::UpdateAnimation(int *animation, int *frame) {
 		}
 		if (_animationFrame == 5) {
 			Sound_Play(493, 90, 0, 0, 50);
-			Actor_Set_Goal_Number(kActorBulletBob, 6);
+			Actor_Set_Goal_Number(kActorBulletBob, kGoalBulletBobShotMcCoy);
 		}
 		break;
 
diff --git a/engines/bladerunner/script/ai/free_slot_a.cpp b/engines/bladerunner/script/ai/free_slot_a.cpp
index f673860..6c3e9e2 100644
--- a/engines/bladerunner/script/ai/free_slot_a.cpp
+++ b/engines/bladerunner/script/ai/free_slot_a.cpp
@@ -51,9 +51,15 @@ 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) == kSceneUG02
+		 && Actor_Query_Which_Set_In(kActorFreeSlotA) == kSceneUG02
+		) {
 			int goal = Actor_Query_Goal_Number(kActorFreeSlotA);
-			if ((goal == 302 || goal == 303) && Actor_Query_Inch_Distance_From_Actor(kActorFreeSlotA, kActorMcCoy) <= 48) {
+			if ((goal == 302
+			  || goal == 303
+			 )
+			 && Actor_Query_Inch_Distance_From_Actor(kActorFreeSlotA, kActorMcCoy) <= 48
+			) {
 				Actor_Set_Goal_Number(kActorFreeSlotA, 304);
 			} else if (goal == 309) {
 				float x, y, z;
@@ -72,7 +78,8 @@ bool AIScriptFreeSlotA::Update() {
 			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_Query_Inch_Distance_From_Actor(kActorFreeSlotA, kActorMcCoy) <= 48
+				) {
 					Actor_Set_Goal_Number(kActorFreeSlotA, 308);
 				}
 				break;
diff --git a/engines/bladerunner/script/ai/mutant1.cpp b/engines/bladerunner/script/ai/mutant1.cpp
index fa9b736..3849cfc 100644
--- a/engines/bladerunner/script/ai/mutant1.cpp
+++ b/engines/bladerunner/script/ai/mutant1.cpp
@@ -295,7 +295,7 @@ bool AIScriptMutant1::GoalChanged(int currentGoalNumber, int newGoalNumber) {
 			break;
 
 		case 8:
-			if (Game_Flag_Query(623) == 1) {
+			if (Game_Flag_Query(kFlagUG07Empty)) {
 				AI_Movement_Track_Append(kActorMutant1, 418, 0);
 				AI_Movement_Track_Append(kActorMutant1, 417, 0);
 				AI_Movement_Track_Append(kActorMutant1, 539, 0);
diff --git a/engines/bladerunner/script/ai/officer_leary.cpp b/engines/bladerunner/script/ai/officer_leary.cpp
index 0348806..718a39a 100644
--- a/engines/bladerunner/script/ai/officer_leary.cpp
+++ b/engines/bladerunner/script/ai/officer_leary.cpp
@@ -91,7 +91,7 @@ bool AIScriptOfficerLeary::Update() {
 		return false;
 	}
 
-	if ( Game_Flag_Query(623)
+	if ( Game_Flag_Query(kFlagUG07Empty)
 	 && !Game_Flag_Query(664)
 	) {
 		Game_Flag_Set(664);
diff --git a/engines/bladerunner/script/ai/rajif.cpp b/engines/bladerunner/script/ai/rajif.cpp
index 26cf412..3703e74 100644
--- a/engines/bladerunner/script/ai/rajif.cpp
+++ b/engines/bladerunner/script/ai/rajif.cpp
@@ -37,7 +37,9 @@ void AIScriptRajif::Initialize() {
 }
 
 bool AIScriptRajif::Update() {
-	if (Global_Variable_Query(kVariableChapter) == 5 && Actor_Query_Goal_Number(kActorRajif) < 400)
+	if (Global_Variable_Query(kVariableChapter) == 5
+	 && Actor_Query_Goal_Number(kActorRajif) < 400
+	)
 		Actor_Set_Goal_Number(kActorRajif, 599);
 
 	return false;
@@ -98,6 +100,7 @@ bool AIScriptRajif::GoalChanged(int currentGoalNumber, int newGoalNumber) {
 		Actor_Change_Animation_Mode(kActorRajif, 0);
 		return true;
 	}
+
 	if (newGoalNumber == 599) {
 		Actor_Put_In_Set(kActorRajif, kSetFreeSlotI);
 		Actor_Set_At_Waypoint(kActorRajif, 41, 0);
diff --git a/engines/bladerunner/script/ai/runciter.cpp b/engines/bladerunner/script/ai/runciter.cpp
index 8087489..11ad906 100644
--- a/engines/bladerunner/script/ai/runciter.cpp
+++ b/engines/bladerunner/script/ai/runciter.cpp
@@ -57,19 +57,21 @@ bool AIScriptRunciter::Update() {
 	) {
 		Actor_Set_Goal_Number(kActorRunciter, kGoalRunciterGoToFreeSlotGH);
 	}
+
 	if (Global_Variable_Query(kVariableChapter) == 4
-	 && Actor_Query_Goal_Number(kActorRunciter) < 300
+	 && Actor_Query_Goal_Number(kActorRunciter) < kGoalRunciterRC02Wait
 	) {
-		Actor_Set_Goal_Number(kActorRunciter, 300);
+		Actor_Set_Goal_Number(kActorRunciter, kGoalRunciterRC02Wait);
 	}
+
 	return false;
 }
 
 void AIScriptRunciter::TimerExpired(int timer) {}
 
 void AIScriptRunciter::CompletedMovementTrack() {
-	if (Actor_Query_Goal_Number(kActorRunciter) == 1) {
-		if (Player_Query_Current_Scene() == 79) {
+	if (Actor_Query_Goal_Number(kActorRunciter) == kGoalRunciterRC02WalkAround) {
+		if (Player_Query_Current_Scene() == kSceneRC02) {
 			switch (Random_Query(1, 5)) {
 			case 2:
 			case 3:
@@ -85,7 +87,7 @@ void AIScriptRunciter::CompletedMovementTrack() {
 			}
 		}
 		Actor_Set_Goal_Number(kActorRunciter, 99);
-		Actor_Set_Goal_Number(kActorRunciter, 1);
+		Actor_Set_Goal_Number(kActorRunciter, kGoalRunciterRC02WalkAround);
 		//return true;
 	}
 	//return false;
@@ -102,12 +104,15 @@ void AIScriptRunciter::OtherAgentEnteredThisScene(int otherActorId) {}
 void AIScriptRunciter::OtherAgentExitedThisScene(int otherActorId) {}
 
 void AIScriptRunciter::OtherAgentEnteredCombatMode(int otherActorId, int combatMode) {
-	if (Actor_Query_Goal_Number(kActorRunciter) == 300 && combatMode == 1 && !Game_Flag_Query(705)) {
+	if ( Actor_Query_Goal_Number(kActorRunciter) == kGoalRunciterRC02Wait
+	 &&  combatMode
+	 && !Game_Flag_Query(kFlagRC02RunciterTalkWithGun)
+	) {
 		Actor_Set_Targetable(kActorRunciter, true);
 		Actor_Face_Actor(kActorRunciter, kActorMcCoy, true);
 		Actor_Says(kActorRunciter, 420, 12);
 		Actor_Face_Actor(kActorMcCoy, kActorRunciter, true);
-		Actor_Change_Animation_Mode(kActorMcCoy, 5);
+		Actor_Change_Animation_Mode(kActorMcCoy, kAnimationModeCombatAim);
 		if (Actor_Clue_Query(kActorMcCoy, kClueZubensMotive)) {
 			Actor_Says(kActorMcCoy, 4770, -1);
 			Actor_Says(kActorRunciter, 590, 13);
@@ -145,7 +150,7 @@ void AIScriptRunciter::OtherAgentEnteredCombatMode(int otherActorId, int combatM
 			Actor_Says(kActorRunciter, 530, 18);
 			Actor_Says(kActorRunciter, 540, 16);
 		}
-		Game_Flag_Set(705);
+		Game_Flag_Set(kFlagRC02RunciterTalkWithGun);
 	}
 }
 
@@ -180,7 +185,8 @@ bool AIScriptRunciter::GoalChanged(int currentGoalNumber, int newGoalNumber) {
 		Actor_Set_At_Waypoint(kActorRunciter, 92, 567);
 		return false;
 	}
-	if (newGoalNumber == kGoalRunciterWalkAroundRC02) {
+
+	if (newGoalNumber == kGoalRunciterRC02WalkAround) {
 		AI_Movement_Track_Flush(kActorRunciter);
 		if (Random_Query(0, 1) == 1) {
 			if (Random_Query(0, 1) == 0) {
@@ -198,6 +204,7 @@ bool AIScriptRunciter::GoalChanged(int currentGoalNumber, int newGoalNumber) {
 		AI_Movement_Track_Repeat(kActorRunciter);
 		return true;
 	}
+
 	if (newGoalNumber == kGoalRunciterGoToFreeSlotGH) {
 		AI_Movement_Track_Flush(kActorRunciter);
 		AI_Movement_Track_Append(kActorRunciter, 39, 120);
@@ -205,7 +212,8 @@ bool AIScriptRunciter::GoalChanged(int currentGoalNumber, int newGoalNumber) {
 		AI_Movement_Track_Repeat(kActorRunciter);
 		return false;
 	}
-	if (newGoalNumber == kGoalRunciterAtShop) {
+
+	if (newGoalNumber == kGoalRunciterRC02Wait) {
 		Actor_Put_In_Set(kActorRunciter, kSetRC02_RC51);
 		Actor_Set_At_Waypoint(kActorRunciter, 93, 1007);
 		return false;
@@ -214,77 +222,95 @@ bool AIScriptRunciter::GoalChanged(int currentGoalNumber, int newGoalNumber) {
 }
 
 bool AIScriptRunciter::UpdateAnimation(int *animation, int *frame) {
-
 	switch (_animationState) {
-	case kRunciterStateDead:
-		*animation = 528;
-		_animationFrame = Slice_Animation_Query_Number_Of_Frames(528) - 1;
-		*frame = _animationFrame;
-		break;
-	case kRunciterStateDying:
-		*animation = 528;
-		_animationFrame++;
-		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(528) - 1) {
-			*animation = 528;
-			_animationState = kRunciterStateDead;
-		}
-		*frame = _animationFrame;
-		break;
-	case 13:
+	case kRunciterStateIdle:
 		if (var_45CD78 == 0) {
-			_animationFrame = 0;
-			_animationState = _animationStateNext;
-			*animation = _animationNext;
+			*animation = 529;
+			if (var_45CD84) {
+				var_45CD84--;
+			} else {
+				_animationFrame += var_45CD80;
+				if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(529)) {
+					_animationFrame = 0;
+				}
+				if (_animationFrame < 0) {
+					_animationFrame = Slice_Animation_Query_Number_Of_Frames(529) - 1;
+				}
+				--var_45CD7C;
+				if (var_45CD7C == 0) {
+					var_45CD80 = 2 * Random_Query(0, 1) - 1;
+					var_45CD7C = Random_Query(6, 14);
+					var_45CD84 = Random_Query(0, 4);
+				}
+				if (_animationFrame == 0) {
+					if (Random_Query(0, 1) == 1) {
+						var_45CD78 = Random_Query(1, 2);
+						var_45CD80 = 1;
+						var_45CD84 = 0;
+					}
+				}
+			}
 		} else if (var_45CD78 == 1) {
 			*animation = 530;
-			_animationFrame += 3;
+			_animationFrame++;
 			if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(530)) {
 				_animationFrame = 0;
-				_animationState = _animationStateNext;
-				*animation = _animationNext;
+				var_45CD78 = 0;
+				*animation = 529;
+				var_45CD7C = Random_Query(6, 14);
+				var_45CD80 = 2 * Random_Query(0, 1) - 1;
 			}
 		} else if (var_45CD78 == 2) {
 			*animation = 531;
-			_animationFrame -= 3;
-			if (_animationFrame - 3 < 0) {
-				_animationFrame = 0;
-				_animationState = _animationStateNext;
-				*animation = _animationNext;
+			if (var_45CD84) {
+				var_45CD84--;
+			} else {
+				_animationFrame += var_45CD80;
+				if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation) - 1) {
+					var_45CD84 = Random_Query(5, 15);
+					var_45CD80 = -1;
+				}
+				if (_animationFrame <= 0) {
+					_animationFrame = 0;
+					var_45CD78 = 0;
+					*animation = 529;
+					var_45CD7C = Random_Query(6, 14);
+					var_45CD80 = 2 * Random_Query(0, 1) - 1;
+				}
 			}
 		}
 		*frame = _animationFrame;
 		break;
-	case 12:
-		*animation = 532;
+
+	case kRunciterStateWalking:
+		*animation = 526;
 		_animationFrame++;
-		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(532)) {
-			*animation = 529;
-			_animationState = 0;
+		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(526)) {
 			_animationFrame = 0;
-			var_45CD78 = 0;
-			Actor_Change_Animation_Mode(kActorRunciter, kAnimationModeCombatIdle);
 		}
 		*frame = _animationFrame;
 		break;
-	case 11:
-		*animation = 541;
-		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(541)) {
+
+	case 2:
+		*animation = 533;
+		_animationFrame++;
+		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(533)) {
 			_animationFrame = 0;
 			if (var_45CD88) {
 				*animation = 529;
 				_animationState = 0;
 				var_45CD78 = 0;
 			} else {
-				*animation = 533;
-				_animationState = 2;
+				_animationState = 4;
 			}
 		}
 		*frame = _animationFrame;
 		break;
-	case 10:
-		*animation = 540;
+
+	case 4:
+		*animation = 534;
 		_animationFrame++;
-		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(540)) {
+		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(534)) {
 			_animationFrame = 0;
 			if (var_45CD88) {
 				*animation = 529;
@@ -297,10 +323,11 @@ bool AIScriptRunciter::UpdateAnimation(int *animation, int *frame) {
 		}
 		*frame = _animationFrame;
 		break;
-	case 9:
-		*animation = 539;
+
+	case 5:
+		*animation = 535;
 		_animationFrame++;
-		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(539)) {
+		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(535)) {
 			_animationFrame = 0;
 			if (var_45CD88) {
 				*animation = 529;
@@ -313,10 +340,11 @@ bool AIScriptRunciter::UpdateAnimation(int *animation, int *frame) {
 		}
 		*frame = _animationFrame;
 		break;
-	case 8:
-		*animation = 538;
+
+	case 6:
+		*animation = 536;
 		_animationFrame++;
-		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(538)) {
+		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(536)) {
 			_animationFrame = 0;
 			if (var_45CD88) {
 				*animation = 529;
@@ -329,6 +357,7 @@ bool AIScriptRunciter::UpdateAnimation(int *animation, int *frame) {
 		}
 		*frame = _animationFrame;
 		break;
+
 	case 7:
 		*animation = 537;
 		_animationFrame++;
@@ -345,10 +374,11 @@ bool AIScriptRunciter::UpdateAnimation(int *animation, int *frame) {
 		}
 		*frame = _animationFrame;
 		break;
-	case 6:
-		*animation = 536;
+
+	case 8:
+		*animation = 538;
 		_animationFrame++;
-		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(536)) {
+		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(538)) {
 			_animationFrame = 0;
 			if (var_45CD88) {
 				*animation = 529;
@@ -361,10 +391,11 @@ bool AIScriptRunciter::UpdateAnimation(int *animation, int *frame) {
 		}
 		*frame = _animationFrame;
 		break;
-	case 5:
-		*animation = 535;
+
+	case 9:
+		*animation = 539;
 		_animationFrame++;
-		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(535)) {
+		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(539)) {
 			_animationFrame = 0;
 			if (var_45CD88) {
 				*animation = 529;
@@ -377,10 +408,10 @@ bool AIScriptRunciter::UpdateAnimation(int *animation, int *frame) {
 		}
 		*frame = _animationFrame;
 		break;
-	case 4:
-		*animation = 534;
+	case 10:
+		*animation = 540;
 		_animationFrame++;
-		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(534)) {
+		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(540)) {
 			_animationFrame = 0;
 			if (var_45CD88) {
 				*animation = 529;
@@ -393,87 +424,77 @@ bool AIScriptRunciter::UpdateAnimation(int *animation, int *frame) {
 		}
 		*frame = _animationFrame;
 		break;
-	case 2:
-		*animation = 533;
-		_animationFrame++;
-		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(533)) {
+
+	case 11:
+		*animation = 541;
+		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(541)) {
 			_animationFrame = 0;
 			if (var_45CD88) {
 				*animation = 529;
 				_animationState = 0;
 				var_45CD78 = 0;
 			} else {
-				_animationState = 4;
+				*animation = 533;
+				_animationState = 2;
 			}
 		}
 		*frame = _animationFrame;
 		break;
-	case kRunciterStateWalking:
-		*animation = 526;
+
+	case 12:
+		*animation = 532;
 		_animationFrame++;
-		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(526)) {
+		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(532)) {
+			*animation = 529;
+			_animationState = 0;
 			_animationFrame = 0;
+			var_45CD78 = 0;
+			Actor_Change_Animation_Mode(kActorRunciter, kAnimationModeCombatIdle);
 		}
 		*frame = _animationFrame;
 		break;
-	case kRunciterStateIdle:
+
+	case 13:
 		if (var_45CD78 == 0) {
-			*animation = 529;
-			if (var_45CD84) {
-				var_45CD84--;
-			} else {
-				_animationFrame += var_45CD80;
-				if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(529)) {
-					_animationFrame = 0;
-				}
-				if (_animationFrame < 0) {
-					_animationFrame = Slice_Animation_Query_Number_Of_Frames(529) - 1;
-				}
-				--var_45CD7C;
-				if (var_45CD7C == 0) {
-					var_45CD80 = 2 * Random_Query(0, 1) - 1;
-					var_45CD7C = Random_Query(6, 14);
-					var_45CD84 = Random_Query(0, 4);
-				}
-				if (_animationFrame == 0) {
-					if (Random_Query(0, 1) == 1) {
-						var_45CD78 = Random_Query(1, 2);
-						var_45CD80 = 1;
-						var_45CD84 = 0;
-					}
-				}
-			}
+			_animationFrame = 0;
+			_animationState = _animationStateNext;
+			*animation = _animationNext;
 		} else if (var_45CD78 == 1) {
 			*animation = 530;
-			_animationFrame++;
+			_animationFrame += 3;
 			if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(530)) {
 				_animationFrame = 0;
-				var_45CD78 = 0;
-				*animation = 529;
-				var_45CD7C = Random_Query(6, 14);
-				var_45CD80 = 2 * Random_Query(0, 1) - 1;
+				_animationState = _animationStateNext;
+				*animation = _animationNext;
 			}
 		} else if (var_45CD78 == 2) {
 			*animation = 531;
-			if (var_45CD84) {
-				var_45CD84--;
-			} else {
-				_animationFrame += var_45CD80;
-				if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation) - 1) {
-					var_45CD84 = Random_Query(5, 15);
-					var_45CD80 = -1;
-				}
-				if (_animationFrame <= 0) {
-					_animationFrame = 0;
-					var_45CD78 = 0;
-					*animation = 529;
-					var_45CD7C = Random_Query(6, 14);
-					var_45CD80 = 2 * Random_Query(0, 1) - 1;
-				}
+			_animationFrame -= 3;
+			if (_animationFrame - 3 < 0) {
+				_animationFrame = 0;
+				_animationState = _animationStateNext;
+				*animation = _animationNext;
 			}
 		}
 		*frame = _animationFrame;
 		break;
+
+	case kRunciterStateDying:
+		*animation = 528;
+		_animationFrame++;
+		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(528) - 1) {
+			*animation = 528;
+			_animationState = kRunciterStateDead;
+		}
+		*frame = _animationFrame;
+		break;
+
+	case kRunciterStateDead:
+		*animation = 528;
+		_animationFrame = Slice_Animation_Query_Number_Of_Frames(528) - 1;
+		*frame = _animationFrame;
+		break;
+
 	default:
 		*animation = 399;
 		_animationFrame = 0;
@@ -486,7 +507,9 @@ bool AIScriptRunciter::UpdateAnimation(int *animation, int *frame) {
 bool AIScriptRunciter::ChangeAnimationMode(int mode) {
 	switch (mode) {
 	case kAnimationModeIdle:
-		if (_animationState >= 2 && _animationState <= 11) {
+		if (_animationState >= 2
+		 && _animationState <= 11
+		) {
 			var_45CD88 = 1;
 		} else {
 			_animationState = 0;
@@ -494,6 +517,7 @@ bool AIScriptRunciter::ChangeAnimationMode(int mode) {
 			var_45CD78 = 0;
 		}
 		break;
+
 	case kAnimationModeWalk:
 		if (_animationState > 1) {
 			_animationState = 1;
@@ -504,6 +528,7 @@ bool AIScriptRunciter::ChangeAnimationMode(int mode) {
 			_animationNext = 526;
 		}
 		break;
+
 	case kAnimationModeTalk:
 		if (_animationState  != 0) {
 			_animationState = 2;
@@ -515,6 +540,7 @@ bool AIScriptRunciter::ChangeAnimationMode(int mode) {
 		}
 		var_45CD88 = 0;
 		break;
+
 	case 12:
 		if (_animationState != 0) {
 			_animationState = 2;
@@ -526,6 +552,7 @@ bool AIScriptRunciter::ChangeAnimationMode(int mode) {
 		}
 		var_45CD88 = 0;
 		break;
+
 	case 13:
 		if (_animationState != 0) {
 			_animationState = 2;
@@ -537,6 +564,7 @@ bool AIScriptRunciter::ChangeAnimationMode(int mode) {
 		}
 		var_45CD88 = 0;
 		break;
+
 	case 14:
 		if (_animationState != 0) {
 			_animationState = 2;
@@ -548,6 +576,7 @@ bool AIScriptRunciter::ChangeAnimationMode(int mode) {
 		}
 		var_45CD88 = 0;
 		break;
+
 	case 15:
 		if (_animationState != 0) {
 			_animationState = 2;
@@ -559,6 +588,7 @@ bool AIScriptRunciter::ChangeAnimationMode(int mode) {
 		}
 		var_45CD88 = 0;
 		break;
+
 	case 16:
 		if (_animationState != 0) {
 			_animationState = 2;
@@ -570,6 +600,7 @@ bool AIScriptRunciter::ChangeAnimationMode(int mode) {
 		}
 		var_45CD88 = 0;
 		break;
+
 	case 17:
 		if (_animationState != 0) {
 			_animationState = 2;
@@ -581,6 +612,7 @@ bool AIScriptRunciter::ChangeAnimationMode(int mode) {
 		}
 		var_45CD88 = 0;
 		break;
+
 	case 18:
 		if (_animationState != 0) {
 			_animationState = 2;
@@ -592,6 +624,7 @@ bool AIScriptRunciter::ChangeAnimationMode(int mode) {
 		}
 		var_45CD88 = 0;
 		break;
+
 	case 19:
 		if (_animationState != 0) {
 			_animationState = 2;
@@ -603,11 +636,13 @@ bool AIScriptRunciter::ChangeAnimationMode(int mode) {
 		}
 		var_45CD88 = 0;
 		break;
+
 	case 23:
 		_animationState = 12;
 		_animationFrame = 0;
 		break;
-	case 48:
+
+	case kAnimationModeDie:
 		_animationState = 14;
 		_animationFrame = 0;
 		break;
diff --git a/engines/bladerunner/script/scene/ct04.cpp b/engines/bladerunner/script/scene/ct04.cpp
index 613fd05..a7740b0 100644
--- a/engines/bladerunner/script/scene/ct04.cpp
+++ b/engines/bladerunner/script/scene/ct04.cpp
@@ -38,8 +38,10 @@ void SceneScriptCT04::InitializeScene() {
 		Scene_Loop_Set_Default(kCT03LoopMain);
 		Setup_Scene_Information(-82.86f, -621.3f, 769.03f, 1020);
 	}
+
 	Scene_Exit_Add_2D_Exit(0, 590,  0, 639, 479, 1);
 	Scene_Exit_Add_2D_Exit(1, 194, 84, 320, 274, 0);
+
 	Ambient_Sounds_Add_Looping_Sound(54, 50,    1, 1);
 	Ambient_Sounds_Add_Looping_Sound(56, 15, -100, 1);
 	Ambient_Sounds_Add_Looping_Sound(105, 34, 100, 1);
diff --git a/engines/bladerunner/script/scene/dr06.cpp b/engines/bladerunner/script/scene/dr06.cpp
index 51a3841..afbdf7c 100644
--- a/engines/bladerunner/script/scene/dr06.cpp
+++ b/engines/bladerunner/script/scene/dr06.cpp
@@ -152,7 +152,7 @@ bool SceneScriptDR06::ClickedOn3DObject(const char *objectName, bool a2) {
 			}
 
 			if (!Game_Flag_Query(kFlagDR06MannequinHeadOpen)) {
-				Overlay_Play("DR06ovr2", 0, 1, 0, 0);
+				Overlay_Play("DR06ovr2", 0, true, false, 0);
 				Game_Flag_Set(kFlagDR06MannequinHeadOpen);
 				Sound_Play(160, 100, 0, 0, 50);
 				if (!Actor_Clue_Query(kActorMcCoy, kClueEnvelope)) {
@@ -202,6 +202,7 @@ bool SceneScriptDR06::ClickedOnExit(int exitId) {
 		}
 		return true;
 	}
+
 	if (exitId == 1) {
 		if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -707.57f, 136.6f, -1132.64f, 0, true, false, 0)) {
 			Game_Flag_Set(kFlagDR06toUG16);
diff --git a/engines/bladerunner/script/scene/hf05.cpp b/engines/bladerunner/script/scene/hf05.cpp
index e5afa3c..88f9181 100644
--- a/engines/bladerunner/script/scene/hf05.cpp
+++ b/engines/bladerunner/script/scene/hf05.cpp
@@ -47,6 +47,7 @@ void SceneScriptHF05::InitializeScene() {
 	Scene_Exit_Add_2D_Exit(2, 589,   0, 639, 479, 1);
 
 	Ambient_Sounds_Add_Looping_Sound(103, 40, 1, 1);
+
 	if (Game_Flag_Query(369)) {
 		Scene_Loop_Set_Default(kHF05LoopMainLoopHole);
 		addAmbientSounds();
diff --git a/engines/bladerunner/script/scene/hf07.cpp b/engines/bladerunner/script/scene/hf07.cpp
index 11593fb..e35c461 100644
--- a/engines/bladerunner/script/scene/hf07.cpp
+++ b/engines/bladerunner/script/scene/hf07.cpp
@@ -28,16 +28,19 @@ void SceneScriptHF07::InitializeScene() {
 	if (Game_Flag_Query(kFlagUG06toHF07) ) {
 		Setup_Scene_Information(-84.0f, 58.43f, -105.0f, 524);
 	} else {
-		Setup_Scene_Information(298.0f, 58.43f, -71.0f, 700);
+		Setup_Scene_Information(298.0f, 58.43f,  -71.0f, 700);
 	}
+
 	Scene_Exit_Add_2D_Exit(0, 289, 136, 344, 305, 0);
-	Scene_Exit_Add_2D_Exit(1, 69, 264, 132, 303, 2);
+	Scene_Exit_Add_2D_Exit(1,  69, 264, 132, 303, 2);
+
 	Ambient_Sounds_Add_Looping_Sound(108, 100, 0, 1);
-	Ambient_Sounds_Add_Looping_Sound(112, 32, 0, 1);
+	Ambient_Sounds_Add_Looping_Sound(112,  32, 0, 1);
 	Ambient_Sounds_Add_Sound(303, 5, 40, 20, 33, -100, 100, -101, -101, 0, 0);
 	Ambient_Sounds_Add_Sound(304, 5, 40, 20, 33, -100, 100, -101, -101, 0, 0);
 	Ambient_Sounds_Add_Sound(305, 5, 40, 20, 33, -100, 100, -101, -101, 0, 0);
-	if (Game_Flag_Query(368) ) {
+
+	if (Game_Flag_Query(368)) {
 		Scene_Loop_Set_Default(2);
 	} else {
 		Scene_Loop_Set_Default(0);
@@ -73,7 +76,8 @@ bool SceneScriptHF07::ClickedOnExit(int exitId) {
 		} else if (Actor_Query_In_Set(kActorLucy, kSetHF07)) {
 			Async_Actor_Walk_To_XYZ(kActorLucy, 235.0f, 58.43f, -100.0f, 0, false);
 		}
-		if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, 318.0f, 71.43f, -102.0f, 0, 1, false, 0)) {
+
+		if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, 318.0f, 71.43f, -102.0f, 0, true, false, 0)) {
 			Game_Flag_Set(kFlagHF07toHF05);
 			if (!Game_Flag_Query(662)) {
 				Actor_Face_Heading(kActorMcCoy, 0, false);
@@ -87,12 +91,14 @@ bool SceneScriptHF07::ClickedOnExit(int exitId) {
 		}
 		return true;
 	}
+
 	if (exitId == 1) {
 		if (Actor_Query_In_Set(kActorDektora, kSetHF07)) {
 			Async_Actor_Walk_To_XYZ(kActorDektora, -73.0f, 58.43f, -7.0f, 0, false);
 		} else if (Actor_Query_In_Set(kActorLucy, kSetHF07)) {
 			Async_Actor_Walk_To_XYZ(kActorLucy, -73.0f, 58.43f, -7.0f, 0, false);
 		}
+
 		if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -84.0f, 58.43f, -105.0f, 0, true, false, 0)) {
 			Ambient_Sounds_Remove_All_Non_Looping_Sounds(true);
 			Ambient_Sounds_Remove_All_Looping_Sounds(1);
@@ -117,7 +123,9 @@ void SceneScriptHF07::ActorChangedGoal(int actorId, int newGoal, int oldGoal, bo
 void SceneScriptHF07::PlayerWalkedIn() {
 	if (Game_Flag_Query(662)) {
 		int actorId = getAffectionTowardsActor();
-		if (Game_Flag_Query(662) && actorId != -1) {
+		if (Game_Flag_Query(662)
+		 && actorId != -1
+		) {
 			Actor_Put_In_Set(actorId, kSetHF07);
 			if (Game_Flag_Query(kFlagUG06toHF07)) {
 				Actor_Set_At_XYZ(actorId, -73.0f, 58.43f, -7.0f, 224);
@@ -131,6 +139,7 @@ void SceneScriptHF07::PlayerWalkedIn() {
 		Loop_Actor_Travel_Stairs(kActorMcCoy, 30, false, kAnimationModeIdle);
 		Footstep_Sound_Override_Off();
 	}
+
 	Game_Flag_Reset(kFlagHF05toHF07);
 	Game_Flag_Reset(kFlagUG06toHF07);
 }
diff --git a/engines/bladerunner/script/scene/ma02.cpp b/engines/bladerunner/script/scene/ma02.cpp
index 5fa1e66..74eaedb 100644
--- a/engines/bladerunner/script/scene/ma02.cpp
+++ b/engines/bladerunner/script/scene/ma02.cpp
@@ -31,37 +31,46 @@ enum kMA02Exits {
 
 void SceneScriptMA02::InitializeScene() {
 	if (Game_Flag_Query(kFlagMA04ToMA02)) {
-		Setup_Scene_Information(-172.0f, -144.13f, 6.27f, 500);
+		Setup_Scene_Information(-172.0f, -144.13f,   6.27f, 500);
 	} else { // From MA06
-		Setup_Scene_Information(23.19f, -144.12f, 378.27f, 750);
+		Setup_Scene_Information( 23.19f, -144.12f, 378.27f, 750);
 		if (Global_Variable_Query(kVariableChapter) == 4) {
 			Actor_Set_Goal_Number(kActorRajif, 300);
 		}
 		Game_Flag_Reset(kFlagMA04WatchedTV);
 	}
 	Scene_Exit_Add_2D_Exit(kMA02ExitMA06, 538, 84, 639, 327, 1);
-	Scene_Exit_Add_2D_Exit(kMA02ExitMA04, 56, 98, 150, 260, 0);
-	if (Global_Variable_Query(kVariableChapter) >= 4 && Global_Variable_Query(kVariableChapter) == 5 && Game_Flag_Query(653)) {
+	Scene_Exit_Add_2D_Exit(kMA02ExitMA04,  56, 98, 150, 260, 0);
+
+	if (Global_Variable_Query(kVariableChapter) >= 4
+	 && Global_Variable_Query(kVariableChapter) == 5
+	 && Game_Flag_Query(653)
+	) {
 		Actor_Set_Goal_Number(kActorMaggie, 599);
 		Actor_Change_Animation_Mode(kActorMaggie, 88);
 		Actor_Put_In_Set(kActorMaggie, kSetMA02_MA04);
 		Actor_Set_At_XYZ(kActorMaggie, -35.51f, -144.12f, 428.0f, 0);
 		Actor_Retired_Here(kActorMaggie, 24, 24, 1, -1);
 	}
+
 	Ambient_Sounds_Add_Looping_Sound(104, 12, 0, 1);
 	Ambient_Sounds_Add_Looping_Sound(71, 25, 0, 1);
-	Ambient_Sounds_Add_Sound(72, 5, 30, 5, 5, -100, 100, -101, -101, 0, 0);
-	Ambient_Sounds_Add_Sound(73, 5, 30, 5, 5, -100, 100, -101, -101, 0, 0);
-	Ambient_Sounds_Add_Sound(74, 5, 30, 5, 5, -100, 100, -101, -101, 0, 0);
-	Ambient_Sounds_Add_Sound(375, 10, 60, 20, 20, 0, 0, -101, -101, 0, 0);
-	Ambient_Sounds_Add_Sound(376, 10, 60, 20, 20, 0, 0, -101, -101, 0, 0);
-	Ambient_Sounds_Add_Sound(87, 10, 60, 12, 12, -100, 100, -101, -101, 0, 0);
-	Ambient_Sounds_Add_Sound(68, 60, 180, 14, 14, 0, 0, -101, -101, 0, 0);
-	Ambient_Sounds_Add_Sound(69, 60, 180, 14, 14, 0, 0, -101, -101, 0, 0);
+	Ambient_Sounds_Add_Sound( 72,  5,  30,  5,  5, -100, 100, -101, -101, 0, 0);
+	Ambient_Sounds_Add_Sound( 73,  5,  30,  5,  5, -100, 100, -101, -101, 0, 0);
+	Ambient_Sounds_Add_Sound( 74,  5,  30,  5,  5, -100, 100, -101, -101, 0, 0);
+	Ambient_Sounds_Add_Sound(375, 10,  60, 20, 20,    0,   0, -101, -101, 0, 0);
+	Ambient_Sounds_Add_Sound(376, 10,  60, 20, 20,    0,   0, -101, -101, 0, 0);
+	Ambient_Sounds_Add_Sound( 87, 10,  60, 12, 12, -100, 100, -101, -101, 0, 0);
+	Ambient_Sounds_Add_Sound( 68, 60, 180, 14, 14,    0,   0, -101, -101, 0, 0);
+	Ambient_Sounds_Add_Sound( 69, 60, 180, 14, 14,    0,   0, -101, -101, 0, 0);
 	if (isPhoneRinging()) {
 		Ambient_Sounds_Add_Sound(403, 3, 3, 27, 27, -100, -100, -100, -100, 99, 0);
 	}
-	if (Global_Variable_Query(kVariableChapter) == 5 && Game_Flag_Query(653) && !Actor_Clue_Query(kActorMcCoy, kClueCrystalsCigarette)) {
+
+	if ( Global_Variable_Query(kVariableChapter) == 5
+	 &&  Game_Flag_Query(653)
+	 && !Actor_Clue_Query(kActorMcCoy, kClueCrystalsCigarette)
+	) {
 		Overlay_Play("MA02OVER", 0, 1, 0, 0);
 	}
 }
@@ -84,30 +93,34 @@ bool SceneScriptMA02::ClickedOn3DObject(const char *objectName, bool a2) {
 		ESPER_Flag_To_Activate();
 		return true;
 	}
-	if (Object_Query_Click("BAR-MAIN", objectName) && !Loop_Actor_Walk_To_XYZ(kActorMcCoy, -29.0f, -140.4f, 298.0f, 36, 1, false, 0)) {
-		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)) {
-			Overlay_Remove("MA02OVER");
-			Item_Pickup_Spin_Effect(985, 480, 240);
-			Actor_Voice_Over(1150, kActorVoiceOver);
-			Actor_Voice_Over(1160, kActorVoiceOver);
-			Actor_Voice_Over(1170, kActorVoiceOver);
-			Actor_Voice_Over(1180, kActorVoiceOver);
-			Actor_Voice_Over(1190, kActorVoiceOver);
-			Actor_Voice_Over(1200, kActorVoiceOver);
-			Actor_Clue_Acquire(kActorMcCoy, kClueCrystalsCigarette, true, -1);
-		} else {
-			Actor_Says(kActorMcCoy, 8526, 0);
+	if (Object_Query_Click("BAR-MAIN", objectName)) {
+		if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -29.0f, -140.4f, 298.0f, 36, true, false, 0)) {
+			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)) {
+				Overlay_Remove("MA02OVER");
+				Item_Pickup_Spin_Effect(985, 480, 240);
+				Actor_Voice_Over(1150, kActorVoiceOver);
+				Actor_Voice_Over(1160, kActorVoiceOver);
+				Actor_Voice_Over(1170, kActorVoiceOver);
+				Actor_Voice_Over(1180, kActorVoiceOver);
+				Actor_Voice_Over(1190, kActorVoiceOver);
+				Actor_Voice_Over(1200, kActorVoiceOver);
+				Actor_Clue_Acquire(kActorMcCoy, kClueCrystalsCigarette, true, -1);
+			} else {
+				Actor_Says(kActorMcCoy, 8526, 0);
+			}
+			return true;
 		}
-		return true;
 	}
 	return false;
 }
 
 bool SceneScriptMA02::ClickedOnActor(int actorId) {
-	if (actorId == kActorMaggie && Actor_Query_Goal_Number(kActorMaggie) == 599) {
+	if (actorId == kActorMaggie
+	 && Actor_Query_Goal_Number(kActorMaggie) == 599
+	) {
 		if (!Loop_Actor_Walk_To_Actor(kActorMcCoy, kActorMaggie, 30, true, false)) {
 			Actor_Face_Actor(kActorMcCoy, kActorMaggie, true);
 			Actor_Voice_Over(1140, kActorVoiceOver);
@@ -122,15 +135,16 @@ bool SceneScriptMA02::ClickedOnItem(int itemId, bool a2) {
 
 bool SceneScriptMA02::ClickedOnExit(int exitId) {
 	if (exitId == kMA02ExitMA06) {
-		if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, 23.19f, -144.12f, 378.27f, 0, 1, false, 0)) {
+		if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, 23.19f, -144.12f, 378.27f, 0, true, false, 0)) {
 			Music_Stop(10);
 			Game_Flag_Set(kFlagMA02toMA06);
 			Set_Enter(kSetMA06, kSceneMA06);
 		}
 		return true;
 	}
+
 	if (exitId == kMA02ExitMA04) {
-		if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -168.0f, -144.13f, 10.27f, 0, 1, false, 0)) {
+		if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -168.0f, -144.13f, 10.27f, 0, true, false, 0)) {
 			Game_Flag_Set(kFlagMA02ToMA04);
 			Set_Enter(kSetMA04, kSceneMA04);
 		}
@@ -153,33 +167,37 @@ void SceneScriptMA02::PlayerWalkedIn() {
 	if (Game_Flag_Query(kFlagMA06ToMA02)) {
 		selectNextTvNews();
 	}
+
 	if (Game_Flag_Query(kFlagMA04ToMA02)) {
-		Loop_Actor_Walk_To_XYZ(kActorMcCoy, -148.12f, -144.13f, 34.27f, 0, 1, false, 0);
+		Loop_Actor_Walk_To_XYZ(kActorMcCoy, -148.12f, -144.13f, 34.27f, 0, true, false, 0);
 	}
+
 	if ( Global_Variable_Query(kVariableChapter) == 4
-	 && !Game_Flag_Query(655)
+	 && !Game_Flag_Query(kFlagMA02RajifTalk)
 	) {
-		Game_Flag_Set(623);
-		Game_Flag_Set(655);
-		dialogueWithRajif();
-		Loop_Actor_Walk_To_XYZ(kActorMcCoy, 23.19f, -144.12f, 378.27f, 0, 0, false, 0);
+		Game_Flag_Set(kFlagUG07Empty);
+		Game_Flag_Set(kFlagMA02RajifTalk);
+		talkWithRajif();
+		Loop_Actor_Walk_To_XYZ(kActorMcCoy, 23.19f, -144.12f, 378.27f, 0, false, false, 0);
 		Game_Flag_Set(kFlagMA02toMA06);
 		Set_Enter(kSetMA06, kSceneMA06);
 		//	return true;
 		return;
 	}
+
 	if ( Global_Variable_Query(kVariableChapter) == 5
 	 && !Game_Flag_Query(654)
 	) {
 		if (Game_Flag_Query(653)) {
-			Actor_Says(kActorMcCoy, 2390, 0);
+			Actor_Says(kActorMcCoy, 2390, kAnimationModeIdle);
 			Music_Play(2, 25, 0, 3, -1, 0, 0);
 		} else {
-			Actor_Says(kActorMcCoy, 2385, 3);
+			Actor_Says(kActorMcCoy, 2385,  kAnimationModeTalk);
 		}
 		Game_Flag_Set(654);
 		Autosave_Game(3);
 	}
+
 	if ( Global_Variable_Query(kVariableChapter) < 4
 	 && !Game_Flag_Query(kFlagMA04ToMA02)
 	 &&  Actor_Query_Goal_Number(kActorMaggie) != 2
@@ -199,6 +217,7 @@ void SceneScriptMA02::PlayerWalkedIn() {
 			}
 		}
 	}
+
 	Game_Flag_Reset(kFlagMA04ToMA02);
 	Game_Flag_Reset(kFlagMA06ToMA02);
 	//return false;
@@ -213,7 +232,7 @@ void SceneScriptMA02::PlayerWalkedOut() {
 void SceneScriptMA02::DialogueQueueFlushed(int a1) {
 }
 
-void SceneScriptMA02::dialogueWithRajif() {
+void SceneScriptMA02::talkWithRajif() {
 	Actor_Says(kActorMcCoy, 2365, 13);
 	Actor_Says(kActorRajif, 0, 13);
 	Actor_Says(kActorMcCoy, 2370, 13);
@@ -227,7 +246,7 @@ void SceneScriptMA02::dialogueWithRajif() {
 }
 
 bool SceneScriptMA02::isPhoneRinging() {
-	return Global_Variable_Query(kVariableChapter) == 5
+	return  Global_Variable_Query(kVariableChapter) == 5
 		&& !Actor_Clue_Query(kActorMcCoy, kCluePhoneCallClovis)
 		&& !Actor_Clue_Query(kActorMcCoy, kCluePhoneCallCrystal)
 		&& !Actor_Clue_Query(kActorMcCoy, kCluePhoneCallDektora1)
diff --git a/engines/bladerunner/script/scene/ma06.cpp b/engines/bladerunner/script/scene/ma06.cpp
index b7a6da3..8d7bc4e 100644
--- a/engines/bladerunner/script/scene/ma06.cpp
+++ b/engines/bladerunner/script/scene/ma06.cpp
@@ -33,10 +33,13 @@ enum kMA06Loops {
 
 void SceneScriptMA06::InitializeScene() {
 	Setup_Scene_Information(40.0f, 1.0f, -20.0f, 400);
+
 	Ambient_Sounds_Add_Looping_Sound(210, 50, 0, 1);
 	Ambient_Sounds_Add_Looping_Sound(408, 33, 0, 1);
+
 	Scene_Loop_Start_Special(kSceneLoopModeLoseControl, kMA06LoopDoorOpen, false);
 	Scene_Loop_Set_Default(kMA06LoopMain);
+
 	Sound_Play(209, 100, 50, 50, 100);
 }
 
@@ -81,10 +84,12 @@ void SceneScriptMA06::PlayerWalkedIn() {
 	Actor_Face_Object(kActorMcCoy, "panel", true);
 	Delay(500);
 	activateElevator();
+
 	if (isElevatorOnDifferentFloor()) {
 		Sound_Play(114, 25, 0, 0, 50);
 		Delay(4000);
 	}
+
 	Game_Flag_Reset(kFlagMA01toMA06);
 	Game_Flag_Reset(kFlagMA02toMA06);
 	Game_Flag_Reset(kFlagMA07toMA06);
@@ -96,6 +101,7 @@ void SceneScriptMA06::PlayerWalkedIn() {
 	} else {
 		Set_Enter(kSetMA07, kSceneMA07);
 	}
+
 	Scene_Loop_Start_Special(kSceneLoopModeChangeSet, kMA06LoopDoorClose, true);
 	Sound_Play(208, 100, 50, 50, 50);
 	//return true;
@@ -130,11 +136,14 @@ void SceneScriptMA06::activateElevator() {
 		if (Game_Flag_Query(kFlagMA06toMA07)) {
 			break;
 		}
-		Actor_Says(kActorAnsweringMachine, 80, 3);
+
+		Actor_Says(kActorAnsweringMachine, 80, kAnimationModeTalk);
 		Player_Gains_Control();
 		int floor = Elevator_Activate(kElevatorMA);
 		Player_Loses_Control();
+
 		Scene_Loop_Start_Special(kSceneLoopModeOnce, kMA06LoopMain, true);
+
 		if (floor > 1) {
 			Game_Flag_Set(kFlagMA06toMA07);
 		} else if (floor == 1) {
@@ -147,12 +156,14 @@ void SceneScriptMA06::activateElevator() {
 			}
 		} else { // floor == 0
 			Actor_Says(kActorMcCoy, 2940, 18);
-			if (Global_Variable_Query(kVariableChapter) == 4 && Game_Flag_Query(655)) {
+			if (Global_Variable_Query(kVariableChapter) == 4
+			 && Game_Flag_Query(kFlagMA02RajifTalk)
+			) {
 				Sound_Play(412, 100, 0, 0, 50);
 				Delay(500);
-				Actor_Says(kActorAnsweringMachine, 610, 3);
+				Actor_Says(kActorAnsweringMachine, 610, kAnimationModeTalk);
 				Delay(500);
-				Actor_Says(kActorMcCoy, 8527, 3);
+				Actor_Says(kActorMcCoy, 8527, kAnimationModeTalk);
 			} else {
 				Game_Flag_Set(kFlagMA06ToMA02);
 				Actor_Says(kActorAnsweringMachine, 90, 3);
diff --git a/engines/bladerunner/script/scene/ma07.cpp b/engines/bladerunner/script/scene/ma07.cpp
index 65d2332..27b4897 100644
--- a/engines/bladerunner/script/scene/ma07.cpp
+++ b/engines/bladerunner/script/scene/ma07.cpp
@@ -131,12 +131,15 @@ void SceneScriptMA07::PlayerWalkedIn() {
 		Loop_Actor_Walk_To_XYZ(kActorMcCoy, -268.0f, -162.8f, 188.0f, 0, false, false, 0);
 		Game_Flag_Reset(kFlagPS14toMA07);
 	}
+
 	if (Actor_Query_Goal_Number(kActorRachael) == 300) {
 		Actor_Set_Goal_Number(kActorRachael, 305);
 	}
+
 	if (Game_Flag_Query(kFlagMA06toMA07)) {
 		Game_Flag_Reset(kFlagMA06toMA07);
 	}
+
 	if (!Game_Flag_Query(648)
 	 &&  Game_Flag_Query(671)
 	 &&  Global_Variable_Query(kVariableChapter) == 4
@@ -144,6 +147,7 @@ void SceneScriptMA07::PlayerWalkedIn() {
 		Scene_Exits_Disable();
 		Actor_Set_Goal_Number(kActorGaff, 300);
 	}
+
 	if (Game_Flag_Query(666)) {
 		Actor_Voice_Over(1360, kActorVoiceOver);
 		Actor_Voice_Over(1370, kActorVoiceOver);
diff --git a/engines/bladerunner/script/scene/rc01.cpp b/engines/bladerunner/script/scene/rc01.cpp
index f3b757e..15c4d5e 100644
--- a/engines/bladerunner/script/scene/rc01.cpp
+++ b/engines/bladerunner/script/scene/rc01.cpp
@@ -405,7 +405,7 @@ void SceneScriptRC01::walkToCenter() {
 bool SceneScriptRC01::ClickedOnExit(int exitId) {
 	if (exitId == kRC01ExitRC02) {
 		if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -174.77f, 5.55f, 25.95f, 12, true, false, 0)) {
-			if (Game_Flag_Query(705)) {
+			if (Game_Flag_Query(kFlagRC02RunciterTalkWithGun)) {
 				Actor_Says(kActorMcCoy, 8522, 14);
 			} else {
 				switch (Global_Variable_Query(kVariableChapter)) {
diff --git a/engines/bladerunner/script/scene/rc02.cpp b/engines/bladerunner/script/scene/rc02.cpp
index a84fe99..93bedec 100644
--- a/engines/bladerunner/script/scene/rc02.cpp
+++ b/engines/bladerunner/script/scene/rc02.cpp
@@ -160,7 +160,7 @@ void SceneScriptRC02::dialogueWithRunciter() {
 		Actor_Says(kActorRunciter, 130, 19);
 		Actor_Says(kActorMcCoy, 4605, 13);
 		Actor_Says(kActorRunciter, 140, 16);
-		Game_Flag_Set(kFlagRC02TalkedToRunciter);
+		Game_Flag_Set(kFlagRC02RunciterTalk1);
 		break;
 
 	case 10: // LUCY
@@ -223,18 +223,12 @@ bool SceneScriptRC02::ClickedOnActor(int actorId) {
 				} else {
 					Actor_Says(kActorMcCoy, 8720, 17);
 				}
-			} else if (Game_Flag_Query(705)
-					|| Game_Flag_Query(706)
+				return true;
+			}
+
+			if (!Game_Flag_Query(kFlagRC02RunciterTalkWithGun)
+			 && !Game_Flag_Query(kFlagRC02RunciterTalk2)
 			) {
-				Actor_Says(kActorMcCoy, 4805, 11);
-				Actor_Face_Actor(kActorRunciter, kActorMcCoy, true);
-				if (Game_Flag_Query(706)) {
-					Actor_Says(kActorRunciter, 720, 15);
-				} else {
-					Actor_Says(kActorRunciter, 730, 14);
-				}
-				Actor_Face_Heading(kActorRunciter, 1007, false);
-			} else {
 				Actor_Says(kActorMcCoy, 4690, 11);
 				Actor_Says(kActorMcCoy, 4695, 13);
 				Actor_Face_Actor(kActorRunciter, kActorMcCoy, true);
@@ -251,14 +245,25 @@ bool SceneScriptRC02::ClickedOnActor(int actorId) {
 					Actor_Says(kActorRunciter, 430, 16);
 					Actor_Face_Heading(kActorRunciter, 1007, false);
 				}
-				Game_Flag_Set(706);
+				Game_Flag_Set(kFlagRC02RunciterTalk2);
+				return true;
 			}
+
+			Actor_Says(kActorMcCoy, 4805, 11);
+			Actor_Face_Actor(kActorRunciter, kActorMcCoy, true);
+			if (Game_Flag_Query(kFlagRC02RunciterTalk2)) {
+				Actor_Says(kActorRunciter, 720, 15);
+			} else {
+				Actor_Says(kActorRunciter, 730, 14);
+			}
+			Actor_Face_Heading(kActorRunciter, 1007, false);
 			return true;
 		}
 
 		AI_Movement_Track_Pause(kActorRunciter);
 		Loop_Actor_Walk_To_Actor(kActorMcCoy, kActorRunciter, 48, true, false);
 		Actor_Face_Actor(kActorMcCoy, kActorRunciter, true);
+
 		if (!Game_Flag_Query(kFlagRC02RunciterInterview)) {
 			Actor_Says(kActorMcCoy, 4560, 13);
 			Actor_Face_Actor(kActorRunciter, kActorMcCoy, true);
@@ -274,7 +279,7 @@ bool SceneScriptRC02::ClickedOnActor(int actorId) {
 			return true;
 		}
 
-		if (Game_Flag_Query(kFlagRC02TalkedToRunciter)) {
+		if (Game_Flag_Query(kFlagRC02RunciterTalk1)) {
 			if (Player_Query_Agenda() == kPlayerAgendaPolite) {
 				Game_Flag_Reset(kFlagNotUsed0);
 				dialogueWithRunciter();
@@ -302,7 +307,7 @@ bool SceneScriptRC02::ClickedOnActor(int actorId) {
 				Actor_Says(kActorRunciter, 240, 16);
 				Actor_Says(kActorMcCoy, 4640, 17);
 			}
-			Game_Flag_Reset(kFlagRC02TalkedToRunciter);
+			Game_Flag_Reset(kFlagRC02RunciterTalk1);
 			AI_Movement_Track_Unpause(kActorRunciter);
 			return true;
 		}
@@ -346,6 +351,7 @@ bool SceneScriptRC02::ClickedOnExit(int exitId) {
 		}
 		return true;
 	}
+
 	if (exitId == kRC02ExitRC51) {
 		if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -20.2f, -1238.73f, 108152.73f, 0, true, false, 0)) {
 			Async_Actor_Walk_To_XYZ(kActorMcCoy, -8.87f, -1238.89f, 108076.27f, 0, false);
@@ -382,12 +388,12 @@ void SceneScriptRC02::PlayerWalkedIn() {
 			Game_Flag_Set(kFlagRC02Entered);
 		}
 		if (Actor_Query_Which_Set_In(kActorRunciter) == kSetRC02_RC51
-		 && Actor_Query_Goal_Number(kActorRunciter) < kGoalRunciterAtShop
+		 && Actor_Query_Goal_Number(kActorRunciter) < kGoalRunciterRC02Wait
 		) {
-			Actor_Set_Goal_Number(kActorRunciter, kGoalRunciterWalkAroundRC02);
+			Actor_Set_Goal_Number(kActorRunciter, kGoalRunciterRC02WalkAround);
 		}
-		if ( Actor_Query_Goal_Number(kActorRunciter) == kGoalRunciterAtShop
-		 && !Game_Flag_Query(704)
+		if ( Actor_Query_Goal_Number(kActorRunciter) == kGoalRunciterRC02Wait
+		 && !Game_Flag_Query(kFlagRC02EnteredChapter4)
 		) {
 			Actor_Face_Actor(kActorRunciter, kActorMcCoy, true);
 			Actor_Says(kActorRunciter, 370, 12);
@@ -399,7 +405,7 @@ void SceneScriptRC02::PlayerWalkedIn() {
 			Actor_Face_Heading(kActorRunciter, 1007, false);
 			Actor_Says(kActorRunciter, 400, 13);
 			Actor_Says(kActorRunciter, 410, 12);
-			Game_Flag_Set(704);
+			Game_Flag_Set(kFlagRC02EnteredChapter4);
 		}
 	} else {
 		Player_Loses_Control();
diff --git a/engines/bladerunner/script/scene/rc04.cpp b/engines/bladerunner/script/scene/rc04.cpp
index 122ff65..9287d7a 100644
--- a/engines/bladerunner/script/scene/rc04.cpp
+++ b/engines/bladerunner/script/scene/rc04.cpp
@@ -457,7 +457,7 @@ void SceneScriptRC04::PlayerWalkedIn() {
 	) {
 		Actor_Says(kActorDispatcher, 40, 3);
 		Actor_Says(kActorBulletBob, 890, 37);
-		Actor_Set_Goal_Number(kActorBulletBob, 2);
+		Actor_Set_Goal_Number(kActorBulletBob, kGoalBulletBobShootMcCoy);
 	}
 
 	Game_Flag_Set(kFlagRC04Entered);
diff --git a/engines/bladerunner/script/scene/ug02.cpp b/engines/bladerunner/script/scene/ug02.cpp
index 12be0c2..74b421f 100644
--- a/engines/bladerunner/script/scene/ug02.cpp
+++ b/engines/bladerunner/script/scene/ug02.cpp
@@ -30,8 +30,10 @@ void SceneScriptUG02::InitializeScene() {
 	} else {
 		Setup_Scene_Information( -95.0f,  74.78f, -503.0f, 556);
 	}
+
 	Scene_Exit_Add_2D_Exit(0, 529, 130, 607, 277, 0);
 	Scene_Exit_Add_2D_Exit(1, 305,  36, 335, 192, 0);
+
 	Ambient_Sounds_Add_Looping_Sound(332, 43, 0, 1);
 	Ambient_Sounds_Add_Looping_Sound(333, 43, 0, 1);
 	Ambient_Sounds_Add_Sound(303, 5, 50, 17, 37, 100, 100, -101, -101, 0, 0);
diff --git a/engines/bladerunner/script/scene/ug05.cpp b/engines/bladerunner/script/scene/ug05.cpp
index e02a9bd..cbce58e 100644
--- a/engines/bladerunner/script/scene/ug05.cpp
+++ b/engines/bladerunner/script/scene/ug05.cpp
@@ -123,13 +123,15 @@ bool SceneScriptUG05::ClickedOnItem(int itemId, bool a2) {
 
 bool SceneScriptUG05::ClickedOnExit(int exitId) {
 	if (exitId == 0) {
-		if (Game_Flag_Query(663) && !Game_Flag_Query(368)) {
+		if ( Game_Flag_Query(663)
+		 && !Game_Flag_Query(368)
+		) {
 			Loop_Actor_Walk_To_XYZ(kActorMcCoy, -356.35f, 132.77f, -1092.36f, 0, false, false, 0);
 			Game_Flag_Set(kFlagUG06toHF07);
 			Set_Enter(kSetHF07, kSceneHF07);
 		} else if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -156.72f, 3.03f, -1118.17f, 0, true, false, 0)) {
 			Actor_Face_Heading(kActorMcCoy, 760, false);
-			Loop_Actor_Travel_Stairs(kActorMcCoy, 3, 1, kAnimationModeIdle);
+			Loop_Actor_Travel_Stairs(kActorMcCoy, 3, true, kAnimationModeIdle);
 			Game_Flag_Set(kFlagUG06toHF07);
 			Set_Enter(kSetHF07, kSceneHF07);
 		}
diff --git a/engines/bladerunner/script/scene/ug06.cpp b/engines/bladerunner/script/scene/ug06.cpp
index 99ebc54..9ac5bca 100644
--- a/engines/bladerunner/script/scene/ug06.cpp
+++ b/engines/bladerunner/script/scene/ug06.cpp
@@ -140,7 +140,7 @@ void SceneScriptUG06::PlayerWalkedIn() {
 	}
 
 	if ( Global_Variable_Query(kVariableChapter) == 4
-	 && !Game_Flag_Query(524)
+	 && !Game_Flag_Query(kFlagUG06Chapter4Started)
 	) {
 		Player_Loses_Control();
 		Actor_Voice_Over(2620, kActorVoiceOver);
@@ -153,7 +153,7 @@ void SceneScriptUG06::PlayerWalkedIn() {
 		Actor_Voice_Over(2690, kActorVoiceOver);
 		Actor_Voice_Over(2700, kActorVoiceOver);
 		Player_Gains_Control();
-		Game_Flag_Set(524);
+		Game_Flag_Set(kFlagUG06Chapter4Started);
 		Autosave_Game(2);
 	}
 	//return false;
diff --git a/engines/bladerunner/script/scene/ug07.cpp b/engines/bladerunner/script/scene/ug07.cpp
index 1b09943..9892d16 100644
--- a/engines/bladerunner/script/scene/ug07.cpp
+++ b/engines/bladerunner/script/scene/ug07.cpp
@@ -35,7 +35,7 @@ void SceneScriptUG07::InitializeScene() {
 		Game_Flag_Reset(kFlagUG10toUG07);
 	}
 
-	if (Game_Flag_Query(623)) {
+	if (Game_Flag_Query(kFlagUG07Empty)) {
 		Scene_Exit_Add_2D_Exit(0,   0, 192,  51, 334, 0);
 		Scene_Exit_Add_2D_Exit(1, 226, 224, 314, 396, 1);
 	}
@@ -176,7 +176,7 @@ void SceneScriptUG07::ActorChangedGoal(int actorId, int newGoal, int oldGoal, bo
 
 void SceneScriptUG07::PlayerWalkedIn() {
 	if ( Global_Variable_Query(kVariableChapter) == 4
-	 && !Game_Flag_Query(623)
+	 && !Game_Flag_Query(kFlagUG07Empty)
 	) {
 		Actor_Set_Goal_Number(kActorOfficerLeary, 307);
 		Actor_Set_Goal_Number(kActorOfficerGrayford, 307);
diff --git a/engines/bladerunner/script/scene/ug08.cpp b/engines/bladerunner/script/scene/ug08.cpp
index d3621af..65e790b 100644
--- a/engines/bladerunner/script/scene/ug08.cpp
+++ b/engines/bladerunner/script/scene/ug08.cpp
@@ -24,6 +24,13 @@
 
 namespace BladeRunner {
 
+enum kUG08Loops {
+	kUG08LoopElevatorComingUp  = 0,
+	kUG08LoopMainLoopElevator  = 1,
+	kUG08LoopElevatorGoingDown = 3,
+	kUG08LoopMainNoElevator    = 4
+};
+
 void SceneScriptUG08::InitializeScene() {
 	if (Game_Flag_Query(kFlagUG13toUG08)) {
 		Setup_Scene_Information(-124.0f, 93.18f,   71.0f, 745);
@@ -50,18 +57,18 @@ void SceneScriptUG08::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(610)) {
-		Game_Flag_Set(431);
-		Game_Flag_Set(610);
+	if (!Game_Flag_Query(kFlagUG08Entered)) {
+		Game_Flag_Set(kFlagUB08ElevatorUp);
+		Game_Flag_Set(kFlagUG08Entered);
 	}
 
 	if (Game_Flag_Query(kFlagUG13toUG08)) {
-		Scene_Loop_Start_Special(kSceneLoopModeLoseControl, 0, false);
-		Scene_Loop_Set_Default(1);
-	} else if (Game_Flag_Query(431)) {
-		Scene_Loop_Set_Default(1);
+		Scene_Loop_Start_Special(kSceneLoopModeLoseControl, kUG08LoopElevatorComingUp, false);
+		Scene_Loop_Set_Default(kUG08LoopMainLoopElevator);
+	} else if (Game_Flag_Query(kFlagUB08ElevatorUp)) {
+		Scene_Loop_Set_Default(kUG08LoopMainLoopElevator);
 	} else {
-		Scene_Loop_Set_Default(4);
+		Scene_Loop_Set_Default(kUG08LoopMainNoElevator);
 	}
 }
 
@@ -108,9 +115,9 @@ bool SceneScriptUG08::ClickedOnExit(int exitId) {
 			Player_Loses_Control();
 			Actor_Set_Invisible(kActorMcCoy, true);
 			Game_Flag_Set(kFlagUG08toUG13);
-			Game_Flag_Reset(431);
+			Game_Flag_Reset(kFlagUB08ElevatorUp);
 			Set_Enter(kSetUG13, kSceneUG13);
-			Scene_Loop_Start_Special(kSceneLoopModeChangeSet, 3, false);
+			Scene_Loop_Start_Special(kSceneLoopModeChangeSet, kUG08LoopElevatorGoingDown, false);
 			return false;
 		}
 	}
diff --git a/engines/bladerunner/script/scene/ug09.cpp b/engines/bladerunner/script/scene/ug09.cpp
index e6613c1..3348272 100644
--- a/engines/bladerunner/script/scene/ug09.cpp
+++ b/engines/bladerunner/script/scene/ug09.cpp
@@ -136,7 +136,7 @@ void SceneScriptUG09::ActorChangedGoal(int actorId, int newGoal, int oldGoal, bo
 
 void SceneScriptUG09::PlayerWalkedIn() {
 	if (Global_Variable_Query(kVariableChapter) == 4
-	 && Game_Flag_Query(623)
+	 && Game_Flag_Query(kFlagUG07Empty)
 	) {
 		Game_Flag_Set(630);
 	}
diff --git a/engines/bladerunner/script/scene/ug13.cpp b/engines/bladerunner/script/scene/ug13.cpp
index d6dfbfa..da212b7 100644
--- a/engines/bladerunner/script/scene/ug13.cpp
+++ b/engines/bladerunner/script/scene/ug13.cpp
@@ -34,7 +34,7 @@ void SceneScriptUG13::InitializeScene() {
 		Actor_Set_Invisible(kActorMcCoy, false);
 	}
 
-	if (!Game_Flag_Query(431)) {
+	if (!Game_Flag_Query(kFlagUB08ElevatorUp)) {
 		Scene_Exit_Add_2D_Exit(0, 394, 205, 464, 281, 0);
 	}
 	Scene_Exit_Add_2D_Exit(1, 560, 90, 639, 368, 1);
@@ -62,7 +62,7 @@ void SceneScriptUG13::InitializeScene() {
 	if (Game_Flag_Query(kFlagUG08toUG13)) {
 		Scene_Loop_Start_Special(0, 0, 0);
 		Scene_Loop_Set_Default(1);
-	} else if (Game_Flag_Query(431)) {
+	} else if (Game_Flag_Query(kFlagUB08ElevatorUp)) {
 		Scene_Loop_Set_Default(4);
 	} else {
 		Scene_Loop_Set_Default(1);
@@ -98,16 +98,16 @@ bool SceneScriptUG13::ClickedOn3DObject(const char *objectName, bool a2) {
 	if (Object_Query_Click("BOLLARD", objectName)) {
 		if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, 7.0f, 44.0f, -695.0f, 0, true, false, 0)) {
 			Actor_Face_Object(kActorMcCoy, "BOLLARD", true);
-			if (Game_Flag_Query(431)) {
+			if (Game_Flag_Query(kFlagUB08ElevatorUp)) {
 				Scene_Loop_Set_Default(1);
 				Scene_Loop_Start_Special(kSceneLoopModeOnce, 0, false);
-				Game_Flag_Reset(431);
+				Game_Flag_Reset(kFlagUB08ElevatorUp);
 				Game_Flag_Set(436);
 				return true;
 			} else {
 				Scene_Loop_Set_Default(4);
 				Scene_Loop_Start_Special(kSceneLoopModeOnce, 3, false);
-				Game_Flag_Set(431);
+				Game_Flag_Set(kFlagUB08ElevatorUp);
 				Scene_Exit_Remove(0);
 				return true;
 			}
@@ -122,15 +122,24 @@ bool SceneScriptUG13::ClickedOnActor(int actorId) {
 	) {
 		if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -248.0f, 44.0f, -390.0f, 12, true, false, 0)) {
 			Actor_Face_Actor(kActorMcCoy, kActorTransient, true);
-			if (Actor_Query_Goal_Number(kActorTransient) != 6 && Actor_Query_Goal_Number(kActorTransient) != 599) {
+			if (Actor_Query_Goal_Number(kActorTransient) != 6
+			 && Actor_Query_Goal_Number(kActorTransient) != 599
+			) {
 				if (!Game_Flag_Query(554)) {
-					sub_40223C();
+					Actor_Face_Actor(kActorMcCoy, kActorTransient, true);
+					Game_Flag_Set(554);
+					Actor_Says(kActorMcCoy, 5560, 13);
+					Actor_Says_With_Pause(kActorMcCoy, 5565, 3.0f, 18);
+					Actor_Says(kActorTransient, 70, 31);
+					Actor_Says(kActorTransient, 80, 32);
+					Actor_Says(kActorMcCoy, 5570, kAnimationModeTalk);
+					Actor_Says(kActorTransient, 90, 32);
 				} else if (!Actor_Clue_Query(kActorMcCoy, kClueHomelessManInterview1) || !Actor_Clue_Query(kActorMcCoy, kClueHomelessManInterview2)) {
-					sub_402AD4();
+					dialogueWithHomeless1();
 				} else {
 					Actor_Set_Goal_Number(kActorTransient, 391);
 					if (Actor_Clue_Query(kActorMcCoy, kClueFlaskOfAbsinthe)) {
-						sub_402AD4();
+						dialogueWithHomeless1();
 					} else {
 						Actor_Face_Actor(kActorMcCoy, kActorTransient, true);
 						Actor_Says(kActorMcCoy, 5600, 14);
@@ -170,14 +179,13 @@ bool SceneScriptUG13::ClickedOnItem(int itemId, bool a2) {
 }
 
 bool SceneScriptUG13::ClickedOnExit(int exitId) {
-
 	if (exitId == 0) {
 		if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -32.0f, 54.63f, -883.0f, 0, true, false, 0)) {
 			Player_Loses_Control();
 			Game_Flag_Set(kFlagUG13toUG08);
-			Game_Flag_Set(431);
+			Game_Flag_Set(kFlagUB08ElevatorUp);
 			Set_Enter(kSetUG08, kSceneUG08);
-			Scene_Loop_Start_Special(kSceneLoopModeChangeSet, 3, 0);
+			Scene_Loop_Start_Special(kSceneLoopModeChangeSet, 3, false);
 		}
 		return true;
 	}
@@ -194,7 +202,7 @@ bool SceneScriptUG13::ClickedOnExit(int exitId) {
 		if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -267.0f, 44.0f, -795.0f, 0, true, false, 0)) {
 			Actor_Face_Heading(kActorMcCoy, 830, false);
 			Footstep_Sound_Override_On(3);
-			Loop_Actor_Travel_Stairs(kActorMcCoy, 11, 1, kAnimationModeIdle);
+			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);
@@ -270,13 +278,13 @@ void SceneScriptUG13::PlayerWalkedIn() {
 	if ( Actor_Query_Goal_Number(kActorTransient) >= 390
 	 && !Game_Flag_Query(kFlagCT04HomelessKilledByMcCoy)
 	) {
-		if (Game_Flag_Query(553)) {
+		if (!Game_Flag_Query(kFlagUG13Entered)) {
+			Game_Flag_Set(kFlagUG13Entered);
+			Actor_Says(kActorTransient, 50, kAnimationModeTalk);
+		} else {
 			if (Random_Query(1, 3) == 1) {
 				Actor_Set_Goal_Number(kActorTransient, 395);
 			}
-		} else {
-			Game_Flag_Set(553);
-			Actor_Says(kActorTransient, 50, kAnimationModeTalk);
 		}
 	}
 	//return false;
@@ -299,17 +307,6 @@ void SceneScriptUG13::PlayerWalkedOut() {
 void SceneScriptUG13::DialogueQueueFlushed(int a1) {
 }
 
-void SceneScriptUG13::sub_40223C() {
-	Actor_Face_Actor(kActorMcCoy, kActorTransient, true);
-	Game_Flag_Set(554);
-	Actor_Says(kActorMcCoy, 5560, 13);
-	Actor_Says_With_Pause(kActorMcCoy, 5565, 3.0f, 18);
-	Actor_Says(kActorTransient, 70, 31);
-	Actor_Says(kActorTransient, 80, 32);
-	Actor_Says(kActorMcCoy, 5570, kAnimationModeTalk);
-	Actor_Says(kActorTransient, 90, 32);
-}
-
 void SceneScriptUG13::sub_4023D8() {
 	Actor_Face_Actor(kActorMcCoy, kActorTransient, true);
 	Actor_Clue_Acquire(kActorMcCoy, kClueHomelessManInterview1, false, kActorTransient);
@@ -343,68 +340,57 @@ void SceneScriptUG13::sub_4025E0() {
 	Actor_Says(kActorTransient, 260, 32);
 }
 
-void SceneScriptUG13::sub_402960() {
-	Actor_Says(kActorMcCoy, 5670, 9);
-	Actor_Says(kActorTransient, 340, 31);
-	Actor_Says(kActorMcCoy, 5690, 19);
-	Actor_Says(kActorTransient, 350, 32);
-	Actor_Says(kActorMcCoy, 5695, 14);
-	Actor_Says(kActorTransient, 360, 33);
-	Actor_Voice_Over(2710, kActorVoiceOver);
-	Actor_Voice_Over(2730, kActorVoiceOver);
-	Actor_Clue_Acquire(kActorMcCoy, kClueHomelessManKid, false, kActorTransient);
-}
-
 int SceneScriptUG13::sub_402AD0() {
 	return 0;
 }
 
-void SceneScriptUG13::sub_402AD4() {
+void SceneScriptUG13::dialogueWithHomeless1() {
 	Dialogue_Menu_Clear_List();
-	DM_Add_To_List_Never_Repeat_Once_Selected(1320, 6, 3, 1);
+	DM_Add_To_List_Never_Repeat_Once_Selected(1320, 6, 3, 1); // OTHERS
 	if (Actor_Clue_Query(kActorMcCoy, kClueHomelessManInterview1)) {
-		DM_Add_To_List_Never_Repeat_Once_Selected(1330, 5, 8, 5);
+		DM_Add_To_List_Never_Repeat_Once_Selected(1330, 5, 8, 5); // FAT MAN
 	}
-	DM_Add_To_List_Never_Repeat_Once_Selected(1340, 2, 4, 6);
+	DM_Add_To_List_Never_Repeat_Once_Selected(1340, 2, 4, 6); // SEWERS
 	if (Actor_Clue_Query(kActorMcCoy, kClueFlaskOfAbsinthe)) {
-		DM_Add_To_List_Never_Repeat_Once_Selected(1350, 1, 3, 7);
+		DM_Add_To_List_Never_Repeat_Once_Selected(1350, 1, 3, 7); // GIVE FLASK
 	}
-	Dialogue_Menu_Add_DONE_To_List(1360);
+	Dialogue_Menu_Add_DONE_To_List(1360); // DONE
 
 	Dialogue_Menu_Appear(320, 240);
 	int answer = Dialogue_Menu_Query_Input();
 	Dialogue_Menu_Disappear();
 
 	switch (answer) {
-	case 1360:
-		return;
+	case 1320: // OTHERS
+		sub_4023D8();
+		break;
 
-	case 1350:
-		Actor_Clue_Acquire(kActorTransient, kClueFlaskOfAbsinthe, false, kActorMcCoy);
-		Actor_Says_With_Pause(kActorMcCoy, 5595, 1.0f, 23);
-		Item_Pickup_Spin_Effect(945, 193, 325);
-		Actor_Says(kActorTransient, 290, 33);
-		Actor_Says(kActorMcCoy, 5660, 13);
-		Actor_Clue_Lose(kActorMcCoy, kClueFlaskOfAbsinthe);
-		sub_402E24();
+	case 1330: // FAT MAN
+		Actor_Says(kActorMcCoy, 5585, 16);
+		sub_4025E0();
 		break;
 
-	case 1340:
+	case 1340: // SEWERS
 		Actor_Modify_Friendliness_To_Other(kActorTransient, kActorMcCoy, -10);
 		Actor_Says(kActorMcCoy, 5590, 15);
 		Actor_Says(kActorTransient, 270, 31);
 		Actor_Says(kActorMcCoy, 5655, 16);
 		Actor_Says(kActorTransient, 280, 32);
 		break;
-	case 1330:
-		Actor_Says(kActorMcCoy, 5585, 16);
-		sub_4025E0();
-		break;
 
-	case 1320:
-		sub_4023D8();
+	case 1350: // GIVE FLASK
+		Actor_Clue_Acquire(kActorTransient, kClueFlaskOfAbsinthe, false, kActorMcCoy);
+		Actor_Says_With_Pause(kActorMcCoy, 5595, 1.0f, 23);
+		Item_Pickup_Spin_Effect(945, 193, 325);
+		Actor_Says(kActorTransient, 290, 33);
+		Actor_Says(kActorMcCoy, 5660, 13);
+		Actor_Clue_Lose(kActorMcCoy, kClueFlaskOfAbsinthe);
+		dialogueWithHomeless2();
 		break;
 
+	case 1360: // DONE
+		return;
+
 	default:
 		Actor_Face_Actor(kActorMcCoy, kActorTransient, true);
 		Actor_Says(kActorMcCoy, 5600, 14);
@@ -416,18 +402,18 @@ void SceneScriptUG13::sub_402AD4() {
 	}
 }
 
-void SceneScriptUG13::sub_402E24() {
+void SceneScriptUG13::dialogueWithHomeless2() {
 	Actor_Set_Friendliness_To_Other(kActorTransient, kActorMcCoy, 40);
 	Dialogue_Menu_Clear_List();
-	DM_Add_To_List_Never_Repeat_Once_Selected(1370, 1, 1, 8);
-	DM_Add_To_List_Never_Repeat_Once_Selected(1380, 1, 8, 1);
-	DM_Add_To_List_Never_Repeat_Once_Selected(1390, 8, 1, 1);
+	DM_Add_To_List_Never_Repeat_Once_Selected(1370, 1, 1, 8); // DIRECTIONS
+	DM_Add_To_List_Never_Repeat_Once_Selected(1380, 1, 8, 1); // FAT MAN
+	DM_Add_To_List_Never_Repeat_Once_Selected(1390, 8, 1, 1); // REPLICANTS
 
 	Dialogue_Menu_Appear(320, 240);
 	int answer = Dialogue_Menu_Query_Input();
 	Dialogue_Menu_Disappear();
 
-	if (answer == 1370) {
+	if (answer == 1370) { // DIRECTIONS
 		Actor_Says(kActorMcCoy, 5665, 16);
 		Actor_Says(kActorTransient, 300, 32);
 		Actor_Says(kActorMcCoy, 5680, 19);
@@ -436,14 +422,22 @@ void SceneScriptUG13::sub_402E24() {
 		Actor_Start_Speech_Sample(kActorTransient, 110);
 		Actor_Set_Goal_Number(kActorTransient, 395);
 		Actor_Says(kActorMcCoy, 5685, 18);
-	} else if (answer == 1380) {
+	} else if (answer == 1380) { // FAT MAN
 		if (Actor_Clue_Query(kActorMcCoy, kClueHomelessManInterview2)) {
-			sub_402960();
+			Actor_Says(kActorMcCoy, 5670, 9);
+			Actor_Says(kActorTransient, 340, 31);
+			Actor_Says(kActorMcCoy, 5690, 19);
+			Actor_Says(kActorTransient, 350, 32);
+			Actor_Says(kActorMcCoy, 5695, 14);
+			Actor_Says(kActorTransient, 360, 33);
+			Actor_Voice_Over(2710, kActorVoiceOver);
+			Actor_Voice_Over(2730, kActorVoiceOver);
+			Actor_Clue_Acquire(kActorMcCoy, kClueHomelessManKid, false, kActorTransient);
 		} else {
 			Actor_Says(kActorMcCoy, 5700, 15);
 			sub_4025E0();
 		}
-	} else if (answer == 1390) {
+	} else if (answer == 1390) { // REPLICANTS
 		Actor_Says(kActorMcCoy, 5675, 9);
 		Actor_Says(kActorTransient, 370, 32);
 		Actor_Says(kActorMcCoy, 5705, 10);
diff --git a/engines/bladerunner/script/scene/ug14.cpp b/engines/bladerunner/script/scene/ug14.cpp
index 914cf10..d850df0 100644
--- a/engines/bladerunner/script/scene/ug14.cpp
+++ b/engines/bladerunner/script/scene/ug14.cpp
@@ -83,7 +83,7 @@ bool SceneScriptUG14::ClickedOnExit(int exitId) {
 	bool v1 = y > 57.0f;
 
 
-	if (!exitId == 0) {
+	if (exitId == 0) {
 		if (v1) {
 			if (Loop_Actor_Walk_To_XYZ(kActorMcCoy, 141.47f, 128.92f, -150.16f, 0, true, false, 0)) {
 				return false;
@@ -133,6 +133,7 @@ bool SceneScriptUG14::ClickedOnExit(int exitId) {
 			Loop_Actor_Travel_Stairs(kActorMcCoy, 13, true, kAnimationModeIdle);
 			Footstep_Sound_Override_Off();
 		}
+
 		if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, 157.0f, 128.92f, -108.01f, 0, true, false, 0)) {
 			Footstep_Sound_Override_On(3);
 			Loop_Actor_Travel_Stairs(kActorMcCoy, 6, true, kAnimationModeIdle);
diff --git a/engines/bladerunner/script/scene/ug15.cpp b/engines/bladerunner/script/scene/ug15.cpp
index fdd3244..ef1ca2f 100644
--- a/engines/bladerunner/script/scene/ug15.cpp
+++ b/engines/bladerunner/script/scene/ug15.cpp
@@ -109,7 +109,7 @@ 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, 1, false, 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);
 			Ambient_Sounds_Remove_All_Looping_Sounds(1);
 			Game_Flag_Set(kFlagUG15toUG17);
@@ -119,7 +119,7 @@ bool SceneScriptUG15::ClickedOnExit(int exitId) {
 	}
 
 	if (exitId == 1) {
-		if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -17.0f, 26.31f, -346.0f, 0, 1, false, 0)) {
+		if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -17.0f, 26.31f, -346.0f, 0, true, false, 0)) {
 			Ambient_Sounds_Remove_All_Non_Looping_Sounds(true);
 			Ambient_Sounds_Remove_All_Looping_Sounds(1);
 			Game_Flag_Set(kFlagUG15toUG16a);
@@ -133,8 +133,8 @@ bool SceneScriptUG15::ClickedOnExit(int exitId) {
 		if (v1 >= 300
 		 && v1 <= 303
 		) {
-			Loop_Actor_Walk_To_XYZ(kActorMcCoy, -137.61f, 48.07f, 147.12f, 0, 1, false, 0);
-		} else if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, 18.0f, 52.28f, 46.0f, 0, 1, false, 0)) {
+			Loop_Actor_Walk_To_XYZ(kActorMcCoy, -137.61f, 48.07f, 147.12f, 0, true, false, 0);
+		} else if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, 18.0f, 52.28f, 46.0f, 0, true, false, 0)) {
 			Ambient_Sounds_Remove_All_Non_Looping_Sounds(true);
 			Ambient_Sounds_Remove_All_Looping_Sounds(1);
 			Game_Flag_Set(kFlagUG15toUG16b);
@@ -144,7 +144,7 @@ bool SceneScriptUG15::ClickedOnExit(int exitId) {
 	}
 
 	if (exitId == 3) {
-		if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -238.0f, 52.46f, 222.0f, 0, 1, false, 0)) {
+		if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -238.0f, 52.46f, 222.0f, 0, true, false, 0)) {
 			Ambient_Sounds_Remove_All_Non_Looping_Sounds(true);
 			Ambient_Sounds_Remove_All_Looping_Sounds(1);
 			Game_Flag_Set(kFlagUG15toUG13);
diff --git a/engines/bladerunner/script/scene_script.h b/engines/bladerunner/script/scene_script.h
index f866935..8d45053 100644
--- a/engines/bladerunner/script/scene_script.h
+++ b/engines/bladerunner/script/scene_script.h
@@ -261,7 +261,7 @@ DECLARE_SCRIPT(MA01)
 END_SCRIPT
 
 DECLARE_SCRIPT(MA02)
-	void dialogueWithRajif();
+	void talkWithRajif();
 	bool isPhoneRinging();
 	void selectNextTvNews();
 END_SCRIPT
@@ -483,13 +483,11 @@ DECLARE_SCRIPT(UG12)
 END_SCRIPT
 
 DECLARE_SCRIPT(UG13)
-	void sub_40223C();
 	void sub_4023D8();
 	void sub_4025E0();
-	void sub_402960();
 	int sub_402AD0();
-	void sub_402AD4();
-	void sub_402E24();
+	void dialogueWithHomeless1();
+	void dialogueWithHomeless2();
 END_SCRIPT
 
 DECLARE_SCRIPT(UG14)





More information about the Scummvm-git-logs mailing list