BLADERUNNER: Describe more animations

Izo, Sadik, Twins, EarlyQ, Leon, Sebastian, Leary, Grayford, Hanoi, Clerk, HowieLee, Isabella, FishDealer, InsectDealer

Also restored a talk animation for Hanoi, which looked to be omitted due to an original bug
This commit is contained in:
antoniou79 2020-12-13 19:03:08 +02:00
parent 1c27295acd
commit e536f50b34
27 changed files with 1256 additions and 974 deletions

View File

@ -1939,7 +1939,7 @@ enum GameModelAnimations {
kModelAnimationClovisStandingToKneeling = 239,
kModelAnimationClovisKneelingToStanding = 240,
kModelAnimationClovisKneelingTalking = 241,
kModelAnimationClovisJumpingDodging = 242, // animation mode 20 (TODO: Where is this used in game? In the Moonbus massacre scenario?)
kModelAnimationClovisJumpingDodging = 242, // animation mode 20 (TODO Where is this used in game? In the Moonbus massacre scenario?)
kModelAnimationClovisLayingWithBookIdle = 243,
kModelAnimationClovisLayingWithBookStopsReadingTalk = 244,
kModelAnimationClovisLayingWithBookStillReadingTalk = 245,
@ -1976,13 +1976,120 @@ enum GameModelAnimations {
kModelAnimationLucyCombatDropsDead = 275, // Untriggered. Somewhat faster than kModelAnimationLucyShotDead (259)
kModelAnimationLucyRemovesNeckletDiesFromExplosion = 276, // Untriggered
// 277 - 311: Izo animations
// TODO
kModelAnimationIzoCombatIdle = 277,
kModelAnimationIzoCombatTurnRight = 278, // untriggered
kModelAnimationIzoCombatTurnLeft = 279, // untriggered
kModelAnimationIzoCombatGotHitRight = 280,
kModelAnimationIzoCombatGotHitLeft = 281,
kModelAnimationIzoCombatWalking = 282,
kModelAnimationIzoCombatRunning = 283,
kModelAnimationIzoCombatShotDead = 284,
kModelAnimationIzoCombatClimbStairsUp = 285, // untriggered
kModelAnimationIzoCombatClimbStairsDown = 286, // untriggered
kModelAnimationIzoCombatUnseatheSword = 287,
kModelAnimationIzoCombatSeatheSword = 288,
kModelAnimationIzoCombatSwordAttack = 289,
kModelAnimationIzoWalking = 290,
kModelAnimationIzoRunning = 291,
kModelAnimationIzoClimbStairsUp = 292, // untriggered
kModelAnimationIzoClimbStairsDown = 293, // untriggered
kModelAnimationIzoGotHitRight = 294, // UNUSED
kModelAnimationIzoGotHitLeft = 295, // UNUSED
kModelAnimationIzoShotDead = 296,
kModelAnimationIzoIdle = 297,
kModelAnimationIzoAwkwardPlayWithHands = 298,
kModelAnimationIzoCalmTalk = 299,
kModelAnimationIzoMoreCalmTalk = 300,
kModelAnimationIzoExplainingTalk = 301,
kModelAnimationIzoHeadNodsAgreeingTalk = 302,
kModelAnimationIzoOffensiveTalk = 303,
kModelAnimationIzoHeadNodsDisagreeingTalk = 304,
kModelAnimationIzoUnderstandingTalk = 305,
kModelAnimationIzoClimbLadderDown = 306, // untriggered
kModelAnimationIzoClimbLadderUp = 307, // untriggered
kModelAnimationIzoHoldingCameraIdle = 308,
kModelAnimationIzoPicksCameraFromShop = 309,
kModelAnimationIzoHoldingCameraTalk = 310,
kModelAnimationIzoHoldingCameraUsesFlash = 311,
// 312 - 345: Sadik animations
// TODO
// 316 - 359: Twins/Luther animations
// TODO
kModelAnimationSadikCombatIdle = 312,
kModelAnimationSadikCombatTurnRight = 313, // untriggered
kModelAnimationSadikCombatTurnLeft = 314, // untriggered
kModelAnimationSadikCombatGotHitFront = 315,
kModelAnimationSadikCombatGotHitMore = 316,
kModelAnimationSadikCombatWalking = 317,
kModelAnimationSadikCombatRunning = 318,
kModelAnimationSadikCombatShotDead = 319, // UNUSED
kModelAnimationSadikCombatUnholsterGun = 320,
kModelAnimationSadikCombatHolsterGun = 321, // untriggered
kModelAnimationSadikCombatFireGunAndReturnToPoseIdle = 322, // A bit bugged. Sadik has all dark/black clothes suddenly here.
kModelAnimationSadikWalking = 323,
kModelAnimationSadikRunning = 324,
kModelAnimationSadikGotHitFront = 325,
kModelAnimationSadikGotHitMore = 326,
kModelAnimationSadikShotDead = 327,
kModelAnimationSadikIdle = 328,
kModelAnimationSadikShiftsShoulders = 329,
kModelAnimationSadikGesturePointOrGive = 330,
kModelAnimationSadikCalmTalk = 331,
kModelAnimationSadikMoreCalmTalk = 332,
kModelAnimationSadikSuggestTalk = 333,
kModelAnimationSadikUrgeTalk = 334,
kModelAnimationSadikAccuseTalk = 335,
kModelAnimationSadikProtestTalk = 336,
kModelAnimationSadikMockTalk = 337,
kModelAnimationSadikThisAndThatTalk = 338,
kModelAnimationSadikClimbLadderDown = 339, // untriggered
kModelAnimationSadikClimbLadderUp = 340, // untriggered
kModelAnimationSadikJumpAcross = 341, // untriggered
kModelAnimationSadikHangingDropsDown = 342, // untriggered
kModelAnimationSadikKicksSomeoneWhoIsDown = 343,
kModelAnimationSadikHoldsSomeoneAndPunches = 344,
kModelAnimationSadikPicksUpAndThrowsMcCoy = 345, // A bit bugged. Last frames 27-30 are empty and Sadik's model looks rough/wrong-ish.
// 346 - 359: Twins/Luther animations
kModelAnimationTwinsSitIdle = 346,
kModelAnimationTwinsSitTyping = 347, // UNUSED
kModelAnimationTwinsSitLancePutsSomethingToTheLeft = 348,
kModelAnimationTwinsSitLanceShortCalmTalk = 349, // Mostly looks like Lance is talking. Probably could be used for both.
kModelAnimationTwinsSitLanceLongerCalmTalk = 350, // Mostly looks like Lance is talking. Probably could be used for both.
kModelAnimationTwinsSitLutherCalmTalk = 351, // Mostly looks like Luther is talking. Probably could be used for both.
kModelAnimationTwinsSitLutherMoreCalmTalk = 352, // Mostly looks like Luther is talking. Probably could be used for both.
kModelAnimationTwinsSitLanceMoreCalmTalk = 353, // Mostly looks like Lance is talking. Probably could be used for both.
kModelAnimationTwinsSitLutherProtestTalk = 354, // Mostly looks like Luther is talking. Probably could be used for both.
kModelAnimationTwinsSitLutherGoAheadTalk = 355, // Mostly looks like Luther is talking. Probably could be used for both.
kModelAnimationTwinsSitLutherHitsOrFeedsLance = 356, // TODO Check when this happens (animationMode: 6)
kModelAnimationTwinsSitDropForwards = 357,
kModelAnimationTwinsSitAlmostDeadLutherPushesButton = 358,
kModelAnimationTwinsSitDieCompletely = 359,
// 360 - 387: EarlyQ animations
// TODO
kModelAnimationEarlyQCombatIdle = 360,
kModelAnimationEarlyQCombatWalking = 361,
kModelAnimationEarlyQCombatUnholsterGun = 362,
kModelAnimationEarlyQCombatHolsterGun = 363,
kModelAnimationEarlyQCombatFiresGun = 364,
kModelAnimationEarlyQWalking = 365,
kModelAnimationEarlyQGotHitRight = 366,
kModelAnimationEarlyQGotHitLeft = 367,
kModelAnimationEarlyQDropsDead = 368,
kModelAnimationEarlyQIdle = 369,
kModelAnimationEarlyQHandOnFace = 370, // maybe cigarrette?
kModelAnimationEarlyQGivesSomething = 371, // maybe the photo? // TODO check when this happens (animationMode 23)
kModelAnimationEarlyQCalmTalk = 372,
kModelAnimationEarlyQCalmExplainTalk = 373,
kModelAnimationEarlyQVulgarTalk = 374,
kModelAnimationEarlyQDismissTalk = 375,
kModelAnimationEarlyQMoreDismissTalk = 376,
kModelAnimationEarlyQIntenseExplainTalk = 377,
kModelAnimationEarlyQSubtleExplainTalk = 378,
kModelAnimationEarlyQExcitedTalk = 379,
kModelAnimationEarlyQAnnounceTalk = 380,
kModelAnimationEarlyQSPicksUpBottleAndPoursDrink = 381,
kModelAnimationEarlyQSHoldsDrinkIdle = 382,
kModelAnimationEarlyQSitsAndCrossesLegs = 383,
kModelAnimationEarlyQSitIdle = 384,
kModelAnimationEarlyQSitTalk = 385,
kModelAnimationEarlyQSitScorpionAgonyDeath = 386,
kModelAnimationEarlyQSitToStandingUp = 387,
// 388 - 421: Zuben animations
kModelAnimationZubenCombatIdle = 388,
kModelAnimationZubenCombatHitFront = 389,
@ -2121,17 +2228,128 @@ enum GameModelAnimations {
// 566 - 570: Mia animations
// TODO
// 571 - 604: Officer Leary animations
// TODO
kModelAnimationOfficerLearyCombatIdle = 571,
kModelAnimationOfficerLearyCombatGotHitRight = 572,
kModelAnimationOfficerLearyCombatGotHitLeft = 573,
kModelAnimationOfficerLearyCombatWalking = 574,
kModelAnimationOfficerLearyCombatRunning = 575,
kModelAnimationOfficerLearyCombatShotDead = 576,
kModelAnimationOfficerLearyCombatClimbStairsUp = 577, // untriggered?
kModelAnimationOfficerLearyCombatClimbStairsDown = 578, // untriggered?
kModelAnimationOfficerLearyCombatUnholsterGun = 579,
kModelAnimationOfficerLearyCombatHolsterGun = 580,
kModelAnimationOfficerLearyCombatFireGun = 581,
kModelAnimationOfficerLearyWalking = 582,
kModelAnimationOfficerLearyRunning = 583,
kModelAnimationOfficerLearyClimbStairsUp = 584, // untriggered?
kModelAnimationOfficerLearyClimbStairsDown = 585, // untriggered?
kModelAnimationOfficerLearyGotHitFront = 586,
kModelAnimationOfficerLearyGotHitBack = 587,
kModelAnimationOfficerLearyShotDead = 588,
kModelAnimationOfficerLearyOscillateIdle = 589,
kModelAnimationOfficerLearyLookAroundIdle = 590,
kModelAnimationOfficerLearyRockBackForthIdle = 591,
kModelAnimationOfficerLearyCalmExplainTalk = 592,
kModelAnimationOfficerLearyIndicateTalk = 593,
kModelAnimationOfficerLearyLongerExplainTalk = 594,
kModelAnimationOfficerLearyWarnOrThreatenTalk = 595,
kModelAnimationOfficerLearyUpsetOrCommandTalk = 596,
kModelAnimationOfficerLearyMoreUpsetTalk = 597,
kModelAnimationOfficerLearyUrgeOrQuestionTalk = 598,
kModelAnimationOfficerLearyHandsOnWaistTalk = 599,
kModelAnimationOfficerLearyScratchHeadApologyTalk = 600,
kModelAnimationOfficerLearyTakingNotes = 601,
kModelAnimationOfficerLearyIntenseTakingNotes = 602, // UNUSED
kModelAnimationOfficerLearyPutNotepadAway = 603,
kModelAnimationOfficerLearyTakeOutNotepad = 604,
// 605 - 641: Officer Grayford animations
// TODO
kModelAnimationOfficerGrayfordCombatIdle = 605,
kModelAnimationOfficerGrayfordCombatSlowStrafe = 606, // UNUSED
kModelAnimationOfficerGrayfordCombatFastStrafe = 607, // UNUSED
kModelAnimationOfficerGrayfordCombatGotHitRight = 608,
kModelAnimationOfficerGrayfordCombatGotHitLeft = 609,
kModelAnimationOfficerGrayfordCombatWalking = 610,
kModelAnimationOfficerGrayfordCombatRunning = 611,
kModelAnimationOfficerGrayfordCombatShotDead = 612,
kModelAnimationOfficerGrayfordCombatClimbStairsUp = 613, // UNUSED
kModelAnimationOfficerGrayfordCombatClimbStairsDown = 614, // UNUSED
kModelAnimationOfficerGrayfordCombatUnholsterGun = 615,
kModelAnimationOfficerGrayfordCombatHolsterGun = 616,
kModelAnimationOfficerGrayfordCombatFireGun = 617,
kModelAnimationOfficerGrayfordWalking = 618,
kModelAnimationOfficerGrayfordRunning = 619,
kModelAnimationOfficerGrayfordClimbStairsUp = 620, // UNUSED
kModelAnimationOfficerGrayfordClimbStairsDown = 621, // UNUSED
kModelAnimationOfficerGrayfordGotHitFront = 622,
kModelAnimationOfficerGrayfordGotHitBack = 623,
kModelAnimationOfficerGrayfordShotDead = 624,
kModelAnimationOfficerGrayfordOscillateIdle = 625,
kModelAnimationOfficerGrayfordLookAroundDownwardsIdle = 626,
kModelAnimationOfficerGrayfordLookAroundSidewaysIdle = 627,
kModelAnimationOfficerGrayfordGestureGive = 628, // UNUSED
kModelAnimationOfficerGrayfordCalmExplainTalk = 629,
kModelAnimationOfficerGrayfordCalmRightHandMoveTalk = 630,
kModelAnimationOfficerGrayfordScratchHeadTalk = 631,
kModelAnimationOfficerGrayfordQuickHandMoveTalk = 632,
kModelAnimationOfficerGrayfordSevereTalk = 633,
kModelAnimationOfficerGrayfordMockTalk = 634,
kModelAnimationOfficerGrayfordPointingTalk = 635,
kModelAnimationOfficerGrayfordQuestionTalk = 636,
kModelAnimationOfficerGrayfordDismissTalk = 637,
kModelAnimationOfficerGrayfordPlaceRadioToEar = 638,
kModelAnimationOfficerGrayfordTalkToAndLowerRadio = 639,
kModelAnimationOfficerGrayfordTakeOutRadioFromPocket = 640,
kModelAnimationOfficerGrayfordPutAwayRadioInPocket = 641,
// 642 - 660: Hanoi animations
// TODO
kModelAnimationHanoiCombatIdle = 642,
kModelAnimationHanoiCombatKicksDoorIn = 643, // TODO check when this happens (animationMode 71)
kModelAnimationHanoiCombatFiresGun = 644,
kModelAnimationHanoiWalking = 645,
kModelAnimationHanoiGotHitOrViolentHeadNod = 646,
kModelAnimationHanoiShotDead = 647,
kModelAnimationHanoiLooksAroundIdle = 648,
kModelAnimationHanoiScratchesBackIdle = 649,
kModelAnimationHanoiCalmTalk = 650,
kModelAnimationHanoiExplainTalk = 651,
kModelAnimationHanoiDownwardsNodTalk = 652,
kModelAnimationHanoiDenyTalk = 653,
kModelAnimationHanoiSlightBowingTalk = 654,
kModelAnimationHanoiLaughTalk = 655, // untriggered. Restored.
kModelAnimationHanoiMockTalk = 656,
kModelAnimationHanoiGrabsMcCoy = 657, // TODO check when this happens (animationMode 23)
kModelAnimationHanoiHoldsMcCoyUp = 658,
kModelAnimationHanoiHoldsMcCoyUpAndTalks = 659,
kModelAnimationHanoiPunchUpAttack = 660, // untriggered
// 661 - 670: Desk Clerk (Yukon) animations
// TODO
kModelAnimationDeskClerkReadPaperIdle = 661,
kModelAnimationDeskClerkReadPaperChangePageIdle = 662,
kModelAnimationDeskClerkReadPaperCalmTalk = 663,
kModelAnimationDeskClerkReadPaperMoreCalmTalk = 664,
kModelAnimationDeskClerkReadPaperMoveLeftTalk = 665,
kModelAnimationDeskClerkReadPaperSlightClosePaperTalk = 666,
kModelAnimationDeskClerkReadPaperMoreClosePaperTalk = 667,
kModelAnimationDeskClerkIsHeldUpByLeonIdle = 668,
kModelAnimationDeskClerkFallingAfterLeonLetsGo = 669,
kModelAnimationDeskClerkHeadSmashedOnCounter = 670,
// 671 - 681: Howie Lee animations
// TODO
kModelAnimationHowieLeeGathersOfTidiesUp = 671,
kModelAnimationHowieLeeWalking = 672,
kModelAnimationHowieLeePutsIngredientsCooking = 673,
kModelAnimationHowieLeeLongGestureGive = 674,
kModelAnimationHowieLeeQuickGestureGive = 675, // UNUSED
kModelAnimationHowieLeeCalmTalk = 676,
kModelAnimationHowieLeeExplainTalk = 677,
kModelAnimationHowieLeeUpsetTalk = 678,
kModelAnimationHowieLeeAngryTalk = 679,
kModelAnimationHowieLeeNoTimeTalk = 680,
kModelAnimationHowieLeeElaborateMovementTalk = 681, // Sushi throwing?
// 682 - 687: Fish Dealer animations
// TODO
kModelAnimationFishDealerWalking = 682,
kModelAnimationFishDealerIdle = 683,
kModelAnimationFishDealerGestureGive = 684, // TODO check when this happens (animationMode 23)
kModelAnimationFishDealerCalmTalk = 685,
kModelAnimationFishDealerExplainTalk = 686,
kModelAnimationFishDealerNoTroubleTalk = 687,
// 688 - 697: Dino Klein animations
kModelAnimationKleinWalking = 688,
kModelAnimationKleinStandingIdle = 689,
@ -2173,7 +2391,19 @@ enum GameModelAnimations {
kModelAnimationBearToyGotHit = 807, // UNUSED
kModelAnimationBearToyShotDead = 808, // untriggered
// 809 - 821: Sebastian animations
// TODO
kModelAnimationSebastianWalking = 809, // TODO check if Sebastian ever walks (probably not)
kModelAnimationSebastianStepsBack = 810, // TODO check when this happens (animationMode 20)
kModelAnimationSebastianIdle = 811,
kModelAnimationSebastianAwkwardPlayWithHands = 812, // UNUSED
kModelAnimationSebastianCalmHeadNodLeftTalk = 813,
kModelAnimationSebastianCalmHeadNodRightTalk = 814,
kModelAnimationSebastianSuggestTalk = 815,
kModelAnimationSebastianWonderingTalk = 816,
kModelAnimationSebastianPointingToSelfTalk = 817,
kModelAnimationSebastianScratchEarTalk = 818,
kModelAnimationSebastianAnnoyedTalk = 819,
kModelAnimationSebastianWaitTalk = 820, // last frame 13 is bugged (empty)
kModelAnimationSebastianTriesToRunHitsHeadAndFalls = 821, // untriggered -- related to animationMode 48 "kAnimationModeDie"
// 822 - 832: Rachael animations
kModelAnimationRachaelWalking = 822,
kModelAnimationRachaelIdle = 823,
@ -2193,9 +2423,26 @@ enum GameModelAnimations {
kModelGeneralDollShotDead = 836, // untriggered
kModelGeneralDollGotHit = 837, // untriggered
// 838 - 845: Mama Isabella animations
// TODO
kModelIsabellaIdle = 838,
kModelIsabellaPutsSpicesInSoup = 839,
kModelIsabellaGestureGiveOrTake = 840, // untriggered
kModelIsabellaCalmTalk = 841,
kModelIsabellaSuggestTalk = 842,
kModelIsabellaProtestTalk = 843,
kModelIsabellaMoreCalmTalk = 844,
kModelIsabellaLaughTalk = 845,
// 846 - 856: Leon animations
// TODO
kModelLeonWalking = 846,
kModelLeonIdle = 847,
kModelLeonGrabHoldHigh = 848,
kModelLeonGrabLetsGo = 849,
kModelLeonCalmTalk = 850,
kModelLeonComplainTalk = 851,
kModelLeonAwkwardTalk = 852,
kModelLeonDenyTalk = 853,
kModelLeonGrabTalk = 854,
kModelLeonGrabAndGutPunchTalk = 855,
kModelLeonPunchAttack = 856,
// 857 - 862: Rat (Free Slot A/B) animations
kModelAnimationRatJumpAttack = 857,
kModelAnimationRatRunning = 858,
@ -2270,7 +2517,7 @@ enum GameModelAnimations {
// 920 - 930: Hasan animations
kModelAnimationHasanTalkWipeFaceLeftHand01 = 920, // UNUSED
kModelAnimationHasanIdleSlightMovement = 921,
kModelAnimationHasanTalkSuggest = 922,
kModelAnimationHasanGestureSuggest = 922,
kModelAnimationHasanTakingABiteSnakeMove = 923,
kModelAnimationHasanTalkPointingRightHand = 924, // UNUSED
kModelAnimationHasanTalkMovingBothHands = 925,

View File

@ -25,8 +25,9 @@
namespace BladeRunner {
AIScriptClovis::AIScriptClovis(BladeRunnerEngine *vm) : AIScriptBase(vm) {
_var1 = 0;
_var2 = 0;
// _varChooseIdleAnimation can have valid values: 0, 1
_varChooseIdleAnimation = 0;
_varNumOfTimesToHoldCurrentFrame = 0;
_var3 = 1;
_var4 = 0;
_var5 = 0;
@ -39,8 +40,8 @@ void AIScriptClovis::Initialize() {
_animationStateNext = 0;
_animationNext = 0;
_var1 = 0;
_var2 = 0;
_varChooseIdleAnimation = 0;
_varNumOfTimesToHoldCurrentFrame = 0;
_var3 = 1;
_var4 = 0;
_var5 = 0;
@ -587,21 +588,21 @@ bool AIScriptClovis::UpdateAnimation(int *animation, int *frame) {
switch (_animationState) {
case 0:
if (_var1 == 1) {
if (_varChooseIdleAnimation == 1) {
*animation = kModelAnimationClovisIdle;
if (_var2) {
--_var2;
if (_varNumOfTimesToHoldCurrentFrame > 0) {
--_varNumOfTimesToHoldCurrentFrame;
} else if (++_animationFrame == 7) {
_var2 = Random_Query(5, 15);
_varNumOfTimesToHoldCurrentFrame = Random_Query(5, 15);
} else {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationClovisIdle)) {
_animationFrame = 0;
_var1 = 0;
_varChooseIdleAnimation = 0;
}
}
} else if (_var1 == 0) {
} else if (_varChooseIdleAnimation == 0) {
*animation = kModelAnimationClovisLookingUpAndAbout;
if (_var2) {
if (_varNumOfTimesToHoldCurrentFrame > 0) {
_animationFrame += _var3;
if (_animationFrame > _var5) {
_animationFrame = _var5;
@ -612,21 +613,21 @@ bool AIScriptClovis::UpdateAnimation(int *animation, int *frame) {
_var3 = 1;
}
}
--_var2;
--_varNumOfTimesToHoldCurrentFrame;
} else {
_animationFrame += _var3;
if (_animationFrame == 13 && Random_Query(0, 1)) {
_var3 = -1;
_var4 = 9;
_var5 = 13;
_var2 = Random_Query(4, 15);
_varNumOfTimesToHoldCurrentFrame = Random_Query(4, 15);
} else {
if (_animationFrame == 6) {
if (Random_Query(0, 1)) {
_var3 = -1;
_var4 = 3;
_var5 = 6;
_var2 = Random_Query(4, 15);
_varNumOfTimesToHoldCurrentFrame = Random_Query(4, 15);
}
}
}
@ -639,13 +640,13 @@ bool AIScriptClovis::UpdateAnimation(int *animation, int *frame) {
}
if (_animationFrame == 0) {
if (Random_Query(0, 1) > 0) {
_var1 = 1;
_varChooseIdleAnimation = 1;
} else {
if (Random_Query(0, 2) > 0) {
_var3 = 1;
_var4 = 0;
_var5 = 0;
_var2 = Random_Query(5, 15);
_varNumOfTimesToHoldCurrentFrame = Random_Query(5, 15);
}
}
}
@ -654,10 +655,10 @@ bool AIScriptClovis::UpdateAnimation(int *animation, int *frame) {
break;
case 1:
if (_var1 == 0) {
if (_varChooseIdleAnimation == 0) {
*animation = kModelAnimationClovisLookingUpAndAbout;
}
if (_var1 == 1) {
if (_varChooseIdleAnimation == 1) {
*animation = kModelAnimationClovisIdle;
}
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
@ -1315,7 +1316,7 @@ bool AIScriptClovis::ChangeAnimationMode(int mode) {
default:
_animationState = 0;
_animationFrame = 0;
_var1 = 0;
_varChooseIdleAnimation = 0;
break;
}
break;
@ -1637,7 +1638,7 @@ void AIScriptClovis::someAnim() {
default:
_animationState = 0;
_animationFrame = 0;
_var1 = 0;
_varChooseIdleAnimation = 0;
break;
}
}

View File

@ -25,9 +25,10 @@
namespace BladeRunner {
AIScriptDeskClerk::AIScriptDeskClerk(BladeRunnerEngine *vm) : AIScriptBase(vm) {
_flag1 = false;
// _varChooseIdleAnimation can have valid values: 0, 1
_varChooseIdleAnimation = 0;
_resumeIdleAfterFramesetCompletesFlag = false;
_var3 = 75;
_varNumOfTimesToHoldCurrentFrame = 75;
}
void AIScriptDeskClerk::Initialize() {
@ -36,9 +37,9 @@ void AIScriptDeskClerk::Initialize() {
_animationStateNext = 0;
_animationNext = 0;
_flag1 = false;
_varChooseIdleAnimation = 0;
_resumeIdleAfterFramesetCompletesFlag = false;
_var3 = 75;
_varNumOfTimesToHoldCurrentFrame = 75;
Actor_Set_Goal_Number(kActorDeskClerk, kGoalDeskClerkDefault);
}
@ -144,9 +145,10 @@ bool AIScriptDeskClerk::UpdateAnimation(int *animation, int *frame) {
#if BLADERUNNER_ORIGINAL_BUGS
#else
// Fixing a bug for when the Clerk gets stuck in animation id 668, after Act 3:
// Fixing a bug for when the Clerk gets stuck in animation id kModelAnimationDeskClerkIsHeldUpByLeonIdle (668), after Act 3:
// - when using HDFRAMES, the clerk will briefly be in the choking animation when McCoy re-enters
// - when using CDFRAMES, the game would crash with a message "Unable to locate page 2214 for animation 668 frame 4!"
// - when using CDFRAMES, the game would crash with a message:
// "Unable to locate page 2214 for animation 668 frame 4!"
// This occurs when:
// The player walks out too fast from the scene where Leon is choking the clerk in Act 3.
// Hence, Leon's AI script's OtherAgentExitedThisSet() is triggered, Leon is gone,
@ -162,7 +164,7 @@ bool AIScriptDeskClerk::UpdateAnimation(int *animation, int *frame) {
&& _animationState >= 6
) {
Actor_Change_Animation_Mode(kActorDeskClerk, kAnimationModeIdle);
*animation = 661;
*animation = kModelAnimationDeskClerkReadPaperIdle;
_animationFrame = 0;
_animationState = 0;
}
@ -170,40 +172,40 @@ bool AIScriptDeskClerk::UpdateAnimation(int *animation, int *frame) {
switch (_animationState) {
case 0:
if (_flag1) {
*animation = 662;
if (_varChooseIdleAnimation > 0) {
*animation = kModelAnimationDeskClerkReadPaperChangePageIdle;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(662)) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationDeskClerkReadPaperChangePageIdle)) {
_animationFrame = 0;
_flag1 = false;
*animation = 661;
_var3 = Random_Query(50, 100);
_varChooseIdleAnimation = 0;
*animation = kModelAnimationDeskClerkReadPaperIdle;
_varNumOfTimesToHoldCurrentFrame = Random_Query(50, 100);
}
} else {
if (_var3 != 0) {
--_var3;
if (_varNumOfTimesToHoldCurrentFrame != 0) {
--_varNumOfTimesToHoldCurrentFrame;
}
*animation = 661;
*animation = kModelAnimationDeskClerkReadPaperIdle;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(661)) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationDeskClerkReadPaperIdle)) {
_animationFrame = 0;
if (_var3 == 0) {
*animation = 662;
_flag1 = true;
if (_varNumOfTimesToHoldCurrentFrame == 0) {
*animation = kModelAnimationDeskClerkReadPaperChangePageIdle;
_varChooseIdleAnimation = 1;
}
}
}
break;
case 1:
*animation = 663;
*animation = kModelAnimationDeskClerkReadPaperCalmTalk;
if (_animationFrame == 0 && _resumeIdleAfterFramesetCompletesFlag) {
*animation = 661;
*animation = kModelAnimationDeskClerkReadPaperIdle;
_animationState = 0;
_flag1 = false;
_varChooseIdleAnimation = 0;
} else {
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
@ -213,59 +215,59 @@ bool AIScriptDeskClerk::UpdateAnimation(int *animation, int *frame) {
break;
case 2:
*animation = 664;
*animation = kModelAnimationDeskClerkReadPaperMoreCalmTalk;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(664)) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationDeskClerkReadPaperMoreCalmTalk)) {
_animationFrame = 0;
_animationState = 1;
*animation = 663;
*animation = kModelAnimationDeskClerkReadPaperCalmTalk;
}
break;
case 3:
*animation = 665;
*animation = kModelAnimationDeskClerkReadPaperMoveLeftTalk;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(665)) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationDeskClerkReadPaperMoveLeftTalk)) {
_animationFrame = 0;
_animationState = 1;
*animation = 663;
*animation = kModelAnimationDeskClerkReadPaperCalmTalk;
}
break;
case 4:
*animation = 666;
*animation = kModelAnimationDeskClerkReadPaperSlightClosePaperTalk;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(666)) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationDeskClerkReadPaperSlightClosePaperTalk)) {
_animationFrame = 0;
_animationState = 1;
*animation = 663;
*animation = kModelAnimationDeskClerkReadPaperCalmTalk;
}
break;
case 5:
*animation = 667;
*animation = kModelAnimationDeskClerkReadPaperMoreClosePaperTalk;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(667)) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationDeskClerkReadPaperMoreClosePaperTalk)) {
_animationFrame = 0;
_animationState = 1;
*animation = 663;
*animation = kModelAnimationDeskClerkReadPaperCalmTalk;
}
break;
case 6:
*animation = 668;
*animation = kModelAnimationDeskClerkIsHeldUpByLeonIdle;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(668)) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationDeskClerkIsHeldUpByLeonIdle)) {
_animationFrame = 0;
}
break;
case 7:
*animation = 669;
*animation = kModelAnimationDeskClerkFallingAfterLeonLetsGo;
if (_animationFrame == 0 && _resumeIdleAfterFramesetCompletesFlag) {
Actor_Change_Animation_Mode(kActorDeskClerk, 72);
*animation = 668;
*animation = kModelAnimationDeskClerkIsHeldUpByLeonIdle;
_animationState = 6;
} else {
++_animationFrame;
@ -276,13 +278,13 @@ bool AIScriptDeskClerk::UpdateAnimation(int *animation, int *frame) {
break;
case 8:
*animation = 670;
*animation = kModelAnimationDeskClerkHeadSmashedOnCounter;
++_animationFrame;
if (_animationFrame > Slice_Animation_Query_Number_Of_Frames(670) - 2) {
if (_animationFrame > Slice_Animation_Query_Number_Of_Frames(kModelAnimationDeskClerkHeadSmashedOnCounter) - 2) {
Ambient_Sounds_Play_Sound(kSfxZUBLAND1, 40, 30, 30, 99);
Actor_Set_Goal_Number(kActorDeskClerk, kGoalDeskClerkKnockedOut);
Actor_Change_Animation_Mode(kActorDeskClerk, kAnimationModeIdle);
*animation = 661;
*animation = kModelAnimationDeskClerkReadPaperIdle;
_animationFrame = 0;
_animationState = 0;
}
@ -321,8 +323,8 @@ bool AIScriptDeskClerk::ChangeAnimationMode(int mode) {
default:
_animationState = 0;
_animationFrame = 0;
_flag1 = false;
_var3 = Random_Query(70, 140);
_varChooseIdleAnimation = 0;
_varNumOfTimesToHoldCurrentFrame = Random_Query(70, 140);
break;
}
break;

View File

@ -25,8 +25,9 @@
namespace BladeRunner {
AIScriptEarlyQ::AIScriptEarlyQ(BladeRunnerEngine *vm) : AIScriptBase(vm) {
_var1 = 0;
_var2 = 0;
_varNumOfTimesToHoldCurrentFrame = 0;
// _varChooseIdleAnimation can have valid values: 0, 1
_varChooseIdleAnimation = 0;
_var3 = 1;
_resumeIdleAfterFramesetCompletesFlag = false;
}
@ -37,8 +38,8 @@ void AIScriptEarlyQ::Initialize() {
_animationStateNext = 0;
_animationNext = 0;
_var1 = 0;
_var2 = 0;
_varNumOfTimesToHoldCurrentFrame = 0;
_varChooseIdleAnimation = 0;
_var3 = 1;
_resumeIdleAfterFramesetCompletesFlag = false;
}
@ -490,46 +491,46 @@ bool AIScriptEarlyQ::GoalChanged(int currentGoalNumber, int newGoalNumber) {
bool AIScriptEarlyQ::UpdateAnimation(int *animation, int *frame) {
switch (_animationState) {
case 0:
if (_var2 == 1) {
*animation = 370;
if (_var1) {
--_var1;
if (_varChooseIdleAnimation == 1) {
*animation = kModelAnimationEarlyQHandOnFace;
if (_varNumOfTimesToHoldCurrentFrame > 0) {
--_varNumOfTimesToHoldCurrentFrame;
} else {
if (++_animationFrame == 6) {
_var1 = Random_Query(8, 15);
_varNumOfTimesToHoldCurrentFrame = Random_Query(8, 15);
}
if (_animationFrame < 6) {
_var1 = 1;
_varNumOfTimesToHoldCurrentFrame = 1;
}
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(370)) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationEarlyQHandOnFace)) {
_animationFrame = 0;
_var2 = 0;
_varChooseIdleAnimation = 0;
}
}
} else if (_var2 == 0) {
*animation = 369;
if (_var1) {
--_var1;
} else if (_varChooseIdleAnimation == 0) {
*animation = kModelAnimationEarlyQIdle;
if (_varNumOfTimesToHoldCurrentFrame > 0) {
--_varNumOfTimesToHoldCurrentFrame;
if (!Random_Query(0, 6)) {
_var3 = -_var3;
}
} else {
_animationFrame += _var3;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(369)) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationEarlyQIdle)) {
_animationFrame = 0;
}
if (_animationFrame < 0) {
_animationFrame = Slice_Animation_Query_Number_Of_Frames(369) - 1;
_animationFrame = Slice_Animation_Query_Number_Of_Frames(kModelAnimationEarlyQIdle) - 1;
}
_var1 = Random_Query(0, 1);
_varNumOfTimesToHoldCurrentFrame = Random_Query(0, 1);
if (_animationFrame == 0) {
if (!Random_Query(0, 3)) {
_var2 = 1;
_varChooseIdleAnimation = 1;
}
}
if (_animationFrame == 0 || _animationFrame == 5) {
if (Random_Query(0, 1)) {
_var1 = Random_Query(2, 8);
_varNumOfTimesToHoldCurrentFrame = Random_Query(2, 8);
}
}
}
@ -537,7 +538,7 @@ bool AIScriptEarlyQ::UpdateAnimation(int *animation, int *frame) {
break;
case 1:
*animation = 381;
*animation = kModelAnimationEarlyQSPicksUpBottleAndPoursDrink;
++_animationFrame;
if (_animationFrame == 18) {
Ambient_Sounds_Play_Sound(kSfxBARSFX4, 99, 0, 0, 20);
@ -546,23 +547,23 @@ bool AIScriptEarlyQ::UpdateAnimation(int *animation, int *frame) {
Actor_Change_Animation_Mode(kActorEarlyQ, 74);
_animationFrame = 0;
_animationState = 2;
*animation = 382;
*animation = kModelAnimationEarlyQSHoldsDrinkIdle;
}
break;
case 2:
*animation = 382;
*animation = kModelAnimationEarlyQSHoldsDrinkIdle;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(382)) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationEarlyQSHoldsDrinkIdle)) {
_animationFrame = 0;
}
break;
case 3:
*animation = 371;
*animation = kModelAnimationEarlyQGivesSomething;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(371)) {
*animation = 369;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationEarlyQGivesSomething)) {
*animation = kModelAnimationEarlyQIdle;
_animationFrame = 0;
_animationState = 0;
Actor_Change_Animation_Mode(kActorEarlyQ, kAnimationModeIdle);
@ -570,75 +571,75 @@ bool AIScriptEarlyQ::UpdateAnimation(int *animation, int *frame) {
break;
case 4:
*animation = 368;
if (_animationFrame < Slice_Animation_Query_Number_Of_Frames(368) - 1) {
*animation = kModelAnimationEarlyQDropsDead;
if (_animationFrame < Slice_Animation_Query_Number_Of_Frames(kModelAnimationEarlyQDropsDead) - 1) {
++_animationFrame;
}
break;
case 5:
*animation = 365;
*animation = kModelAnimationEarlyQWalking;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(365)) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationEarlyQWalking)) {
_animationFrame = 0;
}
break;
case 6:
*animation = 361;
*animation = kModelAnimationEarlyQCombatWalking;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(361)) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationEarlyQCombatWalking)) {
_animationFrame = 0;
}
break;
case 7:
*animation = 383;
*animation = kModelAnimationEarlyQSitsAndCrossesLegs;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(383)) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationEarlyQSitsAndCrossesLegs)) {
_animationFrame = 0;
_animationState = 9;
*animation = 384;
*animation = kModelAnimationEarlyQSitIdle;
}
break;
case 8:
*animation = 387;
*animation = kModelAnimationEarlyQSitToStandingUp;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(387)) {
*animation = 369;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationEarlyQSitToStandingUp)) {
*animation = kModelAnimationEarlyQIdle;
_animationFrame = 0;
_animationState = 0;
}
break;
case 9:
*animation = 384;
*animation = kModelAnimationEarlyQSitIdle;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(384)) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationEarlyQSitIdle)) {
_animationFrame = 0;
}
break;
case 10:
*animation = 385;
*animation = kModelAnimationEarlyQSitTalk;
if (_animationFrame == 0 && _resumeIdleAfterFramesetCompletesFlag) {
_resumeIdleAfterFramesetCompletesFlag = false;
_animationState = 9;
_var2 = 0;
*animation = 384;
_varChooseIdleAnimation = 0;
*animation = kModelAnimationEarlyQSitIdle;
Actor_Change_Animation_Mode(kActorEarlyQ, 53);
} else {
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(385)) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationEarlyQSitTalk)) {
_animationFrame = 0;
}
}
break;
case 11:
*animation = 386;
if (_animationFrame < Slice_Animation_Query_Number_Of_Frames(386) - 1) {
*animation = kModelAnimationEarlyQSitScorpionAgonyDeath;
if (_animationFrame < Slice_Animation_Query_Number_Of_Frames(kModelAnimationEarlyQSitScorpionAgonyDeath) - 1) {
++_animationFrame;
}
if (_animationFrame == 1) {
@ -656,52 +657,52 @@ bool AIScriptEarlyQ::UpdateAnimation(int *animation, int *frame) {
break;
case 12:
*animation = 360;
*animation = kModelAnimationEarlyQCombatIdle;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(360)) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationEarlyQCombatIdle)) {
_animationFrame = 0;
}
break;
case 13:
*animation = 362;
*animation = kModelAnimationEarlyQCombatUnholsterGun;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(362)) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationEarlyQCombatUnholsterGun)) {
_animationFrame = 0;
_animationState = 12;
*animation = 360;
*animation = kModelAnimationEarlyQCombatIdle;
}
break;
case 14:
*animation = 363;
*animation = kModelAnimationEarlyQCombatHolsterGun;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(363)) {
*animation = 369;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationEarlyQCombatHolsterGun)) {
*animation = kModelAnimationEarlyQIdle;
_animationFrame = 0;
_animationState = 0;
}
break;
case 15:
*animation = 364;
*animation = kModelAnimationEarlyQCombatFiresGun;
++_animationFrame;
if (_animationFrame == 2) {
Ambient_Sounds_Play_Sound(kSfxLGCAL1, 60, 0, 0, 20);
}
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(364)) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationEarlyQCombatFiresGun)) {
_animationFrame = 0;
_animationState = 12;
*animation = 360;
*animation = kModelAnimationEarlyQCombatIdle;
Actor_Change_Animation_Mode(kActorEarlyQ, kAnimationModeCombatIdle); // TODO: kAnimationModeCombatIdle?
}
break;
case 16:
*animation = 366;
*animation = kModelAnimationEarlyQGotHitRight;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(366)) {
*animation = 369;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationEarlyQGotHitRight)) {
*animation = kModelAnimationEarlyQIdle;
_animationFrame = 0;
_animationState = 0;
Actor_Change_Animation_Mode(kActorEarlyQ, kAnimationModeIdle);
@ -709,10 +710,10 @@ bool AIScriptEarlyQ::UpdateAnimation(int *animation, int *frame) {
break;
case 17:
*animation = 367;
*animation = kModelAnimationEarlyQGotHitLeft;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(367)) {
*animation = 369;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationEarlyQGotHitLeft)) {
*animation = kModelAnimationEarlyQIdle;
_animationFrame = 0;
_animationState = 0;
Actor_Change_Animation_Mode(kActorEarlyQ, kAnimationModeIdle);
@ -720,10 +721,10 @@ bool AIScriptEarlyQ::UpdateAnimation(int *animation, int *frame) {
break;
case 18:
*animation = 366;
*animation = kModelAnimationEarlyQGotHitRight;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(366)) {
*animation = 369;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationEarlyQGotHitRight)) {
*animation = kModelAnimationEarlyQIdle;
_animationFrame = 0;
_animationState = 0;
Actor_Change_Animation_Mode(kActorEarlyQ, kAnimationModeIdle);
@ -731,10 +732,10 @@ bool AIScriptEarlyQ::UpdateAnimation(int *animation, int *frame) {
break;
case 19:
*animation = 367;
*animation = kModelAnimationEarlyQGotHitLeft;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(367)) {
*animation = 369;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationEarlyQGotHitLeft)) {
*animation = kModelAnimationEarlyQIdle;
_animationFrame = 0;
_animationState = 0;
Actor_Change_Animation_Mode(kActorEarlyQ, kAnimationModeIdle);
@ -742,97 +743,97 @@ bool AIScriptEarlyQ::UpdateAnimation(int *animation, int *frame) {
break;
case 20:
*animation = 372;
*animation = kModelAnimationEarlyQCalmTalk;
if (_animationFrame == 0 && _resumeIdleAfterFramesetCompletesFlag) {
*animation = 369;
*animation = kModelAnimationEarlyQIdle;
_animationFrame = 0;
_resumeIdleAfterFramesetCompletesFlag = false;
_animationState = 0;
} else {
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(372)) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationEarlyQCalmTalk)) {
_animationFrame = 0;
}
}
break;
case 21:
*animation = 373;
*animation = kModelAnimationEarlyQCalmExplainTalk;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(373)) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationEarlyQCalmExplainTalk)) {
_animationFrame = 0;
_animationState = 20;
*animation = 372;
*animation = kModelAnimationEarlyQCalmTalk;
}
break;
case 22:
*animation = 374;
*animation = kModelAnimationEarlyQVulgarTalk;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(374)) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationEarlyQVulgarTalk)) {
_animationFrame = 0;
_animationState = 20;
*animation = 372;
*animation = kModelAnimationEarlyQCalmTalk;
}
break;
case 23:
*animation = 375;
*animation = kModelAnimationEarlyQDismissTalk;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(375)) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationEarlyQDismissTalk)) {
_animationFrame = 0;
_animationState = 20;
*animation = 372;
*animation = kModelAnimationEarlyQCalmTalk;
}
break;
case 24:
*animation = 376;
*animation = kModelAnimationEarlyQMoreDismissTalk;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(376)) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationEarlyQMoreDismissTalk)) {
_animationFrame = 0;
_animationState = 20;
*animation = 372;
*animation = kModelAnimationEarlyQCalmTalk;
}
break;
case 25:
*animation = 377;
*animation = kModelAnimationEarlyQIntenseExplainTalk;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(377)) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationEarlyQIntenseExplainTalk)) {
_animationFrame = 0;
_animationState = 20;
*animation = 372;
*animation = kModelAnimationEarlyQCalmTalk;
}
break;
case 26:
*animation = 378;
*animation = kModelAnimationEarlyQSubtleExplainTalk;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(378)) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationEarlyQSubtleExplainTalk)) {
_animationFrame = 0;
_animationState = 20;
*animation = 372;
*animation = kModelAnimationEarlyQCalmTalk;
}
break;
case 27:
*animation = 379;
*animation = kModelAnimationEarlyQExcitedTalk;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(379)) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationEarlyQExcitedTalk)) {
_animationFrame = 0;
_animationState = 20;
*animation = 372;
*animation = kModelAnimationEarlyQCalmTalk;
}
break;
case 28:
*animation = 380;
*animation = kModelAnimationEarlyQAnnounceTalk;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(380)) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationEarlyQAnnounceTalk)) {
_animationFrame = 0;
_animationState = 20;
*animation = 372;
*animation = kModelAnimationEarlyQCalmTalk;
}
break;

