aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
Diffstat (limited to 'engines')
-rw-r--r--engines/bladerunner/game_constants.h77
-rw-r--r--engines/bladerunner/script/ai/mccoy.cpp212
-rw-r--r--engines/bladerunner/script/ai/rachael.cpp304
-rw-r--r--engines/bladerunner/script/scene/ma06.cpp138
-rw-r--r--engines/bladerunner/script/scene/ma07.cpp27
-rw-r--r--engines/bladerunner/script/scene/tb07.cpp2
6 files changed, 544 insertions, 216 deletions
diff --git a/engines/bladerunner/game_constants.h b/engines/bladerunner/game_constants.h
index 8c99747806..2c2f08e486 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 432c75f7d9..d05266b1f3 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 5045769a3b..49baab4dee 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 3779f946f5..2031b40244 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 83efc3533d..87a2063e73 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 781e53ee47..3e955f57ec 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);