diff --git a/Source/monster.cpp b/Source/monster.cpp index e2a80d22a..1bbbb2a55 100644 --- a/Source/monster.cpp +++ b/Source/monster.cpp @@ -2355,39 +2355,29 @@ BOOL M_DoFadeout(int i) int M_DoHeal(int i) { - int v1; // esi - int v2; // eax - int v3; // esi - int *v4; // edx - int v5; // ecx - int v6; // edi - int v7; // edi - int v8; // esi + MonsterStruct *Monst; - v1 = i; if ((DWORD)i >= MAXMONSTERS) app_fatal("M_DoHeal: Invalid monster %d", i); - v2 = v1; - if (monster[v1]._mFlags & MFLAG_NOHEAL) { - monster[v2]._mFlags &= ~MFLAG_ALLOW_SPECIAL; - monster[v2]._mmode = MM_SATTACK; - } else if (monster[v2]._mAnimFrame == 1) { - v3 = monster[v2]._mVar1; - v4 = &monster[v2]._mhitpoints; - v5 = monster[v2]._mFlags & ~MFLAG_LOCK_ANIMATION | MFLAG_ALLOW_SPECIAL; - v6 = monster[v2]._mhitpoints; - monster[v2]._mFlags = v5; - v7 = v3 + v6; - v8 = monster[v2]._mmaxhp; - if (v7 >= v8) { - *v4 = v8; - monster[v2]._mFlags = v5 & ~MFLAG_ALLOW_SPECIAL; - monster[v2]._mmode = MM_SATTACK; + Monst = monster + i; + if (monster[i]._mFlags & MFLAG_NOHEAL) { + Monst->_mFlags &= ~MFLAG_ALLOW_SPECIAL; + Monst->_mmode = MM_SATTACK; + return FALSE; + } + + if (Monst->_mAnimFrame == 1) { + Monst->_mFlags &= ~MFLAG_LOCK_ANIMATION; + Monst->_mFlags |= MFLAG_ALLOW_SPECIAL; + if (Monst->_mVar1 + Monst->_mhitpoints < Monst->_mmaxhp) { + Monst->_mhitpoints = Monst->_mVar1 + Monst->_mhitpoints; } else { - *v4 = v7; + Monst->_mhitpoints = Monst->_mmaxhp; + Monst->_mFlags &= ~MFLAG_ALLOW_SPECIAL; + Monst->_mmode = MM_SATTACK; } } - return 0; + return FALSE; } int M_DoTalk(int i)