View File

@ -193,64 +193,64 @@ bool AIScriptFishDealer::GoalChanged(int currentGoalNumber, int newGoalNumber) {
bool AIScriptFishDealer::UpdateAnimation(int *animation, int *frame) {
switch (_animationState) {
case 0:
*animation = 683;
*animation = kModelAnimationFishDealerIdle;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(683))
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationFishDealerIdle))
_animationFrame = 0;
break;
case 1:
if (_animationFrame == 0 && _resumeIdleAfterFramesetCompletesFlag) {
*animation = 683;
*animation = kModelAnimationFishDealerIdle;
_animationState = 0;
_resumeIdleAfterFramesetCompletesFlag = false;
} else {
*animation = 685;
*animation = kModelAnimationFishDealerCalmTalk;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(685))
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationFishDealerCalmTalk))
_animationFrame = 0;
}
break;
case 2:
*animation = 686;
*animation = kModelAnimationFishDealerExplainTalk;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(686)) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationFishDealerExplainTalk)) {
_animationFrame = 0;
_animationState = 2;
}
break;
case 3:
*animation = 687;
*animation = kModelAnimationFishDealerNoTroubleTalk;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(687)) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationFishDealerNoTroubleTalk)) {
_animationFrame = 0;
_animationState = 3;
}
break;
case 4:
*animation = 684;
*animation = kModelAnimationFishDealerGestureGive;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(684)) {
*animation = 683;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationFishDealerGestureGive)) {
*animation = kModelAnimationFishDealerIdle;
_animationFrame = 0;
_animationState = 0;
}
break;
case 5:
*animation = 682;
*animation = kModelAnimationFishDealerWalking;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(682))
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationFishDealerWalking))
_animationFrame = 0;
break;

