diff --git a/Source/monster.cpp b/Source/monster.cpp index e2939ac1e..ff4acbef7 100644 --- a/Source/monster.cpp +++ b/Source/monster.cpp @@ -2082,62 +2082,39 @@ void __fastcall M_GetKnockback(int i) void __fastcall M_StartHit(int i, int pnum, int dam) { - int v3; // ebx - int v4; // edi - int v5; // esi - unsigned char v6; // al - char v7; // al - unsigned char v8; // al - int v9; // ecx - int v10; // eax - - v3 = pnum; - v4 = i; if ( pnum >= 0 ) monster[i].mWhoHit |= 1 << pnum; - if ( pnum == myplr ) - { + if ( pnum == myplr ) { delta_monster_hp(i, monster[i]._mhitpoints, currlevel); - NetSendCmdParam2(FALSE, CMD_MONSTDAMAGE, v4, dam); - } - PlayEffect(v4, 1); - v5 = v4; - v6 = monster[v4].MType->mtype; - if ( v6 >= MT_SNEAK && v6 <= MT_ILLWEAV || dam >> 6 >= SLOBYTE(monster[v5].mLevel) + 3 ) - { - if ( v3 >= 0 ) - { - monster[v5]._mFlags &= 0xFFFFFFEF; - monster[v5]._menemy = v3; - v7 = plr[v3]._py; - monster[v5]._menemyx = plr[v3]._px; - monster[v5]._menemyy = v7; - monster[v5]._mdir = M_GetDir(v4); - } - v8 = monster[v5].MType->mtype; - if ( v8 == MT_BLINK ) - { - M_Teleport(v4); - } - else if ( v8 >= MT_NSCAV && v8 <= MT_YSCAV ) - { - _LOBYTE(monster[v5]._mgoal) = 1; - } - if ( monster[v5]._mmode != MM_STONE ) - { - NewMonsterAnim(v4, &monster[v5].MType->Anims[MA_GOTHIT], monster[v5]._mdir); - v9 = monster[v5]._moldy; - v10 = monster[v5]._moldx; - monster[v5]._mxoff = 0; - monster[v5]._myoff = 0; - monster[v5]._my = v9; - monster[v5]._mfuty = v9; - monster[v5]._mmode = MM_GOTHIT; - monster[v5]._mx = v10; - monster[v5]._mfutx = v10; - M_CheckEFlag(v4); - M_ClearSquares(v4); - dMonster[0][monster[v5]._my + 112 * monster[v5]._mx] = v4 + 1; + NetSendCmdParam2(FALSE, CMD_MONSTDAMAGE, i, dam); + } + PlayEffect(i, 1); + if ( monster[i].MType->mtype >= MT_SNEAK && monster[i].MType->mtype <= MT_ILLWEAV || dam >> 6 >= monster[i].mLevel + 3 ) { + if ( pnum >= 0 ) { + monster[i]._mFlags &= 0xFFFFFFEF; + monster[i]._menemy = pnum; + monster[i]._menemyx = plr[pnum]._px; + monster[i]._menemyy = plr[pnum]._py; + monster[i]._mdir = M_GetDir(i); + } + if ( monster[i].MType->mtype == MT_BLINK ) { + M_Teleport(i); + } + else if ( monster[i].MType->mtype >= MT_NSCAV && monster[i].MType->mtype <= MT_YSCAV ) { + monster[i]._mgoal = 1; + } + if ( monster[i]._mmode != MM_STONE ) { + NewMonsterAnim(i, &monster[i].MType->Anims[MA_GOTHIT], monster[i]._mdir); + monster[i]._mmode = MM_GOTHIT; + monster[i]._mxoff = 0; + monster[i]._myoff = 0; + monster[i]._mx = monster[i]._moldx; + monster[i]._my = monster[i]._moldy; + monster[i]._mfutx = monster[i]._moldx; + monster[i]._mfuty = monster[i]._moldy; + M_CheckEFlag(i); + M_ClearSquares(i); + dMonster[monster[i]._mx][monster[i]._my] = i + 1; } } }