Browse Source

Clean up M_StartHit

pull/25/head
Anders Jenbo 8 years ago committed by Dennis Duda
parent
commit
6ebc4ffb34
  1. 83
      Source/monster.cpp

83
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;
}
}
}

Loading…
Cancel
Save