aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
Diffstat (limited to 'engines')
-rw-r--r--engines/bladerunner/game_constants.h17
-rw-r--r--engines/bladerunner/script/ai/free_slot_a.cpp4
-rw-r--r--engines/bladerunner/script/ai/free_slot_b.cpp4
-rw-r--r--engines/bladerunner/script/ai/hysteria_patron1.cpp40
-rw-r--r--engines/bladerunner/script/ai/hysteria_patron2.cpp18
-rw-r--r--engines/bladerunner/script/ai/officer_grayford.cpp26
-rw-r--r--engines/bladerunner/script/ai/officer_leary.cpp26
-rw-r--r--engines/bladerunner/script/scene/nr03.cpp38
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;