From e34ac43457133d70aeab719359d8406a89a21f37 Mon Sep 17 00:00:00 2001 From: qndel Date: Thu, 12 Nov 2020 15:16:27 +0100 Subject: [PATCH] SyncMonsterAnim bin exact --- Source/monster.cpp | 75 +++++++++++++++++++++++----------------------- 1 file changed, 38 insertions(+), 37 deletions(-) diff --git a/Source/monster.cpp b/Source/monster.cpp index a833782f8..222ad6a9e 100644 --- a/Source/monster.cpp +++ b/Source/monster.cpp @@ -5686,68 +5686,69 @@ BOOL LineClearF1(BOOL (*Clear)(int, int, int), int monst, int x1, int y1, int x2 void SyncMonsterAnim(int i) { - MonsterData *MData; int _mdir; - MonsterStruct *Monst; +#ifdef HELLFIRE + if ((DWORD)i >= MAXMONSTERS || i < 0) + return; +#else if ((DWORD)i >= MAXMONSTERS) app_fatal("SyncMonsterAnim: Invalid monster %d", i); - Monst = &monster[i]; - Monst->MType = Monsters + Monst->_mMTidx; - MData = Monsters[Monst->_mMTidx].MData; - Monst->MData = MData; - if (Monst->_uniqtype != 0) - Monst->mName = UniqMonst[Monst->_uniqtype - 1].mName; +#endif + monster[i].MType = &Monsters[monster[i]._mMTidx]; + monster[i].MData = Monsters[monster[i]._mMTidx].MData; + if (monster[i]._uniqtype != 0) + monster[i].mName = UniqMonst[monster[i]._uniqtype - 1].mName; else - Monst->mName = MData->mName; + monster[i].mName = monster[i].MData->mName; _mdir = monster[i]._mdir; - switch (Monst->_mmode) { + switch (monster[i]._mmode) { + case MM_STAND: + monster[i]._mAnimData = monster[i].MType->Anims[MA_STAND].Data[_mdir]; + break; case MM_WALK: case MM_WALK2: case MM_WALK3: - Monst->_mAnimData = Monst->MType->Anims[MA_WALK].Data[_mdir]; - return; + monster[i]._mAnimData = monster[i].MType->Anims[MA_WALK].Data[_mdir]; + break; case MM_ATTACK: case MM_RATTACK: - Monst->_mAnimData = Monst->MType->Anims[MA_ATTACK].Data[_mdir]; - return; + monster[i]._mAnimData = monster[i].MType->Anims[MA_ATTACK].Data[_mdir]; + break; case MM_GOTHIT: - Monst->_mAnimData = Monst->MType->Anims[MA_GOTHIT].Data[_mdir]; - return; + monster[i]._mAnimData = monster[i].MType->Anims[MA_GOTHIT].Data[_mdir]; + break; case MM_DEATH: - Monst->_mAnimData = Monst->MType->Anims[MA_DEATH].Data[_mdir]; - return; + monster[i]._mAnimData = monster[i].MType->Anims[MA_DEATH].Data[_mdir]; + break; case MM_SATTACK: case MM_FADEIN: case MM_FADEOUT: - Monst->_mAnimData = Monst->MType->Anims[MA_SPECIAL].Data[_mdir]; - return; + monster[i]._mAnimData = monster[i].MType->Anims[MA_SPECIAL].Data[_mdir]; + break; case MM_SPSTAND: case MM_RSPATTACK: - Monst->_mAnimData = Monst->MType->Anims[MA_SPECIAL].Data[_mdir]; - return; + monster[i]._mAnimData = monster[i].MType->Anims[MA_SPECIAL].Data[_mdir]; + break; case MM_HEAL: - Monst->_mAnimData = Monst->MType->Anims[MA_SPECIAL].Data[_mdir]; - return; - case MM_STAND: - Monst->_mAnimData = Monst->MType->Anims[MA_STAND].Data[_mdir]; - return; + monster[i]._mAnimData = monster[i].MType->Anims[MA_SPECIAL].Data[_mdir]; + break; case MM_DELAY: - Monst->_mAnimData = Monst->MType->Anims[MA_STAND].Data[_mdir]; - return; + monster[i]._mAnimData = monster[i].MType->Anims[MA_STAND].Data[_mdir]; + break; case MM_TALK: - Monst->_mAnimData = Monst->MType->Anims[MA_STAND].Data[_mdir]; - return; + monster[i]._mAnimData = monster[i].MType->Anims[MA_STAND].Data[_mdir]; + break; case MM_CHARGE: - Monst->_mAnimData = Monst->MType->Anims[MA_ATTACK].Data[_mdir]; - Monst->_mAnimFrame = 1; - Monst->_mAnimLen = Monst->MType->Anims[MA_ATTACK].Frames; + monster[i]._mAnimData = monster[i].MType->Anims[MA_ATTACK].Data[_mdir]; + monster[i]._mAnimFrame = 1; + monster[i]._mAnimLen = monster[i].MType->Anims[MA_ATTACK].Frames; break; default: - Monst->_mAnimData = Monst->MType->Anims[MA_STAND].Data[_mdir]; - Monst->_mAnimFrame = 1; - Monst->_mAnimLen = Monst->MType->Anims[MA_STAND].Frames; + monster[i]._mAnimData = monster[i].MType->Anims[MA_STAND].Data[_mdir]; + monster[i]._mAnimFrame = 1; + monster[i]._mAnimLen = monster[i].MType->Anims[MA_STAND].Frames; break; } }