[Scummvm-git-logs] scummvm master -> 24bf47a28b317853f1c9175a8f22d6b4ba3ffc5f

antoniou79 antoniou at cti.gr
Mon May 6 22:57:47 CEST 2019


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

Summary:
4cbe0a6fe6 BLADERUNNER: Fix disabled mouse hover image blinking issues
9a510b1c47 BLADERUNNER: Fix warning for fall-through switch case
24bf47a28b BLADERUNNER: Restoring Rachael related scenes pt1


Commit: 4cbe0a6fe650045351eeb2f2e62310e0ee6e52cb
    https://github.com/scummvm/scummvm/commit/4cbe0a6fe650045351eeb2f2e62310e0ee6e52cb
Author: Thanasis Antoniou (a.antoniou79 at gmail.com)
Date: 2019-05-06T23:53:43+03:00

Commit Message:
BLADERUNNER: Fix disabled mouse hover image blinking issues

Changed paths:
    engines/bladerunner/ui/ui_image_picker.cpp


diff --git a/engines/bladerunner/ui/ui_image_picker.cpp b/engines/bladerunner/ui/ui_image_picker.cpp
index 2a6d870..dfc897e 100644
--- a/engines/bladerunner/ui/ui_image_picker.cpp
+++ b/engines/bladerunner/ui/ui_image_picker.cpp
@@ -197,19 +197,16 @@ void UIImagePicker::draw(Graphics::Surface &surface) {
 			continue;
 		}
 
