diff options
Diffstat (limited to 'engines/bladerunner/script/ai/generic_walker_c.cpp')
-rw-r--r-- | engines/bladerunner/script/ai/generic_walker_c.cpp | 48 |
1 files changed, 43 insertions, 5 deletions
diff --git a/engines/bladerunner/script/ai/generic_walker_c.cpp b/engines/bladerunner/script/ai/generic_walker_c.cpp index 159c57a319..b92cf71622 100644 --- a/engines/bladerunner/script/ai/generic_walker_c.cpp +++ b/engines/bladerunner/script/ai/generic_walker_c.cpp @@ -116,7 +116,7 @@ void AIScriptGenericWalkerC::ClickedByPlayer() { Actor_Says(kActorMcCoy, 1085, 3); break; case 9: - Actor_Says(kActorMcCoy, 365, 3); + Actor_Says(kActorMcCoy, 365, 3); // Re-used line, same as case 1 break; case 10: Actor_Says(kActorMcCoy, 7415, 3); @@ -202,8 +202,28 @@ bool AIScriptGenericWalkerC::UpdateAnimation(int *animation, int *frame) { case 5: *animation = 433; break; + case 6: + *animation = 434; // Hatted child walking // frame 11 could be used for still + _animationFrame = 11; + break; + case 7: + *animation = 435; // Child walking // frame 5 could be used for still + _animationFrame = 5; + break; + case 8: + *animation = 422; // Hatted person walking fast // frame 1 could be used for still + _animationFrame = 1; + break; + case 9: + *animation = 423; // Hatted person walking lowered face // frame 6 could be used for still + _animationFrame = 6; + break; + } + if (!_vm->_cutContent + || Global_Variable_Query(kVariableGenericWalkerAModel) < 6 + ) { + _animationFrame = 0; } - _animationFrame = 0; break; case kGenericWalkerCStatesWalk: switch (Global_Variable_Query(kVariableGenericWalkerCModel)) { @@ -225,6 +245,18 @@ bool AIScriptGenericWalkerC::UpdateAnimation(int *animation, int *frame) { case 5: *animation = 432; break; + case 6: + *animation = 434; // Hatted child walking + break; + case 7: + *animation = 435; // Child walking + break; + case 8: + *animation = 422; // Hatted person walking fast + break; + case 9: + *animation = 423; // Hatted person walking lowered face + break; } ++_animationFrame; if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) { @@ -232,6 +264,8 @@ bool AIScriptGenericWalkerC::UpdateAnimation(int *animation, int *frame) { } break; case kGenericWalkerCStatesDie: + // This is an animation for Maggie (exploding) but is also used for generic death states (rats, generic walkers) + // probably for debug purposes *animation = 874; ++_animationFrame; if (++_animationFrame >= Slice_Animation_Query_Number_Of_Frames(874)) @@ -327,11 +361,15 @@ bool AIScriptGenericWalkerC::prepareWalker() { int model = 0; do { if (isInside) { - model = Random_Query(3, 5); + model = Random_Query(3, 5); // 0, 1, 2 models have umbrellas so they should be in outdoors locations } else { - model = Random_Query(0, 5); + if (_vm->_cutContent) { + model = Random_Query(0, 9); + } else { + model = Random_Query(0, 5); + } } - // Here is probably bug in original code, because it not using kVariableGenericWalkerBModel but kVariableGenericWalkerCModel + // this while loop ensures choosing a different model for Walker C than the Walker A or Walker B } while (model == Global_Variable_Query(kVariableGenericWalkerAModel) || model == Global_Variable_Query(kVariableGenericWalkerBModel)); |