diff options
Diffstat (limited to 'engines')
-rw-r--r-- | engines/bladerunner/game_constants.h | 77 | ||||
-rw-r--r-- | engines/bladerunner/script/ai/mccoy.cpp | 212 | ||||
-rw-r--r-- | engines/bladerunner/script/ai/rachael.cpp | 304 | ||||
-rw-r--r-- | engines/bladerunner/script/scene/ma06.cpp | 138 | ||||
-rw-r--r-- | engines/bladerunner/script/scene/ma07.cpp | 27 | ||||
-rw-r--r-- | engines/bladerunner/script/scene/tb07.cpp | 2 |
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); |