Browse Source

Clean up M_DiabloDeath.

pull/100/head
Sergey Semushin 7 years ago committed by Anders Jenbo
parent
commit
08fcfa1b39
  1. 108
      Source/monster.cpp

108
Source/monster.cpp

@ -7,7 +7,7 @@ int MissileFileFlag;
int monstkills[MAXMONSTERS];
int monstactive[MAXMONSTERS];
int nummonsters;
int sgbSaveSoundOn; // weak
BOOLEAN sgbSaveSoundOn;
MonsterStruct monster[MAXMONSTERS];
int totalmonsters; // weak
CMonster Monsters[16];
@ -1539,72 +1539,53 @@ void M_StartHit(int i, int pnum, int dam)
void M_DiabloDeath(int i, BOOL sendmsg)
{
int v2; // esi
int v3; // edi
int v4; // eax
int v5; // ebx
int v6; // esi
int v7; // ecx
int v8; // eax
int v9; // esi
int v10; // eax
double v11; // st7
int v12; // eax
int v13; // ecx
int v14; // esi
int v15; // [esp+8h] [ebp-8h]
int j; // [esp+Ch] [ebp-4h]
int v17; // [esp+Ch] [ebp-4h]
v15 = i;
v2 = sendmsg;
v3 = i;
MonsterStruct *Monst, *pmonster;
int dist;
int j, k;
int _moldx, _moldy;
Monst = monster + i;
PlaySFX(USFX_DIABLOD);
quests[QTYPE_MOD]._qactive = 3;
if (v2)
NetSendCmdQuest(TRUE, 5u);
if (sendmsg)
NetSendCmdQuest(TRUE, QTYPE_MOD);
gbProcessPlayers = FALSE;
_LOBYTE(sgbSaveSoundOn) = gbSoundOn;
v4 = 0;
for (j = 0; j < nummonsters; ++j) {
v5 = monstactive[v4];
if (v5 != v15 && monster[v3]._msquelch) {
v6 = v5;
NewMonsterAnim(monstactive[v4], &monster[v5].MType->Anims[MA_DEATH], monster[v5]._mdir);
v7 = monster[v5]._moldy;
monster[v6]._mxoff = 0;
monster[v6]._myoff = 0;
monster[v6]._mVar1 = 0;
v8 = monster[v5]._moldx;
monster[v6]._my = v7;
monster[v6]._mfuty = v7;
monster[v6]._mmode = MM_DEATH;
monster[v6]._mx = v8;
monster[v6]._mfutx = v8;
M_CheckEFlag(v5);
M_ClearSquares(v5);
dMonster[monster[v6]._mx][monster[v6]._my] = v5 + 1;
}
v4 = j + 1;
}
AddLight(monster[v3]._mx, monster[v3]._my, 8);
DoVision(monster[v3]._mx, monster[v3]._my, 8, 0, 1);
v9 = abs(ViewY - monster[v3]._my);
if (abs(ViewX - monster[v3]._mx) <= v9)
v10 = ViewY - monster[v3]._my;
sgbSaveSoundOn = gbSoundOn;
for (j = 0; j < nummonsters; j++) {
k = monstactive[j];
if (k == i || monster[i]._msquelch == 0)
continue;
pmonster = monster + k;
NewMonsterAnim(k, pmonster->MType->Anims + MA_DEATH, pmonster->_mdir);
monster[k]._mxoff = 0;
monster[k]._myoff = 0;
monster[k]._mVar1 = 0;
_moldx = monster[k]._moldx;
_moldy = monster[k]._moldy;
monster[k]._my = _moldy;
monster[k]._mfuty = _moldy;
monster[k]._mmode = MM_DEATH;
monster[k]._mx = _moldx;
monster[k]._mfutx = _moldx;
M_CheckEFlag(k);
M_ClearSquares(k);
dMonster[pmonster->_mx][pmonster->_my] = k + 1;
}
AddLight(Monst->_mx, Monst->_my, 8);
DoVision(Monst->_mx, Monst->_my, 8, FALSE, TRUE);
if (abs(ViewX - Monst->_mx) > abs(ViewY - Monst->_my))
dist = abs (ViewX - Monst->_mx);
else
v10 = ViewX - monster[v3]._mx;
v17 = abs(v10);
if (v17 > 20)
v17 = 20;
v11 = (double)v17;
v12 = ViewX << 16;
v13 = monster[v3]._mx << 16;
monster[v3]._mVar3 = ViewX << 16;
v14 = ViewY << 16;
monster[v3]._mVar4 = ViewY << 16;
monster[v3]._mVar5 = (signed __int64)((double)(v12 - v13) / v11);
monster[v3]._mVar6 = (signed __int64)((double)(v14 - (monster[v3]._my << 16)) / v11);
dist = abs (ViewY - Monst->_my);
if (dist > 20)
dist = 20;
j = ViewX << 16;
k = ViewY << 16;
Monst->_mVar3 = j;
Monst->_mVar4 = k;
Monst->_mVar5 = (int) ((j - (Monst->_mx << 16)) / (double)dist);
Monst->_mVar6 = (int) ((k - (Monst->_my << 16)) / (double)dist);
}
// 64D32C: using guessed type int sgbSaveSoundOn;
@ -6554,3 +6535,4 @@ void decode_enemy(int m, int enemy)
monster[m]._menemyy = monster[enemy]._mfuty;
}
}

Loading…
Cancel
Save