diff options
-rw-r--r-- | engines/bladerunner/game_constants.h | 17 | ||||
-rw-r--r-- | engines/bladerunner/script/ai/free_slot_a.cpp | 4 | ||||
-rw-r--r-- | engines/bladerunner/script/ai/free_slot_b.cpp | 4 | ||||
-rw-r--r-- | engines/bladerunner/script/ai/hysteria_patron1.cpp | 40 | ||||
-rw-r--r-- | engines/bladerunner/script/ai/hysteria_patron2.cpp | 18 | ||||
-rw-r--r-- | engines/bladerunner/script/ai/officer_grayford.cpp | 26 | ||||
-rw-r--r-- | engines/bladerunner/script/ai/officer_leary.cpp | 26 | ||||
-rw-r--r-- | engines/bladerunner/script/scene/nr03.cpp | 38 |
8 files changed, 125 insertions, 48 deletions
diff --git a/engines/bladerunner/game_constants.h b/engines/bladerunner/game_constants.h index 4f9198914b..71d21d8285 100644 --- a/engines/bladerunner/game_constants.h +++ b/engines/bladerunner/game_constants.h @@ -1765,6 +1765,23 @@ enum GameModelAnimations { kModelAnimationRachaelTalkHandOnChest = 831, kModelAnimationRachaelTalkHandWaveToRight = 832, + kModelAnimationHysteriaPatron1DanceStandingUpSemiSitAndUp = 877, + kModelAnimationHysteriaPatron1DanceStandingUpLeftMotion = 878, + kModelAnimationHysteriaPatron1DanceStandingUpStowingMoney = 879, // original unused + kModelAnimationHysteriaPatron1DanceSplitsDuckAndDown = 880, + kModelAnimationHysteriaPatron1DanceSplitsSemiUpAndDown = 881, + kModelAnimationHysteriaPatron1DanceSplitsBackAndForth = 882, + kModelAnimationHysteriaPatron1DanceStandingUpToSplits = 883, + kModelAnimationHysteriaPatron1DanceSplitsToStandingUp = 884, + kModelAnimationHysteriaPatron2DanceHandsBellyMotion = 885, // most used + kModelAnimationHysteriaPatron2DanceHandsUpLeftMotion = 886, + kModelAnimationHysteriaPatron2DanceHandsUpSitAndUp = 887, + kModelAnimationHysteriaPatron2DanceHandsDownHipsSwirl = 888, + kModelAnimationHysteriaPatron2DanceHandsDownLegSwirl = 889, + kModelAnimationHysteriaPatron2DanceHandsDownLeanBackForth = 890, + kModelAnimationHysteriaPatron2DanceHandsUpToHandsDown = 891, + kModelAnimationHysteriaPatron2DanceHandsDownToHandsUp = 892, + kModelAnimationBadge = 931, kModelAnimationBomb = 932, kModelAnimationCandy = 933, diff --git a/engines/bladerunner/script/ai/free_slot_a.cpp b/engines/bladerunner/script/ai/free_slot_a.cpp index 83ae547e48..37e7783aca 100644 --- a/engines/bladerunner/script/ai/free_slot_a.cpp +++ b/engines/bladerunner/script/ai/free_slot_a.cpp @@ -159,7 +159,7 @@ void AIScriptFreeSlotA::CompletedMovementTrack() { break; case 406: - Non_Player_Actor_Combat_Mode_On(kActorFreeSlotA, 0, 0, 0, 8, 4, 7, 8, 0, 0, 100, 5, 300, 0); + Non_Player_Actor_Combat_Mode_On(kActorFreeSlotA, kActorCombatStateIdle, false, kActorMcCoy, 8, kAnimationModeCombatIdle, kAnimationModeCombatWalk, kAnimationModeCombatRun, 0, 0, 100, 5, 300, false); break; default: @@ -286,7 +286,7 @@ bool AIScriptFreeSlotA::GoalChanged(int currentGoalNumber, int newGoalNumber) { case kGoalFreeSlotAAttackMcCoy: Actor_Set_Targetable(kActorFreeSlotA, true); - Non_Player_Actor_Combat_Mode_On(kActorFreeSlotA, 0, 0, 0, 8, 4, 7, 8, 25, 0, 75, 5, 300, 0); + Non_Player_Actor_Combat_Mode_On(kActorFreeSlotA, kActorCombatStateIdle, false, kActorMcCoy, 8, kAnimationModeCombatIdle, kAnimationModeCombatWalk, kAnimationModeCombatRun, 25, 0, 75, 5, 300, false); break; case kGoalFreeSlotAUG15Fall: diff --git a/engines/bladerunner/script/ai/free_slot_b.cpp b/engines/bladerunner/script/ai/free_slot_b.cpp index c3a87bff21..dd4ce552de 100644 --- a/engines/bladerunner/script/ai/free_slot_b.cpp +++ b/engines/bladerunner/script/ai/free_slot_b.cpp @@ -121,7 +121,7 @@ void AIScriptFreeSlotB::CompletedMovementTrack() { break; case 406: - Non_Player_Actor_Combat_Mode_On(kActorFreeSlotB, 0, 0, 0, 8, 4, 7, 8, 0, 0, 100, 5, 300, 0); + Non_Player_Actor_Combat_Mode_On(kActorFreeSlotB, kActorCombatStateIdle, false, kActorMcCoy, 8, kAnimationModeCombatIdle, kAnimationModeCombatWalk, kAnimationModeCombatRun, 0, 0, 100, 5, 300, false); break; default: @@ -195,7 +195,7 @@ bool AIScriptFreeSlotB::GoalChanged(int currentGoalNumber, int newGoalNumber) { case 302: Actor_Set_Targetable(kActorFreeSlotB, true); - Non_Player_Actor_Combat_Mode_On(kActorFreeSlotB, 0, 0, 0, 8, 4, 7, 8, 25, 0, 75, 5, 300, 0); + Non_Player_Actor_Combat_Mode_On(kActorFreeSlotB, kActorCombatStateIdle, false, kActorMcCoy, 8, kAnimationModeCombatIdle, kAnimationModeCombatWalk, kAnimationModeCombatRun, 25, 0, 75, 5, 300, false); break; case 400: diff --git a/engines/bladerunner/script/ai/hysteria_patron1.cpp b/engines/bladerunner/script/ai/hysteria_patron1.cpp index 6eadd74976..9a13208f88 100644 --- a/engines/bladerunner/script/ai/hysteria_patron1.cpp +++ b/engines/bladerunner/script/ai/hysteria_patron1.cpp @@ -93,22 +93,46 @@ bool AIScriptHysteriaPatron1::GoalChanged(int currentGoalNumber, int newGoalNumb return false; } -const int animationList[27] = { - 877, 878, 877, 883, 880, 881, 882, 884, 878, 877, - 883, 881, 880, 884, 877, 877, 878, 883, 882, 884, - 878, 877, 883, 882, 880, 881, 884 +const int kAnimationsCount = 27; +const int animationList[kAnimationsCount] = { + kModelAnimationHysteriaPatron1DanceStandingUpSemiSitAndUp, kModelAnimationHysteriaPatron1DanceStandingUpLeftMotion, kModelAnimationHysteriaPatron1DanceStandingUpSemiSitAndUp, + kModelAnimationHysteriaPatron1DanceStandingUpToSplits, kModelAnimationHysteriaPatron1DanceSplitsDuckAndDown, kModelAnimationHysteriaPatron1DanceSplitsSemiUpAndDown, + kModelAnimationHysteriaPatron1DanceSplitsBackAndForth, kModelAnimationHysteriaPatron1DanceSplitsToStandingUp, kModelAnimationHysteriaPatron1DanceStandingUpLeftMotion, + kModelAnimationHysteriaPatron1DanceStandingUpSemiSitAndUp, kModelAnimationHysteriaPatron1DanceStandingUpToSplits, kModelAnimationHysteriaPatron1DanceSplitsSemiUpAndDown, + kModelAnimationHysteriaPatron1DanceSplitsDuckAndDown, kModelAnimationHysteriaPatron1DanceSplitsToStandingUp, kModelAnimationHysteriaPatron1DanceStandingUpSemiSitAndUp, + kModelAnimationHysteriaPatron1DanceStandingUpSemiSitAndUp, kModelAnimationHysteriaPatron1DanceStandingUpLeftMotion, kModelAnimationHysteriaPatron1DanceStandingUpToSplits, + kModelAnimationHysteriaPatron1DanceSplitsBackAndForth, kModelAnimationHysteriaPatron1DanceSplitsToStandingUp, kModelAnimationHysteriaPatron1DanceStandingUpLeftMotion, + kModelAnimationHysteriaPatron1DanceStandingUpSemiSitAndUp, kModelAnimationHysteriaPatron1DanceStandingUpToSplits, kModelAnimationHysteriaPatron1DanceSplitsBackAndForth, + kModelAnimationHysteriaPatron1DanceSplitsDuckAndDown, kModelAnimationHysteriaPatron1DanceSplitsSemiUpAndDown, kModelAnimationHysteriaPatron1DanceSplitsToStandingUp }; bool AIScriptHysteriaPatron1::UpdateAnimation(int *animation, int *frame) { - *animation = animationList[_animationState]; + if (_vm->_cutContent + && (_animationState == 2 || _animationState == 16 || _animationState == 21) + ) { + // replace a few of the repeated "standing up" animations + // with the cut animation kModelAnimationHysteriaPatron1DanceStandingUpStowingMoney + *animation = kModelAnimationHysteriaPatron1DanceStandingUpStowingMoney; + } else { + *animation = animationList[_animationState]; + } if (++_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) { _animationFrame = 0; - if (++_animationState >= 27) + if (++_animationState >= kAnimationsCount) { _animationState = 0; - - *animation = animationList[_animationState]; + } + + if (_vm->_cutContent + && (_animationState == 2 || _animationState == 16 || _animationState == 21) + ) { + // replace a few of the repeated "standing up" animations + // with the cut animation kModelAnimationHysteriaPatron1DanceStandingUpStowingMoney + *animation = kModelAnimationHysteriaPatron1DanceStandingUpStowingMoney; + } else { + *animation = animationList[_animationState]; + } } *frame = _animationFrame; diff --git a/engines/bladerunner/script/ai/hysteria_patron2.cpp b/engines/bladerunner/script/ai/hysteria_patron2.cpp index 6a284bd793..6fe72eca7f 100644 --- a/engines/bladerunner/script/ai/hysteria_patron2.cpp +++ b/engines/bladerunner/script/ai/hysteria_patron2.cpp @@ -94,10 +94,18 @@ bool AIScriptHysteriaPatron2::GoalChanged(int currentGoalNumber, int newGoalNumb return false; } -const int animationList[30] = { - 885, 886, 887, 891, 888, 889, 890, 892, 886, 885, - 885, 885, 885, 886, 891, 889, 888, 890, 892, 887, - 885, 885, 885, 885, 885, 891, 888, 888, 890, 892 +const int kAnimationsCount = 30; +const int animationList[kAnimationsCount] = { + kModelAnimationHysteriaPatron2DanceHandsBellyMotion, kModelAnimationHysteriaPatron2DanceHandsUpLeftMotion, kModelAnimationHysteriaPatron2DanceHandsUpSitAndUp, + kModelAnimationHysteriaPatron2DanceHandsUpToHandsDown, kModelAnimationHysteriaPatron2DanceHandsDownHipsSwirl, kModelAnimationHysteriaPatron2DanceHandsDownLegSwirl, + kModelAnimationHysteriaPatron2DanceHandsDownLeanBackForth, kModelAnimationHysteriaPatron2DanceHandsDownToHandsUp, kModelAnimationHysteriaPatron2DanceHandsUpLeftMotion, + kModelAnimationHysteriaPatron2DanceHandsBellyMotion, kModelAnimationHysteriaPatron2DanceHandsBellyMotion, kModelAnimationHysteriaPatron2DanceHandsBellyMotion, + kModelAnimationHysteriaPatron2DanceHandsBellyMotion, kModelAnimationHysteriaPatron2DanceHandsUpLeftMotion, kModelAnimationHysteriaPatron2DanceHandsUpToHandsDown, + kModelAnimationHysteriaPatron2DanceHandsDownLegSwirl, kModelAnimationHysteriaPatron2DanceHandsDownHipsSwirl, kModelAnimationHysteriaPatron2DanceHandsDownLeanBackForth, + kModelAnimationHysteriaPatron2DanceHandsDownToHandsUp, kModelAnimationHysteriaPatron2DanceHandsUpSitAndUp, kModelAnimationHysteriaPatron2DanceHandsBellyMotion, + kModelAnimationHysteriaPatron2DanceHandsBellyMotion, kModelAnimationHysteriaPatron2DanceHandsBellyMotion, kModelAnimationHysteriaPatron2DanceHandsBellyMotion, + kModelAnimationHysteriaPatron2DanceHandsBellyMotion, kModelAnimationHysteriaPatron2DanceHandsUpToHandsDown, kModelAnimationHysteriaPatron2DanceHandsDownHipsSwirl, + kModelAnimationHysteriaPatron2DanceHandsDownHipsSwirl, kModelAnimationHysteriaPatron2DanceHandsDownLeanBackForth, kModelAnimationHysteriaPatron2DanceHandsDownToHandsUp }; bool AIScriptHysteriaPatron2::UpdateAnimation(int *animation, int *frame) { @@ -106,7 +114,7 @@ bool AIScriptHysteriaPatron2::UpdateAnimation(int *animation, int *frame) { if (++_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) { _animationFrame = 0; - if (++_animationState >= 30) + if (++_animationState >= kAnimationsCount) _animationState = 0; *animation = animationList[_animationState]; diff --git a/engines/bladerunner/script/ai/officer_grayford.cpp b/engines/bladerunner/script/ai/officer_grayford.cpp index af0bc3c65f..82ae1b5d81 100644 --- a/engines/bladerunner/script/ai/officer_grayford.cpp +++ b/engines/bladerunner/script/ai/officer_grayford.cpp @@ -292,7 +292,7 @@ void AIScriptOfficerGrayford::ReceivedClue(int clueId, int fromActorId) { void AIScriptOfficerGrayford::ClickedByPlayer() { switch (Actor_Query_Goal_Number(kActorOfficerGrayford)) { - case 1: + case kGoalOfficerGrayfordWalksInPS03a: AI_Movement_Track_Flush(kActorOfficerGrayford); Actor_Set_Goal_Number(kActorOfficerGrayford, kGoalOfficerGrayfordStopAndTalk1); Actor_Face_Actor(kActorMcCoy, kActorOfficerGrayford, true); @@ -303,10 +303,10 @@ void AIScriptOfficerGrayford::ClickedByPlayer() { Actor_Says(kActorMcCoy, 4515, 13); Actor_Says(kActorOfficerGrayford, 230, 13); } - Actor_Set_Goal_Number(kActorOfficerGrayford, 1); + Actor_Set_Goal_Number(kActorOfficerGrayford, kGoalOfficerGrayfordWalksInPS03a); break; - case 2: + case kGoalOfficerGrayfordWalksInPS03b: AI_Movement_Track_Flush(kActorOfficerGrayford); Actor_Set_Goal_Number(kActorOfficerGrayford, kGoalOfficerGrayfordStopAndTalk1); Actor_Face_Actor(kActorMcCoy, kActorOfficerGrayford, true); @@ -317,10 +317,10 @@ void AIScriptOfficerGrayford::ClickedByPlayer() { Actor_Says(kActorMcCoy, 4515, 13); Actor_Says(kActorOfficerGrayford, 330, 13); } - Actor_Set_Goal_Number(kActorOfficerGrayford, 2); + Actor_Set_Goal_Number(kActorOfficerGrayford, kGoalOfficerGrayfordWalksInPS03b); break; - case 3: + case kGoalOfficerGrayfordWalksInPS03c: AI_Movement_Track_Flush(kActorOfficerGrayford); Actor_Set_Goal_Number(kActorOfficerGrayford, kGoalOfficerGrayfordStopAndTalk1); Actor_Face_Actor(kActorMcCoy, kActorOfficerGrayford, true); @@ -330,10 +330,10 @@ void AIScriptOfficerGrayford::ClickedByPlayer() { } else { Actor_Says(kActorMcCoy, 5075, 14); // bug in the original? Matches the above statement } - Actor_Set_Goal_Number(kActorOfficerGrayford, 3); + Actor_Set_Goal_Number(kActorOfficerGrayford, kGoalOfficerGrayfordWalksInPS03c); break; - case 4: + case kGoalOfficerGrayfordWalksInPS03d: AI_Movement_Track_Flush(kActorOfficerGrayford); Actor_Set_Goal_Number(kActorOfficerGrayford, kGoalOfficerGrayfordStopAndTalk1); Actor_Face_Actor(kActorMcCoy, kActorOfficerGrayford, true); @@ -345,25 +345,25 @@ void AIScriptOfficerGrayford::ClickedByPlayer() { Actor_Says(kActorMcCoy, 4515, 13); Actor_Says(kActorOfficerGrayford, 330, 13); } - Actor_Set_Goal_Number(kActorOfficerGrayford, 4); + Actor_Set_Goal_Number(kActorOfficerGrayford, kGoalOfficerGrayfordWalksInPS03d); break; - case 7: + case kGoalOfficerGrayfordWalksInPS09b: AI_Movement_Track_Flush(kActorOfficerGrayford); Actor_Set_Goal_Number(kActorOfficerGrayford, kGoalOfficerGrayfordStopAndTalk1); Actor_Face_Actor(kActorMcCoy, kActorOfficerGrayford, true); Actor_Says(kActorMcCoy, 4515, 14); Actor_Says(kActorOfficerGrayford, 330, 13); - Actor_Set_Goal_Number(kActorOfficerGrayford, 7); + Actor_Set_Goal_Number(kActorOfficerGrayford, kGoalOfficerGrayfordWalksInPS09b); break; - - case 8: +// asdf goals 6 and 9? + case kGoalOfficerGrayfordWalksInPS09c: AI_Movement_Track_Flush(kActorOfficerGrayford); Actor_Set_Goal_Number(kActorOfficerGrayford, kGoalOfficerGrayfordStopAndTalk1); Actor_Face_Actor(kActorMcCoy, kActorOfficerGrayford, true); Actor_Face_Actor(kActorOfficerGrayford, kActorMcCoy, true); Actor_Says(kActorMcCoy, 5075, 13); - Actor_Set_Goal_Number(kActorOfficerGrayford, 8); + Actor_Set_Goal_Number(kActorOfficerGrayford, kGoalOfficerGrayfordWalksInPS09c); break; case kGoalOfficerGrayfordPatrolsAtDR04a: diff --git a/engines/bladerunner/script/ai/officer_leary.cpp b/engines/bladerunner/script/ai/officer_leary.cpp index d803b06c31..11c3b7c770 100644 --- a/engines/bladerunner/script/ai/officer_leary.cpp +++ b/engines/bladerunner/script/ai/officer_leary.cpp @@ -122,43 +122,43 @@ bool AIScriptOfficerLeary::Update() { case kSetDR01_DR02_DR04: if (Actor_Query_Which_Set_In(kActorOfficerLeary) == Player_Query_Current_Set()) { Actor_Set_Goal_Number(kActorOfficerLeary, kGoalOfficerLearyAttackMcCoyAct4); - Non_Player_Actor_Combat_Mode_On(kActorOfficerLeary, 0, 1, kActorMcCoy, 0, 4, 7, 8, -1, -1, -1, 10, 300, 0); + Non_Player_Actor_Combat_Mode_On(kActorOfficerLeary, kActorCombatStateIdle, true, kActorMcCoy, 0, kAnimationModeCombatIdle, kAnimationModeCombatWalk, kAnimationModeCombatRun, -1, -1, -1, 10, 300, false); } break; case kSetBB01: if (Actor_Query_Which_Set_In(kActorOfficerLeary) == Player_Query_Current_Set()) { Actor_Set_Goal_Number(kActorOfficerLeary, kGoalOfficerLearyAttackMcCoyAct4); - Non_Player_Actor_Combat_Mode_On(kActorOfficerLeary, 0, 1, kActorMcCoy, 1, 4, 7, 8, -1, -1, -1, 10, 300, 0); + Non_Player_Actor_Combat_Mode_On(kActorOfficerLeary, kActorCombatStateIdle, true, kActorMcCoy, 1, kAnimationModeCombatIdle, kAnimationModeCombatWalk, kAnimationModeCombatRun, -1, -1, -1, 10, 300, false); } break; case kSetCT11: if (Actor_Query_Which_Set_In(kActorOfficerLeary) == Player_Query_Current_Set()) { Actor_Set_Goal_Number(kActorOfficerLeary, kGoalOfficerLearyAttackMcCoyAct4); - Non_Player_Actor_Combat_Mode_On(kActorOfficerLeary, 0, 1, kActorMcCoy, 5, 4, 7, 8, -1, -1, -1, 10, 300, 0); + Non_Player_Actor_Combat_Mode_On(kActorOfficerLeary, kActorCombatStateIdle, true, kActorMcCoy, 5, kAnimationModeCombatIdle, kAnimationModeCombatWalk, kAnimationModeCombatRun, -1, -1, -1, 10, 300, false); } break; case kSetMA07: if (Actor_Query_Which_Set_In(kActorOfficerLeary) == Player_Query_Current_Set()) { Actor_Set_Goal_Number(kActorOfficerLeary, kGoalOfficerLearyAttackMcCoyAct4); - Non_Player_Actor_Combat_Mode_On(kActorOfficerLeary, 0, 1, kActorMcCoy, 7, 4, 7, 8, -1, -1, -1, 10, 300, 0); + Non_Player_Actor_Combat_Mode_On(kActorOfficerLeary, kActorCombatStateIdle, true, kActorMcCoy, 7, kAnimationModeCombatIdle, kAnimationModeCombatWalk, kAnimationModeCombatRun, -1, -1, -1, 10, 300, false); } break; case kSetNR01: if (Actor_Query_Which_Set_In(kActorOfficerLeary) == Player_Query_Current_Set()) { Actor_Set_Goal_Number(kActorOfficerLeary, kGoalOfficerLearyAttackMcCoyAct4); - Non_Player_Actor_Combat_Mode_On(kActorOfficerLeary, 0, 1, kActorMcCoy, 3, 4, 7, 8, -1, -1, -1, 10, 300, 0); + Non_Player_Actor_Combat_Mode_On(kActorOfficerLeary, kActorCombatStateIdle, true, kActorMcCoy, 3, kAnimationModeCombatIdle, kAnimationModeCombatWalk, kAnimationModeCombatRun, -1, -1, -1, 10, 300, false); } break; case kSetRC03: if (Actor_Query_Which_Set_In(kActorOfficerLeary) == Player_Query_Current_Set()) { Actor_Set_Goal_Number(kActorOfficerLeary, kGoalOfficerLearyAttackMcCoyAct4); - Non_Player_Actor_Combat_Mode_On(kActorOfficerLeary, 0, 1, kActorMcCoy, 18, 4, 7, 8, -1, -1, -1, 10, 300, 0); + Non_Player_Actor_Combat_Mode_On(kActorOfficerLeary, kActorCombatStateIdle, true, kActorMcCoy, 18, kAnimationModeCombatIdle, kAnimationModeCombatWalk, kAnimationModeCombatRun, -1, -1, -1, 10, 300, false); } break; case kSetUG01: if (Actor_Query_Which_Set_In(kActorOfficerLeary) == Player_Query_Current_Set()) { Actor_Set_Goal_Number(kActorOfficerLeary, kGoalOfficerLearyAttackMcCoyAct4); - Non_Player_Actor_Combat_Mode_On(kActorOfficerLeary, 0, 1, kActorMcCoy, 11, 4, 7, 8, -1, -1, -1, 10, 300, 0); + Non_Player_Actor_Combat_Mode_On(kActorOfficerLeary, kActorCombatStateIdle, true, kActorMcCoy, 11, kAnimationModeCombatIdle, kAnimationModeCombatWalk, kAnimationModeCombatRun, -1, -1, -1, 10, 300, false); } break; case kSetUG04: @@ -166,31 +166,31 @@ bool AIScriptOfficerLeary::Update() { case kSetUG06: if (Actor_Query_Which_Set_In(kActorOfficerLeary) == Player_Query_Current_Set()) { Actor_Set_Goal_Number(kActorOfficerLeary, kGoalOfficerLearyAttackMcCoyAct4); - Non_Player_Actor_Combat_Mode_On(kActorOfficerLeary, 0, 1, kActorMcCoy, 10, 4, 7, 8, -1, -1, -1, 10, 300, 0); + Non_Player_Actor_Combat_Mode_On(kActorOfficerLeary, kActorCombatStateIdle, true, kActorMcCoy, 10, kAnimationModeCombatIdle, kAnimationModeCombatWalk, kAnimationModeCombatRun, -1, -1, -1, 10, 300, false); } break; case kSetUG08: if (Actor_Query_Which_Set_In(kActorOfficerLeary) == Player_Query_Current_Set()) { Actor_Set_Goal_Number(kActorOfficerLeary, kGoalOfficerLearyAttackMcCoyAct4); - Non_Player_Actor_Combat_Mode_On(kActorOfficerLeary, 0, 1, kActorMcCoy, 13, 4, 7, 8, -1, -1, -1, 10, 300, 0); + Non_Player_Actor_Combat_Mode_On(kActorOfficerLeary, kActorCombatStateIdle, true, kActorMcCoy, 13, kAnimationModeCombatIdle, kAnimationModeCombatWalk, kAnimationModeCombatRun, -1, -1, -1, 10, 300, false); } break; case kSetUG10: if (Actor_Query_Which_Set_In(kActorOfficerLeary) == Player_Query_Current_Set()) { Actor_Set_Goal_Number(kActorOfficerLeary, kGoalOfficerLearyAttackMcCoyAct4); - Non_Player_Actor_Combat_Mode_On(kActorOfficerLeary, 0, 1, kActorMcCoy, 14, 4, 7, 8, -1, -1, -1, 10, 300, 0); + Non_Player_Actor_Combat_Mode_On(kActorOfficerLeary, kActorCombatStateIdle, true, kActorMcCoy, 14, kAnimationModeCombatIdle, kAnimationModeCombatWalk, kAnimationModeCombatRun, -1, -1, -1, 10, 300, false); } break; case kSetUG12: if (Actor_Query_Which_Set_In(kActorOfficerLeary) == Player_Query_Current_Set()) { Actor_Set_Goal_Number(kActorOfficerLeary, kGoalOfficerLearyAttackMcCoyAct4); - Non_Player_Actor_Combat_Mode_On(kActorOfficerLeary, 0, 1, kActorMcCoy, 16, 4, 7, 8, -1, -1, -1, 10, 300, 0); + Non_Player_Actor_Combat_Mode_On(kActorOfficerLeary, kActorCombatStateIdle, true, kActorMcCoy, 16, kAnimationModeCombatIdle, kAnimationModeCombatWalk, kAnimationModeCombatRun, -1, -1, -1, 10, 300, false); } break; case kSetUG14: if (Actor_Query_Which_Set_In(kActorOfficerLeary) == Player_Query_Current_Set()) { Actor_Set_Goal_Number(kActorOfficerLeary, kGoalOfficerLearyAttackMcCoyAct4); - Non_Player_Actor_Combat_Mode_On(kActorOfficerLeary, 0, 1, kActorMcCoy, 17, 4, 7, 8, -1, -1, -1, 10, 300, 0); + Non_Player_Actor_Combat_Mode_On(kActorOfficerLeary, kActorCombatStateIdle, true, kActorMcCoy, 17, kAnimationModeCombatIdle, kAnimationModeCombatWalk, kAnimationModeCombatRun, -1, -1, -1, 10, 300, false); } break; } @@ -238,7 +238,7 @@ void AIScriptOfficerLeary::CompletedMovementTrack() { } if (goal == kGoalOfficerLearyBlockingUG07) { // UG07 before McCoy visits his apartment in Act 4 - Non_Player_Actor_Combat_Mode_On(kActorOfficerLeary, 0, 1, kActorMcCoy, 12, kAnimationModeCombatIdle, kAnimationModeCombatWalk, kAnimationModeCombatRun, 0, -1, -1, 15, 300, 0); + Non_Player_Actor_Combat_Mode_On(kActorOfficerLeary, kActorCombatStateIdle, true, kActorMcCoy, 12, kAnimationModeCombatIdle, kAnimationModeCombatWalk, kAnimationModeCombatRun, 0, -1, -1, 15, 300, false); } if (goal == 308) { // goal 308 (and 309) are never triggered in the original code diff --git a/engines/bladerunner/script/scene/nr03.cpp b/engines/bladerunner/script/scene/nr03.cpp index b83d2caae0..534e64f9f0 100644 --- a/engines/bladerunner/script/scene/nr03.cpp +++ b/engines/bladerunner/script/scene/nr03.cpp @@ -230,15 +230,43 @@ bool SceneScriptNR03::ClickedOn2DRegion(int region) { if (region == 0) { if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, 79.2f, -70.19f, -984.0f, 12, true, false, false)) { Actor_Face_Actor(kActorMcCoy, kActorHysteriaPatron1, true); - int rnd = Random_Query(0, 4); - if (rnd == 0) { + switch(Random_Query(0, 4)) { + case 0: Actor_Says(kActorMcCoy, 1055, kAnimationModeTalk); - } else if (rnd == 1) { + break; + case 1: Actor_Says(kActorMcCoy, 8590, kAnimationModeTalk); - } else if (rnd == 2) { + break; + case 2: Actor_Says(kActorMcCoy, 8930, kAnimationModeTalk); - } else if (rnd == 3) { + break; + case 3: Actor_Says(kActorMcCoy, 7465, kAnimationModeTalk); + break; +#if BLADERUNNER_ORIGINAL_BUGS + default: + break; +#else + case 4: + if(_vm->_cutContent) { + switch(Random_Query(1, 10)) { + case 1: + // fall through + case 2: + // make this rare + Actor_Says(kActorMcCoy, 8518, kAnimationModeTalk); // Hey, can I lick... + break; + default: + Actor_Says(kActorMcCoy, 8700, kAnimationModeTalk); // Never seen anything like that before. + break; + } + } else { + // just say the same as in case 0 + Actor_Says(kActorMcCoy, 1055, kAnimationModeTalk); + } + default: + break; +#endif // BLADERUNNER_ORIGINAL_BUGS } } return true; |