-		if (i == _hoveredImageIndex && i == _pressedImageIndex && _isButtonDown) {
-			if (!_vm->_mouse->isDisabled()) {
-				if (img.shapeDown) {
-					img.shapeDown->draw(surface, img.rect.left, img.rect.top);
-				}
-			}
-		} else if (i == _hoveredImageIndex && !_isButtonDown) {
-			if (!_vm->_mouse->isDisabled()) {
-				if (img.shapeHovered) {
-					img.shapeHovered->draw(surface, img.rect.left, img.rect.top);
-				}
-			}
+		if (i == _hoveredImageIndex && i == _pressedImageIndex && _isButtonDown
+			&& !_vm->_mouse->isDisabled()
+			&& img.shapeDown) {
+			img.shapeDown->draw(surface, img.rect.left, img.rect.top);
+		} else if (i == _hoveredImageIndex && !_isButtonDown
+			&& !_vm->_mouse->isDisabled()
+			&& img.shapeHovered) {
+			img.shapeHovered->draw(surface, img.rect.left, img.rect.top);
 		} else {
+			// this shape should always be the fall back shape to prevent blinking
 			if (img.shapeUp) {
 				img.shapeUp->draw(surface, img.rect.left, img.rect.top);
 			}


Commit: 9a510b1c4709e75559108d97c2807fba409ae657
    https://github.com/scummvm/scummvm/commit/9a510b1c4709e75559108d97c2807fba409ae657
Author: Thanasis Antoniou (a.antoniou79 at gmail.com)
Date: 2019-05-06T23:53:43+03:00

Commit Message:
BLADERUNNER: Fix warning for fall-through switch case

Added a clean "fall through" comment

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


diff --git a/engines/bladerunner/script/ai/officer_leary.cpp b/engines/bladerunner/script/ai/officer_leary.cpp
index 8d2bd3b..9b9fa3f 100644
--- a/engines/bladerunner/script/ai/officer_leary.cpp
+++ b/engines/bladerunner/script/ai/officer_leary.cpp
@@ -494,7 +494,8 @@ bool AIScriptOfficerLeary::GoalChanged(int currentGoalNumber, int newGoalNumber)
 			default:
 				return false;
 			}
-			// fall through, a bug in original game?
+			// is falling through here - a bug in original game?
+			// fall through
 		case 9:
 			if (Random_Query(1, 2) - 1 == 1) {
 				AI_Movement_Track_Append(kActorOfficerLeary, 433, 10);
@@ -511,7 +512,8 @@ bool AIScriptOfficerLeary::GoalChanged(int currentGoalNumber, int newGoalNumber)
 			AI_Movement_Track_Append(kActorOfficerLeary, 420, 10);
 			AI_Movement_Track_Append(kActorOfficerLeary, 35, 30);
 			AI_Movement_Track_Repeat(kActorOfficerLeary);
-			// fall through, a bug in original game?
+			// is falling through here - a bug in original game?
+			// fall through
 		case 10:
 			AI_Movement_Track_Append(kActorOfficerLeary, 310, 0);
 			AI_Movement_Track_Append(kActorOfficerLeary, 307, 0);


Commit: 24bf47a28b317853f1c9175a8f22d6b4ba3ffc5f
    https://github.com/scummvm/scummvm/commit/24bf47a28b317853f1c9175a8f22d6b4ba3ffc5f
Author: Thanasis Antoniou (a.antoniou79 at gmail.com)
Date: 2019-05-06T23:53:43+03:00

Commit Message:
BLADERUNNER: Restoring Rachael related scenes pt1

Some testing and polishing of animations pending especially with meeting in Act 4

Changed paths:
    engines/bladerunner/game_constants.h
    engines/bladerunner/script/ai/mccoy.cpp
    engines/bladerunner/script/ai/rachael.cpp
    engines/bladerunner/script/scene/ma06.cpp
    engines/bladerunner/script/scene/ma07.cpp
    engines/bladerunner/script/scene/tb07.cpp


diff --git a/engines/bladerunner/game_constants.h b/engines/bladerunner/game_constants.h
index 8c99747..2c2f08e 100644
--- a/engines/bladerunner/game_constants.h
+++ b/engines/bladerunner/game_constants.h
@@ -1685,6 +1685,61 @@ enum GameItems {
 };
 
 enum GameModelAnimations {
+	kModelAnimationMcCoyWithGunIdle              =   0,
+	kModelAnimationMcCoyWithGunGotHitRight       =   1,
+	kModelAnimationMcCoyWithGunGotHitLeft        =   2,
+	kModelAnimationMcCoyWithGunWalking           =   3,
+	kModelAnimationMcCoyWithGunRunning           =   4,
+	kModelAnimationMcCoyWithGunShotDead          =   5,
+	kModelAnimationMcCoyWithGunClimbStairsUp     =   6,
+	kModelAnimationMcCoyWithGunClimbStairsDown   =   7,
+	kModelAnimationMcCoyWithGunUnholsterGun      =   8,
+	kModelAnimationMcCoyWithGunHolsterGun        =   9,
+	kModelAnimationMcCoyWithGunAiming            =  10,
+	kModelAnimationMcCoyWithGunStopAimResumeIdle =  11,
+	kModelAnimationMcCoyWithGunShooting          =  12,
+	kModelAnimationMcCoyWalking                  =  13,
+	kModelAnimationMcCoyRunning                  =  14,
+	kModelAnimationMcCoyClimbStairsUp            =  15,
+	kModelAnimationMcCoyClimbStairsDown          =  16,
+	kModelAnimationMcCoyGotHitRight              =  17,
+	kModelAnimationMcCoyFallsOnHisBack           =  18,
+	kModelAnimationMcCoyIdle                     =  19,
+	kModelAnimationMcCoyProtestingTalk           =  20,
+	kModelAnimationMcCoyScratchHeadTalk          =  21,
+	kModelAnimationMcCoyPointingTalk             =  22,
+	kModelAnimationMcCoyUpsetTalk                =  23,
+	kModelAnimationMcCoyDismissiveTalk           =  24,
+	kModelAnimationMcCoyScratchEarTalk           =  25,
+	kModelAnimationMcCoyHandsOnWaistTalk         =  26,
+	kModelAnimationMcCoyScratchEarLongerTalk     =  27,
+	kModelAnimationMcCoyDodgeAndDrawGun          =  28,
+	kModelAnimationMcCoyLeaningOver              =  29,
+	kModelAnimationMcCoyThrowsBeggarInTrash      =  30,
+	kModelAnimationMcCoyDiesInAgony              =  31,
+	kModelAnimationMcCoyGivesFromPocket          =  32,
+	kModelAnimationMcCoyLeaningOverSearching     =  33,
+	kModelAnimationMcCoyLeaningOverResumeIdle    =  34,
+	kModelAnimationMcCoyEntersSpinner            =  35,
+	kModelAnimationMcCoyExitsSpinner             =  36,
+	kModelAnimationMcCoyClimbsLadderUp           =  37,
+	kModelAnimationMcCoyClimbsLadderDown         =  38,
+	kModelAnimationMcCoyRecoversFromPassingOut   =  39,
+	kModelAnimationMcCoyGiveMovement             =  40,
+	kModelAnimationMcCoySittingToUseConsole      =  41,
+	kModelAnimationMcCoyWithGunGrabbedByArm0     =  42,
+	kModelAnimationMcCoyWithGunGrabbedByArm1     =  43,
+	kModelAnimationMcCoyWithGunGrabbedByArmHurt  =  44,
+	kModelAnimationMcCoyWithGunGrabbedByArmFreed =  45,
+	kModelAnimationMcCoyTiedInChairIdle          =  46,
+	kModelAnimationMcCoyTiedInChairMoving        =  47,
+	kModelAnimationMcCoyTiedInChairFreed         =  48,
+	kModelAnimationMcCoyStartled                 =  49,
+	kModelAnimationMcCoyCrouchingDown            =  50,
+	kModelAnimationMcCoyCrouchedIdle             =  51,
+	kModelAnimationMcCoyCrouchedGetsUp           =  52,
+	kModelAnimationMcCoyDrinkingBooze            =  53,
+	//
 	kModelAnimationBulletBobsTrackingGun       = 440,
 	kModelAnimationMaleTargetEmptyHandsActive  = 441,
 	kModelAnimationMaleTargetEmptyHandsDead    = 442, // 441+1
@@ -2204,6 +2259,26 @@ enum GoalBulletBob {
 	kGoalBulletBobGone = 99
 };
 
+enum GoalRachael {
+	kGoalRachaelDefault                        =   0,
+	kGoalRachaelLeavesAfterTyrellMeeting       = 200,
+	kGoalRachaelShouldBeOutsideMcCoysAct3      = 211, // added Rachael goal
+	kGoalRachaelShouldBeInElevatorMcCoysAct3   = 212, // added Rachael goal
+	kGoalRachaelIsOutsideMcCoysBuildingAct3    = 300,
+	kGoalRachaelIsInsideMcCoysElevatorAct3     = 302, // added Rachael goal
+	kGoalRachaelIsInsideElevatorStartTalkAct3  = 303, // added Rachael goal
+	kGoalRachaelIsOutWalksToPoliceHQAct3       = 305,
+	kGoalRachaelIsOutResumesWalkToPoliceHQAct3 = 306,
+	kGoalRachaelIsOutFleeingToPoliceHQAct3     = 307, // added Rachael goal
+	kGoalRachaelAtEndOfAct3IfNotMetWithMcCoy   = 399, // added Rachael goal
+	kGoalRachaelAtEndOfAct3IfMetWithMcCoy      = 400,
+	kGoalRachaelIsInsideMcCoysElevatorAct4     = 402, // added Rachael goal
+	kGoalRachaelIsInsideElevatorStartTalkAct4  = 403, // added Rachael goal
+	kGoalRachaelIsOutsideMcCoysBuildingAct4    = 404, // added Rachael goal
+	kGoalRachaelIsOutWalksToPoliceHQAct4       = 405, // added Rachael goal
+	kGoalRachaelAtEndOfAct4                    = 499  // added Rachael goal
+};
+
 enum GoalRunciter {
 	kGoalRunciterDefault = 0,
 	kGoalRunciterRC02WalkAround = 1,
@@ -2559,7 +2634,7 @@ enum SFXSounds {
 	kSfxDRAMB5   = 111,  //           - Looping
 	kSfxFACTAMB2 = 112,  //             Looping
 	kSfxDRRAIN1  = 113,  // unused    - Looping
-	kSfxSPINUP1  = 114,  // used only once
+	kSfxSPINUP1  = 114,  // elevator sound
 	kSfxSPINOPN3 = 115,  // unused
 	kSfxSPINOPN4 = 116,
 	kSfxCARUP3   = 117,
diff --git a/engines/bladerunner/script/ai/mccoy.cpp b/engines/bladerunner/script/ai/mccoy.cpp
index 432c75f..d05266b 100644
--- a/engines/bladerunner/script/ai/mccoy.cpp
+++ b/engines/bladerunner/script/ai/mccoy.cpp
@@ -547,7 +547,7 @@ bool AIScriptMcCoy::UpdateAnimation(int *animation, int *frame) {
 	int v7;
 	switch (_animationState) {
 	case 0:
-		*animation = 19;
+		*animation = kModelAnimationMcCoyIdle;
 		if (_animationLoopCounter < _animationLoopLength) {
 			_animationFrame += _animationLoopDirection;
 			if (_animationFrame > _animationLoopFrameMax) {
@@ -602,11 +602,11 @@ bool AIScriptMcCoy::UpdateAnimation(int *animation, int *frame) {
 			_animationNextSpecial = 20;
 		} else if (_animationFrame <= 4 && Game_Flag_Query(kFlagMcCoyAnimation1)) {
 			Game_Flag_Reset(kFlagMcCoyAnimation1);
-			*animation = 19;
+			*animation = kModelAnimationMcCoyIdle;
 			_animationFrame = 0;
 			_animationState = 0;
 		} else {
-			*animation = 20;
+			*animation = kModelAnimationMcCoyProtestingTalk;
 			_animationFrame++;
 			if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
 				_animationFrame = 0;
@@ -615,87 +615,87 @@ bool AIScriptMcCoy::UpdateAnimation(int *animation, int *frame) {
 		break;
 
 	case 5:
-		*animation = 21;
+		*animation = kModelAnimationMcCoyScratchHeadTalk;
 		_animationFrame++;
 		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
 			_animationFrame = 0;
 			_animationState = 3;
-			*animation = 20;
+			*animation = kModelAnimationMcCoyProtestingTalk;
 		}
 		break;
 
 	case 6:
-		*animation = 27;
+		*animation = kModelAnimationMcCoyScratchEarLongerTalk;
 		_animationFrame++;
 		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
 			_animationFrame = 0;
 			_animationState = 3;
-			*animation = 20;
+			*animation = kModelAnimationMcCoyProtestingTalk;
 		}
 		break;
 
 	case 7:
-		*animation = 22;
+		*animation = kModelAnimationMcCoyPointingTalk;
 		_animationFrame++;
 		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
 			_animationFrame = 0;
 			_animationState = 3;
-			*animation = 20;
+			*animation = kModelAnimationMcCoyProtestingTalk;
 		}
 		break;
 
 	case 8:
-		*animation = 23;
+		*animation = kModelAnimationMcCoyUpsetTalk;
 		_animationFrame++;
 		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
 			_animationFrame = 0;
 			_animationState = 3;
-			*animation = 20;
+			*animation = kModelAnimationMcCoyProtestingTalk;
 		}
 		break;
 
 	case 9:
-		*animation = 24;
+		*animation = kModelAnimationMcCoyDismissiveTalk;
 		_animationFrame++;
 		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
 			_animationFrame = 0;
 			_animationState = 3;
-			*animation = 20;
+			*animation = kModelAnimationMcCoyProtestingTalk;
 		}
 		break;
 
 	case 10:
-		*animation = 25;
+		*animation = kModelAnimationMcCoyScratchEarTalk;
 		_animationFrame++;
 		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
 			_animationFrame = 0;
 			_animationState = 3;
-			*animation = 20;
+			*animation = kModelAnimationMcCoyProtestingTalk;
 		}
 		break;
 
 	case 11:
-		*animation = 26;
+		*animation = kModelAnimationMcCoyHandsOnWaistTalk;
 		_animationFrame++;
 		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
 			_animationFrame = 0;
 			_animationState = 3;
-			*animation = 20;
+			*animation = kModelAnimationMcCoyProtestingTalk;
 		}
 		break;
 
 	case 12:
-		*animation = 27;
+		*animation = kModelAnimationMcCoyScratchEarLongerTalk;
 		_animationFrame++;
 		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
 			_animationFrame = 0;
 			_animationState = 3;
-			*animation = 20;
+			*animation = kModelAnimationMcCoyProtestingTalk;
 		}
 		break;
 
 	case 13:
-		*animation = 19;
+		*animation = kModelAnimationMcCoyIdle;
 		if (_animationFrame < Slice_Animation_Query_Number_Of_Frames(*animation) / 2) {
 			_animationFrame -= 3;
 			if (_animationFrame <= 0) {
@@ -714,7 +714,7 @@ bool AIScriptMcCoy::UpdateAnimation(int *animation, int *frame) {
 		break;
 
 	case 14:
-		*animation = 0;
+		*animation = kModelAnimationMcCoyWithGunIdle;
 		_animationFrame++;
 		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
 			_animationState = 14;
@@ -723,27 +723,27 @@ bool AIScriptMcCoy::UpdateAnimation(int *animation, int *frame) {
 		break;
 
 	case 15:
-		*animation = 8;
+		*animation = kModelAnimationMcCoyWithGunUnholsterGun;
 		_animationFrame++;
 		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
 			_animationFrame = 0;
 			_animationState = 14;
-			*animation = 0;
+			*animation = kModelAnimationMcCoyWithGunIdle;
 		}
 		break;
 
 	case 16:
-		*animation = 9;
+		*animation = kModelAnimationMcCoyWithGunHolsterGun;
 		_animationFrame++;
 		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
-			*animation = 19;
+			*animation = kModelAnimationMcCoyIdle;
 			_animationFrame = 0;
 			_animationState = 0;
 		}
 		break;
 
 	case 17:
-		*animation = 12;
+		*animation = kModelAnimationMcCoyWithGunShooting;
 		_animationFrame = 0;
 		// weird, but thats in game code
 		if (Slice_Animation_Query_Number_Of_Frames(*animation) <= 0) {
@@ -753,27 +753,27 @@ bool AIScriptMcCoy::UpdateAnimation(int *animation, int *frame) {
 		break;
 
 	case 18:
-		*animation = 10;
+		*animation = kModelAnimationMcCoyWithGunAiming;
 		_animationFrame++;
 		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
 			_animationFrame = 0;
 			_animationState = 17;
-			*animation = 12;
+			*animation = kModelAnimationMcCoyWithGunShooting;
 		}
 		break;
 
 	case 19:
-		*animation = 11;
+		*animation = kModelAnimationMcCoyWithGunStopAimResumeIdle;
 		_animationFrame++;
 		if (_animationFrame >= 12) {
 			_animationFrame = 0;
 			_animationState = 14;
-			*animation = 0;
+			*animation = kModelAnimationMcCoyWithGunIdle;
 		}
 		break;
 
 	case 21:
-		*animation = 12;
+		*animation = kModelAnimationMcCoyWithGunShooting;
 		_animationFrame++;
 		if (_animationFrame == 1
 		 && Actor_Query_Goal_Number(kActorMcCoy) == kGoalMcCoyNR11Shoot
@@ -784,12 +784,12 @@ bool AIScriptMcCoy::UpdateAnimation(int *animation, int *frame) {
 		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
 			_animationState = 17;
 			_animationFrame = 0;
-			*animation = 12;
+			*animation = kModelAnimationMcCoyWithGunShooting;
 			if (Actor_Query_Goal_Number(kActorMcCoy) == kGoalMcCoyNR11Shoot) {
 				_animationFrame = 0;
 				_animationState = 21;
 				_NR10SteeleShooting = true;
-				*animation = 12;
+				*animation = kModelAnimationMcCoyWithGunShooting;
 			}
 		}
 		break;
@@ -797,36 +797,36 @@ bool AIScriptMcCoy::UpdateAnimation(int *animation, int *frame) {
 	case 22:
 		_animationFrame = 0;
 		_animationState = 17;
-		*animation = 12;
+		*animation = kModelAnimationMcCoyWithGunShooting;
 		break;
 
 	case 23:
-		*animation = 1;
+		*animation = kModelAnimationMcCoyWithGunGotHitRight;
 		_animationFrame++;
 		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
 			_animationFrame = 0;
 			_animationState = 14;
-			*animation = 0;
+			*animation = kModelAnimationMcCoyWithGunIdle;
 			Actor_Change_Animation_Mode(kActorMcCoy, kAnimationModeCombatIdle);
 		}
 		break;
 
 	case 24:
-		*animation = 1;
+		*animation = kModelAnimationMcCoyWithGunGotHitRight;
 		_animationFrame++;
 		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
 			_animationFrame = 0;
 			_animationState = 14;
-			*animation = 0;
+			*animation = kModelAnimationMcCoyWithGunIdle;
 			Actor_Change_Animation_Mode(kActorMcCoy, kAnimationModeCombatIdle);
 		}
 		break;
 
 	case 25:
-		*animation = 17;
+		*animation = kModelAnimationMcCoyGotHitRight;
 		_animationFrame++;
 		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
-			*animation = 19;
+			*animation = kModelAnimationMcCoyIdle;
 			_animationFrame = 0;
 			_animationState = 0;
 			Actor_Change_Animation_Mode(kActorMcCoy, kAnimationModeIdle);
@@ -834,10 +834,10 @@ bool AIScriptMcCoy::UpdateAnimation(int *animation, int *frame) {
 		break;
 
 	case 26:
-		*animation = 17;
+		*animation = kModelAnimationMcCoyGotHitRight;
 		_animationFrame++;
 		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
-			*animation = 19;
+			*animation = kModelAnimationMcCoyIdle;
 			_animationFrame = 0;
 			_animationState = 0;
 			Actor_Change_Animation_Mode(kActorMcCoy, kAnimationModeIdle);
@@ -845,7 +845,7 @@ bool AIScriptMcCoy::UpdateAnimation(int *animation, int *frame) {
 		break;
 
 	case 27:
-		*animation = 18;
+		*animation = kModelAnimationMcCoyFallsOnHisBack;
 		_animationFrame++;
 		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
 			_animationFrame = Slice_Animation_Query_Number_Of_Frames(*animation) - 1;
@@ -858,7 +858,7 @@ bool AIScriptMcCoy::UpdateAnimation(int *animation, int *frame) {
 		break;
 
 	case 28:
-		*animation = 5;
+		*animation = kModelAnimationMcCoyWithGunShotDead;
 		_animationFrame++;
 		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
 			_animationFrame = Slice_Animation_Query_Number_Of_Frames(*animation) - 1;
@@ -868,21 +868,21 @@ bool AIScriptMcCoy::UpdateAnimation(int *animation, int *frame) {
 		break;
 
 	case 29:
-		*animation = 18;
+		*animation = kModelAnimationMcCoyFallsOnHisBack;
 		_animationFrame += _animationLoopDirection;
 		if (_animationFrame < 14) {
 			_animationLoopDirection = 1;
 		}
 		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
 			Actor_Change_Animation_Mode(kActorMcCoy, kAnimationModeDie);
-			*animation = 18;
+			*animation = kModelAnimationMcCoyFallsOnHisBack;
 			_animationState = 27;
 			_animationFrame = Slice_Animation_Query_Number_Of_Frames(*animation) - 1;
 		}
 		break;
 
 	case 30:
-		*animation = 13;
+		*animation = kModelAnimationMcCoyWalking;
 		_animationFrame++;
 		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
 			_animationFrame = 0;
@@ -895,7 +895,7 @@ bool AIScriptMcCoy::UpdateAnimation(int *animation, int *frame) {
 		break;
 
 	case 31:
-		*animation = 14;
+		*animation = kModelAnimationMcCoyRunning;
 		_animationFrame++;
 		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
 			_animationFrame = 0;
@@ -910,11 +910,11 @@ bool AIScriptMcCoy::UpdateAnimation(int *animation, int *frame) {
 	case 32:
 		_animationFrame = 1;
 		_animationState = 30;
-		*animation = 13;
+		*animation = kModelAnimationMcCoyWalking;
 		break;
 
 	case 36:
-		*animation = 3;
+		*animation = kModelAnimationMcCoyWithGunWalking;
 		_animationFrame++;
 		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
 			_animationFrame = 0;
@@ -928,7 +928,7 @@ bool AIScriptMcCoy::UpdateAnimation(int *animation, int *frame) {
 		break;
 
 	case 37:
-		*animation = 4;
+		*animation = kModelAnimationMcCoyWithGunRunning;
 		_animationFrame++;
 		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
 			_animationFrame = 0;
@@ -942,7 +942,7 @@ bool AIScriptMcCoy::UpdateAnimation(int *animation, int *frame) {
 		break;
 
 	case 38:
-		*animation = 15;
+		*animation = kModelAnimationMcCoyClimbStairsUp;
 		_animationFrame++;
 		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
 			_animationFrame = 0;
@@ -958,7 +958,7 @@ bool AIScriptMcCoy::UpdateAnimation(int *animation, int *frame) {
 		break;
 
 	case 39:
-		*animation = 16;
+		*animation = kModelAnimationMcCoyClimbStairsDown;
 		_animationFrame++;
 		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
 			_animationFrame = 0;
@@ -974,7 +974,7 @@ bool AIScriptMcCoy::UpdateAnimation(int *animation, int *frame) {
 		break;
 
 	case 40:
-		*animation = 6;
+		*animation = kModelAnimationMcCoyWithGunClimbStairsUp;
 		_animationFrame++;
 		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
 			_animationFrame = 0;
@@ -990,7 +990,7 @@ bool AIScriptMcCoy::UpdateAnimation(int *animation, int *frame) {
 		break;
 
 	case 41:
-		*animation = 7;
+		*animation = kModelAnimationMcCoyWithGunClimbStairsDown;
 		_animationFrame++;
 		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
 			_animationFrame = 0;
@@ -1006,7 +1006,7 @@ bool AIScriptMcCoy::UpdateAnimation(int *animation, int *frame) {
 		break;
 
 	case 42:
-		*animation = 37;
+		*animation = kModelAnimationMcCoyClimbsLadderUp;
 		_animationFrame++;
 		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation) - 1) { //why -1?
 			_animationFrame = 0;
@@ -1025,7 +1025,7 @@ bool AIScriptMcCoy::UpdateAnimation(int *animation, int *frame) {
 		break;
 
 	case 43:
-		*animation = 38;
+		*animation = kModelAnimationMcCoyClimbsLadderDown;
 		_animationFrame++;
 		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation) - 1) { //why -1?
 			_animationFrame = 0;
@@ -1044,13 +1044,13 @@ bool AIScriptMcCoy::UpdateAnimation(int *animation, int *frame) {
 		break;
 
 	case 44:
-		*animation = 30;
+		*animation = kModelAnimationMcCoyThrowsBeggarInTrash;
 		_animationFrame++;
 		if (_animationFrame == 127) {
 			Game_Flag_Set(kFlagCT04BodyDumped);
 		}
 		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
-			*animation = 19;
+			*animation = kModelAnimationMcCoyIdle;
 			_animationFrame = 0;
 			ChangeAnimationMode(kAnimationModeIdle);
 			Actor_Set_At_XYZ(kActorMcCoy, -203.41f, -621.3f, 724.57f, 538);
@@ -1059,11 +1059,11 @@ bool AIScriptMcCoy::UpdateAnimation(int *animation, int *frame) {
 		break;
 
 	case 45:
-		*animation = 35;
+		*animation = kModelAnimationMcCoyEntersSpinner;
 		_animationFrame++;
 		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
 			Actor_Set_Invisible(kActorMcCoy, true);
-			*animation = 19;
+			*animation = kModelAnimationMcCoyIdle;
 			_animationFrame = 0;
 			ChangeAnimationMode(kAnimationModeIdle);
 		}
@@ -1071,10 +1071,10 @@ bool AIScriptMcCoy::UpdateAnimation(int *animation, int *frame) {
 
 	case 46:
 		Actor_Set_Invisible(kActorMcCoy, false);
-		*animation = 36;
+		*animation = kModelAnimationMcCoyExitsSpinner;
 		_animationFrame++;
 		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
-			*animation = 19;
+			*animation = kModelAnimationMcCoyIdle;
 			_animationFrame = 0;
 			Player_Gains_Control();
 			ChangeAnimationMode(kAnimationModeIdle);
@@ -1083,43 +1083,43 @@ bool AIScriptMcCoy::UpdateAnimation(int *animation, int *frame) {
 		break;
 
 	case 47:
-		*animation = 29;
+		*animation = kModelAnimationMcCoyLeaningOver;
 		_animationFrame++;
 		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
 			_animationFrame = 0;
 			_animationState = 48;
-			*animation = 33;
+			*animation = kModelAnimationMcCoyLeaningOverSearching;
 		}
 		break;
 
-	case kAnimationModeDie:
-		*animation = 33;
+	case 48:
+		*animation = kModelAnimationMcCoyLeaningOverSearching;
 		_animationFrame++;
 		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
 			_animationFrame = 0;
 			_animationState = 49;
-			*animation = 34;
+			*animation = kModelAnimationMcCoyLeaningOverResumeIdle;
 		}
 		break;
 
-	case kAnimationModeCombatDie:
-		*animation = 34;
+	case 49:
+		*animation = kModelAnimationMcCoyLeaningOverResumeIdle;
 		_animationFrame++;
 		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
 			Actor_Set_Goal_Number(kActorMcCoy, kGoalMcCoyDefault);
-			*animation = 19;
+			*animation = kModelAnimationMcCoyIdle;
 			_animationFrame = 0;
 			ChangeAnimationMode(kAnimationModeIdle);
 		}
 		break;
 
 	case 50:
-		*animation = 18;
+		*animation = kModelAnimationMcCoyFallsOnHisBack;
 		_animationFrame = Slice_Animation_Query_Number_Of_Frames(*animation) - 1;
 		break;
 
 	case 51:
-		*animation = 28;
+		*animation = kModelAnimationMcCoyDodgeAndDrawGun;
 		_animationFrame++;
 		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
 			Player_Set_Combat_Mode(true);
@@ -1131,7 +1131,7 @@ bool AIScriptMcCoy::UpdateAnimation(int *animation, int *frame) {
 		break;
 
 	case 52:
-		*animation = 31;
+		*animation = kModelAnimationMcCoyDiesInAgony;
 		_animationFrame++;
 		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
 			_animationFrame = Slice_Animation_Query_Number_Of_Frames(*animation) - 1;
@@ -1140,11 +1140,11 @@ bool AIScriptMcCoy::UpdateAnimation(int *animation, int *frame) {
 		break;
 
 	case 53:
-		*animation = 18;
+		*animation = kModelAnimationMcCoyFallsOnHisBack;
 		_animationFrame--;
 		if (_animationFrame <= 0) {
 			Actor_Change_Animation_Mode(kActorMcCoy, kAnimationModeIdle);
-			*animation = 19;
+			*animation = kModelAnimationMcCoyIdle;
 			_animationFrame = 0;
 			_animationState = 0;
 			if (Actor_Query_Goal_Number(kActorMcCoy) == kGoalMcCoyBB11GetUp) {
@@ -1157,26 +1157,26 @@ bool AIScriptMcCoy::UpdateAnimation(int *animation, int *frame) {
 		break;
 
 	case 55:
-		*animation = 32;
+		*animation = kModelAnimationMcCoyGivesFromPocket;
 		_animationFrame++;
 		if (_animationFrame == 7) {
 			Actor_Change_Animation_Mode(kActorMaggie, kAnimationModeFeeding);
 		}
 		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
-			*animation = 19;
+			*animation = kModelAnimationMcCoyIdle;
 			_animationState = 0;
 		}
 		break;
 
 	case 56:
-		*animation = 49;
+		*animation = kModelAnimationMcCoyStartled;
 		_animationFrame++;
 		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
 			_animationFrame = 0;
 			if (Actor_Query_Which_Set_In(kActorMcCoy) == kSetUG15) {
 				_animationState = 27;
 			} else {
-				*animation = 19;
+				*animation = kModelAnimationMcCoyIdle;
 				_animationState = 0;
 				Actor_Change_Animation_Mode(kActorMcCoy, kAnimationModeIdle);
 			}
@@ -1184,7 +1184,7 @@ bool AIScriptMcCoy::UpdateAnimation(int *animation, int *frame) {
 		break;
 
 	case 57:
-		*animation = 46;
+		*animation = kModelAnimationMcCoyTiedInChairIdle;
 		_animationFrame++;
 		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
 			_animationFrame = 0;
@@ -1192,12 +1192,12 @@ bool AIScriptMcCoy::UpdateAnimation(int *animation, int *frame) {
 		if (!Game_Flag_Query(kFlagMcCoyTiedDown)) {
 			_animationFrame = 0;
 			_animationState = 59;
-			*animation = 48;
+			*animation = kModelAnimationMcCoyTiedInChairFreed;
 		}
 		break;
 
 	case 58:
-		*animation = 47;
+		*animation = kModelAnimationMcCoyTiedInChairMoving;
 		_animationFrame++;
 		if (_animationFrame == 6) {
 			// Play one of kSfxCHARMTL7, kSfxCHARMTL8, kSfxCHARMTL9
@@ -1209,10 +1209,10 @@ bool AIScriptMcCoy::UpdateAnimation(int *animation, int *frame) {
 		break;
 
 	case 59:
-		*animation = 48;
+		*animation = kModelAnimationMcCoyTiedInChairFreed;
 		_animationFrame++;
 		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
-			*animation = 19;
+			*animation = kModelAnimationMcCoyIdle;
 			_animationFrame = 0;
 			_animationLoopLength = 0;
 			_animationState = 0;
@@ -1222,17 +1222,17 @@ bool AIScriptMcCoy::UpdateAnimation(int *animation, int *frame) {
 		break;
 
 	case 60:
-		*animation = 41;
+		*animation = kModelAnimationMcCoySittingToUseConsole;
 		if (_animationFrame < Slice_Animation_Query_Number_Of_Frames(*animation) - 1) {
 			_animationFrame++;
 		}
 		break;
 
 	case 61:
-		*animation = 41;
+		*animation = kModelAnimationMcCoySittingToUseConsole;
 		_animationFrame--;
 		if (_animationFrame <= 0) {
-			*animation = 19;
+			*animation = kModelAnimationMcCoyIdle;
 			_animationFrame = 0;
 			_animationState = 0;
 			if (Actor_Query_Goal_Number(kActorMcCoy) == kGoalMcCoyNRxxSitAtTable) {
@@ -1242,17 +1242,17 @@ bool AIScriptMcCoy::UpdateAnimation(int *animation, int *frame) {
 		break;
 
 	case 62:
-		*animation = 42;
+		*animation = kModelAnimationMcCoyWithGunGrabbedByArm0;
 		_animationFrame++;
 		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
 			_animationFrame = 0;
 			_animationState = 63;
-			*animation = 43;
+			*animation = kModelAnimationMcCoyWithGunGrabbedByArm1;
 		}
 		break;
 
 	case 63:
-		*animation = 43;
+		*animation = kModelAnimationMcCoyWithGunGrabbedByArm1;
 		_animationFrame++;
 		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
 			_animationFrame = 0;
@@ -1260,43 +1260,43 @@ bool AIScriptMcCoy::UpdateAnimation(int *animation, int *frame) {
 		break;
 
 	case 64:
-		*animation = 44;
+		*animation = kModelAnimationMcCoyWithGunGrabbedByArmHurt;
 		_animationFrame++;
 		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
 			_animationFrame = 0;
 			_animationState = 63;
-			*animation = 43;
+			*animation = kModelAnimationMcCoyWithGunGrabbedByArm1;
 		}
 		break;
 
 	case 65:
-		*animation = 45;
+		*animation = kModelAnimationMcCoyWithGunGrabbedByArmFreed;
 		_animationFrame++;
 		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
 			_animationFrame = 0;
 			_animationState = 14;
-			*animation = 0;
+			*animation = kModelAnimationMcCoyWithGunIdle;
 			Actor_Set_Goal_Number(kActorMcCoy, kGoalMcCoyDefault);
 		}
 		break;
 
 	case 66:
-		*animation = 40;
+		*animation = kModelAnimationMcCoyGiveMovement;
 		_animationFrame++;
 		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
 			Actor_Change_Animation_Mode(kActorMcCoy, kAnimationModeIdle);
-			*animation = 19;
+			*animation = kModelAnimationMcCoyIdle;
 			_animationFrame = 0;
 			_animationState = 0;
 		}
 		break;
 
 	case 67:
-		*animation = 53;
+		*animation = kModelAnimationMcCoyDrinkingBooze;
 		_animationFrame++;
 		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
 			Actor_Change_Animation_Mode(kActorMcCoy, kAnimationModeIdle);
-			*animation = 19;
+			*animation = kModelAnimationMcCoyIdle;
 			_animationState = 0;
 			_animationFrame = 0;
 			if (Actor_Query_Goal_Number(kActorMcCoy) == kGoalMcCoyNR04Drink) {
@@ -1306,7 +1306,7 @@ bool AIScriptMcCoy::UpdateAnimation(int *animation, int *frame) {
 		break;
 
 	case 68:
-		*animation = 18;
+		*animation = kModelAnimationMcCoyFallsOnHisBack;
 		v7 = Slice_Animation_Query_Number_Of_Frames(*animation) - 1 - Global_Variable_Query(kVariableNR01GetUpCounter);
 		if (_animationFrame < v7) {
 			_animationFrame++;
@@ -1315,7 +1315,7 @@ bool AIScriptMcCoy::UpdateAnimation(int *animation, int *frame) {
 		}
 		if (_animationFrame <= 0) {
 			Actor_Change_Animation_Mode(kActorMcCoy, kAnimationModeIdle);
-			*animation = 19;
+			*animation = kModelAnimationMcCoyIdle;
 			_animationState = 0;
 			_animationFrame = 0;
 			Game_Flag_Reset(kFlagNR01McCoyIsDrugged);
@@ -1326,16 +1326,16 @@ bool AIScriptMcCoy::UpdateAnimation(int *animation, int *frame) {
 		break;
 
 	case 69:
-		*animation = 50;
+		*animation = kModelAnimationMcCoyCrouchingDown;
 		_animationFrame++;
 		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
 			Actor_Change_Animation_Mode(kActorMcCoy, kAnimationModeSit);
-			*animation = 51;
+			*animation = kModelAnimationMcCoyCrouchedIdle;
 		}
 		break;
 
 	case 70:
-		*animation = 51;
+		*animation = kModelAnimationMcCoyCrouchedIdle;
 		_animationFrame++;
 		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
 			_animationFrame = 0;
@@ -1343,11 +1343,11 @@ bool AIScriptMcCoy::UpdateAnimation(int *animation, int *frame) {
 		break;
 
 	case 71:
-		*animation = 52;
+		*animation = kModelAnimationMcCoyCrouchedGetsUp;
 		_animationFrame++;
 		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
 			Actor_Change_Animation_Mode(kActorMcCoy, kAnimationModeIdle);
-			*animation = 19;
+			*animation = kModelAnimationMcCoyIdle;
 			_animationFrame = 0;
 			_animationState = 0;
 			Player_Gains_Control();
diff --git a/engines/bladerunner/script/ai/rachael.cpp b/engines/bladerunner/script/ai/rachael.cpp
index 5045769..49baab4 100644
--- a/engines/bladerunner/script/ai/rachael.cpp
+++ b/engines/bladerunner/script/ai/rachael.cpp
@@ -36,10 +36,32 @@ void AIScriptRachael::Initialize() {
 
 	_flag = true;
 
-	Actor_Set_Goal_Number(kActorRachael, 0);
+	Actor_Set_Goal_Number(kActorRachael, kGoalRachaelDefault);
 }
 
 bool AIScriptRachael::Update() {
+	if (_vm->_cutContent) {
+		if (Global_Variable_Query(kVariableChapter) == 3) {
+			if (Actor_Query_Goal_Number(kActorRachael) == kGoalRachaelLeavesAfterTyrellMeeting) {
+				// Decide 50-50 whether Rachael will be encountered outside or in the elevator in Act 3
+				if (Random_Query(1,2 ) == 1) {
+					Actor_Set_Goal_Number(kActorRachael, kGoalRachaelShouldBeOutsideMcCoysAct3);
+				} else {
+					Actor_Set_Goal_Number(kActorRachael, kGoalRachaelShouldBeInElevatorMcCoysAct3);
+				}
+				return true;
+			}
+		} else if (Global_Variable_Query(kVariableChapter) == 4) {
+			if (Actor_Query_Goal_Number(kActorRachael) < 399) {
+				Actor_Set_Goal_Number(kActorRachael, kGoalRachaelAtEndOfAct3IfNotMetWithMcCoy);
+				return true;
+			}
+		} else if (Global_Variable_Query(kVariableChapter) > 4
+		        && Actor_Query_Goal_Number(kActorRachael) != kGoalRachaelAtEndOfAct4) {
+				Actor_Set_Goal_Number(kActorRachael, kGoalRachaelAtEndOfAct4);
+				return true;
+		}
+	}
 	return false;
 }
 
@@ -58,23 +80,20 @@ void AIScriptRachael::ReceivedClue(int clueId, int fromActorId) {
 void AIScriptRachael::ClickedByPlayer() {
 	if (Actor_Query_Goal_Number(kActorRachael) == 305) {
 		Actor_Face_Actor(kActorMcCoy, kActorRachael, true);
-		Actor_Says(kActorMcCoy, 2730, 12); // "Rachael, right?"
+		Actor_Says(kActorMcCoy, 2730, 12);     // "Rachael, right?"
 		AI_Movement_Track_Pause(kActorRachael);
-		dialogue_start();  // "I remember you mr McCoy" till "I'm fine, thank you for asking."
+		dialogue_start(); // "I remember you mr McCoy" till "I'm fine, thank you for asking."
 
-		if (Player_Query_Agenda() == kPlayerAgendaSurly || Player_Query_Agenda() == kPlayerAgendaErratic) {
+		// the structure is simplified (maintaining the same logic flow)
+		if ((Player_Query_Agenda() == kPlayerAgendaSurly || Player_Query_Agenda() == kPlayerAgendaErratic)
+			|| (Player_Query_Agenda() != kPlayerAgendaPolite && Actor_Query_Friendliness_To_Other(kActorSteele, kActorMcCoy) > Actor_Query_Friendliness_To_Other(kActorClovis, kActorMcCoy))
+		){
 			dialogue_agenda2();
-		} else if (Player_Query_Agenda()) {
-			if (Actor_Query_Friendliness_To_Other(kActorSteele, kActorMcCoy) > Actor_Query_Friendliness_To_Other(kActorClovis, kActorMcCoy)) {
-				dialogue_agenda2();
-			} else {
-				dialogue_agenda1();
-			}
 		} else {
 			dialogue_agenda1();
 		}
 
-		Actor_Set_Goal_Number(kActorRachael, 306);
+		Actor_Set_Goal_Number(kActorRachael, kGoalRachaelIsOutResumesWalkToPoliceHQAct3);
 		AI_Movement_Track_Unpause(kActorRachael);
 	}
 }
@@ -113,26 +132,41 @@ int AIScriptRachael::GetFriendlinessModifierIfGetsClue(int otherActorId, int clu
 
 bool AIScriptRachael::GoalChanged(int currentGoalNumber, int newGoalNumber) {
 	switch (newGoalNumber) {
-	case 200:
+	case kGoalRachaelLeavesAfterTyrellMeeting:
 		AI_Movement_Track_Flush(kActorRachael);
 		AI_Movement_Track_Append(kActorRachael, 379, 0);
 		AI_Movement_Track_Append(kActorRachael, 39, 0);
 		AI_Movement_Track_Repeat(kActorRachael);
 		break;
 
-	case 300:
-		// Presumably Rachael's goal is set to 300
-		//    a) when Chapter 3 starts if McCoy met Rachael at Tyrell's during Chapter 2
-		// OR b) after he has met her at Tyrell's if he makes the appointment during Chapter 3
-		// It's unlikely to be connected to random chance
-		//
+	case kGoalRachaelIsOutsideMcCoysBuildingAct4:
+		// added goal for restored content
+		// fall through
+	case kGoalRachaelIsOutsideMcCoysBuildingAct3:
 		// This puts Rachael outside McCoy's building
 		Actor_Put_In_Set(kActorRachael, kSetMA07);
 		Actor_Set_At_XYZ(kActorRachael, -8.09f, -162.8f, 135.33f, 544);
 		break;
 
-	case 305:
-		// Rachael's goal is set to 305 when the player walks in the MA07 scene and if her goal is already 300
+	case kGoalRachaelIsInsideElevatorStartTalkAct3:
+		// added goal for restored content
+		dialogue_start(); // "I remember you mr McCoy" till "I'm fine, thank you for asking."
+
+		// the structure is simplified (maintaining the same logic flow)
+		if ((Player_Query_Agenda() == kPlayerAgendaSurly || Player_Query_Agenda() == kPlayerAgendaErratic)
+			|| (Player_Query_Agenda() != kPlayerAgendaPolite && Actor_Query_Friendliness_To_Other(kActorSteele, kActorMcCoy) > Actor_Query_Friendliness_To_Other(kActorClovis, kActorMcCoy))
+		){
+			dialogue_agenda2();
+		} else {
+			dialogue_agenda1();
+		}
+		break;
+
+	case kGoalRachaelIsOutWalksToPoliceHQAct4:
+		// added goal for restored content
+		// fall through
+	case kGoalRachaelIsOutWalksToPoliceHQAct3:
+		// Rachael's goal is set to this when the player walks in the MA07 scene and if her goal is already kGoalRachaelIsOutsideMcCoysBuildingAct3
 		AI_Movement_Track_Flush(kActorRachael);
 		// This makes Rachael (who is right outside McCoy's building) head towards the Police Station (left)
 		AI_Movement_Track_Append(kActorRachael, 468, 0);
@@ -140,7 +174,13 @@ bool AIScriptRachael::GoalChanged(int currentGoalNumber, int newGoalNumber) {
 		AI_Movement_Track_Repeat(kActorRachael);
 		break;
 
-	case 400:
+	case kGoalRachaelAtEndOfAct3IfNotMetWithMcCoy:
+		// added goal for restored content
+		// fall through
+	case kGoalRachaelAtEndOfAct4:
+		// added goal for restored content
+		// fall through
+	case kGoalRachaelAtEndOfAct3IfMetWithMcCoy:
 		Actor_Put_In_Set(kActorRachael, kSetFreeSlotG);
 		Actor_Set_At_Waypoint(kActorRachael, 39, 0);
 		break;
@@ -263,7 +303,7 @@ bool AIScriptRachael::UpdateAnimation(int *animation, int *frame) {
 
 bool AIScriptRachael::ChangeAnimationMode(int mode) {
 	switch (mode) {
-	case 0:
+	case kAnimationModeIdle:
 		if (_animationState >= 2 && _animationState <= 9) {
 			_flag = 1;
 		} else {
@@ -271,11 +311,11 @@ bool AIScriptRachael::ChangeAnimationMode(int mode) {
 			_animationFrame = 0;
 		}
 		break;
-	case 1:
+	case kAnimationModeWalk:
 		_animationState = 1;
 		_animationFrame = 0;
 		break;
-	case 3:
+	case kAnimationModeTalk:
 		_animationState = 2;
 		_animationFrame = 0;
 		_flag = 0;
@@ -345,81 +385,171 @@ void AIScriptRachael::FledCombat() {
 }
 
 void AIScriptRachael::dialogue_start() {
-	Loop_Actor_Walk_To_Actor(kActorRachael, kActorMcCoy, 84, 0, false);
-	Actor_Says(kActorRachael, 0, 15);                   // I remember you mr mcCoy
-	Actor_Says(kActorMcCoy, 2740, 13);
-	Actor_Says(kActorRachael, 10, 14);
-	Actor_Says(kActorMcCoy, 2745, 13);
-	Actor_Says(kActorRachael, 20, 12);                  // perhaps none of your business
-	Actor_Says_With_Pause(kActorMcCoy, 2750, 1.5f, 3);  // ok I get the picture (also assumed that here goes 2755: are you alright?)
-	Actor_Says(kActorRachael, 30, 13);                  // certainly had better days but i'm fine
-	Actor_Says(kActorRachael, 40, 15);                  // Thank you for asking
+	if (_vm->_cutContent) {
+			Actor_Face_Actor(kActorRachael, kActorMcCoy, true);
+			Loop_Actor_Walk_To_Actor(kActorRachael, kActorMcCoy, 84, 0, false);
+			if(_vm->_cutContent) {
+				Actor_Says(kActorMcCoy, 2735, 14);              // MetAtYourUnclesOffice
+			}
+			Actor_Says(kActorRachael, 0, 15);                   // RememberYouMisterMcCoy
+			Actor_Says(kActorMcCoy, 2740, 13);                  // YouLiveHereSameBuilding
+			Actor_Says(kActorRachael, 10, 14);                  // VisitingSomebody
+			Actor_Says(kActorMcCoy, 2745, 13);                  // WhoMaybeIKnowHim
+			Actor_Says(kActorRachael, 20, 12);                  // NoneOfYourBusiness
+			Actor_Says_With_Pause(kActorMcCoy, 2750, 1.5f, 3); // OkGetThePicture
+			Actor_Says(kActorMcCoy, 2755, 3);                  // AreYouAlrightALittlePale
+			Actor_Says(kActorRachael, 30, 13);                  // CertainlyHadBetterDaysInMyLifeButImFine
+			Actor_Says(kActorRachael, 40, 15);                  // ThankYouForAsking
+	} else {
+		// original code -- un-triggered
+		Loop_Actor_Walk_To_Actor(kActorRachael, kActorMcCoy, 84, 0, false);
+		Actor_Says(kActorRachael, 0, 15);                   // I remember you mr mcCoy
+		Actor_Says(kActorMcCoy, 2740, 13);
+		Actor_Says(kActorRachael, 10, 14);
+		Actor_Says(kActorMcCoy, 2745, 13);
+		Actor_Says(kActorRachael, 20, 12);                  // perhaps none of your business
+		Actor_Says_With_Pause(kActorMcCoy, 2750, 1.5f, 3);  // ok I get the picture
+		Actor_Says(kActorRachael, 30, 13);                  // certainly had better days but i'm fine
+		Actor_Says(kActorRachael, 40, 15);                  // Thank you for asking
+	}
 }
 
 void AIScriptRachael::dialogue_agenda1() {
-	Actor_Says(kActorMcCoy, 2795, 13);                  // You are upset
-	Actor_Says(kActorRachael, 140, 15);                 // How observant
-	Actor_Says(kActorMcCoy, 2800, 12);                  // Whats the matter good listener
-	Actor_Says(kActorRachael, 150, 16);                 // ImSureYouAreMrMcCoyDontFeelLike
-	Actor_Says(kActorMcCoy, 2805, 18);                  // DidYourUncleSaySomethingToYou
-	Actor_Says(kActorRachael, 160, 14);                 // HeCanBeSoCruel
-	Actor_Says(kActorRachael, 170, 13);                 // HereIAmPouringMyHeartOut
-	Actor_Says(kActorMcCoy, 2810, 14);                  // NotHowILookAtIt
-	Actor_Says(kActorRachael, 180, 13);                 // GotToLiveWithYourself
-	Actor_Says(kActorMcCoy, 2815, 12);                  // NotSomeKillingMachineRachael
-	Actor_Says(kActorMcCoy, 2820, 13);                  //
-	Actor_Says(kActorRachael, 190, 15);                 // WhyDontYouQuitThen
-	Actor_Says(kActorMcCoy, 2825, 12);                  // SomeoneWouldJustTakeMyPlace
-	Actor_Says(kActorRachael, 200, 15);                 // SoMuchForIntegrity
-	Actor_Says(kActorMcCoy, 2830, 14);                  // ItsNotThat
-	Actor_Says(kActorRachael, 210, 15);                 // ItsTheMoneyThen
-	Actor_Says(kActorRachael, 220, 16);                 // ImSoFedUpWithAllOfIt
-	Actor_Says(kActorMcCoy, 2835, 13);                  // IveThinkingAboutTheTreatmentOfReps
-	Actor_Says(kActorRachael, 230, 14);                 // BravoShouldWeCallThePressConf
-	Actor_Says(kActorMcCoy, 2840, 12);                  // MaybeTheyVeGottenARawDeal
-	Actor_Says(kActorRachael, 240, 13);                 // ImagineSomebodyEngineeringYourMind
-	Actor_Says(kActorRachael, 250, 15);                 // PuttingWhateverThoughtsAndMemories
-	Actor_Says(kActorRachael, 260, 16);                 // NothingInThisWorldWouldBelongToyou
-	Actor_Says(kActorMcCoy, 2845, 13);                  // No
-	Actor_Says(kActorRachael, 270, 13);                 // ThinkAboutItMcCoy
-	Actor_Says(kActorRachael, 280, 14);                 // MaybeYouArentSoDifferentFromThoseRepsAfterAll
-	Actor_Says(kActorMcCoy, 2850, 13);                  // ISupposeAllRepsInOneWayOrAnother
-	Actor_Says(kActorRachael, 290, 14);                 // ThatsRight
-	Actor_Says_With_Pause(kActorRachael, 300, 1.0f, 3); // GoodbyeMcCoy + (isn't this your floor - missing?)
-	Actor_Says(kActorMcCoy, 2860, 14);                  // YouTakeCareOfYourself
+	// polite or Rep friendly case
+	if (_vm->_cutContent) {
+		Actor_Says(kActorMcCoy, 2795, 13);                      // YouAreUpset
+		Actor_Says(kActorRachael, 140, 15);                     // HowObservant
+		Actor_Says(kActorMcCoy, 2800, 12);                      // WhatTheMatterGoodListener
+		Actor_Says(kActorRachael, 150, 16);                     // HowObservant
+		Actor_Says(kActorMcCoy, 2805, 18);                      // DidYourUncleSaySomethingToYou
+		Actor_Says(kActorRachael, 160, 14);                     // HeCanBeSoCruel
+		Actor_Says(kActorRachael, 170, 13);                     // HereIAmPouringMyHeartOut
+		Actor_Says(kActorMcCoy, 2810, 14);                      // NotHowILookAtIt
+		Actor_Says(kActorRachael, 180, 13);                     // GotToLiveWithYourself
+		Actor_Says(kActorMcCoy, 2815, 12);                      // NotSomeKillingMachineRachael
+		Actor_Says(kActorMcCoy, 2820, 13);                      // LatelyReEvalTheJobDontLikeItNeverHave - I've thought ab... Well lately reevaluating the job dont like it
+		Actor_Says(kActorRachael, 190, 15);                     // WhyDontYouQuitThen
+		Actor_Says(kActorMcCoy, 2825, 12);                      // SomeoneWouldJustTakeMyPlace
+		Actor_Says(kActorRachael, 200, 15);                     // SoMuchForIntegrity
+		Actor_Says(kActorMcCoy, 2830, 14);                      // ItsNotThat
+		Actor_Says(kActorRachael, 210, 15);                     // ItsTheMoneyThen
+		Actor_Says(kActorRachael, 220, 16);                     // ImSoFedUpWithAllOfIt
+		Actor_Says(kActorMcCoy, 2835, 13);                      // IveThinkingAboutTheTreatmentOfReps
+		Actor_Says(kActorRachael, 230, 14);                     // BravoShouldWeCallThePressConf -  new switched to here
+		Actor_Says(kActorMcCoy, 2840, 12);                      // MaybeTheyVeGottenARawDeal
+		Actor_Says(kActorRachael, 240, 13);                     // ImagineSomebodyEngineeringYourMind
+		Actor_Says(kActorRachael, 250, 15);                     // PuttingWhateverThoughtsAndMemories
+		Actor_Says(kActorRachael, 260, 16);                     // NothingInThisWorldWouldBelongToyou
+		Actor_Says(kActorMcCoy, 2845, 13);                      // No
+		Actor_Says(kActorRachael, 270, 13);                     // ThinkAboutItMcCoy
+		Actor_Says(kActorRachael, 280, 14);                     // MaybeYouArentSoDifferentFromThoseRepsAfterAll
+		Actor_Says(kActorMcCoy, 2850, 13);                      // ISupposeAllRepsInOneWayOrAnother
+		Actor_Says(kActorMcCoy, 2855, 14);                      // ProgrammedToDoThingsThinkThings
+		Actor_Says(kActorRachael, 290, 14);                     // ThatsRight
+		if (Actor_Query_In_Set(kActorRachael, kSetMA07)) {
+			Actor_Says_With_Pause(kActorRachael, 300, 1.0f, 3); // GoodbyeMcCoy
+			Actor_Says(kActorMcCoy, 2860, 14);                  // YouTakeCareOfYourself
+		}
+	} else {
+		// original code
+		Actor_Says(kActorMcCoy, 2795, 13);                  // You are upset
+		Actor_Says(kActorRachael, 140, 15);                 // How observant
+		Actor_Says(kActorMcCoy, 2800, 12);                  // Whats the matter good listener
+		Actor_Says(kActorRachael, 150, 16);                 // ImSureYouAreMrMcCoyDontFeelLike
+		Actor_Says(kActorMcCoy, 2805, 18);                  // DidYourUncleSaySomethingToYou
+		Actor_Says(kActorRachael, 160, 14);                 // HeCanBeSoCruel
+		Actor_Says(kActorRachael, 170, 13);                 // HereIAmPouringMyHeartOut
+		Actor_Says(kActorMcCoy, 2810, 14);                  // NotHowILookAtIt
+		Actor_Says(kActorRachael, 180, 13);                 // GotToLiveWithYourself
+		Actor_Says(kActorMcCoy, 2815, 12);                  // NotSomeKillingMachineRachael
+		Actor_Says(kActorMcCoy, 2820, 13);                  //
+		Actor_Says(kActorRachael, 190, 15);                 // WhyDontYouQuitThen
+		Actor_Says(kActorMcCoy, 2825, 12);                  // SomeoneWouldJustTakeMyPlace
+		Actor_Says(kActorRachael, 200, 15);                 // SoMuchForIntegrity
+		Actor_Says(kActorMcCoy, 2830, 14);                  // ItsNotThat
+		Actor_Says(kActorRachael, 210, 15);                 // ItsTheMoneyThen
+		Actor_Says(kActorRachael, 220, 16);                 // ImSoFedUpWithAllOfIt
+		Actor_Says(kActorMcCoy, 2835, 13);                  // IveThinkingAboutTheTreatmentOfReps
+		Actor_Says(kActorRachael, 230, 14);                 // BravoShouldWeCallThePressConf
+		Actor_Says(kActorMcCoy, 2840, 12);                  // MaybeTheyVeGottenARawDeal
+		Actor_Says(kActorRachael, 240, 13);                 // ImagineSomebodyEngineeringYourMind
+		Actor_Says(kActorRachael, 250, 15);                 // PuttingWhateverThoughtsAndMemories
+		Actor_Says(kActorRachael, 260, 16);                 // NothingInThisWorldWouldBelongToyou
+		Actor_Says(kActorMcCoy, 2845, 13);                  // No
+		Actor_Says(kActorRachael, 270, 13);                 // ThinkAboutItMcCoy
+		Actor_Says(kActorRachael, 280, 14);                 // MaybeYouArentSoDifferentFromThoseRepsAfterAll
+		Actor_Says(kActorMcCoy, 2850, 13);                  // ISupposeAllRepsInOneWayOrAnother
+		Actor_Says(kActorRachael, 290, 14);                 // ThatsRight
+		Actor_Says_With_Pause(kActorRachael, 300, 1.0f, 3); // GoodbyeMcCoy
+		Actor_Says(kActorMcCoy, 2860, 14);                  // YouTakeCareOfYourself
+	}
 }
 
 void AIScriptRachael::dialogue_agenda2() {
-	Actor_Says(kActorRachael, 50, 15);                  // I don't think he'd appreciate being called that
-	Actor_Says(kActorMcCoy, 2765, 16);                  // Oh i'm sure brilliant man
-	Actor_Says(kActorMcCoy, 2770, 17);                  // anyone who could create nexus -6
-	Actor_Says(kActorRachael, 60, 14);                  // keeping people like you employed
-	Actor_Says(kActorMcCoy, 2775, 16);                  // IdJustAsSoonNotDoThisJob
-	Actor_Says(kActorRachael, 70, 13);                  // do you really expect me to believe that
-	Actor_Says(kActorRachael, 80, 14);                  // ISawThatLookInYourEye
-	Actor_Says(kActorRachael, 90, 15);                  // LikeNothingButToKillInnocentPeople
-	Actor_Says(kActorMcCoy, 2780, 17);                  // ReplicantsArentPeople
-	Actor_Says(kActorRachael, 100, 16);                 // CertainlyAreMoreInnocentThanMostPeople
-	Actor_Says(kActorRachael, 110, 15);                 // TheyDidntAskToBeBroughtIntoThisWorld
-	Actor_Says(kActorMcCoy, 2785, 17);                  // NobodyDoes
-	Actor_Says(kActorRachael, 120, 13);                 // ThatsRightAndNobodyHasALicenseTokillHumans
-	Actor_Says(kActorMcCoy, 2790, 16);                  // Aha
-	Actor_Says(kActorRachael, 130, 14);                 // ButReplicantsHowHumain
-	Actor_Says_With_Pause(kActorRachael, 300, 1.0f, 3); // GoodbyeMcCoy + (isn't this your floor - missing?)
-	Actor_Says(kActorMcCoy, 2860, 14);                  // YouTakeCareOfYourself
+	// surly/erratic or human friendly case
+	if (_vm->_cutContent) {
+		Actor_Says(kActorMcCoy, 2760, 14);                   // InterestingGuyYourUncleCharacterator-Rachael
+		Actor_Says(kActorRachael, 50, 15);                   // IDontThinkHeDAppreciateBeingCalledThat  new anim 15
+		Actor_Says(kActorMcCoy, 2765, 16);                   // ImSureHeIsABrilliantMan  new anim 16
+		Actor_Says(kActorMcCoy, 2770, 17);                   // AnyoneWhoCouldCreateNexus6StateOfArt  new anim 17
+		Actor_Says(kActorRachael, 60, 14);                   // KeepingPeopleLikeYouEmployedIsntHe
+		Actor_Says(kActorMcCoy, 2775, 16);                   // IdJustAsSoonNotDoThisJob.
+		Actor_Says(kActorRachael, 70, 13);                   // DoYouReallyExpectMeToBelieveThat
+		Actor_Says(kActorRachael, 80, 14);                   // ISawThatLookInYourEye
+		Actor_Says(kActorRachael, 90, 15);                   // LikeNothingButToKillInnocentPeople
+		Actor_Says(kActorMcCoy, 2780, 17);                   // ReplicantsArentPeople
+		Actor_Says(kActorRachael, 100, 16);                  // CertainlyAreMoreInnocentThanMostPeople
+		Actor_Says(kActorRachael, 110, 15);                  // TheyDidntAskToBeBroughtIntoThisWorld
+		Actor_Says(kActorMcCoy, 2785, 17);                   // NobodyDoes
+		Actor_Says(kActorRachael, 120, 13);                  // ThatsRightAndNobodyHasALicenseTokillHumans
+		Actor_Says(kActorMcCoy, 2790, 18);                   // Aha
+		Actor_Says(kActorRachael, 130, 14);                  // ButReplicantsHowHumain
+		if (Actor_Query_In_Set(kActorRachael, kSetMA07)) {
+			Actor_Says_With_Pause(kActorRachael, 300, 1.0f, 3); // GoodbyeMcCoy
+			Actor_Says(kActorMcCoy, 2860, 14);                  // YouTakeCareOfYourself
+		}
+	} else {
+		// original code - missing some quotes or removing some quotes to make it fit better
+		Actor_Says(kActorRachael, 50, 15);                  // I don't think he'd appreciate being called that
+		Actor_Says(kActorMcCoy, 2765, 16);                  // Oh i'm sure brilliant man
+		Actor_Says(kActorMcCoy, 2770, 17);                  // anyone who could create nexus -6
+		Actor_Says(kActorRachael, 60, 14);                  // keeping people like you employed
+		Actor_Says(kActorMcCoy, 2775, 16);                  // IdJustAsSoonNotDoThisJob
+		Actor_Says(kActorRachael, 70, 13);                  // do you really expect me to believe that
+		Actor_Says(kActorRachael, 80, 14);                  // ISawThatLookInYourEye
+		Actor_Says(kActorRachael, 90, 15);                  // LikeNothingButToKillInnocentPeople
+		Actor_Says(kActorMcCoy, 2780, 17);                  // ReplicantsArentPeople
+		Actor_Says(kActorRachael, 100, 16);                 // CertainlyAreMoreInnocentThanMostPeople
+		Actor_Says(kActorRachael, 110, 15);                 // TheyDidntAskToBeBroughtIntoThisWorld
+		Actor_Says(kActorMcCoy, 2785, 17);                  // NobodyDoes
+		Actor_Says(kActorRachael, 120, 13);                 // ThatsRightAndNobodyHasALicenseTokillHumans
+		Actor_Says(kActorMcCoy, 2790, 16);                  // Aha
+		Actor_Says(kActorRachael, 130, 14);                 // ButReplicantsHowHumain
+		Actor_Says_With_Pause(kActorRachael, 300, 1.0f, 3); // GoodbyeMcCoy
+		Actor_Says(kActorMcCoy, 2860, 14);                  // YouTakeCareOfYourself
+	}
 }
 
 // Not used in the game
 void AIScriptRachael::dialogue_agenda3() {
 	Actor_Says(kActorMcCoy, 2865, 3);   // Lobby
+	if (_vm->_cutContent) {
+		Game_Flag_Set(kFlagMA06toMA07);
+		Ambient_Sounds_Add_Looping_Sound(kSfxSPINUP1, 75, 0, 1);
+		Delay(500);
+		Actor_Face_Actor(kActorRachael, kActorMcCoy, true);
+	}
 	Actor_Says(kActorRachael, 320, 3);  //  McCoy
 	Actor_Says(kActorRachael, 330, 3);  //  RachaelRememberMe
+	if (_vm->_cutContent) {
+		Actor_Face_Actor(kActorMcCoy, kActorRachael, true);
+	}
 	Actor_Says(kActorMcCoy, 2870, 3);   //  Jesus DontKnowWhatIRememberAnyMore
 	Actor_Says(kActorRachael, 340, 3);  //  NowYouLookInTrouble
 	Actor_Says(kActorMcCoy, 2875, 3);   //  Saw me here before
 	Actor_Says(kActorRachael, 350, 3);  //  YesWhatHappened
 	Actor_Says(kActorMcCoy, 2880, 3);   //  Suddenly
-	Actor_Says(kActorMcCoy, 2885, 3);   //  MyAnimalMaggiePrizedPosessionDisappeared-Elevator-Rachael
+	Actor_Says(kActorMcCoy, 2885, 3);   //  MyAnimalMaggiePrizedPosessionDisappeared
 	Actor_Says(kActorRachael, 360, 3);  //  ImSorry
 	Actor_Says(kActorRachael, 370, 3);  //  IKnowTheFeeling
 	Actor_Says(kActorMcCoy, 2890, 3);   //  You do?
@@ -430,16 +560,16 @@ void AIScriptRachael::dialogue_agenda3() {
 	Actor_Says(kActorRachael, 410, 3);  //  ThatsRightAndInTheBlinkOfAnEyeGoesAway
 	Actor_Says(kActorMcCoy, 2900, 3);   //  But just yesterday
 	Actor_Says(kActorRachael, 420, 3);  //  YesterdayTwoMonthsAgo
-	Actor_Says(kActorMcCoy, 2905, 3);   //  ButIfWeBothRemembered-Elevator-Rachael
+	Actor_Says(kActorMcCoy, 2905, 3);   //  ButIfWeBothRemembered
 	Actor_Says(kActorRachael, 430, 3);  //  CopiesOnlyCopies
 	Actor_Says(kActorRachael, 440, 3);  //  OnlyThingWeCanTrustIsNow
-	Actor_Says(kActorMcCoy, 2910, 3);   //  NotLosingMyMindEscapedReplicant-Elevator-Rachael
-	Actor_Says(kActorMcCoy, 2920, 3);   //  SomeoneSettingMeUpUsingMe-Elevator-Rachael
+	Actor_Says(kActorMcCoy, 2910, 3);   //  NotLosingMyMindEscapedReplicant
+	Actor_Says(kActorMcCoy, 2920, 3);   //  SomeoneSettingMeUpUsingMe
 	Actor_Says(kActorRachael, 450, 3);  //  NothingWrongWithAcceptingWhatYouAre
-	Actor_Says(kActorMcCoy, 2925, 3);   //  NotAReplicantGoddamnit-Elevator-Rachael
-	Actor_Says(kActorMcCoy, 2930, 3);   //  MaybeYouCanHelpMeYouAreTyrellsNiece-Elevator-Rachael
+	Actor_Says(kActorMcCoy, 2925, 3);   //  NotAReplicantGoddamnit
+	Actor_Says(kActorMcCoy, 2930, 3);   //  MaybeYouCanHelpMeYouAreTyrellsNiece
 	Actor_Says(kActorRachael, 460, 3);  //  Why not take that V-K test
-	Actor_Says(kActorMcCoy, 2935, 3);   //  YeahGoodIdeaMaybeIllDoThat-Elevator-Rachael
+	Actor_Says(kActorMcCoy, 2935, 3);   //  YeahGoodIdeaMaybeIllDoThat
 	Actor_Says(kActorRachael, 470, 3);  //  Hope you get the answers looking for McCoy.
 }
 
diff --git a/engines/bladerunner/script/scene/ma06.cpp b/engines/bladerunner/script/scene/ma06.cpp
index 3779f94..2031b40 100644
--- a/engines/bladerunner/script/scene/ma06.cpp
+++ b/engines/bladerunner/script/scene/ma06.cpp
@@ -46,6 +46,20 @@ void SceneScriptMA06::InitializeScene() {
 void SceneScriptMA06::SceneLoaded() {
 	Obstacle_Object("PANEL", true);
 	Clickable_Object("PANEL");
+	if (_vm->_cutContent) {
+		if (Actor_Query_Goal_Number(kActorRachael) == kGoalRachaelShouldBeInElevatorMcCoysAct3) {
+			// Put Rachael in set for her first cut scene (Act 3) when it plays out in the elevator
+			Actor_Put_In_Set(kActorRachael, kSetMA06);
+			Actor_Set_At_XYZ(kActorRachael, 30.15f, 0.0f, 45.16f, 350);
+			Actor_Set_Goal_Number(kActorRachael, kGoalRachaelIsInsideMcCoysElevatorAct3);
+		} else if (Actor_Query_Goal_Number(kActorRachael) == kGoalRachaelAtEndOfAct3IfMetWithMcCoy
+			&& Game_Flag_Query(kFlagMA02RajifTalk)) {
+			// Put Rachael in set for her second cut scene (Act 4)
+			Actor_Put_In_Set(kActorRachael, kSetMA06);
+			Actor_Set_At_XYZ(kActorRachael, 30.15f, 0.0f, 50.16f, 170); // different rotation and slightly different placement
+			Actor_Set_Goal_Number(kActorRachael, kGoalRachaelIsInsideMcCoysElevatorAct4);
+		}
+	}
 	Player_Loses_Control();
 }
 
@@ -83,34 +97,122 @@ void SceneScriptMA06::PlayerWalkedIn() {
 	Loop_Actor_Walk_To_XYZ(kActorMcCoy, 40.0f, 1.35f, 0.0f, 0, 0, false, 0);
 	Actor_Face_Object(kActorMcCoy, "panel", true);
 	Delay(500);
-	activateElevator();
 
-	if (isElevatorOnDifferentFloor()) {
-		Sound_Play(kSfxSPINUP1, 25, 0, 0, 50);
-		Delay(4000);
-	}
+	if (_vm->_cutContent) {
+		//
+		// McCoy + Rachael meetings
+		//
+		if ((Game_Flag_Query(kFlagMA07toMA06) || Game_Flag_Query(kFlagMA01toMA06))
+		     && Actor_Query_Goal_Number(kActorRachael) == kGoalRachaelIsInsideMcCoysElevatorAct3
+		){
+			// Act 3 Deleted scene (can happen within the elevator or outside the building)
+			// Skip floor panel selection - force go to MCCOY 88F
+			Game_Flag_Reset(kFlagMA06toMA01);
+			Game_Flag_Reset(kFlagMA06ToMA02);
+			Game_Flag_Reset(kFlagMA06toMA07);
+			Ambient_Sounds_Adjust_Looping_Sound(kSfxELEAMB3, 10, 0, 1);
+			Ambient_Sounds_Adjust_Looping_Sound(kSfxAPRTFAN1, 10, 0, 1);
 
-	Game_Flag_Reset(kFlagMA01toMA06);
-	Game_Flag_Reset(kFlagMA02toMA06);
-	Game_Flag_Reset(kFlagMA07toMA06);
+			Actor_Says(kActorAnsweringMachine, 80, 3);     // your floor number please
+			Actor_Says(kActorMcCoy, 2940, 18);             // McCoy: McCoy 88F
+			Game_Flag_Set(kFlagMA06ToMA02);                // to McCoy's Apartment
+			Actor_Says(kActorAnsweringMachine, 90, 3);     // 88 thank you
+			Actor_Face_Actor(kActorMcCoy, kActorRachael, true);
+			Actor_Says(kActorMcCoy, 2710, 14);             // Excuse me
 
-	if (Game_Flag_Query(kFlagMA06toMA01)) {
-		Set_Enter(kSetMA01, kSceneMA01);
-	} else if (Game_Flag_Query(kFlagMA06ToMA02)) {
-		Set_Enter(kSetMA02_MA04, kSceneMA02);
-	} else {
-		Set_Enter(kSetMA07, kSceneMA07);
-	}
+			Actor_Says(kActorMcCoy, 2730, 12);             // RachaelRight
+			AI_Movement_Track_Pause(kActorRachael);
+			Actor_Set_Goal_Number(kActorRachael, kGoalRachaelIsInsideElevatorStartTalkAct3);
+
+			Game_Flag_Reset(kFlagMA01toMA06);
+			Game_Flag_Reset(kFlagMA02toMA06);
+			Game_Flag_Reset(kFlagMA07toMA06);
+			Ambient_Sounds_Adjust_Looping_Sound(kSfxSPINUP1,  0, 0, 1);
+			Ambient_Sounds_Adjust_Looping_Sound(kSfxAPRTFAN1, 0, 0, 1);
+			Ambient_Sounds_Adjust_Looping_Sound(kSfxELEAMB3,  0, 0, 1);
+			Ambient_Sounds_Remove_Looping_Sound(kSfxSPINUP1,  1);         // stop elev moving sound
+			Ambient_Sounds_Remove_Looping_Sound(kSfxAPRTFAN1, 1);         // stop other ambient
+			Ambient_Sounds_Remove_Looping_Sound(kSfxELEAMB3,  1);         // stop other ambient
+			Actor_Says_With_Pause(kActorRachael, 300, 1.0, 14);  // GoodbyeMcCoy
+			Actor_Says(kActorRachael, 310, 14);                  // Isnt ThisYourFloor --
+			Actor_Says(kActorMcCoy, 2860, 14);                   // YouTakeCareOfYoursel
 
-	Scene_Loop_Start_Special(kSceneLoopModeChangeSet, kMA06LoopDoorClose, true);
-	Sound_Play(kSfxELDOORO2, 100, 50, 50, 50);
-	//return true;
+			Set_Enter(kSetMA02_MA04, kSceneMA02);
+			Scene_Loop_Start_Special(kSceneLoopModeChangeSet, kMA06LoopDoorClose, true);
+			Sound_Play(kSfxELDOORO2, 100, 50, 50, 50);
+		} else if (Game_Flag_Query(kFlagMA02toMA06)
+			&& Actor_Query_Goal_Number(kActorRachael) == kGoalRachaelIsInsideMcCoysElevatorAct4
+		){
+			// Act 4 deleted scene case with Rachael
+			//
+			// TODO fix animationsDo an Optimization pass
+			// TODO Skip panel selection but actually set the target floor and "MOVE elevator" to LOBBY (Floor > 1)
+			//
+			Game_Flag_Reset(kFlagMA06toMA01);
+			Game_Flag_Reset(kFlagMA06ToMA02);
+			Game_Flag_Reset(kFlagMA06toMA07);
+			Ambient_Sounds_Adjust_Looping_Sound(kSfxELEAMB3, 10, 0, 1);
+			Ambient_Sounds_Adjust_Looping_Sound(kSfxAPRTFAN1, 10, 0, 1);
+
+			Actor_Says(kActorAnsweringMachine, 80, 3);      // your floor number please
+			Actor_Set_Goal_Number(kActorRachael, kGoalRachaelIsInsideElevatorStartTalkAct4);
+			//
+			Delay(500);
+			Ambient_Sounds_Adjust_Looping_Sound(kSfxSPINUP1,  0, 0, 1);
+			Ambient_Sounds_Adjust_Looping_Sound(kSfxAPRTFAN1, 0, 0, 1);
+			Ambient_Sounds_Adjust_Looping_Sound(kSfxELEAMB3,  0, 0, 1);
+			Ambient_Sounds_Remove_Looping_Sound(kSfxSPINUP1,  1);         // stop elev moving sound
+			Ambient_Sounds_Remove_Looping_Sound(kSfxAPRTFAN1, 1);         // stop other ambient
+			Ambient_Sounds_Remove_Looping_Sound(kSfxELEAMB3,  1);         // stop other ambient
+
+			Game_Flag_Reset(kFlagMA01toMA06);
+			Game_Flag_Reset(kFlagMA02toMA06);
+			Game_Flag_Reset(kFlagMA07toMA06);
+
+//			Player_Gains_Control();
+			Set_Enter(kSetMA07, kSceneMA07);
+			Scene_Loop_Start_Special(kSceneLoopModeChangeSet, kMA06LoopDoorClose, true);
+			Sound_Play(kSfxELDOORO2, 100, 50, 50, 50);
+		} else {
+			// normal elevator business
+			activateElevator();
+
+			if (isElevatorOnDifferentFloor()) {
+				Sound_Play(kSfxSPINUP1, 25, 0, 0, 50);
+				Delay(4000);
+			}
+
+			Game_Flag_Reset(kFlagMA01toMA06);
+			Game_Flag_Reset(kFlagMA02toMA06);
+			Game_Flag_Reset(kFlagMA07toMA06);
+
+			if (Game_Flag_Query(kFlagMA06toMA01)) {
+				Set_Enter(kSetMA01, kSceneMA01);
+			} else if (Game_Flag_Query(kFlagMA06ToMA02)) {
+				Set_Enter(kSetMA02_MA04, kSceneMA02);
+			} else {
+				Set_Enter(kSetMA07, kSceneMA07);
+			}
+
+			Scene_Loop_Start_Special(kSceneLoopModeChangeSet, kMA06LoopDoorClose, true);
+			Sound_Play(kSfxELDOORO2, 100, 50, 50, 50);
+		}
+	} // end of cut content
 }
 
 void SceneScriptMA06::PlayerWalkedOut() {
 	Ambient_Sounds_Remove_All_Non_Looping_Sounds(true);
 	Ambient_Sounds_Remove_All_Looping_Sounds(1);
 	Player_Gains_Control();
+	if (_vm->_cutContent) {
+		if (Actor_Query_Goal_Number(kActorRachael) == kGoalRachaelIsInsideElevatorStartTalkAct3) {
+			Actor_Set_Goal_Number(kActorRachael, kGoalRachaelAtEndOfAct3IfMetWithMcCoy);
+		}
+		else if (Actor_Query_Goal_Number(kActorRachael) == kGoalRachaelIsInsideElevatorStartTalkAct4) {
+			Actor_Set_Goal_Number(kActorRachael, kGoalRachaelIsOutsideMcCoysBuildingAct4);
+			// don't reset kEDSFlagRachaelInElevatorChapter4JUSTEncountered here but in the ma07.cpp script (walked-in_ where mcCoy will automatically go (so no problems of inconsistency there)
+		}
+	}
 }
 
 void SceneScriptMA06::DialogueQueueFlushed(int a1) {
diff --git a/engines/bladerunner/script/scene/ma07.cpp b/engines/bladerunner/script/scene/ma07.cpp
index 83efc35..87a2063 100644
--- a/engines/bladerunner/script/scene/ma07.cpp
+++ b/engines/bladerunner/script/scene/ma07.cpp
@@ -54,6 +54,11 @@ void SceneScriptMA07::InitializeScene() {
 
 void SceneScriptMA07::SceneLoaded() {
 	Obstacle_Object("BARRICADE", true);
+	if(_vm->_cutContent) {
+		if (Actor_Query_Goal_Number(kActorRachael) == kGoalRachaelShouldBeOutsideMcCoysAct3) {
+			Actor_Set_Goal_Number(kActorRachael, kGoalRachaelIsOutsideMcCoysBuildingAct3);
+		}
+	}
 }
 
 bool SceneScriptMA07::MouseClick(int x, int y) {
@@ -134,9 +139,11 @@ void SceneScriptMA07::PlayerWalkedIn() {
 		Game_Flag_Reset(kFlagPS14toMA07);
 	}
 
-	if (Actor_Query_Goal_Number(kActorRachael) == 300) {
-		Actor_Set_Goal_Number(kActorRachael, 305);
-	}
+	if (Actor_Query_Goal_Number(kActorRachael) == kGoalRachaelIsOutsideMcCoysBuildingAct3) {
+		Actor_Set_Goal_Number(kActorRachael, kGoalRachaelIsOutWalksToPoliceHQAct3);
+	} else if (_vm->_cutContent && Actor_Query_Goal_Number(kActorRachael) == kGoalRachaelIsOutsideMcCoysBuildingAct4) {
+		Actor_Set_Goal_Number(kActorRachael, kGoalRachaelIsOutWalksToPoliceHQAct4);
+    }
 
 	if (Game_Flag_Query(kFlagMA06toMA07)) {
 		Game_Flag_Reset(kFlagMA06toMA07);
@@ -166,6 +173,20 @@ void SceneScriptMA07::PlayerWalkedIn() {
 }
 
 void SceneScriptMA07::PlayerWalkedOut() {
+	if (_vm->_cutContent) {
+		if (Actor_Query_Goal_Number(kActorRachael) == kGoalRachaelIsOutsideMcCoysBuildingAct3
+			|| Actor_Query_Goal_Number(kActorRachael) == kGoalRachaelIsOutWalksToPoliceHQAct3
+			|| Actor_Query_Goal_Number(kActorRachael) == kGoalRachaelIsOutFleeingToPoliceHQAct3
+		) {
+			Actor_Set_Goal_Number(kActorRachael, kGoalRachaelAtEndOfAct3IfNotMetWithMcCoy);
+		} else if (Actor_Query_Goal_Number(kActorRachael) == kGoalRachaelIsOutResumesWalkToPoliceHQAct3) {
+			Actor_Set_Goal_Number(kActorRachael, kGoalRachaelAtEndOfAct3IfMetWithMcCoy);
+		} else if (Actor_Query_Goal_Number(kActorRachael) == kGoalRachaelIsOutsideMcCoysBuildingAct4
+			|| Actor_Query_Goal_Number(kActorRachael) == kGoalRachaelIsOutWalksToPoliceHQAct4
+		) {
+			Actor_Set_Goal_Number(kActorRachael, kGoalRachaelAtEndOfAct4);
+		}
+	}
 }
 
 void SceneScriptMA07::DialogueQueueFlushed(int a1) {
diff --git a/engines/bladerunner/script/scene/tb07.cpp b/engines/bladerunner/script/scene/tb07.cpp
index 781e53e..3e955f5 100644
--- a/engines/bladerunner/script/scene/tb07.cpp
+++ b/engines/bladerunner/script/scene/tb07.cpp
@@ -293,7 +293,7 @@ void SceneScriptTB07::McCoyTalkWithRachaelAndTyrell() {
 	Actor_Says(kActorTyrell, 20, 3);
 	Actor_Says(kActorTyrell, 30, 12);
 	Actor_Says(kActorMcCoy, 5425, 18);
-	Actor_Set_Goal_Number(kActorRachael, 200);
+	Actor_Set_Goal_Number(kActorRachael, kGoalRachaelLeavesAfterTyrellMeeting);
 	Actor_Says(kActorTyrell, 40, 15);
 	Actor_Start_Speech_Sample(kActorTyrell, 50);
 	Loop_Actor_Walk_To_XYZ(kActorTyrell, -10.0f, 12.0f, 100.0f, 0, false, false, 0);





More information about the Scummvm-git-logs mailing list