View File

@ -419,7 +419,8 @@ bool AIScriptGaff::UpdateAnimation(int *animation, int *frame) {
break;
default:
*animation = 399;
// Dummy placeholder, kModelAnimationZubenWalking (399) is a Zuben animation
*animation = kModelAnimationZubenWalking;
break;
}
*frame = _animationFrame;

View File

@ -25,13 +25,14 @@
namespace BladeRunner {
AIScriptGrigorian::AIScriptGrigorian(BladeRunnerEngine *vm) : AIScriptBase(vm) {
var_45CA10 = 0;
var_45CA14 = 0;
// _varChooseIdleAnimation can have valid values: 0, 1, 2
_varChooseIdleAnimation = 0;
_varNumOfTimesToHoldCurrentFrame = 0;
}
void AIScriptGrigorian::Initialize() {
var_45CA10 = 0;
var_45CA14 = 0;
_varChooseIdleAnimation = 0;
_varNumOfTimesToHoldCurrentFrame = 0;
_animationStateNext = 0;
_animationFrame = 0;
_animationState = 0;
@ -102,42 +103,42 @@ bool AIScriptGrigorian::GoalChanged(int currentGoalNumber, int newGoalNumber) {
bool AIScriptGrigorian::UpdateAnimation(int *animation, int *frame) {
switch (_animationState) {
case 0:
if (var_45CA10 == 0) {
if (_varChooseIdleAnimation == 0) {
*animation = kModelAnimationGrigorianStandIdle;
if (var_45CA14 > 0) {
--var_45CA14;
if (_varNumOfTimesToHoldCurrentFrame > 0) {
--_varNumOfTimesToHoldCurrentFrame;
} else {
++_animationFrame;
if (_animationFrame == 5 || _animationFrame == 13) {
var_45CA14 = Random_Query(2, 4);
_varNumOfTimesToHoldCurrentFrame = Random_Query(2, 4);
}
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationGrigorianStandIdle)) {
_animationFrame = 0;
var_45CA10 = Random_Query(0, 2);
_varChooseIdleAnimation = Random_Query(0, 2);
}
}
} else if (var_45CA10 == 1) {
} else if (_varChooseIdleAnimation == 1) {
*animation = kModelAnimationGrigorianStandAnnoyedTalk;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationGrigorianStandAnnoyedTalk)) {
*animation = kModelAnimationGrigorianStandIdle;
_animationFrame = 0;
var_45CA10 = 0;
_varChooseIdleAnimation = 0;
}
} else if (var_45CA10 == 2) {
} else if (_varChooseIdleAnimation == 2) {
*animation = kModelAnimationGrigorianStandArmsCrossedTalk;
if (var_45CA14 > 0) {
--var_45CA14;
if (_varNumOfTimesToHoldCurrentFrame > 0) {
--_varNumOfTimesToHoldCurrentFrame;
} else {
++_animationFrame;
if (_animationFrame >= 8 && _animationFrame <= 10) {
var_45CA14 = Random_Query(2, 4);
_varNumOfTimesToHoldCurrentFrame = Random_Query(2, 4);
}
#if BLADERUNNER_ORIGINAL_BUGS
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationGrigorianStandIdle)) {
*animation = kModelAnimationGrigorianStandIdle;
_animationFrame = 0;
var_45CA10 = 0;
_varChooseIdleAnimation = 0;
}
#else
// bugfix set proper current animation here to get frameset number of frames
@ -145,7 +146,7 @@ bool AIScriptGrigorian::UpdateAnimation(int *animation, int *frame) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationGrigorianStandArmsCrossedTalk)) {
*animation = kModelAnimationGrigorianStandIdle;
_animationFrame = 0;
var_45CA10 = 0;
_varChooseIdleAnimation = 0;
}
#endif // BLADERUNNER_ORIGINAL_BUGS
}
@ -219,7 +220,8 @@ bool AIScriptGrigorian::UpdateAnimation(int *animation, int *frame) {
break;
default:
*animation = 399;
// Dummy placeholder, kModelAnimationZubenWalking (399) is a Zuben animation
*animation = kModelAnimationZubenWalking;
break;
}
*frame = _animationFrame;

View File

@ -26,8 +26,9 @@ namespace BladeRunner {
AIScriptHanoi::AIScriptHanoi(BladeRunnerEngine *vm) : AIScriptBase(vm) {
_resumeIdleAfterFramesetCompletesFlag = false;
_flag1 = 0;
_var3 = 0;
// _varChooseIdleAnimation can have valid values: 0, 1
_varChooseIdleAnimation = 0;
_varNumOfTimesToHoldCurrentFrame = 0;
_var4 = 1;
}
@ -38,8 +39,8 @@ void AIScriptHanoi::Initialize() {
_animationNext = 0;
_resumeIdleAfterFramesetCompletesFlag = false;
_flag1 = 0;
_var3 = 0;
_varChooseIdleAnimation = 0;
_varNumOfTimesToHoldCurrentFrame = 0;
_var4 = 1;
Actor_Set_Goal_Number(kActorHanoi, 0);
@ -356,20 +357,20 @@ bool AIScriptHanoi::GoalChanged(int currentGoalNumber, int newGoalNumber) {
bool AIScriptHanoi::UpdateAnimation(int *animation, int *frame) {
switch (_animationState) {
case 0:
if (_flag1) {
*animation = 649;
if (_varChooseIdleAnimation > 0) {
*animation = kModelAnimationHanoiScratchesBackIdle;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
*animation = 648;
*animation = kModelAnimationHanoiLooksAroundIdle;
_animationFrame = 0;
_flag1 = false;
_varChooseIdleAnimation = 0;
}
break;
}
*animation = 648;
if (_var3 != 0) {
--_var3;
*animation = kModelAnimationHanoiLooksAroundIdle;
if (_varNumOfTimesToHoldCurrentFrame != 0) {
--_varNumOfTimesToHoldCurrentFrame;
if (!Random_Query(0, 6)) {
_var4 = -_var4;
}
@ -388,26 +389,26 @@ bool AIScriptHanoi::UpdateAnimation(int *animation, int *frame) {
|| _animationFrame == 11
|| _animationFrame == 0
) {
_var3 = Random_Query(5, 12);
_varNumOfTimesToHoldCurrentFrame = Random_Query(5, 12);
}
if (_animationFrame >= 10
&& _animationFrame <= 13
) {
_var3 = Random_Query(0, 1);
_varNumOfTimesToHoldCurrentFrame = Random_Query(0, 1);
}
if (_animationFrame == 0) {
if (!Random_Query(0, 4)) {
_flag1 = true;
_varChooseIdleAnimation = 1;
}
}
}
break;
case 1:
if (_flag1) {
*animation = 649;
if (_varChooseIdleAnimation > 0) {
*animation = kModelAnimationHanoiScratchesBackIdle;
if (_animationFrame > Slice_Animation_Query_Number_Of_Frames(*animation) / 2) {
_animationFrame += 2;
} else {
@ -429,17 +430,17 @@ bool AIScriptHanoi::UpdateAnimation(int *animation, int *frame) {
break;
case 2:
*animation = 657;
*animation = kModelAnimationHanoiGrabsMcCoy;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
_animationFrame = 0;
_animationState = 3;
*animation = 658;
*animation = kModelAnimationHanoiHoldsMcCoyUp;
}
break;
case 3:
*animation = 658;
*animation = kModelAnimationHanoiHoldsMcCoyUp;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
_animationFrame = 0;
@ -447,22 +448,22 @@ bool AIScriptHanoi::UpdateAnimation(int *animation, int *frame) {
break;
case 4:
*animation = 659;
*animation = kModelAnimationHanoiHoldsMcCoyUpAndTalks;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
_animationFrame = 0;
_animationState = 3;
*animation = 658;
*animation = kModelAnimationHanoiHoldsMcCoyUp;
}
break;
case 5:
*animation = 657;
*animation = kModelAnimationHanoiGrabsMcCoy;
--_animationFrame;
if (_animationFrame == 0) {
_animationState = 0;
_animationFrame = 0;
*animation = 648;
*animation = kModelAnimationHanoiLooksAroundIdle;
Actor_Face_Actor(kActorMcCoy, kActorHanoi, true);
Actor_Set_Invisible(kActorMcCoy, false);
@ -477,20 +478,20 @@ bool AIScriptHanoi::UpdateAnimation(int *animation, int *frame) {
break;
case 6:
*animation = 345; // Sadik is used in this animation, but he is well hidden
*animation = kModelAnimationSadikPicksUpAndThrowsMcCoy; // Sadik is used in this animation, but he is well hidden
++_animationFrame;
if (_animationFrame > 26) {
Actor_Change_Animation_Mode(kActorHanoi, kAnimationModeIdle);
_animationState = 0;
_animationFrame = 0;
*animation = 648;
*animation = kModelAnimationHanoiLooksAroundIdle;
Actor_Set_Goal_Number(kActorMcCoy, kGoalMcCoyNR01ThrownOut);
Actor_Set_Goal_Number(kActorHanoi, kGoalHanoiNR03GoToDefaultPosition);
}
break;
case 7:
*animation = 645;
*animation = kModelAnimationHanoiWalking;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
_animationFrame = 0;
@ -498,7 +499,7 @@ bool AIScriptHanoi::UpdateAnimation(int *animation, int *frame) {
break;
case 8:
*animation = 642;
*animation = kModelAnimationHanoiCombatIdle;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
_animationFrame = 0;
@ -506,19 +507,19 @@ bool AIScriptHanoi::UpdateAnimation(int *animation, int *frame) {
break;
case 9:
*animation = 643;
*animation = kModelAnimationHanoiCombatKicksDoorIn;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
Actor_Change_Animation_Mode(kActorHanoi, kAnimationModeCombatIdle);
_animationState = 8;
_animationFrame = 0;
*animation = 642;
*animation = kModelAnimationHanoiCombatIdle;
Actor_Set_Goal_Number(kActorHanoi, kGoalHanoiNR04ShootMcCoy);
}
break;
case 10:
*animation = 644;
*animation = kModelAnimationHanoiCombatFiresGun;
++_animationFrame;
if (_animationFrame == 4) {
@ -538,39 +539,39 @@ bool AIScriptHanoi::UpdateAnimation(int *animation, int *frame) {
Actor_Change_Animation_Mode(kActorHanoi, kAnimationModeCombatIdle);
_animationFrame = 0;
_animationState = 8;
*animation = 642;
*animation = kModelAnimationHanoiCombatIdle;
}
break;
case 11:
*animation = 660;
*animation = kModelAnimationHanoiPunchUpAttack;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
*animation = 648;
*animation = kModelAnimationHanoiLooksAroundIdle;
_animationFrame = 0;
_animationState = 0;
}
break;
case 12:
*animation = 646;
*animation = kModelAnimationHanoiGotHitOrViolentHeadNod;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
*animation = 642;
*animation = kModelAnimationHanoiCombatIdle;
_animationFrame = 0;
_animationState = 0;
}
break;
case 13:
*animation = 647;
*animation = kModelAnimationHanoiShotDead;
if (_animationFrame < Slice_Animation_Query_Number_Of_Frames(*animation) - 1) {
++_animationFrame;
}
break;
case 14:
*animation = 650;
*animation = kModelAnimationHanoiCalmTalk;
if (_animationFrame == 0 && _resumeIdleAfterFramesetCompletesFlag) {
// _resumeIdleAfterFramesetCompletesFlag is never set so it's always false, thus this does not evaluate true
_animationState = 0;
@ -583,62 +584,62 @@ bool AIScriptHanoi::UpdateAnimation(int *animation, int *frame) {
break;
case 15:
*animation = 651;
*animation = kModelAnimationHanoiExplainTalk;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
_animationFrame = 0;
_animationState = 14;
*animation = 650;
*animation = kModelAnimationHanoiCalmTalk;
}
break;
case 16:
*animation = 652;
*animation = kModelAnimationHanoiDownwardsNodTalk;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
_animationFrame = 0;
_animationState = 14;
*animation = 650;
*animation = kModelAnimationHanoiCalmTalk;
}
break;
case 17:
*animation = 653;
*animation = kModelAnimationHanoiDenyTalk;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
_animationFrame = 0;
_animationState = 14;
*animation = 650;
*animation = kModelAnimationHanoiCalmTalk;
}
break;
case 18:
*animation = 654;
*animation = kModelAnimationHanoiSlightBowingTalk;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
_animationFrame = 0;
_animationState = 14;
*animation = 650;
*animation = kModelAnimationHanoiCalmTalk;
}
break;
case 19:
*animation = 655;
*animation = kModelAnimationHanoiLaughTalk;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
_animationFrame = 0;
_animationState = 14;
*animation = 650;
*animation = kModelAnimationHanoiCalmTalk;
}
break;
case 20:
*animation = 656;
*animation = kModelAnimationHanoiMockTalk;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
_animationFrame = 0;
_animationState = 14;
*animation = 650;
*animation = kModelAnimationHanoiCalmTalk;
}
break;
@ -674,7 +675,7 @@ bool AIScriptHanoi::ChangeAnimationMode(int mode) {
_animationFrame = 0;
} else {
_animationStateNext = 14;
_animationNext = 650;
_animationNext = kModelAnimationHanoiCalmTalk;
_animationState = 1;
}
break;
@ -691,37 +692,43 @@ bool AIScriptHanoi::ChangeAnimationMode(int mode) {
case 12:
_animationStateNext = 15;
_animationNext = 651;
_animationNext = kModelAnimationHanoiExplainTalk;
_animationState = 1;
break;
case 13:
_animationStateNext = 16;
_animationNext = 652;
_animationNext = kModelAnimationHanoiDownwardsNodTalk;
_animationState = 1;
break;
case 14:
_animationStateNext = 17;
_animationNext = 653;
_animationNext = kModelAnimationHanoiDenyTalk;
_animationState = 1;
break;
case 15:
_animationStateNext = 18;
_animationNext = 654;
_animationNext = kModelAnimationHanoiSlightBowingTalk;
_animationState = 1;
break;
case 16:
#if BLADERUNNER_ORIGINAL_BUGS
// TODO a bug? uses kModelAnimationHanoiSlightBowingTalk (654) again like case 15
_animationStateNext = 18;
_animationNext = 654;
_animationNext = kModelAnimationHanoiSlightBowingTalk;
#else
_animationStateNext = 19;
_animationNext = kModelAnimationHanoiLaughTalk;
#endif
_animationState = 1;
break;
case 17:
_animationStateNext = 20;
_animationNext = 656;
_animationNext = kModelAnimationHanoiMockTalk;
_animationState = 1;
break;
@ -740,7 +747,7 @@ bool AIScriptHanoi::ChangeAnimationMode(int mode) {
_animationFrame = 0;
} else {
_animationState = 5;
_animationFrame = Slice_Animation_Query_Number_Of_Frames(657) - 1;
_animationFrame = Slice_Animation_Query_Number_Of_Frames(kModelAnimationHanoiGrabsMcCoy) - 1;
}
break;

View File

@ -27,10 +27,11 @@ namespace BladeRunner {
AIScriptHasan::AIScriptHasan(BladeRunnerEngine *vm) : AIScriptBase(vm) {
_var1 = 6;
_var2 = 1;
_var3 = 0;
_varNumOfTimesToHoldCurrentFrame = 0;
_var4 = 0;
_var5 = 0;
_var6 = 0;
// _varChooseIdleAnimation can have valid values: 0, 1, 2
_varChooseIdleAnimation = 0;
}
void AIScriptHasan::Initialize() {
@ -41,10 +42,10 @@ void AIScriptHasan::Initialize() {
_var1 = 6;
_var2 = 1;
_var3 = 0;
_varNumOfTimesToHoldCurrentFrame = 0;
_var4 = 0;
_var5 = 0;
_var6 = 0;
_varChooseIdleAnimation = 0;
Actor_Put_In_Set(kActorHasan, kSetAR01_AR02);
Actor_Set_At_XYZ(kActorHasan, -214.0f, 0.0f, -1379.0f, 371);
@ -228,49 +229,49 @@ bool AIScriptHasan::UpdateAnimation(int *animation, int *frame) {
switch (_animationState) {
case 0:
if (_var6 == 1) {
*animation = kModelAnimationHasanTalkSuggest;
if (_var3) {
--_var3;
if (_varChooseIdleAnimation == 1) {
*animation = kModelAnimationHasanGestureSuggest;
if (_varNumOfTimesToHoldCurrentFrame > 0) {
--_varNumOfTimesToHoldCurrentFrame;
} else {
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationHasanTalkSuggest)) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationHasanGestureSuggest)) {
_animationFrame = 0;
_var6 = 0;
_varChooseIdleAnimation = 0;
*animation = kModelAnimationHasanIdleSlightMovement;
_var1 = Random_Query(6, 14);
_var2 = 2 * Random_Query(0, 1) - 1;
_var4 = Random_Query(40, 60);
}
if (_animationFrame >= 10 && _animationFrame <= 14) {
_var3 = Random_Query(0, 1);
_varNumOfTimesToHoldCurrentFrame = Random_Query(0, 1);
}
}
} else if (_var6 == 2) {
} else if (_varChooseIdleAnimation == 2) {
*animation = kModelAnimationHasanTakingABiteSnakeMove;
if (_var3) {
--_var3;
if (_varNumOfTimesToHoldCurrentFrame > 0) {
--_varNumOfTimesToHoldCurrentFrame;
} else {
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationHasanTakingABiteSnakeMove)) {
_animationFrame = 0;
_var6 = 0;
_varChooseIdleAnimation = 0;
*animation = kModelAnimationHasanIdleSlightMovement;
_var1 = Random_Query(6, 14);
_var2 = 2 * Random_Query(0, 1) - 1;
_var5 = Random_Query(40, 60);
}
if (_animationFrame == 14) {
_var3 = Random_Query(3, 10);
_varNumOfTimesToHoldCurrentFrame = Random_Query(3, 10);
}
if (_animationFrame == 23) {
_var3 = Random_Query(0, 4);
_varNumOfTimesToHoldCurrentFrame = Random_Query(0, 4);
}
}
} else if (_var6 == 0) {
} else if (_varChooseIdleAnimation == 0) {
*animation = kModelAnimationHasanIdleSlightMovement;
if (_var3) {
--_var3;
if (_varNumOfTimesToHoldCurrentFrame > 0) {
--_varNumOfTimesToHoldCurrentFrame;
} else {
_animationFrame += _var2;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationHasanIdleSlightMovement)) {
@ -282,16 +283,16 @@ bool AIScriptHasan::UpdateAnimation(int *animation, int *frame) {
if (!--_var1) {
_var2 = 2 * Random_Query(0, 1) - 1;
_var1 = Random_Query(6, 14);
_var3 = Random_Query(0, 4);
_varNumOfTimesToHoldCurrentFrame = Random_Query(0, 4);
}
if (_animationFrame == 0) {
_var6 = Random_Query(0, 2);
_varChooseIdleAnimation = Random_Query(0, 2);
}
if (_var6 == 1 && _var4) {
_var6 = 0;
if (_varChooseIdleAnimation == 1 && _var4) {
_varChooseIdleAnimation = 0;
}
if (_var6 == 2 && _var5) {
_var6 = 0;
if (_varChooseIdleAnimation == 2 && _var5) {
_varChooseIdleAnimation = 0;
}
}
}
@ -367,13 +368,13 @@ bool AIScriptHasan::ChangeAnimationMode(int mode) {
switch (mode) {
case kAnimationModeIdle:
_animationState = 0;
_var6 = 0;
_varChooseIdleAnimation = 0;
_animationFrame = 0;
break;
case kAnimationModeTalk:
_animationState = 1;
_var6 = 0;
_varChooseIdleAnimation = 0;
_animationFrame = 0;
break;
@ -387,7 +388,7 @@ bool AIScriptHasan::ChangeAnimationMode(int mode) {
// fall through
case 16:
_animationState = 6;
_var6 = 0;
_varChooseIdleAnimation = 0;
_animationFrame = 0;
break;

View File

@ -25,7 +25,7 @@
namespace BladeRunner {
AIScriptHowieLee::AIScriptHowieLee(BladeRunnerEngine *vm) : AIScriptBase(vm) {
var_45DFB8 = 0;
_varIdleStatesToggle = 0;
}
void AIScriptHowieLee::Initialize() {
@ -33,7 +33,7 @@ void AIScriptHowieLee::Initialize() {
_animationState = 0;
_animationStateNext = 0;
_animationNext = 0;
var_45DFB8 = false;
_varIdleStatesToggle = 0;
Actor_Put_In_Set(kActorHowieLee, kSetCT01_CT12);
Actor_Set_At_Waypoint(kActorHowieLee, 67, 605); // in kSetCT01_CT12
@ -331,45 +331,47 @@ bool AIScriptHowieLee::UpdateAnimation(int *animation, int *frame) {
switch (_animationState) {
case 0:
++_animationFrame;
if (var_45DFB8) {
*animation = 673;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(673)) {
// _varIdleStatesToggle can be 0 or 1.
// Determines whether kModelAnimationHowieLeePutsIngredientsCooking or kModelAnimationHowieLeeGathersOfTidiesUp is used.
if (_varIdleStatesToggle > 0) {
*animation = kModelAnimationHowieLeePutsIngredientsCooking;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationHowieLeePutsIngredientsCooking)) {
_animationFrame = 0;
if (Random_Query(0, 2) > 0) {
var_45DFB8 ^= 1;
_varIdleStatesToggle ^= 1;
}
}
} else {
*animation = 671;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(671)) {
*animation = kModelAnimationHowieLeeGathersOfTidiesUp;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationHowieLeeGathersOfTidiesUp)) {
_animationFrame = 0;
if (Random_Query(0, 1) > 0) {
var_45DFB8 ^= 1;
_varIdleStatesToggle ^= 1;
}
}
}
break;
case 1:
*animation = 674;
*animation = kModelAnimationHowieLeeLongGestureGive;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(674)) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationHowieLeeLongGestureGive)) {
_animationFrame = 0;
if (_animationState < 3 || _animationState > 8) {
_animationState = 0;
_animationFrame = 0;
var_45DFB8 = Random_Query(0, 1);
_varIdleStatesToggle = Random_Query(0, 1);
} else {
Game_Flag_Set(kFlagHowieLeeAnimation1);
}
*animation = 673;
*animation = kModelAnimationHowieLeePutsIngredientsCooking;
}
break;
case 2:
*animation = 672;
*animation = kModelAnimationHowieLeeWalking;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(672)) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationHowieLeeWalking)) {
_animationFrame = 0;
}
break;
@ -379,69 +381,70 @@ bool AIScriptHowieLee::UpdateAnimation(int *animation, int *frame) {
Game_Flag_Reset(kFlagHowieLeeAnimation1);
_animationState = 0;
_animationFrame = 0;
var_45DFB8 = Random_Query(0, 1);
*animation = 671;
_varIdleStatesToggle = Random_Query(0, 1);
*animation = kModelAnimationHowieLeeGathersOfTidiesUp;
} else {
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(676)) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationHowieLeeCalmTalk)) {
_animationFrame = 0;
}
*animation = 676;
*animation = kModelAnimationHowieLeeCalmTalk;
}
break;
case 4:
*animation = 677;
*animation = kModelAnimationHowieLeeExplainTalk;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(677)) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationHowieLeeExplainTalk)) {
_animationState = 3;
_animationFrame = 0;
*animation = 676;
*animation = kModelAnimationHowieLeeCalmTalk;
}
break;
case 5:
*animation = 678;
*animation = kModelAnimationHowieLeeUpsetTalk;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(678)) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationHowieLeeUpsetTalk)) {
_animationState = 3;
_animationFrame = 0;
*animation = 676;
*animation = kModelAnimationHowieLeeCalmTalk;
}
break;
case 6:
*animation = 679;
*animation = kModelAnimationHowieLeeAngryTalk;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(679)) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationHowieLeeAngryTalk)) {
_animationState = 3;
_animationFrame = 0;
*animation = 676;
*animation = kModelAnimationHowieLeeCalmTalk;
}
break;
case 7:
*animation = 680;
*animation = kModelAnimationHowieLeeNoTimeTalk;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(680)) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationHowieLeeNoTimeTalk)) {
_animationState = 3;
_animationFrame = 0;
*animation = 676;
*animation = kModelAnimationHowieLeeCalmTalk;
}
break;
case 8:
*animation = 681;
*animation = kModelAnimationHowieLeeElaborateMovementTalk;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(681)) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationHowieLeeElaborateMovementTalk)) {
_animationState = 3;
_animationFrame = 0;
*animation = 676;
*animation = kModelAnimationHowieLeeCalmTalk;
}
break;
default:
*animation = 399;
// Dummy placeholder, kModelAnimationZubenWalking (399) is a Zuben animation
*animation = kModelAnimationZubenWalking;
break;
}
*frame = _animationFrame;
@ -454,7 +457,7 @@ bool AIScriptHowieLee::ChangeAnimationMode(int mode) {
if (_animationState < 3 || _animationState > 8) {
_animationState = 0;
_animationFrame = 0;
var_45DFB8 = Random_Query(0, 1);
_varIdleStatesToggle = Random_Query(0, 1);
} else {
Game_Flag_Set(kFlagHowieLeeAnimation1);
}

View File

@ -28,7 +28,7 @@ AIScriptInsectDealer::AIScriptInsectDealer(BladeRunnerEngine *vm) : AIScriptBase
_resumeIdleAfterFramesetCompletesFlag = false;
_state = 0;
_frameDelta = 0;
_var2 = 0;
_var2 = 0; // is set on some occasions but is never checked. Unused.
_counter = 0;
}

