diff options
author | Peter Kohaut | 2018-02-18 22:18:41 +0100 |
---|---|---|
committer | Peter Kohaut | 2018-02-18 22:20:16 +0100 |
commit | 7090841ccc43c64d5a1d9058071ebccaf6b52fc2 (patch) | |
tree | 44fb7798096b66646039a34c6d4756e091bc700b /engines/bladerunner/script/ai | |
parent | 1d69120112e16a74a9d101a0d4d9de04196d29de (diff) | |
download | scummvm-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.cpp | 9 | ||||
-rw-r--r-- | engines/bladerunner/script/ai/maggie.cpp | 9 | ||||
-rw-r--r-- | engines/bladerunner/script/ai/mccoy.cpp | 21 | ||||
-rw-r--r-- | engines/bladerunner/script/ai/officer_leary.cpp | 3 | ||||
-rw-r--r-- | engines/bladerunner/script/ai/runciter.cpp | 27 |
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 { |