Browse Source

ProcessAnimationPending for MM_RSPATTACK and Megademon special

pull/2231/head
obligaron 5 years ago committed by Anders Jenbo
parent
commit
a1f57f5777
  1. 11
      Source/monster.cpp

11
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) {

Loading…
Cancel
Save