View File

@ -26,8 +26,9 @@ namespace BladeRunner {
AIScriptIsabella::AIScriptIsabella(BladeRunnerEngine *vm) : AIScriptBase(vm) {
_var1 = 0;
_var2 = 0;
_var3 = 0;
_varNumOfTimesToHoldCurrentFrame = 0;
// _varChooseIdleAnimation can have valid values: 0,
_varChooseIdleAnimation = 0;
_var4 = 1;
}
@ -38,8 +39,8 @@ void AIScriptIsabella::Initialize() {
_animationNext = 0;
_var1 = 0;
_var2 = 0;
_var3 = 0;
_varNumOfTimesToHoldCurrentFrame = 0;
_varChooseIdleAnimation = 0;
_var4 = 1;
}
@ -104,52 +105,52 @@ bool AIScriptIsabella::UpdateAnimation(int *animation, int *frame) {
switch (_animationState) {
case 0:
if (_var3 == 1) {
*animation = 839;
if (_varChooseIdleAnimation == 1) {
*animation = kModelIsabellaPutsSpicesInSoup;
++_animationFrame;
if (_animationFrame > Slice_Animation_Query_Number_Of_Frames(839) - 1) {
if (_animationFrame > Slice_Animation_Query_Number_Of_Frames(kModelIsabellaPutsSpicesInSoup) - 1) {
_animationFrame = 0;
}
if (_animationFrame < 0) {
_animationFrame = Slice_Animation_Query_Number_Of_Frames(839) - 1;
_animationFrame = Slice_Animation_Query_Number_Of_Frames(kModelIsabellaPutsSpicesInSoup) - 1;
}
if (_animationFrame == 0) {
_var3 = 0;
_varChooseIdleAnimation = 0;
_var4 = 2 * Random_Query(0, 1) - 1;
}
} else if (_var3 == 0) {
*animation = 838;
if (_var2) {
--_var2;
if (_var2 == 0) {
} else if (_varChooseIdleAnimation == 0) {
*animation = kModelIsabellaIdle;
if (_varNumOfTimesToHoldCurrentFrame > 0) {
--_varNumOfTimesToHoldCurrentFrame;
if (_varNumOfTimesToHoldCurrentFrame == 0) {
_var4 = 2 * Random_Query(0, 1) - 1;
}
} else {
_animationFrame += _var4;
if (_animationFrame > Slice_Animation_Query_Number_Of_Frames(838) - 1) {
if (_animationFrame > Slice_Animation_Query_Number_Of_Frames(kModelIsabellaIdle) - 1) {
_animationFrame = 0;
}
if (_animationFrame < 0) {
_animationFrame = Slice_Animation_Query_Number_Of_Frames(838) - 1;
_animationFrame = Slice_Animation_Query_Number_Of_Frames(kModelIsabellaIdle) - 1;
}
if (_animationFrame == 1) {
if (!Random_Query(0, 1)) {
_var2 = Random_Query(4, 8);
_varNumOfTimesToHoldCurrentFrame = Random_Query(4, 8);
}
}
if (_animationFrame == 11) {
if (!Random_Query(0, 1)) {
_var2 = Random_Query(4, 8);
_varNumOfTimesToHoldCurrentFrame = Random_Query(4, 8);
}
}
if (_animationFrame == 16) {
if (!Random_Query(0, 1)) {
_var2 = Random_Query(4, 8);
_varNumOfTimesToHoldCurrentFrame = Random_Query(4, 8);
}
}
if (_animationFrame == 0) {
if (!Random_Query(0, 2)) {
_var3 = 1;
_varChooseIdleAnimation = 1;
}
}
}
@ -157,37 +158,37 @@ bool AIScriptIsabella::UpdateAnimation(int *animation, int *frame) {
break;
case 1:
*animation = 840;
*animation = kModelIsabellaGestureGiveOrTake;
++_animationFrame;
if (_animationFrame > Slice_Animation_Query_Number_Of_Frames(840) - 1) {
if (_animationFrame > Slice_Animation_Query_Number_Of_Frames(kModelIsabellaGestureGiveOrTake) - 1) {
flag = true;
_animationFrame = 0;
} else {
if (_animationFrame < 0) {
_animationFrame = Slice_Animation_Query_Number_Of_Frames(840) - 1;
_animationFrame = Slice_Animation_Query_Number_Of_Frames(kModelIsabellaGestureGiveOrTake) - 1;
flag = true;
} else {
flag = false;
}
}
if (flag) {
*animation = 838;
*animation = kModelIsabellaIdle;
_animationState = 0;
}
break;
case 2:
*animation = 841;
*animation = kModelIsabellaCalmTalk;
if (_animationFrame < 2 && _var1) {
_animationFrame = 0;
_animationState = 0;
} else {
++_animationFrame;
if (_animationFrame > Slice_Animation_Query_Number_Of_Frames(841) - 1) {
if (_animationFrame > Slice_Animation_Query_Number_Of_Frames(kModelIsabellaCalmTalk) - 1) {
_animationFrame = 0;
} else {
if (_animationFrame < 0) {
_animationFrame = Slice_Animation_Query_Number_Of_Frames(841) - 1;
_animationFrame = Slice_Animation_Query_Number_Of_Frames(kModelIsabellaCalmTalk) - 1;
}
}
if (_animationFrame == 0) {
@ -197,132 +198,132 @@ bool AIScriptIsabella::UpdateAnimation(int *animation, int *frame) {
break;
case 3:
*animation = 842;
*animation = kModelIsabellaSuggestTalk;
if (_animationFrame < 2 && _var1) {
_animationFrame = 0;
_animationState = 0;
} else {
++_animationFrame;
if (_animationFrame > Slice_Animation_Query_Number_Of_Frames(842) - 1) {
if (_animationFrame > Slice_Animation_Query_Number_Of_Frames(kModelIsabellaSuggestTalk) - 1) {
_animationFrame = 0;
} else {
if (_animationFrame < 0) {
_animationFrame = Slice_Animation_Query_Number_Of_Frames(842) - 1;
_animationFrame = Slice_Animation_Query_Number_Of_Frames(kModelIsabellaSuggestTalk) - 1;
}
}
if (_animationFrame == 0) {
*animation = 841;
*animation = kModelIsabellaCalmTalk;
_animationState = 2;
}
}
break;
case 4:
*animation = 843;
*animation = kModelIsabellaProtestTalk;
++_animationFrame;
if (_animationFrame > Slice_Animation_Query_Number_Of_Frames(843) - 1) {
if (_animationFrame > Slice_Animation_Query_Number_Of_Frames(kModelIsabellaProtestTalk) - 1) {
flag = true;
_animationFrame = 0;
} else {
if (_animationFrame < 0) {
_animationFrame = Slice_Animation_Query_Number_Of_Frames(843) - 1;
_animationFrame = Slice_Animation_Query_Number_Of_Frames(kModelIsabellaProtestTalk) - 1;
flag = true;
} else {
flag = false;
}
}
if (flag) {
*animation = 841;
*animation = kModelIsabellaCalmTalk;
_animationState = 2;
}
break;
case 5:
*animation = 844;
*animation = kModelIsabellaMoreCalmTalk;
++_animationFrame;
if (_animationFrame > Slice_Animation_Query_Number_Of_Frames(844) - 1) {
if (_animationFrame > Slice_Animation_Query_Number_Of_Frames(kModelIsabellaMoreCalmTalk) - 1) {
flag = true;
_animationFrame = 0;
} else {
if (_animationFrame < 0) {
_animationFrame = Slice_Animation_Query_Number_Of_Frames(844) - 1;
_animationFrame = Slice_Animation_Query_Number_Of_Frames(kModelIsabellaMoreCalmTalk) - 1;
flag = true;
} else {
flag = false;
}
}
if (flag) {
*animation = 841;
*animation = kModelIsabellaCalmTalk;
_animationState = 2;
}
break;
case 6:
*animation = 845;
*animation = kModelIsabellaLaughTalk;
++_animationFrame;
if (_animationFrame > Slice_Animation_Query_Number_Of_Frames(845) - 1) {
if (_animationFrame > Slice_Animation_Query_Number_Of_Frames(kModelIsabellaLaughTalk) - 1) {
flag = true;
_animationFrame = 0;
} else {
if (_animationFrame < 0) {
_animationFrame = Slice_Animation_Query_Number_Of_Frames(845) - 1;
_animationFrame = Slice_Animation_Query_Number_Of_Frames(kModelIsabellaLaughTalk) - 1;
flag = true;
} else {
flag = false;
}
}
if (flag) {
*animation = 841;
*animation = kModelIsabellaCalmTalk;
_animationState = 2;
}
break;
case 7:
*animation = 845;
*animation = kModelIsabellaLaughTalk;
++_animationFrame;
if (_animationFrame > Slice_Animation_Query_Number_Of_Frames(845) - 1) {
if (_animationFrame > Slice_Animation_Query_Number_Of_Frames(kModelIsabellaLaughTalk) - 1) {
flag = true;
_animationFrame = 0;
} else {
if (_animationFrame < 0) {
_animationFrame = Slice_Animation_Query_Number_Of_Frames(845) - 1;
_animationFrame = Slice_Animation_Query_Number_Of_Frames(kModelIsabellaLaughTalk) - 1;
flag = true;
} else {
flag = false;
}
}
if (flag) {
*animation = 841;
*animation = kModelIsabellaCalmTalk;
_animationState = 2;
}
break;
case 8:
*animation = 844;
*animation = kModelIsabellaMoreCalmTalk;
++_animationFrame;
if (_animationFrame > Slice_Animation_Query_Number_Of_Frames(844) - 1) {
if (_animationFrame > Slice_Animation_Query_Number_Of_Frames(kModelIsabellaMoreCalmTalk) - 1) {
flag = true;
_animationFrame = 0;
} else {
if (_animationFrame < 0) {
_animationFrame = Slice_Animation_Query_Number_Of_Frames(844) - 1;
_animationFrame = Slice_Animation_Query_Number_Of_Frames(kModelIsabellaMoreCalmTalk) - 1;
flag = true;
} else {
flag = false;
}
}
if (flag) {
*animation = 841;
*animation = kModelIsabellaCalmTalk;
_animationState = 2;
}
break;
case 9:
if (!_var3) {
*animation = 838;
if (_varChooseIdleAnimation == 0) {
*animation = kModelIsabellaIdle;
}
if (_var3 == 1) {
*animation = 839;
if (_varChooseIdleAnimation == 1) {
*animation = kModelIsabellaPutsSpicesInSoup;
}
if (_animationFrame < Slice_Animation_Query_Number_Of_Frames(*animation)) {
_animationFrame += 2;
@ -374,7 +375,7 @@ bool AIScriptIsabella::ChangeAnimationMode(int mode) {
if (_animationState < 2 || _animationState > 8) {
_animationState = 9;
_animationStateNext = 2;
_animationNext = 841;
_animationNext = kModelIsabellaCalmTalk;
_var1 = 0;
}
break;
@ -385,7 +386,7 @@ bool AIScriptIsabella::ChangeAnimationMode(int mode) {
if (_animationState < 2 || _animationState > 8) {
_animationState = 9;
_animationStateNext = 3;
_animationNext = 842;
_animationNext = kModelIsabellaSuggestTalk;
_var1 = 0;
}
break;
@ -396,7 +397,7 @@ bool AIScriptIsabella::ChangeAnimationMode(int mode) {
if (_animationState < 2 || _animationState > 8) {
_animationState = 9;
_animationStateNext = 5;
_animationNext = 844;
_animationNext = kModelIsabellaMoreCalmTalk;
_var1 = 0;
}
break;
@ -405,7 +406,7 @@ bool AIScriptIsabella::ChangeAnimationMode(int mode) {
if (_animationState < 2 || _animationState > 8) {
_animationState = 9;
_animationStateNext = 4;
_animationNext = 843;
_animationNext = kModelIsabellaProtestTalk;
_var1 = 0;
}
break;
@ -414,7 +415,7 @@ bool AIScriptIsabella::ChangeAnimationMode(int mode) {
if (_animationState < 2 || _animationState > 8) {
_animationState = 9;
_animationStateNext = 6;
_animationNext = 845;
_animationNext = kModelIsabellaLaughTalk;
_var1 = 0;
}
break;
@ -423,7 +424,7 @@ bool AIScriptIsabella::ChangeAnimationMode(int mode) {
if (_animationState < 2 || _animationState > 8) {
_animationState = 9;
_animationStateNext = 7;
_animationNext = 845;
_animationNext = kModelIsabellaLaughTalk;
_var1 = 0;
}
break;
@ -432,7 +433,7 @@ bool AIScriptIsabella::ChangeAnimationMode(int mode) {
if (_animationState < 2 || _animationState > 8) {
_animationState = 9;
_animationStateNext = 8;
_animationNext = 844;
_animationNext = kModelIsabellaMoreCalmTalk;
_var1 = 0;
}
break;

View File

@ -28,8 +28,9 @@ AIScriptIzo::AIScriptIzo(BladeRunnerEngine *vm) : AIScriptBase(vm) {
_resumeIdleAfterFramesetCompletesFlag = false;
_var1 = 6;
_var2 = 1;
_var3 = 0;
_var4 = 0;
_varNumOfTimesToHoldCurrentFrame = 0;
// _varChooseIdleAnimation can have valid values: 0, 1
_varChooseIdleAnimation = 0;
}
void AIScriptIzo::Initialize() {
@ -41,8 +42,8 @@ void AIScriptIzo::Initialize() {
_resumeIdleAfterFramesetCompletesFlag = false;
_var1 = 6;
_var2 = 1;
_var3 = 0;
_var4 = 0;
_varNumOfTimesToHoldCurrentFrame = 0;
_varChooseIdleAnimation = 0;
Actor_Set_Goal_Number(kActorIzo, 0);
Actor_Put_In_Set(kActorIzo, kSetHC01_HC02_HC03_HC04);
@ -523,33 +524,33 @@ bool AIScriptIzo::GoalChanged(int currentGoalNumber, int newGoalNumber) {
bool AIScriptIzo::UpdateAnimation(int *animation, int *frame) {
switch (_animationState) {
case 0:
if (_var4 == 1) {
*animation = 298;
if (_varChooseIdleAnimation == 1) {
*animation = kModelAnimationIzoAwkwardPlayWithHands;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(298)) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationIzoAwkwardPlayWithHands)) {
_animationFrame = 0;
_var4 = 0;
_varChooseIdleAnimation = 0;
}
} else if (_var4 == 0) {
*animation = 297;
if (_var3) {
--_var3;
} else if (_varChooseIdleAnimation == 0) {
*animation = kModelAnimationIzoIdle;
if (_varNumOfTimesToHoldCurrentFrame > 0) {
--_varNumOfTimesToHoldCurrentFrame;
} else {
_animationFrame += _var2;
if (_animationFrame < 0) {
_animationFrame = Slice_Animation_Query_Number_Of_Frames(297) - 1;
} else if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(297)) {
_animationFrame = Slice_Animation_Query_Number_Of_Frames(kModelAnimationIzoIdle) - 1;
} else if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationIzoIdle)) {
_animationFrame = 0;
}
--_var1;
if (_var1 == 0) {
_var2 = 2 * Random_Query(0, 1) - 1;
_var1 = Random_Query(6, 14);
_var3 = Random_Query(0, 2);
_varNumOfTimesToHoldCurrentFrame = Random_Query(0, 2);
}
if (_animationFrame == 0) {
if (!Random_Query(0, 5)) {
_var4 = 1;
_varChooseIdleAnimation = 1;
}
}
}
@ -558,14 +559,14 @@ bool AIScriptIzo::UpdateAnimation(int *animation, int *frame) {
case 1:
if (_animationFrame <= 2 && _resumeIdleAfterFramesetCompletesFlag) {
*animation = 297;
*animation = kModelAnimationIzoIdle;
_animationFrame = 0;
_animationState = 0;
_resumeIdleAfterFramesetCompletesFlag = false;
} else {
*animation = 299;
*animation = kModelAnimationIzoCalmTalk;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(299)) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationIzoCalmTalk)) {
_animationFrame = 0;
}
}
@ -582,46 +583,50 @@ bool AIScriptIzo::UpdateAnimation(int *animation, int *frame) {
case 6:
// fall through
case 7:
*animation = _animationState + 298;
// TODO why calculate current animation by adding animationState to kModelAnimationIzoAwkwardPlayWithHands (298)?
// seems prone to error.
// This (based on the switch cases), results in "talking" animation framesets 300 - 305,
// excepting the kModelAnimationIzoCalmTalk (299) which is used as the default or "ending" talking animation.
*animation = _animationState + kModelAnimationIzoAwkwardPlayWithHands;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
_animationFrame = 0;
_animationState = 1;
*animation = 299;
*animation = kModelAnimationIzoCalmTalk;
}
break;
case 8:
*animation = 277;
*animation = kModelAnimationIzoCombatIdle;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(277)) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationIzoCombatIdle)) {
_animationFrame = 0;
}
break;
case 9:
*animation = 287;
*animation = kModelAnimationIzoCombatUnseatheSword;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(287)) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationIzoCombatUnseatheSword)) {
_animationFrame = 0;
_animationState = 8;
*animation = 277;
*animation = kModelAnimationIzoCombatIdle;
}
break;
case 10:
*animation = 288;
*animation = kModelAnimationIzoCombatSeatheSword;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(288)) {
*animation = 297;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationIzoCombatSeatheSword)) {
*animation = kModelAnimationIzoIdle;
_animationFrame = 0;
_animationState = 0;
_var4 = 0;
_varChooseIdleAnimation = 0;
}
break;
case 11:
*animation = 289;
*animation = kModelAnimationIzoCombatSwordAttack;
++_animationFrame;
if (_animationFrame == 6) {
int snd;
@ -644,7 +649,7 @@ bool AIScriptIzo::UpdateAnimation(int *animation, int *frame) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
_animationFrame = 0;
_animationState = 8;
*animation = 277;
*animation = kModelAnimationIzoCombatIdle;
Actor_Change_Animation_Mode(kActorIzo, kAnimationModeCombatIdle);
}
break;
@ -657,22 +662,22 @@ bool AIScriptIzo::UpdateAnimation(int *animation, int *frame) {
// fall through
case 17:
if (_animationState == 12) {
*animation = 278;
*animation = kModelAnimationIzoCombatTurnRight;
}
if (_animationState == 13) {
*animation = 279;
*animation = kModelAnimationIzoCombatTurnLeft;
}
if (_animationState == 16) {
*animation = 280;
*animation = kModelAnimationIzoCombatGotHitRight;
}
if (_animationState == 17) {
*animation = 281;
*animation = kModelAnimationIzoCombatGotHitLeft;
}
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
_animationFrame = 0;
_animationState = 8;
*animation = 277;
*animation = kModelAnimationIzoCombatIdle;
Actor_Change_Animation_Mode(kActorIzo, kAnimationModeCombatIdle);
}
break;
@ -680,26 +685,26 @@ bool AIScriptIzo::UpdateAnimation(int *animation, int *frame) {
case 14:
// fall through
case 15:
// TODO A bug? Shouldn't this be _animationState + 280?
*animation = _animationFrame + 280;
// TODO A bug? Shouldn't this be _animationState + kModelAnimationIzoCombatGotHitRight?
*animation = _animationFrame + kModelAnimationIzoCombatGotHitRight;
++_animationFrame;
if (_animationFrame >= 2
&& (Actor_Query_Goal_Number(kActorIzo) == kGoalIzoRC03Walk
|| Actor_Query_Goal_Number(kActorIzo) == kGoalIzoRC03Run
)
) {
*animation = 297;
*animation = kModelAnimationIzoIdle;
_animationFrame = 0;
_animationState = 0;
_var4 = 0;
_varChooseIdleAnimation = 0;
Actor_Change_Animation_Mode(kActorIzo, kAnimationModeIdle);
Actor_Set_Goal_Number(kActorIzo, kGoalIzoRC03Run);
} else {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
*animation = 297;
*animation = kModelAnimationIzoIdle;
_animationFrame = 0;
_animationState = 0;
_var4 = 0;
_varChooseIdleAnimation = 0;
Actor_Change_Animation_Mode(kActorIzo, kAnimationModeIdle);
}
}
@ -709,10 +714,10 @@ bool AIScriptIzo::UpdateAnimation(int *animation, int *frame) {
// fall through
case 19:
if (_animationState == 18) {
*animation = 284;
*animation = kModelAnimationIzoCombatShotDead;
}
if (_animationState == 19) {
*animation = 296;
*animation = kModelAnimationIzoShotDead;
}
++_animationFrame;
if (_animationFrame > Slice_Animation_Query_Number_Of_Frames(*animation) - 1) {
@ -741,34 +746,34 @@ bool AIScriptIzo::UpdateAnimation(int *animation, int *frame) {
// fall through
case 29:
if (_animationState == 20) {
*animation = 290;
*animation = kModelAnimationIzoWalking;
}
if (_animationState == 21) {
*animation = 291;
*animation = kModelAnimationIzoRunning;
}
if (_animationState == 22) {
*animation = 282;
*animation = kModelAnimationIzoCombatWalking;
}
if (_animationState == 23) {
*animation = 283;
*animation = kModelAnimationIzoCombatRunning;
}
if (_animationState == 24) {
*animation = 285;
*animation = kModelAnimationIzoCombatClimbStairsUp;
}
if (_animationState == 25) {
*animation = 286;
*animation = kModelAnimationIzoCombatClimbStairsDown;
}
if (_animationState == 26) {
*animation = 292;
*animation = kModelAnimationIzoClimbStairsUp;
}
if (_animationState == 27) {
*animation = 293;
*animation = kModelAnimationIzoClimbStairsDown;
}
if (_animationState == 29) {
*animation = 307;
*animation = kModelAnimationIzoClimbLadderUp;
}
if (_animationState == 28) {
*animation = 306;
*animation = kModelAnimationIzoClimbLadderDown;
}
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
@ -777,25 +782,25 @@ bool AIScriptIzo::UpdateAnimation(int *animation, int *frame) {
break;
case 30:
*animation = 296;
_animationFrame = Slice_Animation_Query_Number_Of_Frames(296) - 1;
*animation = kModelAnimationIzoShotDead;
_animationFrame = Slice_Animation_Query_Number_Of_Frames(kModelAnimationIzoShotDead) - 1;
break;
case 31:
*animation = 308;
*animation = kModelAnimationIzoHoldingCameraIdle;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(308)) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationIzoHoldingCameraIdle)) {
_animationFrame = 0;
}
break;
case 32:
*animation = 309;
*animation = kModelAnimationIzoPicksCameraFromShop;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(309)) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationIzoPicksCameraFromShop)) {
_animationFrame = 0;
_animationState = 31;
*animation = 308;
*animation = kModelAnimationIzoHoldingCameraIdle;
}
break;
@ -803,26 +808,26 @@ bool AIScriptIzo::UpdateAnimation(int *animation, int *frame) {
if (_animationFrame == 0 && _resumeIdleAfterFramesetCompletesFlag) {
_resumeIdleAfterFramesetCompletesFlag = false;
_animationState = 31;
*animation = 308;
*animation = kModelAnimationIzoHoldingCameraIdle;
} else {
*animation = 310;
*animation = kModelAnimationIzoHoldingCameraTalk;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(310)) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationIzoHoldingCameraTalk)) {
_animationFrame = 0;
}
}
break;
case 34:
*animation = 311;
*animation = kModelAnimationIzoHoldingCameraUsesFlash;
++_animationFrame;
if (_animationFrame == 6) {
Scene_Loop_Set_Default(0); // // HC01 - MainLoop
Scene_Loop_Start_Special(kSceneLoopModeOnce, 2, true); // HC01 - IzoFlashLoop
Player_Set_Combat_Mode(true);
}
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(311)) {
*animation = 297;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationIzoHoldingCameraUsesFlash)) {
*animation = kModelAnimationIzoIdle;
_animationFrame = 0;
_animationState = 0;
Game_Flag_Set(kFlagUnused407);
@ -832,15 +837,18 @@ bool AIScriptIzo::UpdateAnimation(int *animation, int *frame) {
break;
case 35:
if (!_var4) {
*animation = 297;
if (_varChooseIdleAnimation == 0) {
*animation = kModelAnimationIzoIdle;
}
if (_var4 == 1) {
*animation = 298;
if (_varChooseIdleAnimation == 1) {
*animation = kModelAnimationIzoAwkwardPlayWithHands;
}
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(297)) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationIzoIdle)) {
// TODO a bug? Adding 3 to animationFrame when it is >= the num of frames of the frameset
// will still keep it >= the num of frame of the frameset.
// so why check again in the if clause below?
_animationFrame += 3;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(297)) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationIzoIdle)) {
_animationFrame = 0;
*animation = _animationNext;
_animationState = _animationStateNext;
@ -936,7 +944,7 @@ bool AIScriptIzo::ChangeAnimationMode(int mode) {
} else if (_animationState <= 0 || _animationState > 7) {
_animationState = 35;
_animationStateNext = 1;
_animationNext = 299;
_animationNext = kModelAnimationIzoCalmTalk;
}
_resumeIdleAfterFramesetCompletesFlag = false;
}
@ -985,7 +993,7 @@ bool AIScriptIzo::ChangeAnimationMode(int mode) {
if (_animationState <= 0 || _animationState > 7) {
_animationState = 35;
_animationStateNext = 1;
_animationNext = 300;
_animationNext = kModelAnimationIzoMoreCalmTalk;
}
_resumeIdleAfterFramesetCompletesFlag = false;
}
@ -998,7 +1006,7 @@ bool AIScriptIzo::ChangeAnimationMode(int mode) {
if (_animationState <= 0 || _animationState > 7) {
_animationState = 35;
_animationStateNext = 1;
_animationNext = 302;
_animationNext = kModelAnimationIzoHeadNodsAgreeingTalk;
}
_resumeIdleAfterFramesetCompletesFlag = false;
}
@ -1009,7 +1017,7 @@ bool AIScriptIzo::ChangeAnimationMode(int mode) {
if (_animationState <= 0 || _animationState > 7) {
_animationState = 35;
_animationStateNext = 1;
_animationNext = 301;
_animationNext = kModelAnimationIzoExplainingTalk;
}
_resumeIdleAfterFramesetCompletesFlag = false;
}
@ -1020,7 +1028,7 @@ bool AIScriptIzo::ChangeAnimationMode(int mode) {
if (_animationState <= 0 || _animationState > 7) {
_animationState = 35;
_animationStateNext = 1;
_animationNext = 303;
_animationNext = kModelAnimationIzoOffensiveTalk;
}
_resumeIdleAfterFramesetCompletesFlag = false;
}
@ -1031,7 +1039,7 @@ bool AIScriptIzo::ChangeAnimationMode(int mode) {
if (_animationState <= 0 || _animationState > 7) {
_animationState = 35;
_animationStateNext = 1;
_animationNext = 304;
_animationNext = kModelAnimationIzoHeadNodsDisagreeingTalk;
}
_resumeIdleAfterFramesetCompletesFlag = false;
}
@ -1042,7 +1050,7 @@ bool AIScriptIzo::ChangeAnimationMode(int mode) {
if (_animationState <= 0 || _animationState > 7) {
_animationState = 35;
_animationStateNext = 1;
_animationNext = 305;
_animationNext = kModelAnimationIzoUnderstandingTalk;
}
_resumeIdleAfterFramesetCompletesFlag = false;
}

View File

@ -271,101 +271,101 @@ bool AIScriptLeon::GoalChanged(int currentGoalNumber, int newGoalNumber) {
bool AIScriptLeon::UpdateAnimation(int *animation, int *frame) {
switch (_animationState) {
case 0:
*animation = 847;
*animation = kModelLeonIdle;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(847)) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelLeonIdle)) {
_animationFrame = 0;
}
break;
case 1:
*animation = 846;
*animation = kModelLeonWalking;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(846)) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelLeonWalking)) {
_animationFrame = 0;
}
break;
case 2:
if (_animationFrame == 0 && _resumeIdleAfterFramesetCompletesFlag) {
*animation = 847;
*animation = kModelLeonIdle;
_animationState = 0;
} else {
*animation = 850;
*animation = kModelLeonCalmTalk;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(850)) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelLeonCalmTalk)) {
_animationFrame = 0;
}
}
break;
case 3:
*animation = 851;
*animation = kModelLeonComplainTalk;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(851)) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelLeonComplainTalk)) {
_animationFrame = 0;
_animationState = 2;
*animation = 850;
*animation = kModelLeonCalmTalk;
}
break;
case 4:
*animation = 852;
*animation = kModelLeonAwkwardTalk;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(852)) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelLeonAwkwardTalk)) {
_animationFrame = 0;
_animationState = 2;
*animation = 850;
*animation = kModelLeonCalmTalk;
}
break;
case 5:
*animation = 853;
*animation = kModelLeonDenyTalk;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(853)) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelLeonDenyTalk)) {
_animationFrame = 0;
_animationState = 2;
*animation = 850;
*animation = kModelLeonCalmTalk;
}
break;
case 6:
if (_animationFrame == 0 && _resumeIdleAfterFramesetCompletesFlag) {
Actor_Change_Animation_Mode(kActorLeon, 72);
*animation = 848;
*animation = kModelLeonGrabHoldHigh;
} else {
*animation = 854;
*animation = kModelLeonGrabTalk;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(854)) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelLeonGrabTalk)) {
_animationFrame = 0;
}
}
break;
case 7:
*animation = 855;
*animation = kModelLeonGrabAndGutPunchTalk;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(855)) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelLeonGrabAndGutPunchTalk)) {
_animationFrame = 0;
_animationState = 6;
*animation = 854;
*animation = kModelLeonGrabTalk;
}
break;
case 8:
*animation = 854;
*animation = kModelLeonGrabTalk;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(854)) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelLeonGrabTalk)) {
_animationFrame = 0;
}
break;
case 9:
*animation = 849;
*animation = kModelLeonGrabLetsGo;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(849)) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelLeonGrabLetsGo)) {
Actor_Change_Animation_Mode(kActorLeon, kAnimationModeIdle);
*animation = 847;
*animation = kModelLeonIdle;
_animationFrame = 0;
_animationState = 0;
if (Actor_Query_Goal_Number(kActorLeon) == kGoalLeonReleaseDeskClerk) {
@ -375,7 +375,7 @@ bool AIScriptLeon::UpdateAnimation(int *animation, int *frame) {
break;
case 10:
*animation = 856;
*animation = kModelLeonPunchAttack;
++_animationFrame;
if (_animationFrame == 6) {
Actor_Change_Animation_Mode(kActorMcCoy, kAnimationModeDie);
@ -383,7 +383,7 @@ bool AIScriptLeon::UpdateAnimation(int *animation, int *frame) {
}
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
*animation = 847;
*animation = kModelLeonIdle;
_animationFrame = 0;
Actor_Change_Animation_Mode(kActorLeon, kAnimationModeIdle);
}

View File

@ -246,7 +246,7 @@ bool AIScriptLuther::GoalChanged(int currentGoalNumber, int newGoalNumber) {
bool AIScriptLuther::UpdateAnimation(int *animation, int *frame) {
switch (_animationState) {
case 0:
*animation = 346;
*animation = kModelAnimationTwinsSitIdle;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
_animationFrame = 0;
@ -254,10 +254,10 @@ bool AIScriptLuther::UpdateAnimation(int *animation, int *frame) {
break;
case 1:
*animation = 348;
*animation = kModelAnimationTwinsSitLancePutsSomethingToTheLeft;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
*animation = 346;
*animation = kModelAnimationTwinsSitIdle;
_animationFrame = 0;
_animationState = 0;
Actor_Change_Animation_Mode(kActorLuther, kAnimationModeIdle);
@ -266,10 +266,10 @@ bool AIScriptLuther::UpdateAnimation(int *animation, int *frame) {
case 2:
if (_animationFrame == 0 && _resumeIdleAfterFramesetCompletesFlag) {
*animation = 346;
*animation = kModelAnimationTwinsSitIdle;
_animationState = 0;
} else {
*animation = 349;
*animation = kModelAnimationTwinsSitLanceShortCalmTalk;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
_animationFrame = 0;
@ -278,70 +278,70 @@ bool AIScriptLuther::UpdateAnimation(int *animation, int *frame) {
break;
case 3:
*animation = 350;
*animation = kModelAnimationTwinsSitLanceLongerCalmTalk;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
_animationFrame = 0;
_animationState = 2;
*animation = 349;
*animation = kModelAnimationTwinsSitLanceShortCalmTalk;
}
break;
case 4:
*animation = 351;
*animation = kModelAnimationTwinsSitLutherCalmTalk;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
_animationFrame = 0;
_animationState = 2;
*animation = 349;
*animation = kModelAnimationTwinsSitLanceShortCalmTalk;
}
break;
case 5:
*animation = 352;
*animation = kModelAnimationTwinsSitLutherMoreCalmTalk;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
_animationFrame = 0;
_animationState = 2;
*animation = 349;
*animation = kModelAnimationTwinsSitLanceShortCalmTalk;
}
break;
case 6:
*animation = 353;
*animation = kModelAnimationTwinsSitLanceMoreCalmTalk;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
_animationFrame = 0;
_animationState = 2;
*animation = 349;
*animation = kModelAnimationTwinsSitLanceShortCalmTalk;
}
break;
case 7:
*animation = 354;
*animation = kModelAnimationTwinsSitLutherProtestTalk;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
_animationFrame = 0;
_animationState = 2;
*animation = 349;
*animation = kModelAnimationTwinsSitLanceShortCalmTalk;
}
break;
case 8:
*animation = 355;
*animation = kModelAnimationTwinsSitLutherGoAheadTalk;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
_animationFrame = 0;
_animationState = 2;
*animation = 349;
*animation = kModelAnimationTwinsSitLanceShortCalmTalk;
}
break;
case 9:
*animation = 356;
*animation = kModelAnimationTwinsSitLutherHitsOrFeedsLance;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
*animation = 346;
*animation = kModelAnimationTwinsSitIdle;
_animationFrame = 0;
_animationState = 0;
Actor_Change_Animation_Mode(kActorLuther, kAnimationModeIdle);
@ -349,24 +349,24 @@ bool AIScriptLuther::UpdateAnimation(int *animation, int *frame) {
break;
case 10:
*animation = 357;
*animation = kModelAnimationTwinsSitDropForwards;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
Actor_Change_Animation_Mode(kActorLuther, 50);
*animation = 358;
*animation = kModelAnimationTwinsSitAlmostDeadLutherPushesButton;
_animationFrame = 0;
}
break;
case 11:
*animation = 358;
*animation = kModelAnimationTwinsSitAlmostDeadLutherPushesButton;
if (_animationFrame < Slice_Animation_Query_Number_Of_Frames(*animation) - 1) {
++_animationFrame;
}
break;
case 12:
*animation = 359;
*animation = kModelAnimationTwinsSitDieCompletely;
if (_animationFrame == 12) {
Ambient_Sounds_Play_Sound(kSfxHEADHIT2, 59, 0, 0, 20);
}

View File

@ -60,9 +60,9 @@ void AIScriptMaggie::Initialize() {
_animationNext = 0;
var_45F3F8 = 0;
var_45F3FC = 0;
var_45F400 = 0;
var_45F404 = 0;
var_45F408 = 0;
var_45F400 = 0; // only assigned to 0. Never checked. Unused.
var_45F404 = 0; // only assigned to 0. Never checked. Unused.
var_45F408 = 0; // only assigned to 0. Never checked. Unused.
Actor_Set_Goal_Number(kActorMaggie, kGoalMaggieMA02Default);
}

View File

@ -25,9 +25,10 @@
namespace BladeRunner {
AIScriptOfficerGrayford::AIScriptOfficerGrayford(BladeRunnerEngine *vm) : AIScriptBase(vm) {
_var1 = 0;
// _varChooseIdleAnimation can have valid values: 0, 1, 2
_varChooseIdleAnimation = 0;
_resumeIdleAfterFramesetCompletesFlag = false;
_var3 = 0;
_varNumOfTimesToHoldCurrentFrame = 0;
}
void AIScriptOfficerGrayford::Initialize() {
@ -36,9 +37,9 @@ void AIScriptOfficerGrayford::Initialize() {
_animationStateNext = 0;
_animationNext = 0;
_var1 = 0;
_varChooseIdleAnimation = 0;
_resumeIdleAfterFramesetCompletesFlag = false;
_var3 = 0;
_varNumOfTimesToHoldCurrentFrame = 0;
Actor_Put_In_Set(kActorOfficerGrayford, kSetFreeSlotG);
Actor_Set_At_Waypoint(kActorOfficerGrayford, 39, 0); // kSetFreeSlotG
@ -914,7 +915,7 @@ bool AIScriptOfficerGrayford::GoalChanged(int currentGoalNumber, int newGoalNumb
case kGoalOfficerGrayfordDead:
_animationState = 32;
_animationFrame = Slice_Animation_Query_Number_Of_Frames(624) - 1;
_animationFrame = Slice_Animation_Query_Number_Of_Frames(kModelAnimationOfficerGrayfordShotDead) - 1;
return true;
}
@ -924,67 +925,67 @@ bool AIScriptOfficerGrayford::GoalChanged(int currentGoalNumber, int newGoalNumb
bool AIScriptOfficerGrayford::UpdateAnimation(int *animation, int *frame) {
switch (_animationState) {
case 0:
if (!_var1) {
*animation = 625;
if (_varChooseIdleAnimation == 0) {
*animation = kModelAnimationOfficerGrayfordOscillateIdle;
}
if (_var1 == 1) {
*animation = 626;
if (_varChooseIdleAnimation == 1) {
*animation = kModelAnimationOfficerGrayfordLookAroundDownwardsIdle;
}
if (_var1 == 2) {
*animation = 627;
if (_varChooseIdleAnimation == 2) {
*animation = kModelAnimationOfficerGrayfordLookAroundSidewaysIdle;
}
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
_animationFrame = 0;
_var1 = 0;
_varChooseIdleAnimation = 0;
if (!Random_Query(0, 1)) {
_var1 = Random_Query(1, 2);
_varChooseIdleAnimation = Random_Query(1, 2);
}
}
break;
case 1:
*animation = 618;
*animation = kModelAnimationOfficerGrayfordWalking;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(618)) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationOfficerGrayfordWalking)) {
_animationFrame = 0;
}
break;
case 2:
*animation = 619;
*animation = kModelAnimationOfficerGrayfordRunning;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(619)) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationOfficerGrayfordRunning)) {
_animationFrame = 0;
}
break;
case 5:
*animation = 611;
*animation = kModelAnimationOfficerGrayfordCombatRunning;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(611)) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationOfficerGrayfordCombatRunning)) {
_animationFrame = 0;
}
break;
case 6:
*animation = 610;
*animation = kModelAnimationOfficerGrayfordCombatWalking;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(610)) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationOfficerGrayfordCombatWalking)) {
_animationFrame = 0;
}
break;
case 9:
if (_animationFrame == 0 && _resumeIdleAfterFramesetCompletesFlag) {
*animation = 625;
*animation = kModelAnimationOfficerGrayfordOscillateIdle;
_animationState = 0;
_var1 = 0;
_varChooseIdleAnimation = 0;
_resumeIdleAfterFramesetCompletesFlag = false;
} else {
*animation = 629;
*animation = kModelAnimationOfficerGrayfordCalmExplainTalk;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(629)) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationOfficerGrayfordCalmExplainTalk)) {
_animationFrame = 0;
_animationState = Random_Query(9, 11);
}
@ -992,115 +993,115 @@ bool AIScriptOfficerGrayford::UpdateAnimation(int *animation, int *frame) {
break;
case 10:
*animation = 630;
*animation = kModelAnimationOfficerGrayfordCalmRightHandMoveTalk;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(630)) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationOfficerGrayfordCalmRightHandMoveTalk)) {
_animationFrame = 0;
_animationState = 9;
*animation = 629;
*animation = kModelAnimationOfficerGrayfordCalmExplainTalk;
}
break;
case 11:
*animation = 631;
*animation = kModelAnimationOfficerGrayfordScratchHeadTalk;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(631)) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationOfficerGrayfordScratchHeadTalk)) {
_animationFrame = 0;
_animationState = 9;
*animation = 629;
*animation = kModelAnimationOfficerGrayfordCalmExplainTalk;
}
break;
case 12:
*animation = 632;
*animation = kModelAnimationOfficerGrayfordQuickHandMoveTalk;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(632)) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationOfficerGrayfordQuickHandMoveTalk)) {
_animationFrame = 0;
_animationState = 9;
*animation = 629;
*animation = kModelAnimationOfficerGrayfordCalmExplainTalk;
}
break;
case 13:
*animation = 633;
*animation = kModelAnimationOfficerGrayfordSevereTalk;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(633)) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationOfficerGrayfordSevereTalk)) {
_animationFrame = 0;
_animationState = 9;
*animation = 629;
*animation = kModelAnimationOfficerGrayfordCalmExplainTalk;
}
break;
case 14:
*animation = 634;
*animation = kModelAnimationOfficerGrayfordMockTalk;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(634)) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationOfficerGrayfordMockTalk)) {
_animationFrame = 0;
_animationState = 9;
*animation = 629;
*animation = kModelAnimationOfficerGrayfordCalmExplainTalk;
}
break;
case 15:
*animation = 635;
*animation = kModelAnimationOfficerGrayfordPointingTalk;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(635)) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationOfficerGrayfordPointingTalk)) {
_animationFrame = 0;
_animationState = 9;
*animation = 629;
*animation = kModelAnimationOfficerGrayfordCalmExplainTalk;
}
break;
case 16:
*animation = 636;
*animation = kModelAnimationOfficerGrayfordQuestionTalk;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(636)) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationOfficerGrayfordQuestionTalk)) {
_animationFrame = 0;
_animationState = 9;
*animation = 629;
*animation = kModelAnimationOfficerGrayfordCalmExplainTalk;
}
break;
case 17:
*animation = 637;
*animation = kModelAnimationOfficerGrayfordDismissTalk;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(637)) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationOfficerGrayfordDismissTalk)) {
_animationFrame = 0;
_animationState = 9;
*animation = 629;
*animation = kModelAnimationOfficerGrayfordCalmExplainTalk;
}
break;
case 18:
// fall through
case 19:
*animation = 605;
*animation = kModelAnimationOfficerGrayfordCombatIdle;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(605)) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationOfficerGrayfordCombatIdle)) {
_animationFrame = 0;
}
break;
case 20:
*animation = 615;
*animation = kModelAnimationOfficerGrayfordCombatUnholsterGun;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(615)) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationOfficerGrayfordCombatUnholsterGun)) {
_animationFrame = 0;
_animationState = 19;
}
break;
case 21:
*animation = 616;
*animation = kModelAnimationOfficerGrayfordCombatHolsterGun;
++_animationFrame;
if (_animationFrame == 11) {
Ambient_Sounds_Play_Sound(kSfxHOLSTER1, 25, 0, 0, 25);
}
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
*animation = 625;
*animation = kModelAnimationOfficerGrayfordOscillateIdle;
_animationFrame = 0;
_animationState = 0;
_var1 = 0;
_varChooseIdleAnimation = 0;
if (Actor_Query_Goal_Number(kActorOfficerGrayford) == kGoalOfficerGrayfordArrivesToDR04) {
Actor_Set_Goal_Number(kActorOfficerGrayford, kGoalOfficerGrayfordArrivedAtDR04);
}
@ -1108,7 +1109,7 @@ bool AIScriptOfficerGrayford::UpdateAnimation(int *animation, int *frame) {
break;
case 22:
*animation = 617;
*animation = kModelAnimationOfficerGrayfordCombatFireGun;
++_animationFrame;
if (_animationFrame == 3) {
int snd;
@ -1122,7 +1123,7 @@ bool AIScriptOfficerGrayford::UpdateAnimation(int *animation, int *frame) {
if (_animationFrame == 5) {
Actor_Combat_AI_Hit_Attempt(kActorOfficerGrayford);
}
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(617)) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationOfficerGrayfordCombatFireGun)) {
_animationState = 19;
_animationFrame = 0;
Actor_Change_Animation_Mode(kActorOfficerGrayford, kAnimationModeCombatIdle);
@ -1130,49 +1131,49 @@ bool AIScriptOfficerGrayford::UpdateAnimation(int *animation, int *frame) {
break;
case 23:
*animation = 617;
*animation = kModelAnimationOfficerGrayfordCombatFireGun;
if (_animationFrame < 2) {
++_animationFrame;
}
break;
case 24:
*animation = 617;
*animation = kModelAnimationOfficerGrayfordCombatFireGun;
--_animationFrame;
if (_animationFrame < 0) {
_animationFrame = 0;
_animationState = 21;
*animation = 616;
*animation = kModelAnimationOfficerGrayfordCombatHolsterGun;
}
break;
case 27:
*animation = 608;
*animation = kModelAnimationOfficerGrayfordCombatGotHitRight;
++_animationFrame;
if (_animationFrame > Slice_Animation_Query_Number_Of_Frames(608) - 1) {
if (_animationFrame > Slice_Animation_Query_Number_Of_Frames(kModelAnimationOfficerGrayfordCombatGotHitRight) - 1) {
_animationFrame = 0;
_animationState = 19;
*animation = 625;
*animation = kModelAnimationOfficerGrayfordOscillateIdle;
Actor_Change_Animation_Mode(kActorOfficerGrayford, kAnimationModeCombatIdle);
}
break;
case 28:
*animation = 609;
*animation = kModelAnimationOfficerGrayfordCombatGotHitLeft;
++_animationFrame;
if (_animationFrame > Slice_Animation_Query_Number_Of_Frames(609) - 1) {
if (_animationFrame > Slice_Animation_Query_Number_Of_Frames(kModelAnimationOfficerGrayfordCombatGotHitLeft) - 1) {
_animationFrame = 0;
_animationState = 19;
*animation = 625;
*animation = kModelAnimationOfficerGrayfordOscillateIdle;
Actor_Change_Animation_Mode(kActorOfficerGrayford, kAnimationModeCombatIdle);
}
break;
case 29:
*animation = 622;
*animation = kModelAnimationOfficerGrayfordGotHitFront;
++_animationFrame;
if (_animationFrame > Slice_Animation_Query_Number_Of_Frames(622) - 1) {
*animation = 605;
if (_animationFrame > Slice_Animation_Query_Number_Of_Frames(kModelAnimationOfficerGrayfordGotHitFront) - 1) {
*animation = kModelAnimationOfficerGrayfordCombatIdle;
_animationFrame = 0;
_animationState = 0;
Actor_Change_Animation_Mode(kActorOfficerGrayford, 0);
@ -1180,10 +1181,10 @@ bool AIScriptOfficerGrayford::UpdateAnimation(int *animation, int *frame) {
break;
case 30:
*animation = 623;
*animation = kModelAnimationOfficerGrayfordGotHitBack;
++_animationFrame;
if (_animationFrame > Slice_Animation_Query_Number_Of_Frames(623) - 1) {
*animation = 605;
if (_animationFrame > Slice_Animation_Query_Number_Of_Frames(kModelAnimationOfficerGrayfordGotHitBack) - 1) {
*animation = kModelAnimationOfficerGrayfordCombatIdle;
_animationFrame = 0;
_animationState = 0;
Actor_Change_Animation_Mode(kActorOfficerGrayford, 0);
@ -1191,80 +1192,80 @@ bool AIScriptOfficerGrayford::UpdateAnimation(int *animation, int *frame) {
break;
case 31:
*animation = 612;
if (_animationFrame < Slice_Animation_Query_Number_Of_Frames(612) - 1) {
*animation = kModelAnimationOfficerGrayfordCombatShotDead;
if (_animationFrame < Slice_Animation_Query_Number_Of_Frames(kModelAnimationOfficerGrayfordCombatShotDead) - 1) {
++_animationFrame;
}
break;
case 32:
*animation = 624;
if (_animationFrame < Slice_Animation_Query_Number_Of_Frames(624) - 1) {
*animation = kModelAnimationOfficerGrayfordShotDead;
if (_animationFrame < Slice_Animation_Query_Number_Of_Frames(kModelAnimationOfficerGrayfordShotDead) - 1) {
++_animationFrame;
}
break;
case 34:
*animation = 639;
if (_var3) {
--_var3;
*animation = kModelAnimationOfficerGrayfordTalkToAndLowerRadio;
if (_varNumOfTimesToHoldCurrentFrame > 0) {
--_varNumOfTimesToHoldCurrentFrame;
} else {
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(639)) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationOfficerGrayfordTalkToAndLowerRadio)) {
if (Random_Query(0, 1)) {
*animation = 641;
*animation = kModelAnimationOfficerGrayfordPutAwayRadioInPocket;
_animationState = 37;
} else {
*animation = 638;
*animation = kModelAnimationOfficerGrayfordPlaceRadioToEar;
_animationState = 35;
}
_animationFrame = 0;
} else {
if (_animationFrame == 12) {
_var3 = Random_Query(5, 18);
_varNumOfTimesToHoldCurrentFrame = Random_Query(5, 18);
}
}
}
break;
case 35:
*animation = 638;
if (_var3) {
--_var3;
*animation = kModelAnimationOfficerGrayfordPlaceRadioToEar;
if (_varNumOfTimesToHoldCurrentFrame > 0) {
--_varNumOfTimesToHoldCurrentFrame;
} else {
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(638)) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationOfficerGrayfordPlaceRadioToEar)) {
if (Random_Query(0, 1)) {
*animation = 641;
*animation = kModelAnimationOfficerGrayfordPutAwayRadioInPocket;
_animationState = 37;
} else {
*animation = 639;
*animation = kModelAnimationOfficerGrayfordTalkToAndLowerRadio;
_animationState = 34;
}
_animationFrame = 0;
} else {
if (_animationFrame == 10) {
_var3 = Random_Query(5, 18);
_varNumOfTimesToHoldCurrentFrame = Random_Query(5, 18);
}
}
}
break;
case 36:
*animation = 640;
*animation = kModelAnimationOfficerGrayfordTakeOutRadioFromPocket;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(640)) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationOfficerGrayfordTakeOutRadioFromPocket)) {
_animationFrame = 0;
_animationState = 34;
*animation = 639;
*animation = kModelAnimationOfficerGrayfordTalkToAndLowerRadio;
}
break;
case 37:
*animation = 641;
*animation = kModelAnimationOfficerGrayfordPutAwayRadioInPocket;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(641)) {
*animation = 625;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationOfficerGrayfordPutAwayRadioInPocket)) {
*animation = kModelAnimationOfficerGrayfordOscillateIdle;
_animationState = 0;
_animationFrame = 0;
@ -1283,7 +1284,8 @@ bool AIScriptOfficerGrayford::UpdateAnimation(int *animation, int *frame) {
break;
default:
*animation = 399;
// Dummy placeholder, kModelAnimationZubenWalking (399) is a Zuben animation
*animation = kModelAnimationZubenWalking;
break;
}
*frame = _animationFrame;

View File

@ -26,16 +26,17 @@
namespace BladeRunner {
AIScriptOfficerLeary::AIScriptOfficerLeary(BladeRunnerEngine *vm) : AIScriptBase(vm) {
var_45D5B8 = 0;
var_45D5BC = 0;
// _varChooseIdleAnimation can have valid values: 0, 1, 2
_varChooseIdleAnimation = 0;
_idleModeRequestedWhileInTalkingState = false;
}
void AIScriptOfficerLeary::Initialize() {
_animationState = 0;
_animationFrame = 0;
_animationStateNext = 0;
var_45D5B8 = 0;
var_45D5BC = 0;
_varChooseIdleAnimation = 0;
_idleModeRequestedWhileInTalkingState = false;
_animationNext = 0;
Actor_Put_In_Set(kActorOfficerLeary, kSetRC01);
@ -722,22 +723,22 @@ bool AIScriptOfficerLeary::GoalChanged(int currentGoalNumber, int newGoalNumber)
bool AIScriptOfficerLeary::UpdateAnimation(int *animation, int *frame) {
switch (_animationState) {
case 32:
*animation = 603;
*animation = kModelAnimationOfficerLearyPutNotepadAway;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(603)) {
*animation = 589;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationOfficerLearyPutNotepadAway)) {
*animation = kModelAnimationOfficerLearyOscillateIdle;
_animationState = 0;
var_45D5B8 = 0;
_varChooseIdleAnimation = 0;
_animationFrame = 0;
}
*frame = _animationFrame;
return true;
case 31:
*animation = 604;
*animation = kModelAnimationOfficerLearyTakeOutNotepad;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(604)) {
*animation = 601;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationOfficerLearyTakeOutNotepad)) {
*animation = kModelAnimationOfficerLearyTakingNotes;
_animationState = 1;
_animationFrame = 0;
}
@ -745,10 +746,10 @@ bool AIScriptOfficerLeary::UpdateAnimation(int *animation, int *frame) {
return true;
case 30:
*animation = 587;
*animation = kModelAnimationOfficerLearyGotHitBack;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(587)) {
*animation = 589;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationOfficerLearyGotHitBack)) {
*animation = kModelAnimationOfficerLearyOscillateIdle;
_animationState = 0;
_animationFrame = 0;
Actor_Change_Animation_Mode(kActorOfficerLeary, kAnimationModeIdle);
@ -757,10 +758,10 @@ bool AIScriptOfficerLeary::UpdateAnimation(int *animation, int *frame) {
return true;
case 29:
*animation = 586;
*animation = kModelAnimationOfficerLearyGotHitFront;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(586)) {
*animation = 589;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationOfficerLearyGotHitFront)) {
*animation = kModelAnimationOfficerLearyOscillateIdle;
_animationState = 0;
_animationFrame = 0;
Actor_Change_Animation_Mode(kActorOfficerLeary, kAnimationModeIdle);
@ -769,47 +770,47 @@ bool AIScriptOfficerLeary::UpdateAnimation(int *animation, int *frame) {
return true;
case 28:
*animation = 576;
if (_animationFrame < Slice_Animation_Query_Number_Of_Frames(576) - 1) {
*animation = kModelAnimationOfficerLearyCombatShotDead;
if (_animationFrame < Slice_Animation_Query_Number_Of_Frames(kModelAnimationOfficerLearyCombatShotDead) - 1) {
++_animationFrame;
}
*frame = _animationFrame;
return true;
case 27:
*animation = 588;
if (_animationFrame < Slice_Animation_Query_Number_Of_Frames(588) - 1) {
*animation = kModelAnimationOfficerLearyShotDead;
if (_animationFrame < Slice_Animation_Query_Number_Of_Frames(kModelAnimationOfficerLearyShotDead) - 1) {
++_animationFrame;
}
*frame = _animationFrame;
return true;
case 26:
*animation = 573;
*animation = kModelAnimationOfficerLearyCombatGotHitLeft;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(573)) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationOfficerLearyCombatGotHitLeft)) {
_animationState = 21;
_animationFrame = 0;
*animation = 571;
*animation = kModelAnimationOfficerLearyCombatIdle;
Actor_Change_Animation_Mode(kActorOfficerLeary, kAnimationModeCombatIdle);
}
*frame = _animationFrame;
return true;
case 25:
*animation = 572;
*animation = kModelAnimationOfficerLearyCombatGotHitRight;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(572)) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationOfficerLearyCombatGotHitRight)) {
_animationState = 21;
_animationFrame = 0;
*animation = 571;
*animation = kModelAnimationOfficerLearyCombatIdle;
Actor_Change_Animation_Mode(kActorOfficerLeary, kAnimationModeCombatIdle);
}
*frame = _animationFrame;
return true;
case 24:
*animation = 581;
*animation = kModelAnimationOfficerLearyCombatFireGun;
++_animationFrame;
if (_animationFrame == 4) {
if (Random_Query(1, 2) == 1) {
@ -821,20 +822,20 @@ bool AIScriptOfficerLeary::UpdateAnimation(int *animation, int *frame) {
if (_animationFrame == 5) {
Actor_Combat_AI_Hit_Attempt(kActorOfficerLeary);
}
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(581)) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationOfficerLearyCombatFireGun)) {
_animationState = 21;
_animationFrame = 0;
*animation = 571;
*animation = kModelAnimationOfficerLearyCombatIdle;
Actor_Change_Animation_Mode(kActorOfficerLeary, kAnimationModeCombatIdle);
}
*frame = _animationFrame;
return true;
case 23:
*animation = 580;
*animation = kModelAnimationOfficerLearyCombatHolsterGun;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(580)) {
*animation = 589;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationOfficerLearyCombatHolsterGun)) {
*animation = kModelAnimationOfficerLearyOscillateIdle;
_animationState = 0;
_animationFrame = 0;
}
@ -842,143 +843,143 @@ bool AIScriptOfficerLeary::UpdateAnimation(int *animation, int *frame) {
return true;
case 22:
*animation = 579;
*animation = kModelAnimationOfficerLearyCombatUnholsterGun;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(579)) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationOfficerLearyCombatUnholsterGun)) {
_animationState = 21;
_animationFrame = 0;
*animation = 571;
*animation = kModelAnimationOfficerLearyCombatIdle;
}
*frame = _animationFrame;
return true;
case 21:
*animation = 571;
*animation = kModelAnimationOfficerLearyCombatIdle;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(571)) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationOfficerLearyCombatIdle)) {
_animationFrame = 0;
}
*frame = _animationFrame;
return true;
case 20:
*animation = 571;
*animation = kModelAnimationOfficerLearyCombatIdle;
++_animationFrame;
if (_animationFrame > Slice_Animation_Query_Number_Of_Frames(571) - 1) {
if (_animationFrame > Slice_Animation_Query_Number_Of_Frames(kModelAnimationOfficerLearyCombatIdle) - 1) {
_animationFrame = 0;
}
*frame = _animationFrame;
return true;
case 19:
*animation = 600;
*animation = kModelAnimationOfficerLearyScratchHeadApologyTalk;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(600)) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationOfficerLearyScratchHeadApologyTalk)) {
_animationState = 11;
_animationFrame = 0;
*animation = 592;
*animation = kModelAnimationOfficerLearyCalmExplainTalk;
}
*frame = _animationFrame;
return true;
case 18:
*animation = 599;
*animation = kModelAnimationOfficerLearyHandsOnWaistTalk;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(599)) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationOfficerLearyHandsOnWaistTalk)) {
_animationState = 11;
_animationFrame = 0;
*animation = 592;
*animation = kModelAnimationOfficerLearyCalmExplainTalk;
}
*frame = _animationFrame;
return true;
case 17:
*animation = 598;
*animation = kModelAnimationOfficerLearyUrgeOrQuestionTalk;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(598)) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationOfficerLearyUrgeOrQuestionTalk)) {
_animationState = 11;
_animationFrame = 0;
*animation = 592;
*animation = kModelAnimationOfficerLearyCalmExplainTalk;
}
*frame = _animationFrame;
return true;
case 16:
*animation = 597;
*animation = kModelAnimationOfficerLearyMoreUpsetTalk;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(597)) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationOfficerLearyMoreUpsetTalk)) {
_animationState = 11;
_animationFrame = 0;
*animation = 592;
*animation = kModelAnimationOfficerLearyCalmExplainTalk;
}
*frame = _animationFrame;
return true;
case 15:
*animation = 596;
*animation = kModelAnimationOfficerLearyUpsetOrCommandTalk;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(596)) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationOfficerLearyUpsetOrCommandTalk)) {
_animationState = 11;
_animationFrame = 0;
*animation = 592;
*animation = kModelAnimationOfficerLearyCalmExplainTalk;
}
*frame = _animationFrame;
return true;
case 14:
*animation = 595;
*animation = kModelAnimationOfficerLearyWarnOrThreatenTalk;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(595)) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationOfficerLearyWarnOrThreatenTalk)) {
_animationState = 11;
_animationFrame = 0;
*animation = 592;
*animation = kModelAnimationOfficerLearyCalmExplainTalk;
}
*frame = _animationFrame;
return true;
case 13:
*animation = 594;
*animation = kModelAnimationOfficerLearyLongerExplainTalk;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(594)) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationOfficerLearyLongerExplainTalk)) {
_animationState = 11;
_animationFrame = 0;
*animation = 592;
*animation = kModelAnimationOfficerLearyCalmExplainTalk;
}
*frame = _animationFrame;
return true;
case 12:
*animation = 593;
*animation = kModelAnimationOfficerLearyIndicateTalk;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(593)) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationOfficerLearyIndicateTalk)) {
_animationState = 11;
_animationFrame = 0;
*animation = 592;
*animation = kModelAnimationOfficerLearyCalmExplainTalk;
}
*frame = _animationFrame;
return true;
case 11:
if (_animationFrame <= 2) {
var_45D5BC = 0;
_idleModeRequestedWhileInTalkingState = false;
_animationState = 0;
_animationFrame = 0;
*animation = 589;
var_45D5B8 = Random_Query(0, 1);
*animation = kModelAnimationOfficerLearyOscillateIdle;
_varChooseIdleAnimation = Random_Query(0, 1);
*frame = _animationFrame;
return true;
}
*animation = 592;
*animation = kModelAnimationOfficerLearyCalmExplainTalk;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(592)) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationOfficerLearyCalmExplainTalk)) {
_animationFrame = 0;
if (var_45D5BC) {
var_45D5BC = 0;
if (_idleModeRequestedWhileInTalkingState) {
_idleModeRequestedWhileInTalkingState = false;
_animationState = 0;
_animationFrame = 0;
*animation = 589;
var_45D5B8 = Random_Query(0, 1);
*animation = kModelAnimationOfficerLearyOscillateIdle;
_varChooseIdleAnimation = Random_Query(0, 1);
} else {
_animationState = Random_Query(0, 8) + 11;
}
@ -988,72 +989,72 @@ bool AIScriptOfficerLeary::UpdateAnimation(int *animation, int *frame) {
return true;
case 10:
*animation = 578;
*animation = kModelAnimationOfficerLearyCombatClimbStairsDown;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(578)) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationOfficerLearyCombatClimbStairsDown)) {
_animationFrame = 0;
}
*frame = _animationFrame;
return true;
case 9:
*animation = 577;
*animation = kModelAnimationOfficerLearyCombatClimbStairsUp;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(577)) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationOfficerLearyCombatClimbStairsUp)) {
_animationFrame = 0;
}
*frame = _animationFrame;
return true;
case 8:
*animation = 575;
*animation = kModelAnimationOfficerLearyCombatRunning;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(575)) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationOfficerLearyCombatRunning)) {
_animationFrame = 0;
}
*frame = _animationFrame;
return true;
case 7:
*animation = 574;
*animation = kModelAnimationOfficerLearyCombatWalking;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(574)) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationOfficerLearyCombatWalking)) {
_animationFrame = 0;
}
*frame = _animationFrame;
return true;
case 6:
*animation = 585;
*animation = kModelAnimationOfficerLearyClimbStairsDown;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(585)) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationOfficerLearyClimbStairsDown)) {
_animationFrame = 0;
}
*frame = _animationFrame;
return true;
case 5:
*animation = 584;
*animation = kModelAnimationOfficerLearyClimbStairsUp;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(584)) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationOfficerLearyClimbStairsUp)) {
_animationFrame = 0;
}
*frame = _animationFrame;
return true;
case 4:
*animation = 583;
*animation = kModelAnimationOfficerLearyRunning;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(583)) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationOfficerLearyRunning)) {
_animationFrame = 0;
}
*frame = _animationFrame;
return true;
case 3:
*animation = 582;
*animation = kModelAnimationOfficerLearyWalking;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(582)) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationOfficerLearyWalking)) {
_animationFrame = 0;
}
*frame = _animationFrame;
@ -1061,23 +1062,23 @@ bool AIScriptOfficerLeary::UpdateAnimation(int *animation, int *frame) {
case 2:
if (Game_Flag_Query(kFlagOfficerLearyTakingNotes)) {
*animation = 603;
*animation = kModelAnimationOfficerLearyPutNotepadAway;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(603)) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationOfficerLearyPutNotepadAway)) {
Game_Flag_Reset(kFlagOfficerLearyTakingNotes);
_animationFrame = 0;
_animationState = _animationStateNext;
*animation = _animationNext;
}
} else {
if (var_45D5B8 == 0) {
*animation = 589;
if (_varChooseIdleAnimation == 0) {
*animation = kModelAnimationOfficerLearyOscillateIdle;
}
if (var_45D5B8 == 1) {
*animation = 590;
if (_varChooseIdleAnimation == 1) {
*animation = kModelAnimationOfficerLearyLookAroundIdle;
}
if (var_45D5B8 == 2) {
*animation = 591;
if (_varChooseIdleAnimation == 2) {
*animation = kModelAnimationOfficerLearyRockBackForthIdle;
}
if (_animationFrame > Slice_Animation_Query_Number_Of_Frames(*animation) / 2) {
_animationFrame += 3;
@ -1099,15 +1100,15 @@ bool AIScriptOfficerLeary::UpdateAnimation(int *animation, int *frame) {
return true;
case 1:
*animation = 601;
*animation = kModelAnimationOfficerLearyTakingNotes;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(601)) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationOfficerLearyTakingNotes)) {
_animationFrame = 0;
}
if (!Game_Flag_Query(kFlagOfficerLearyTakingNotes)) {
_animationState = 32;
_animationFrame = 0;
*animation = 603;
*animation = kModelAnimationOfficerLearyPutNotepadAway;
}
*frame = _animationFrame;
return true;
@ -1117,34 +1118,34 @@ bool AIScriptOfficerLeary::UpdateAnimation(int *animation, int *frame) {
&& !Game_Flag_Query(kFlagRC01McCoyAndOfficerLearyTalking)) {
_animationState = 31;
_animationFrame = 0;
*animation = 604;
} else if (var_45D5B8 == 1) {
*animation = 590;
*animation = kModelAnimationOfficerLearyTakeOutNotepad;
} else if (_varChooseIdleAnimation == 1) {
*animation = kModelAnimationOfficerLearyLookAroundIdle;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(590)) {
var_45D5B8 = Random_Query(0, 2);
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationOfficerLearyLookAroundIdle)) {
_varChooseIdleAnimation = Random_Query(0, 2);
_animationFrame = 0;
}
} else if (var_45D5B8 == 2) {
*animation = 591;
} else if (_varChooseIdleAnimation == 2) {
*animation = kModelAnimationOfficerLearyRockBackForthIdle;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(591)) {
var_45D5B8 = Random_Query(0, 2);
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationOfficerLearyRockBackForthIdle)) {
_varChooseIdleAnimation = Random_Query(0, 2);
_animationFrame = 0;
}
} else if (var_45D5B8 == 0) {
*animation = 589;
} else if (_varChooseIdleAnimation == 0) {
*animation = kModelAnimationOfficerLearyOscillateIdle;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(589)) {
var_45D5B8 = Random_Query(0, 2);
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationOfficerLearyOscillateIdle)) {
_varChooseIdleAnimation = Random_Query(0, 2);
_animationFrame = 0;
}
}
*frame = _animationFrame;
return true;
default:
// TODO A bug? This is an animation of Zuben
*animation = 399;
// Dummy placeholder, kModelAnimationZubenWalking (399) is a Zuben animation
*animation = kModelAnimationZubenWalking;
*frame = _animationFrame;
return true;
}
@ -1187,7 +1188,7 @@ bool AIScriptOfficerLeary::ChangeAnimationMode(int mode) {
case 18:
// fall through
case 19:
var_45D5BC = 1;
_idleModeRequestedWhileInTalkingState = true;
break;
case 0:
@ -1198,7 +1199,7 @@ bool AIScriptOfficerLeary::ChangeAnimationMode(int mode) {
default:
_animationState = 0;
_animationFrame = 0;
var_45D5B8 = Random_Query(0, 1);
_varChooseIdleAnimation = Random_Query(0, 1);
break;
}
break;
@ -1217,7 +1218,7 @@ bool AIScriptOfficerLeary::ChangeAnimationMode(int mode) {
if (_animationState == 1) {
_animationState = 2;
_animationStateNext = 11;
_animationNext = 592;
_animationNext = kModelAnimationOfficerLearyCalmExplainTalk;
if (Game_Flag_Query(kFlagOfficerLearyTakingNotes)) {
_animationFrame = 0;
}
@ -1225,7 +1226,7 @@ bool AIScriptOfficerLeary::ChangeAnimationMode(int mode) {
else if (_animationState > 19) {
_animationState = 11;
_animationFrame = 0;
var_45D5BC = 0;
_idleModeRequestedWhileInTalkingState = false;
}
break;
@ -1280,14 +1281,14 @@ bool AIScriptOfficerLeary::ChangeAnimationMode(int mode) {
if (_animationState == 1) {
_animationState = 2;
_animationStateNext = 12;
_animationNext = 593;
_animationNext = kModelAnimationOfficerLearyIndicateTalk;
if (Game_Flag_Query(kFlagOfficerLearyTakingNotes)) {
_animationFrame = 0;
}
} else if (_animationState > 19) {
_animationState = 12;
_animationFrame = 0;
var_45D5BC = 0;
_idleModeRequestedWhileInTalkingState = false;
}
break;
@ -1295,14 +1296,14 @@ bool AIScriptOfficerLeary::ChangeAnimationMode(int mode) {
if (_animationState == 1) {
_animationState = 2;
_animationStateNext = 13;
_animationNext = 594;
_animationNext = kModelAnimationOfficerLearyLongerExplainTalk;
if (Game_Flag_Query(kFlagOfficerLearyTakingNotes)) {
_animationFrame = 0;
}
} else if (_animationState > 19) {
_animationState = 13;
_animationFrame = 0;
var_45D5BC = 0;
_idleModeRequestedWhileInTalkingState = false;
}
break;
@ -1310,14 +1311,14 @@ bool AIScriptOfficerLeary::ChangeAnimationMode(int mode) {
if (_animationState == 1) {
_animationState = 2;
_animationStateNext = 14;
_animationNext = 595;
_animationNext = kModelAnimationOfficerLearyWarnOrThreatenTalk;
if (Game_Flag_Query(kFlagOfficerLearyTakingNotes)) {
_animationFrame = 0;
}
} else if (_animationState > 19) {
_animationState = 14;
_animationFrame = 0;
var_45D5BC = 0;
_idleModeRequestedWhileInTalkingState = false;
}
break;
@ -1325,14 +1326,14 @@ bool AIScriptOfficerLeary::ChangeAnimationMode(int mode) {
if (_animationState == 1) {
_animationState = 2;
_animationStateNext = 15;
_animationNext = 596;
_animationNext = kModelAnimationOfficerLearyUpsetOrCommandTalk;
if (Game_Flag_Query(kFlagOfficerLearyTakingNotes)) {
_animationFrame = 0;
}
} else if (_animationState > 19) {
_animationState = 15;
_animationFrame = 0;
var_45D5BC = 0;
_idleModeRequestedWhileInTalkingState = false;
}
break;
@ -1340,14 +1341,14 @@ bool AIScriptOfficerLeary::ChangeAnimationMode(int mode) {
if (_animationState == 1) {
_animationState = 2;
_animationStateNext = 16;
_animationNext = 597;
_animationNext = kModelAnimationOfficerLearyMoreUpsetTalk;
if (Game_Flag_Query(kFlagOfficerLearyTakingNotes)) {
_animationFrame = 0;
}
} else if (_animationState > 19) {
_animationState = 16;
_animationFrame = 0;
var_45D5BC = 0;
_idleModeRequestedWhileInTalkingState = false;
}
break;
@ -1355,14 +1356,14 @@ bool AIScriptOfficerLeary::ChangeAnimationMode(int mode) {
if (_animationState == 1) {
_animationState = 2;
_animationStateNext = 17;
_animationNext = 598;
_animationNext = kModelAnimationOfficerLearyUrgeOrQuestionTalk;
if (Game_Flag_Query(kFlagOfficerLearyTakingNotes)) {
_animationFrame = 0;
}
} else if (_animationState > 19) {
_animationState = 17;
_animationFrame = 0;
var_45D5BC = 0;
_idleModeRequestedWhileInTalkingState = false;
}
break;
@ -1370,14 +1371,14 @@ bool AIScriptOfficerLeary::ChangeAnimationMode(int mode) {
if (_animationState == 1) {
_animationState = 2;
_animationStateNext = 18;
_animationNext = 599;
_animationNext = kModelAnimationOfficerLearyHandsOnWaistTalk;
if (Game_Flag_Query(kFlagOfficerLearyTakingNotes)) {
_animationFrame = 0;
}
} else if (_animationState > 19) {
_animationState = 18;
_animationFrame = 0;
var_45D5BC = 0;
_idleModeRequestedWhileInTalkingState = false;
}
break;
@ -1385,14 +1386,14 @@ bool AIScriptOfficerLeary::ChangeAnimationMode(int mode) {
if (_animationState == 1) {
_animationState = 2;
_animationStateNext = 19;
_animationNext = 600;
_animationNext = kModelAnimationOfficerLearyScratchHeadApologyTalk;
if (Game_Flag_Query(kFlagOfficerLearyTakingNotes)) {
_animationFrame = 0;
}
} else if (_animationState > 19) {
_animationState = 19;
_animationFrame = 0;
var_45D5BC = 0;
_idleModeRequestedWhileInTalkingState = false;
}
break;

View File

@ -27,8 +27,9 @@ namespace BladeRunner {
AIScriptSadik::AIScriptSadik(BladeRunnerEngine *vm) : AIScriptBase(vm) {
_resumeIdleAfterFramesetCompletesFlag = false;
_nextSoundId = -1; // changed from original (0) to be more clear that this is an invalid sfx id
_var2 = 0;
_var3 = 0;
// _varChooseIdleAnimation can have valid values: 0, 1
_varChooseIdleAnimation = 0;
_varNumOfTimesToHoldCurrentFrame = 0;
_var4 = 1;
}
@ -40,8 +41,8 @@ void AIScriptSadik::Initialize() {
_resumeIdleAfterFramesetCompletesFlag = false;
_nextSoundId = -1; // changed from original (0) to be more clear that this is an invalid sfx id
_var2 = 0;
_var3 = 0;
_varChooseIdleAnimation = 0;
_varNumOfTimesToHoldCurrentFrame = 0;
_var4 = 1;
Actor_Put_In_Set(kActorSadik, kSetFreeSlotA);
@ -496,40 +497,40 @@ bool AIScriptSadik::GoalChanged(int currentGoalNumber, int newGoalNumber) {
bool AIScriptSadik::UpdateAnimation(int *animation, int *frame) {
switch (_animationState) {
case 0:
if (_var2 == 1) {
*animation = 329;
if (_varChooseIdleAnimation == 1) {
*animation = kModelAnimationSadikShiftsShoulders;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(329)) {
*animation = 328;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationSadikShiftsShoulders)) {
*animation = kModelAnimationSadikIdle;
_animationFrame = 0;
_var2 = 0;
_varChooseIdleAnimation = 0;
}
} else if (_var2 == 0) {
*animation = 328;
if (_var3) {
--_var3;
} else if (_varChooseIdleAnimation == 0) {
*animation = kModelAnimationSadikIdle;
if (_varNumOfTimesToHoldCurrentFrame > 0) {
--_varNumOfTimesToHoldCurrentFrame;
if (!Random_Query(0, 6)) {
_var4 = -_var4;
}
} else {
_animationFrame += _var4;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(328)) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationSadikIdle)) {
_animationFrame = 0;
}
if (_animationFrame < 0) {
_animationFrame = Slice_Animation_Query_Number_Of_Frames(328) - 1;
_animationFrame = Slice_Animation_Query_Number_Of_Frames(kModelAnimationSadikIdle) - 1;
}
if (!Random_Query(0, 4)) {
_var3 = 1;
_varNumOfTimesToHoldCurrentFrame = 1;
}
if (_animationFrame == 0 || _animationFrame == 8) {
_var3 = Random_Query(2, 8);
_varNumOfTimesToHoldCurrentFrame = Random_Query(2, 8);
}
if (!Random_Query(0, 2)) {
if (_animationFrame == 0) {
_var2 = 1;
_var3 = 0;
*animation = 329;
_varChooseIdleAnimation = 1;
_varNumOfTimesToHoldCurrentFrame = 0;
*animation = kModelAnimationSadikShiftsShoulders;
}
}
}
@ -549,27 +550,27 @@ bool AIScriptSadik::UpdateAnimation(int *animation, int *frame) {
case 6:
switch (_animationState) {
case 1:
*animation = 323;
*animation = kModelAnimationSadikWalking;
break;
case 2:
*animation = 324;
*animation = kModelAnimationSadikRunning;
break;
case 3:
*animation = 317;
*animation = kModelAnimationSadikCombatWalking;
break;
case 4:
*animation = 318;
*animation = kModelAnimationSadikCombatRunning;
break;
case 6:
*animation = 340;
*animation = kModelAnimationSadikClimbLadderUp;
break;
case 5:
*animation = 339;
*animation = kModelAnimationSadikClimbLadderDown;
break;
}
++_animationFrame;
@ -579,40 +580,40 @@ bool AIScriptSadik::UpdateAnimation(int *animation, int *frame) {
break;
case 7:
*animation = 312;
*animation = kModelAnimationSadikCombatIdle;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(312)) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationSadikCombatIdle)) {
_animationFrame = 0;
}
break;
case 8:
*animation = 313;
*animation = kModelAnimationSadikCombatTurnRight;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(313)) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationSadikCombatTurnRight)) {
_animationFrame = 0;
_animationState = 7;
*animation = 312;
*animation = kModelAnimationSadikCombatIdle;
Actor_Change_Animation_Mode(kActorSadik, kAnimationModeCombatIdle);
}
break;
case 9:
*animation = 314;
*animation = kModelAnimationSadikCombatTurnLeft;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(314)) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationSadikCombatTurnLeft)) {
_animationFrame = 0;
_animationState = 7;
*animation = 312;
*animation = kModelAnimationSadikCombatIdle;
Actor_Change_Animation_Mode(kActorSadik, kAnimationModeCombatIdle);
}
break;
case 10:
*animation = 325;
*animation = kModelAnimationSadikGotHitFront;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(325)) {
*animation = 328;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationSadikGotHitFront)) {
*animation = kModelAnimationSadikIdle;
_animationFrame = 0;
_animationState = 0;
Actor_Change_Animation_Mode(kActorSadik, kAnimationModeIdle);
@ -620,10 +621,10 @@ bool AIScriptSadik::UpdateAnimation(int *animation, int *frame) {
break;
case 11:
*animation = 326;
*animation = kModelAnimationSadikGotHitMore;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(326)) {
*animation = 328;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationSadikGotHitMore)) {
*animation = kModelAnimationSadikIdle;
_animationFrame = 0;
_animationState = 0;
Actor_Change_Animation_Mode(kActorSadik, kAnimationModeIdle);
@ -631,63 +632,64 @@ bool AIScriptSadik::UpdateAnimation(int *animation, int *frame) {
break;
case 12:
*animation = 315;
*animation = kModelAnimationSadikCombatGotHitFront;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(315)) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationSadikCombatGotHitFront)) {
_animationFrame = 0;
_animationState = 7;
*animation = 312;
*animation = kModelAnimationSadikCombatIdle;
Actor_Change_Animation_Mode(kActorSadik, kAnimationModeCombatIdle);
}
break;
case 13:
*animation = 316;
*animation = kModelAnimationSadikCombatGotHitMore;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(316)) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationSadikCombatGotHitMore)) {
_animationFrame = 0;
_animationState = 7;
*animation = 312;
*animation = kModelAnimationSadikCombatIdle;
Actor_Change_Animation_Mode(kActorSadik, kAnimationModeCombatIdle);
}
break;
case 14:
*animation = 327;
if (_animationFrame < Slice_Animation_Query_Number_Of_Frames(327) - 1) {
*animation = kModelAnimationSadikShotDead;
if (_animationFrame < Slice_Animation_Query_Number_Of_Frames(kModelAnimationSadikShotDead) - 1) {
++_animationFrame;
}
break;
case 15:
*animation = 327;
if (_animationFrame < Slice_Animation_Query_Number_Of_Frames(327) - 1) {
// A bug? This is identical to case 14. Maybe make case 14 fall through?
*animation = kModelAnimationSadikShotDead;
if (_animationFrame < Slice_Animation_Query_Number_Of_Frames(kModelAnimationSadikShotDead) - 1) {
++_animationFrame;
}
break;
case 16:
*animation = 320;
*animation = kModelAnimationSadikCombatUnholsterGun;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(320)) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationSadikCombatUnholsterGun)) {
_animationFrame = 0;
_animationState = 7;
*animation = 312;
*animation = kModelAnimationSadikCombatIdle;
}
break;
case 17:
*animation = 321;
*animation = kModelAnimationSadikCombatHolsterGun;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(321)) {
*animation = 328;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationSadikCombatHolsterGun)) {
*animation = kModelAnimationSadikIdle;
_animationFrame = 0;
_animationState = 0;
}
break;
case 18:
*animation = 322;
*animation = kModelAnimationSadikCombatFireGunAndReturnToPoseIdle;
++_animationFrame;
if (_animationFrame == 5) {
int snd;
@ -701,23 +703,23 @@ bool AIScriptSadik::UpdateAnimation(int *animation, int *frame) {
if (_animationFrame == 7) {
Actor_Combat_AI_Hit_Attempt(kActorSadik);
}
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(322)) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationSadikCombatFireGunAndReturnToPoseIdle)) {
_animationFrame = 0;
_animationState = 7;
*animation = 312;
*animation = kModelAnimationSadikCombatIdle;
Actor_Change_Animation_Mode(kActorSadik, kAnimationModeCombatIdle);
}
break;
case 19:
*animation = 331;
*animation = kModelAnimationSadikCalmTalk;
if (_animationFrame == 0 && _resumeIdleAfterFramesetCompletesFlag) {
*animation = 328;
*animation = kModelAnimationSadikIdle;
_animationState = 0;
_resumeIdleAfterFramesetCompletesFlag = false;
} else {
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(331)) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationSadikCalmTalk)) {
_animationFrame = 0;
}
}
@ -738,46 +740,46 @@ bool AIScriptSadik::UpdateAnimation(int *animation, int *frame) {
case 26:
switch (_animationState) {
case 20:
*animation = 332;
*animation = kModelAnimationSadikMoreCalmTalk;
break;
case 21:
*animation = 333;
*animation = kModelAnimationSadikSuggestTalk;
break;
case 22:
*animation = 334;
*animation = kModelAnimationSadikUrgeTalk;
break;
case 23:
*animation = 335;
*animation = kModelAnimationSadikAccuseTalk;
break;
case 24:
*animation = 336;
*animation = kModelAnimationSadikProtestTalk;
break;
case 25:
*animation = 337;
*animation = kModelAnimationSadikMockTalk;
break;
default:
*animation = 338;
*animation = kModelAnimationSadikThisAndThatTalk;
break;
}
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
_animationFrame = 0;
_animationState = 19;
*animation = 331;
*animation = kModelAnimationSadikCalmTalk;
}
break;
case 27:
*animation = 330;
*animation = kModelAnimationSadikGesturePointOrGive;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(330)) {
*animation = 328;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationSadikGesturePointOrGive)) {
*animation = kModelAnimationSadikIdle;
_animationFrame = 0;
_animationState = 0;
Actor_Change_Animation_Mode(kActorSadik, kAnimationModeIdle);
@ -785,30 +787,30 @@ bool AIScriptSadik::UpdateAnimation(int *animation, int *frame) {
break;
case 28:
*animation = 341;
*animation = kModelAnimationSadikJumpAcross;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(341)) {
*animation = 328;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationSadikJumpAcross)) {
*animation = kModelAnimationSadikIdle;
_animationFrame = 0;
_animationState = 0;
}
break;
case 29:
*animation = 342;
*animation = kModelAnimationSadikHangingDropsDown;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(342)) {
*animation = 328;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationSadikHangingDropsDown)) {
*animation = kModelAnimationSadikIdle;
_animationFrame = 0;
_animationState = 0;
}
break;
case 30:
*animation = 343;
*animation = kModelAnimationSadikKicksSomeoneWhoIsDown;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(343)) {
*animation = 328;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationSadikKicksSomeoneWhoIsDown)) {
*animation = kModelAnimationSadikIdle;
_animationFrame = 0;
_animationState = 0;
Actor_Change_Animation_Mode(kActorSadik, kAnimationModeIdle);
@ -816,10 +818,10 @@ bool AIScriptSadik::UpdateAnimation(int *animation, int *frame) {
break;
case 31:
*animation = 344;
*animation = kModelAnimationSadikHoldsSomeoneAndPunches;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(344)) {
*animation = 328;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationSadikHoldsSomeoneAndPunches)) {
*animation = kModelAnimationSadikIdle;
_animationFrame = 0;
_animationState = 0;
Actor_Change_Animation_Mode(kActorSadik, kAnimationModeIdle);
@ -827,21 +829,23 @@ bool AIScriptSadik::UpdateAnimation(int *animation, int *frame) {
break;
case 32:
*animation = 345;
*animation = kModelAnimationSadikPicksUpAndThrowsMcCoy;
++_animationFrame;
if (_animationFrame == 23) {
_nextSoundId = kSfxMTLDOOR2;
}
if (_animationFrame >= 25) {
// TODO last frames 27-30 are empty
// but maybe we could still accept frames 25 and 26!
_animationFrame = 0;
_animationState = 0;
*animation = 328;
*animation = kModelAnimationSadikIdle;
Actor_Set_Goal_Number(kActorSadik, kGoalSadikBB11CatchMcCoy);
}
break;
case 33:
*animation = 344;
*animation = kModelAnimationSadikHoldsSomeoneAndPunches;
++_animationFrame;
if (Actor_Query_Goal_Number(kActorSadik) == kGoalSadikBB11KnockOutMcCoy) {
if (_animationFrame == 4) {
@ -852,7 +856,7 @@ bool AIScriptSadik::UpdateAnimation(int *animation, int *frame) {
}
}
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
*animation = 328;
*animation = kModelAnimationSadikIdle;
_animationFrame = 0;
_animationState = 0;
@ -864,7 +868,7 @@ bool AIScriptSadik::UpdateAnimation(int *animation, int *frame) {
break;
case 34:
*animation = 343;
*animation = kModelAnimationSadikKicksSomeoneWhoIsDown;
++_animationFrame;
if (_animationFrame == 4) {
if (Actor_Query_Goal_Number(kActorSadik) == kGoalSadikBB11KnockOutMcCoy) {
@ -877,7 +881,7 @@ bool AIScriptSadik::UpdateAnimation(int *animation, int *frame) {
}
if (_animationFrame >= 15) {
*animation = 328;
*animation = kModelAnimationSadikIdle;
_animationFrame = 0;
_animationState = 0;
Actor_Change_Animation_Mode(kActorSadik, kAnimationModeIdle);
@ -937,7 +941,7 @@ bool AIScriptSadik::ChangeAnimationMode(int mode) {
default:
_animationState = 0;
_animationFrame = 0;
_var3 = 0;
_varNumOfTimesToHoldCurrentFrame = 0;
break;
}
break;

View File

@ -146,35 +146,35 @@ bool AIScriptSebastian::GoalChanged(int currentGoalNumber, int newGoalNumber) {
bool AIScriptSebastian::UpdateAnimation(int *animation, int *frame) {
switch (_animationState) {
case 0:
*animation = 811;
*animation = kModelAnimationSebastianIdle;
++_animationFrame;
if (_animationFrame > Slice_Animation_Query_Number_Of_Frames(811) - 1) {
if (_animationFrame > Slice_Animation_Query_Number_Of_Frames(kModelAnimationSebastianIdle) - 1) {
_animationFrame = 0;
}
break;
case 1:
*animation = 809;
*animation = kModelAnimationSebastianWalking;
++_animationFrame;
if (_animationFrame > Slice_Animation_Query_Number_Of_Frames(809) - 1) {
if (_animationFrame > Slice_Animation_Query_Number_Of_Frames(kModelAnimationSebastianWalking) - 1) {
_animationFrame = 0;
}
break;
case 2:
*animation = 810;
*animation = kModelAnimationSebastianStepsBack;
++_animationFrame;
if (_animationFrame > Slice_Animation_Query_Number_Of_Frames(810) - 1) {
if (_animationFrame > Slice_Animation_Query_Number_Of_Frames(kModelAnimationSebastianStepsBack) - 1) {
Actor_Change_Animation_Mode(kActorSebastian, kAnimationModeIdle);
*animation = 811;
*animation = kModelAnimationSebastianIdle;
_animationFrame = 0;
_animationState = 0;
}
break;
case 3:
*animation = 821;
if (_animationFrame < Slice_Animation_Query_Number_Of_Frames(821) - 1) {
*animation = kModelAnimationSebastianTriesToRunHitsHeadAndFalls;
if (_animationFrame < Slice_Animation_Query_Number_Of_Frames(kModelAnimationSebastianTriesToRunHitsHeadAndFalls) - 1) {
++_animationFrame;
}
break;
@ -182,85 +182,85 @@ bool AIScriptSebastian::UpdateAnimation(int *animation, int *frame) {
case 4:
if (_animationFrame == 0 && _resumeIdleAfterFramesetCompletesFlag) {
Actor_Change_Animation_Mode(kActorSebastian, kAnimationModeIdle);
*animation = 811;
*animation = kModelAnimationSebastianIdle;
_animationState = 0;
_animationFrame = 0;
} else {
*animation = 813;
*animation = kModelAnimationSebastianCalmHeadNodLeftTalk;
++_animationFrame;
if (_animationFrame > Slice_Animation_Query_Number_Of_Frames(813) - 1) {
if (_animationFrame > Slice_Animation_Query_Number_Of_Frames(kModelAnimationSebastianCalmHeadNodLeftTalk) - 1) {
_animationFrame = 0;
}
}
break;
case 5:
*animation = 814;
*animation = kModelAnimationSebastianCalmHeadNodRightTalk;
++_animationFrame;
if (_animationFrame > Slice_Animation_Query_Number_Of_Frames(814) - 1) {
if (_animationFrame > Slice_Animation_Query_Number_Of_Frames(kModelAnimationSebastianCalmHeadNodRightTalk) - 1) {
_animationFrame = 0;
_animationState = 4;
*animation = 813;
*animation = kModelAnimationSebastianCalmHeadNodLeftTalk;
}
break;
case 6:
*animation = 815;
*animation = kModelAnimationSebastianSuggestTalk;
++_animationFrame;
if (_animationFrame > Slice_Animation_Query_Number_Of_Frames(815) - 1) {
if (_animationFrame > Slice_Animation_Query_Number_Of_Frames(kModelAnimationSebastianSuggestTalk) - 1) {
_animationFrame = 0;
_animationState = 4;
*animation = 813;
*animation = kModelAnimationSebastianCalmHeadNodLeftTalk;
}
break;
case 7:
*animation = 816;
*animation = kModelAnimationSebastianWonderingTalk;
++_animationFrame;
if (_animationFrame > Slice_Animation_Query_Number_Of_Frames(816) - 1) {
if (_animationFrame > Slice_Animation_Query_Number_Of_Frames(kModelAnimationSebastianWonderingTalk) - 1) {
_animationFrame = 0;
_animationState = 4;
*animation = 813;
*animation = kModelAnimationSebastianCalmHeadNodLeftTalk;
}
break;
case 8:
*animation = 817;
*animation = kModelAnimationSebastianPointingToSelfTalk;
++_animationFrame;
if (_animationFrame > Slice_Animation_Query_Number_Of_Frames(817) - 1) {
if (_animationFrame > Slice_Animation_Query_Number_Of_Frames(kModelAnimationSebastianPointingToSelfTalk) - 1) {
_animationFrame = 0;
_animationState = 4;
*animation = 813;
*animation = kModelAnimationSebastianCalmHeadNodLeftTalk;
}
break;
case 9:
*animation = 818;
*animation = kModelAnimationSebastianScratchEarTalk;
++_animationFrame;
if (_animationFrame > Slice_Animation_Query_Number_Of_Frames(818) - 1) {
if (_animationFrame > Slice_Animation_Query_Number_Of_Frames(kModelAnimationSebastianScratchEarTalk) - 1) {
_animationFrame = 0;
_animationState = 4;
*animation = 813;
*animation = kModelAnimationSebastianCalmHeadNodLeftTalk;
}
break;
case 10:
*animation = 819;
*animation = kModelAnimationSebastianAnnoyedTalk;
++_animationFrame;
if (_animationFrame > Slice_Animation_Query_Number_Of_Frames(819) - 1) {
if (_animationFrame > Slice_Animation_Query_Number_Of_Frames(kModelAnimationSebastianAnnoyedTalk) - 1) {
_animationFrame = 0;
_animationState = 4;
*animation = 813;
*animation = kModelAnimationSebastianCalmHeadNodLeftTalk;
}
break;
case 11:
*animation = 820;
*animation = kModelAnimationSebastianWaitTalk;
++_animationFrame;
if (_animationFrame > Slice_Animation_Query_Number_Of_Frames(820) - 1) {
if (_animationFrame > Slice_Animation_Query_Number_Of_Frames(kModelAnimationSebastianWaitTalk) - 1) {
_animationFrame = 0;
_animationState = 4;
*animation = 813;
*animation = kModelAnimationSebastianCalmHeadNodLeftTalk;
}
break;

View File

@ -26,8 +26,9 @@ namespace BladeRunner {
AIScriptSteele::AIScriptSteele(BladeRunnerEngine *vm) : AIScriptBase(vm) {
_resumeIdleAfterFramesetCompletesFlag = false;
_var1 = 0;
_var2 = 0;
// _varChooseIdleAnimation can have valid values: 0, 1, 3 (value 2 is skipped)
_varChooseIdleAnimation = 0;
_varNumOfTimesToHoldCurrentFrame = 0;
}
void AIScriptSteele::Initialize() {
@ -37,8 +38,8 @@ void AIScriptSteele::Initialize() {
_animationNext = 0;
_resumeIdleAfterFramesetCompletesFlag = false;
_var1 = 0;
_var2 = 0;
_varChooseIdleAnimation = 0;
_varNumOfTimesToHoldCurrentFrame = 0;
Actor_Put_In_Set(kActorSteele, kSetFreeSlotG);
Actor_Set_At_Waypoint(kActorSteele, 39, 0);
@ -1139,7 +1140,7 @@ bool AIScriptSteele::GoalChanged(int currentGoalNumber, int newGoalNumber) {
}
Game_Flag_Set(kFlagSteeleAimingAtGordo);
Actor_Change_Animation_Mode(kActorSteele, kAnimationModeIdle);
_var1 = 3;
_varChooseIdleAnimation = 3;
return true;
case kGoalSteeleNR01TalkToGordo:
@ -1504,7 +1505,7 @@ bool AIScriptSteele::GoalChanged(int currentGoalNumber, int newGoalNumber) {
bool AIScriptSteele::UpdateAnimation(int *animation, int *frame) {
switch (_animationState) {
case 0:
switch (_var1) {
switch (_varChooseIdleAnimation) {
case 0:
*animation = kModelAnimationSteeleIdle;
++_animationFrame;
@ -1512,8 +1513,8 @@ bool AIScriptSteele::UpdateAnimation(int *animation, int *frame) {
_animationFrame = 0;
if (Game_Flag_Query(kFlagSteeleSmoking)) {
_animationState = 41;
_var1 = 1;
_var2 = 0;
_varChooseIdleAnimation = 1;
_varNumOfTimesToHoldCurrentFrame = 0;
}
}
break;
@ -1521,8 +1522,8 @@ bool AIScriptSteele::UpdateAnimation(int *animation, int *frame) {
case 1:
Game_Flag_Set(kFlagSteeleSmoking);
_animationState = 41;
_var1 = 1;
_var2 = 0;
_varChooseIdleAnimation = 1;
_varNumOfTimesToHoldCurrentFrame = 0;
break;
case 3:
@ -1903,7 +1904,7 @@ bool AIScriptSteele::UpdateAnimation(int *animation, int *frame) {
) {
_animationFrame = 0;
_animationState = 0;
_var1 = 3;
_varChooseIdleAnimation = 3;
_resumeIdleAfterFramesetCompletesFlag = false;
*animation = kModelAnimationSteeleWithGunAimingToRightTalk;
} else {
@ -1944,44 +1945,44 @@ bool AIScriptSteele::UpdateAnimation(int *animation, int *frame) {
*animation = kModelAnimationSteeleIdle;
_animationFrame = 0;
_animationState = 0;
_var1 = 0;
_varChooseIdleAnimation = 0;
}
break;
case 41:
switch (_var1) {
switch (_varChooseIdleAnimation) {
case 0:
*animation = kModelAnimationSteeleIdle;
++_animationFrame;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationSteeleIdle)) {
_animationFrame = 0;
if (!Game_Flag_Query(kFlagSteeleSmoking)) {
_var1 = 3;
_varChooseIdleAnimation = 3;
} else if (Random_Query(1, 3) == 1) {
_var1 = 1;
_varChooseIdleAnimation = 1;
}
}
break;
case 1:
*animation = kModelAnimationSteeleTakeCigPuff;
if (_var2 != 0) {
--_var2;
if (_varNumOfTimesToHoldCurrentFrame != 0) {
--_varNumOfTimesToHoldCurrentFrame;
} else {
++_animationFrame;
if (_animationFrame >= 6
&& _animationFrame <= 9
) {
_var2 = Random_Query(1, 3);
_varNumOfTimesToHoldCurrentFrame = Random_Query(1, 3);
break;
}
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
_animationFrame = 0;
if (Game_Flag_Query(kFlagSteeleSmoking)) {
_var1 = 0;
_varChooseIdleAnimation = 0;
} else {
_var1 = 3;
_varChooseIdleAnimation = 3;
}
}
}
@ -1993,7 +1994,7 @@ bool AIScriptSteele::UpdateAnimation(int *animation, int *frame) {
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation) - 1) {
_animationState = 0;
_animationFrame = 0;
_var1 = 0;
_varChooseIdleAnimation = 0;
Game_Flag_Reset(kFlagSteeleSmoking);
}
break;
@ -2016,9 +2017,9 @@ bool AIScriptSteele::ChangeAnimationMode(int mode) {
switch (mode) {
case kAnimationModeIdle:
if (Game_Flag_Query(kFlagSteeleAimingAtGordo)) {
_var1 = 3;
_varChooseIdleAnimation = 3;
} else {
_var1 = 0;
_varChooseIdleAnimation = 0;
}
switch (_animationState) {
@ -2075,7 +2076,7 @@ bool AIScriptSteele::ChangeAnimationMode(int mode) {
_animationFrame = 0;
if (Game_Flag_Query(kFlagSteeleSmoking)) {
_animationState = 41;
_var1 = 1;
_varChooseIdleAnimation = 1;
} else {
_animationState = 0;
}
@ -2267,8 +2268,8 @@ bool AIScriptSteele::ChangeAnimationMode(int mode) {
Game_Flag_Set(kFlagSteeleSmoking);
_animationState = 41;
_animationFrame = 0;
_var2 = 0;
_var1 = 1;
_varNumOfTimesToHoldCurrentFrame = 0;
_varChooseIdleAnimation = 1;
break;
case kAnimationModeWalkUp:

View File

@ -118,8 +118,8 @@ END_SCRIPT
DECLARE_SCRIPT(Steele)
bool _resumeIdleAfterFramesetCompletesFlag;
int _var1;
int _var2;
int _varChooseIdleAnimation;
int _varNumOfTimesToHoldCurrentFrame;
double comp_distance(int actorId, float a5, float a6, int a1, float a2, float a3, float a4);
END_SCRIPT
@ -156,8 +156,8 @@ DECLARE_SCRIPT(Guzza)
END_SCRIPT
DECLARE_SCRIPT(Clovis)
int _var1;
int _var2;
int _varChooseIdleAnimation;
int _varNumOfTimesToHoldCurrentFrame;
int _var3;
int _var4;
int _var5;
@ -177,8 +177,8 @@ END_SCRIPT
DECLARE_SCRIPT(Izo)
int _var1;
int _var2;
int _var3;
int _var4;
int _varNumOfTimesToHoldCurrentFrame;
int _varChooseIdleAnimation;
bool _resumeIdleAfterFramesetCompletesFlag;
void dialogueWithIzo();
@ -187,8 +187,8 @@ END_SCRIPT
DECLARE_SCRIPT(Sadik)
int _nextSoundId;
int _var2;
int _var3;
int _varChooseIdleAnimation;
int _varNumOfTimesToHoldCurrentFrame;
int _var4;
bool _resumeIdleAfterFramesetCompletesFlag;
END_SCRIPT
@ -202,8 +202,8 @@ DECLARE_SCRIPT(Luther)
END_SCRIPT
DECLARE_SCRIPT(Grigorian)
int var_45CA10;
int var_45CA14;
int _varChooseIdleAnimation;
int _varNumOfTimesToHoldCurrentFrame;
END_SCRIPT
DECLARE_SCRIPT(Transient)
@ -241,8 +241,8 @@ DECLARE_SCRIPT(TyrellGuard)
END_SCRIPT
DECLARE_SCRIPT(EarlyQ)
int _var1;
int _var2;
int _varNumOfTimesToHoldCurrentFrame;
int _varChooseIdleAnimation;
int _var3;
bool _resumeIdleAfterFramesetCompletesFlag;
END_SCRIPT
@ -260,10 +260,10 @@ END_SCRIPT
DECLARE_SCRIPT(Hasan)
int _var1;
int _var2;
int _var3;
int _varNumOfTimesToHoldCurrentFrame;
int _var4;
int _var5;
int _var6;
int _varChooseIdleAnimation;
END_SCRIPT
DECLARE_SCRIPT(Marcus)
@ -274,20 +274,20 @@ DECLARE_SCRIPT(Mia)
END_SCRIPT
DECLARE_SCRIPT(OfficerLeary)
int var_45D5B8;
int var_45D5BC;
int _varChooseIdleAnimation;
bool _idleModeRequestedWhileInTalkingState;
END_SCRIPT
DECLARE_SCRIPT(OfficerGrayford)
int _var1;
int _varChooseIdleAnimation;
bool _resumeIdleAfterFramesetCompletesFlag;
int _var3;
int _varNumOfTimesToHoldCurrentFrame;
END_SCRIPT
DECLARE_SCRIPT(Hanoi)
bool _resumeIdleAfterFramesetCompletesFlag;
bool _flag1;
int _var3;
int _varChooseIdleAnimation;
int _varNumOfTimesToHoldCurrentFrame;
int _var4;
END_SCRIPT
@ -295,13 +295,13 @@ DECLARE_SCRIPT(Baker)
END_SCRIPT
DECLARE_SCRIPT(DeskClerk)
bool _flag1;
int _varChooseIdleAnimation;
bool _resumeIdleAfterFramesetCompletesFlag;
int _var3;
int _varNumOfTimesToHoldCurrentFrame;
END_SCRIPT
DECLARE_SCRIPT(HowieLee)
bool var_45DFB8;
int _varIdleStatesToggle;
END_SCRIPT
DECLARE_SCRIPT(FishDealer)
@ -429,8 +429,8 @@ END_SCRIPT
DECLARE_SCRIPT(Isabella)
int _var1;
int _var2;
int _var3;
int _varNumOfTimesToHoldCurrentFrame;
int _varChooseIdleAnimation;
int _var4;
END_SCRIPT
@ -473,9 +473,9 @@ END_SCRIPT
DECLARE_SCRIPT(Maggie)
int var_45F3F8;
int var_45F3FC;
int var_45F400;
int var_45F404;
int var_45F408;
int var_45F400; // only set to 0. unused
int var_45F404; // only set to 0. unused
int var_45F408; // only set to 0. unused
int randomWaypointMA02();
float distanceToActor(int actorId, float x, float y, float z);

View File

@ -45,17 +45,17 @@ void SceneScriptBB11::InitializeScene() {
if (Game_Flag_Query(kFlagBB11SadikFight)) {
Preload(kModelAnimationMcCoyIdle);
Preload(220);
Preload(227);
Preload(328);
Preload(343);
Preload(344);
Preload(kModelAnimationClovisWalking);
Preload(kModelAnimationClovisIdle);
Preload(kModelAnimationSadikIdle);
Preload(kModelAnimationSadikKicksSomeoneWhoIsDown);
Preload(kModelAnimationSadikHoldsSomeoneAndPunches);
Preload(kModelAnimationMcCoyGotHitRight);
Preload(kModelAnimationMcCoyRunning);
Preload(324);
Preload(323);
Preload(kModelAnimationSadikRunning);
Preload(kModelAnimationSadikWalking);
Preload(kModelAnimationMcCoyFallsOnHisBack);
Preload(345);
Preload(kModelAnimationSadikPicksUpAndThrowsMcCoy);
}
}

View File

@ -122,9 +122,9 @@ void SceneScriptCT02::SceneLoaded() {
Preload(kModelAnimationMcCoyWithGunWalking);
Preload(kModelAnimationMcCoyWithGunWalking); // A bug? Why is this preloaded twice?
Preload(kModelAnimationMcCoyDodgeAndDrawGun);
Preload(400);
Preload(419);
Preload(420);
Preload(kModelAnimationZubenRunning);
Preload(kModelAnimationZubenToppleSoupCauldron);
Preload(kModelAnimationZubenBashOnDoor);
}
if (Game_Flag_Query(kFlagCT02McCoyCombatReady)) {
Game_Flag_Reset(kFlagCT02McCoyCombatReady);

View File

@ -70,11 +70,11 @@ void SceneScriptCT06::SceneLoaded() {
if (Actor_Query_Goal_Number(kActorZuben) == kGoalZubenCT06HideAtFreeSlotA) {
Preload(kModelAnimationMcCoyWithGunWalking);
Preload(kModelAnimationMcCoyWithGunRunning);
Preload(389);
Preload(390);
Preload(398);
Preload(421);
Preload(421);
Preload(kModelAnimationZubenCombatHitFront);
Preload(kModelAnimationZubenCombatHitBack);
Preload(kModelAnimationZubenCleaverAttack);
Preload(kModelAnimationZubenJumpDownFromCeiling);
Preload(kModelAnimationZubenJumpDownFromCeiling); // A bug? Why is this preloaded twice?
}
}

View File

@ -75,18 +75,18 @@ void SceneScriptHC01::SceneLoaded() {
Obstacle_Object("PILLAR", true);
if (Game_Flag_Query(kFlagAR01toHC01)) {
Preload(kModelAnimationMcCoyIdle);
Preload(426);
Preload(430);
Preload(437);
Preload(427);
Preload(431);
Preload(433);
Preload(424);
Preload(428);
Preload(436);
Preload(429);
Preload(425);
Preload(432);
Preload(kModelGenWalkerHattedPersonWithUmbrellaStandsStill);
Preload(kModelGenWalkerHoodedPersonWithUmbrellaStandsStill);
Preload(kModelGenWalkerHattedLadyWithWoodenUmbrellaStandsStill);
Preload(kModelGenWalkerHattedPersonNoUmbrellaStandsStill);
Preload(kModelGenWalkerPunkPersonWithGlassesAndBeardStandsStill);
Preload(kModelGenWalkerPunkPersonWithGlassesStandsStill);
Preload(kModelGenWalkerHattedPersonWithUmbrella);
Preload(kModelGenWalkerHoodedPersonWithUmbrella);
Preload(kModelGenWalkerHattedPersonWithWoodenUmbrella);
Preload(kModelGenWalkerPunkPersonWithGlassesAndBeard);
Preload(kModelGenWalkerHattedPersonNoUmbrellaSmallSteps);
Preload(kModelGenWalkerPunkPersonWithGlasses);
}
}

View File

@ -201,8 +201,8 @@ void SceneScriptRC01::SceneLoaded() {
Preload(kModelAnimationMcCoyWalking);
Preload(kModelAnimationMcCoyRunning);
Preload(kModelAnimationMcCoyIdle);
Preload(582);
Preload(589);
Preload(kModelAnimationOfficerLearyWalking);
Preload(kModelAnimationOfficerLearyOscillateIdle);
}
if (!Game_Flag_Query(kFlagRC01ChromeDebrisTaken)) {