aboutsummaryrefslogtreecommitdiff
path: root/engines/bladerunner/script/ai
diff options
context:
space:
mode:
authorPeter Kohaut2018-02-18 22:18:41 +0100
committerPeter Kohaut2018-02-18 22:20:16 +0100
commit7090841ccc43c64d5a1d9058071ebccaf6b52fc2 (patch)
tree44fb7798096b66646039a34c6d4756e091bc700b /engines/bladerunner/script/ai
parent1d69120112e16a74a9d101a0d4d9de04196d29de (diff)
downloadscummvm-rg350-7090841ccc43c64d5a1d9058071ebccaf6b52fc2.tar.gz
scummvm-rg350-7090841ccc43c64d5a1d9058071ebccaf6b52fc2.tar.bz2
scummvm-rg350-7090841ccc43c64d5a1d9058071ebccaf6b52fc2.zip
BLADERUNNER: Support for running
Fixed Runciter idle state Fixed movement track delay Basic combat support
Diffstat (limited to 'engines/bladerunner/script/ai')
-rw-r--r--engines/bladerunner/script/ai/leon.cpp9
-rw-r--r--engines/bladerunner/script/ai/maggie.cpp9
-rw-r--r--engines/bladerunner/script/ai/mccoy.cpp21
-rw-r--r--engines/bladerunner/script/ai/officer_leary.cpp3
-rw-r--r--engines/bladerunner/script/ai/runciter.cpp27
5 files changed, 37 insertions, 32 deletions
diff --git a/engines/bladerunner/script/ai/leon.cpp b/engines/bladerunner/script/ai/leon.cpp
index 9d82464708..3d136eea4e 100644
--- a/engines/bladerunner/script/ai/leon.cpp
+++ b/engines/bladerunner/script/ai/leon.cpp
@@ -128,10 +128,11 @@ void AIScriptLeon::OtherAgentEnteredCombatMode(int otherActorId, int combatMode)
void AIScriptLeon::ShotAtAndMissed() {}
-void AIScriptLeon::ShotAtAndHit() {
+bool AIScriptLeon::ShotAtAndHit() {
if (Actor_Query_Goal_Number(kActorLeon) != 7) {
Actor_Set_Goal_Number(kActorLeon, 7);
}
+ return false;
}
void AIScriptLeon::Retired(int byActorId) {}
@@ -351,7 +352,7 @@ bool AIScriptLeon::UpdateAnimation(int *animation, int *frame) {
bool AIScriptLeon::ChangeAnimationMode(int mode) {
switch (mode) {
- case 0:
+ case kAnimationModeIdle:
switch (_animationState) {
case 2:
case 3:
@@ -370,7 +371,7 @@ bool AIScriptLeon::ChangeAnimationMode(int mode) {
break;
}
break;
- case 1:
+ case kAnimationModeWalk:
_animationState = 1;
_animationFrame = 0;
break;
@@ -379,7 +380,7 @@ bool AIScriptLeon::ChangeAnimationMode(int mode) {
_animationFrame = 0;
var_45EDAC = 0;
break;
- case 6:
+ case kAnimationModeCombatShoot:
_animationState = 10;
_animationFrame = 0;
break;
diff --git a/engines/bladerunner/script/ai/maggie.cpp b/engines/bladerunner/script/ai/maggie.cpp
index 3fd213f1de..89dd651c01 100644
--- a/engines/bladerunner/script/ai/maggie.cpp
+++ b/engines/bladerunner/script/ai/maggie.cpp
@@ -139,7 +139,7 @@ void AIScriptMaggie::ClickedByPlayer() {
Actor_Set_Targetable(kActorMaggie, true);
AI_Movement_Track_Flush(kActorMaggie);
Actor_Face_Actor(kActorMcCoy, kActorMaggie, true);
- Actor_Says(kActorMcCoy, 2400, 52);
+ Actor_Says(kActorMcCoy, 2400, kAnimationModeFeeding);
}
return; // true
}
@@ -210,10 +210,11 @@ void AIScriptMaggie::OtherAgentEnteredCombatMode(int otherActorId, int combatMod
void AIScriptMaggie::ShotAtAndMissed() {
}
-void AIScriptMaggie::ShotAtAndHit() {
+bool AIScriptMaggie::ShotAtAndHit() {
AI_Movement_Track_Flush(kActorMaggie);
Actor_Set_Goal_Number(kActorMaggie, 414);
Actor_Set_Targetable(kActorMaggie, false);
+ return false;
}
void AIScriptMaggie::Retired(int byActorId) {
@@ -270,7 +271,7 @@ bool AIScriptMaggie::GoalChanged(int currentGoalNumber, int newGoalNumber) {
Loop_Actor_Walk_To_Actor(kActorMaggie, kActorMcCoy, 48, false, false);
Actor_Face_Actor(kActorMcCoy, kActorMaggie, true);
Actor_Face_Actor(kActorMaggie, kActorMcCoy, false);
- Actor_Says(kActorMcCoy, 2400, 52);
+ Actor_Says(kActorMcCoy, 2400, kAnimationModeFeeding);
Actor_Set_Goal_Number(kActorMaggie, 8);
Player_Gains_Control();
return true;
@@ -593,7 +594,7 @@ bool AIScriptMaggie::ChangeAnimationMode(int mode) {
}
}
break;
- case 52:
+ case kAnimationModeFeeding:
if (Game_Flag_Query(kFlagMaggieIsHurt)) {
_animationState = kMaggieStateHurtJumping;
_animationFrame = 0;
diff --git a/engines/bladerunner/script/ai/mccoy.cpp b/engines/bladerunner/script/ai/mccoy.cpp
index f84c9a9d52..3f3888f99f 100644
--- a/engines/bladerunner/script/ai/mccoy.cpp
+++ b/engines/bladerunner/script/ai/mccoy.cpp
@@ -219,7 +219,8 @@ void AIScriptMcCoy::OtherAgentEnteredCombatMode(int otherActorId, int combatMode
void AIScriptMcCoy::ShotAtAndMissed() {
}
-void AIScriptMcCoy::ShotAtAndHit() {
+bool AIScriptMcCoy::ShotAtAndHit() {
+ return false;
}
void AIScriptMcCoy::Retired(int byActorId) {
@@ -633,7 +634,7 @@ bool AIScriptMcCoy::UpdateAnimation(int *animation, int *frame) {
*animation = 32;
_animationFrame++;
if (_animationFrame == 7) {
- Actor_Change_Animation_Mode(kActorMaggie, 52);
+ Actor_Change_Animation_Mode(kActorMaggie, kAnimationModeFeeding);
}
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
*animation = 19;
@@ -1244,7 +1245,7 @@ bool AIScriptMcCoy::ChangeAnimationMode(int mode) {
_animationState = 70;
}
return true;
- case 52:
+ case kAnimationModeFeeding:
_animationState = 55;
_animationFrame = 0;
return true;
@@ -1488,19 +1489,19 @@ bool AIScriptMcCoy::ChangeAnimationMode(int mode) {
dword_45A0F4 = 21;
}
return true;
- case 8:
+ case kAnimationModeCombatRun:
if (_animationState != 27 && _animationState != 50) {
_animationState = 37;
_animationFrame = 0;
}
return true;
- case 7:
+ case kAnimationModeCombatWalk:
if (_animationState != 27 && _animationState != 50) {
_animationState = 36;
_animationFrame = 0;
}
return true;
- case 6:
+ case kAnimationModeCombatShoot:
_animationState = 21;
_animationFrame = 0;
return true;
@@ -1524,7 +1525,7 @@ bool AIScriptMcCoy::ChangeAnimationMode(int mode) {
break;
}
return true;
- case 4:
+ case kAnimationModeCombatIdle:
switch (_animationState) {
case 22:
_animationState = 19;
@@ -1586,7 +1587,7 @@ bool AIScriptMcCoy::ChangeAnimationMode(int mode) {
_animationNext = 20;
}
return true;
- case 2:
+ case kAnimationModeRun:
if (_animationState == 27 || _animationState == 50) {
return true;
}
@@ -1598,7 +1599,7 @@ bool AIScriptMcCoy::ChangeAnimationMode(int mode) {
_animationState = 58;
_animationFrame = 4;
return true;
- case 1:
+ case kAnimationModeWalk:
if (_animationState == 27 || _animationState == 50) {
return true;
}
@@ -1610,7 +1611,7 @@ bool AIScriptMcCoy::ChangeAnimationMode(int mode) {
_animationState = 58;
_animationFrame = 0;
return true;
- case 0:
+ case kAnimationModeIdle:
if (Game_Flag_Query(550)) {
if (_animationFrame > 6) {
_animationState = 57;
diff --git a/engines/bladerunner/script/ai/officer_leary.cpp b/engines/bladerunner/script/ai/officer_leary.cpp
index 86b3ace09c..c95ba202ca 100644
--- a/engines/bladerunner/script/ai/officer_leary.cpp
+++ b/engines/bladerunner/script/ai/officer_leary.cpp
@@ -209,10 +209,11 @@ void AIScriptOfficerLeary::OtherAgentEnteredCombatMode(int otherActorId, int com
void AIScriptOfficerLeary::ShotAtAndMissed() {}
-void AIScriptOfficerLeary::ShotAtAndHit() {
+bool AIScriptOfficerLeary::ShotAtAndHit() {
if (Actor_Query_Goal_Number(kActorOfficerLeary) == 307) {
Actor_Set_Health(kActorOfficerLeary, 50, 50);
}
+ return false;
}
void AIScriptOfficerLeary::Retired(int byActorId) {
diff --git a/engines/bladerunner/script/ai/runciter.cpp b/engines/bladerunner/script/ai/runciter.cpp
index c18dd2d5f0..d1d7a08182 100644
--- a/engines/bladerunner/script/ai/runciter.cpp
+++ b/engines/bladerunner/script/ai/runciter.cpp
@@ -139,7 +139,7 @@ void AIScriptRunciter::OtherAgentEnteredCombatMode(int otherActorId, int combatM
void AIScriptRunciter::ShotAtAndMissed() {}
-void AIScriptRunciter::ShotAtAndHit() {
+bool AIScriptRunciter::ShotAtAndHit() {
Actor_Set_Targetable(kActorRunciter, false);
Actor_Change_Animation_Mode(kActorRunciter, 48);
Actor_Set_Goal_Number(kActorRunciter, 599);
@@ -153,6 +153,7 @@ void AIScriptRunciter::ShotAtAndHit() {
Actor_Voice_Over(2090, kActorVoiceOver);
}
Actor_Modify_Friendliness_To_Other(kActorClovis, kActorMcCoy, 3);
+ return false;
}
void AIScriptRunciter::Retired(int byActorId) {}
@@ -472,8 +473,8 @@ bool AIScriptRunciter::UpdateAnimation(int *animation, int *frame) {
bool AIScriptRunciter::ChangeAnimationMode(int mode) {
switch (mode) {
- case kAnimationModeCombatIdle:
- if (_animationState <= 11) {
+ case kAnimationModeIdle:
+ if (_animationState >= 2 && _animationState <= 11) {
var_45CD88 = 1;
} else {
_animationState = 0;
@@ -485,14 +486,14 @@ bool AIScriptRunciter::ChangeAnimationMode(int mode) {
if (_animationState > 1) {
_animationState = 1;
_animationFrame = 0;
- } else if (!_animationState) {
+ } else if (_animationState == 0) {
_animationState = 13;
_animationStateNext = 1;
_animationNext = 526;
}
break;
case 3:
- if (_animationState) {
+ if (_animationState != 0) {
_animationState = 2;
_animationFrame = 0;
} else {
@@ -503,7 +504,7 @@ bool AIScriptRunciter::ChangeAnimationMode(int mode) {
var_45CD88 = 0;
break;
case 12:
- if (_animationState) {
+ if (_animationState != 0) {
_animationState = 2;
_animationFrame = 0;
} else {
@@ -514,7 +515,7 @@ bool AIScriptRunciter::ChangeAnimationMode(int mode) {
var_45CD88 = 0;
break;
case 13:
- if (_animationState) {
+ if (_animationState != 0) {
_animationState = 2;
_animationFrame = 0;
} else {
@@ -525,7 +526,7 @@ bool AIScriptRunciter::ChangeAnimationMode(int mode) {
var_45CD88 = 0;
break;
case 14:
- if (_animationState) {
+ if (_animationState != 0) {
_animationState = 2;
_animationFrame = 0;
} else {
@@ -536,7 +537,7 @@ bool AIScriptRunciter::ChangeAnimationMode(int mode) {
var_45CD88 = 0;
break;
case 15:
- if (_animationState) {
+ if (_animationState != 0) {
_animationState = 2;
_animationFrame = 0;
} else {
@@ -547,7 +548,7 @@ bool AIScriptRunciter::ChangeAnimationMode(int mode) {
var_45CD88 = 0;
break;
case 16:
- if (_animationState) {
+ if (_animationState != 0) {
_animationState = 2;
_animationFrame = 0;
} else {
@@ -558,7 +559,7 @@ bool AIScriptRunciter::ChangeAnimationMode(int mode) {
var_45CD88 = 0;
break;
case 17:
- if (_animationState) {
+ if (_animationState != 0) {
_animationState = 2;
_animationFrame = 0;
} else {
@@ -569,7 +570,7 @@ bool AIScriptRunciter::ChangeAnimationMode(int mode) {
var_45CD88 = 0;
break;
case 18:
- if (_animationState) {
+ if (_animationState != 0) {
_animationState = 2;
_animationFrame = 0;
} else {
@@ -580,7 +581,7 @@ bool AIScriptRunciter::ChangeAnimationMode(int mode) {
var_45CD88 = 0;
break;
case 19:
- if (_animationState) {
+ if (_animationState != 0) {
_animationState = 2;
_animationFrame = 0;
} else {