From a1f57f5777a022a3f678892d3cd268ac8219c24b Mon Sep 17 00:00:00 2001 From: obligaron Date: Mon, 21 Jun 2021 20:22:17 +0200 Subject: [PATCH] ProcessAnimationPending for MM_RSPATTACK and Megademon special --- Source/monster.cpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/Source/monster.cpp b/Source/monster.cpp index 01cf30947..79768d6e2 100644 --- a/Source/monster.cpp +++ b/Source/monster.cpp @@ -1265,11 +1265,11 @@ void monster_43C785(int i) } } -void NewMonsterAnim(int i, AnimStruct *anim, Direction md, AnimationDistributionFlags flags = AnimationDistributionFlags::None) +void NewMonsterAnim(int i, AnimStruct *anim, Direction md, AnimationDistributionFlags flags = AnimationDistributionFlags::None, int numSkippedFrames = 0, int distributeFramesBeforeFrame = 0) { MonsterStruct *Monst = &monster[i]; auto *pCelSprite = &*anim->CelSpritesForDirections[md]; - Monst->AnimInfo.SetNewAnimation(pCelSprite, anim->Frames, anim->Rate, flags); + Monst->AnimInfo.SetNewAnimation(pCelSprite, anim->Frames, anim->Rate, flags, numSkippedFrames, distributeFramesBeforeFrame); Monst->_mFlags &= ~(MFLAG_LOCK_ANIMATION | MFLAG_ALLOW_SPECIAL); Monst->_mdir = md; } @@ -1511,7 +1511,10 @@ void M_StartRAttack(int i, int missile_type, int dam) void M_StartRSpAttack(int i, int missile_type, int dam) { Direction md = M_GetDir(i); - NewMonsterAnim(i, &monster[i].MType->Anims[MA_SPECIAL], md); + int distributeFramesBeforeFrame = 0; + if (monster[i]._mAi == AI_MEGA) + distributeFramesBeforeFrame = monster[i].MData->mAFNum2; + NewMonsterAnim(i, &monster[i].MType->Anims[MA_SPECIAL], md, AnimationDistributionFlags::ProcessAnimationPending, 0, distributeFramesBeforeFrame); monster[i]._mmode = MM_RSPATTACK; monster[i]._mVar1 = missile_type; monster[i]._mVar2 = 0; @@ -2292,7 +2295,7 @@ bool M_DoRSpAttack(int i) PlayEffect(i, 3); } - if (monster[i]._mAi == AI_MEGA && monster[i].AnimInfo.CurrentFrame == 3) { + if (monster[i]._mAi == AI_MEGA && monster[i].AnimInfo.CurrentFrame == monster[i].MData->mAFNum2) { if (monster[i]._mVar2++ == 0) { monster[i]._mFlags |= MFLAG_ALLOW_SPECIAL; } else if (monster[i]._mVar2 == 15) {