Browse Source

Clean up MI_Fireball

pull/31/head
Anders Jenbo 7 years ago
parent
commit
88ab1bce1f
  1. 173
      Source/missiles.cpp

173
Source/missiles.cpp

@ -4391,125 +4391,80 @@ void __fastcall MI_Firewall(int i)
void __fastcall MI_Fireball(int i) void __fastcall MI_Fireball(int i)
{ {
int v1; // esi int dam, id, px, py, mx, my;
BOOLEAN v2; // zf
int v3; // eax
int v4; // ecx
int v5; // edi
int v6; // eax
int v7; // edx
int v8; // eax
int v9; // eax
int v10; // ecx
int v11; // eax
int v12; // edx
int v13; // eax
int v14; // ecx
int v15; // ST10_4
int fx; // [esp+Ch] [ebp-14h]
//int fxa; // [esp+Ch] [ebp-14h]
//int fxb; // [esp+Ch] [ebp-14h]
int fy; // [esp+10h] [ebp-10h]
//int fya; // [esp+10h] [ebp-10h]
//int fyb; // [esp+10h] [ebp-10h]
int ia; // [esp+14h] [ebp-Ch]
//int ib; // [esp+14h] [ebp-Ch]
int ty; // [esp+18h] [ebp-8h]
//int tya; // [esp+18h] [ebp-8h]
//int tyb; // [esp+18h] [ebp-8h]
int tx; // [esp+1Ch] [ebp-4h]
//int txa; // [esp+1Ch] [ebp-4h]
ia = i; dam = missile[i]._midam;
v1 = i; id = missile[i]._misource;
--missile[v1]._mirange; missile[i]._mirange--;
v2 = missile[i]._micaster == 0;
v3 = missile[i]._misource; if (missile[i]._micaster == 0) {
v4 = missile[i]._mirange; px = plr[id].WorldX;
v5 = missile[v1]._midam; py = plr[id].WorldY;
if (v2) {
v6 = v3;
v7 = plr[v6].WorldX;
v8 = plr[v6].WorldY;
} else { } else {
v9 = v3; px = monster[id]._mx;
v7 = monster[v9]._mx; py = monster[id]._my;
v8 = monster[v9]._my;
} }
fx = v7;
fy = v8; if (missile[i]._miAnimType == MFILE_BIGEXP) {
if (_LOBYTE(missile[v1]._miAnimType) == MFILE_KRULL) { if (!missile[i]._mirange) {
if (!v4) { missile[i]._miDelFlag = 1;
v10 = missile[v1]._mlid; AddUnLight(missile[i]._mlid);
missile[v1]._miDelFlag = 1;
AddUnLight(v10);
} }
} else { } else {
missile[v1]._mitxoff += missile[v1]._mixvel; missile[i]._mitxoff += missile[i]._mixvel;
missile[v1]._mityoff += missile[v1]._miyvel; missile[i]._mityoff += missile[i]._miyvel;
GetMissilePos(ia); GetMissilePos(i);
v11 = missile[v1]._mix; if (missile[i]._mix != missile[i]._misx || missile[i]._miy != missile[i]._misy)
if (v11 != missile[v1]._misx || missile[v1]._miy != missile[v1]._misy) CheckMissileCol(i, dam, dam, 0, missile[i]._mix, missile[i]._miy, 0);
CheckMissileCol(ia, v5, v5, 0, v11, missile[v1]._miy, 0); if (!missile[i]._mirange) {
v12 = missile[v1]._mix; mx = missile[i]._mix;
if (missile[v1]._mirange) { my = missile[i]._miy;
if (v12 != missile[v1]._miVar1 || missile[v1]._miy != missile[v1]._miVar2) { ChangeLight(missile[i]._mlid, missile[i]._mix, my, missile[i]._miAnimFrame);
v14 = missile[v1]._mlid; if (!CheckBlock(px, py, mx, my))
missile[v1]._miVar1 = v12; CheckMissileCol(i, dam, dam, 0, mx, my, 1);
v15 = missile[v1]._miy; if (!CheckBlock(px, py, mx, my + 1))
missile[v1]._miVar2 = v15; CheckMissileCol(i, dam, dam, 0, mx, my + 1, 1);
ChangeLight(v14, v12, v15, 8); if (!CheckBlock(px, py, mx, my - 1))
} CheckMissileCol(i, dam, dam, 0, mx, my - 1, 1);
} else { if (!CheckBlock(px, py, mx + 1, my))
tx = missile[v1]._mix; CheckMissileCol(i, dam, dam, 0, mx + 1, my, 1);
ty = missile[v1]._miy; if (!CheckBlock(px, py, mx + 1, my - 1))
ChangeLight(missile[v1]._mlid, v12, ty, missile[v1]._miAnimFrame); CheckMissileCol(i, dam, dam, 0, mx + 1, my - 1, 1); /* check x/y */
if (!CheckBlock(fx, fy, tx, ty)) if (!CheckBlock(px, py, mx + 1, my + 1))
CheckMissileCol(ia, v5, v5, 0, tx, ty, 1); CheckMissileCol(i, dam, dam, 0, mx + 1, my + 1, 1);
if (!CheckBlock(fx, fy, tx, ty + 1)) if (!CheckBlock(px, py, mx - 1, my))
CheckMissileCol(ia, v5, v5, 0, tx, ty + 1, 1); CheckMissileCol(i, dam, dam, 0, mx - 1, my, 1);
if (!CheckBlock(fx, fy, tx, ty - 1)) if (!CheckBlock(px, py, mx - 1, my + 1))
CheckMissileCol(ia, v5, v5, 0, tx, ty - 1, 1); CheckMissileCol(i, dam, dam, 0, mx - 1, my + 1, 1);
if (!CheckBlock(fx, fy, tx + 1, ty)) if (!CheckBlock(px, py, mx - 1, my - 1))
CheckMissileCol(ia, v5, v5, 0, tx + 1, ty, 1); CheckMissileCol(i, dam, dam, 0, mx - 1, my - 1, 1);
if (!CheckBlock(fx, fy, tx + 1, ty - 1)) if (!TransList[dung_map[mx][my]]
CheckMissileCol(ia, v5, v5, 0, tx + 1, ty - 1, 1); /* check x/y */ || (missile[i]._mixvel < 0 && ((TransList[dung_map[mx][my + 1]] && nSolidTable[dPiece[mx][my + 1]]) || (TransList[dung_map[mx][my - 1]] && nSolidTable[dPiece[mx][my - 1]])))) {
if (!CheckBlock(fx, fy, tx + 1, ty + 1)) missile[i]._mix++;
CheckMissileCol(ia, v5, v5, 0, tx + 1, ty + 1, 1); missile[i]._miy++;
if (!CheckBlock(fx, fy, tx - 1, ty)) missile[i]._miyoff -= 32;
CheckMissileCol(ia, v5, v5, 0, tx - 1, ty, 1);
if (!CheckBlock(fx, fy, tx - 1, ty + 1))
CheckMissileCol(ia, v5, v5, 0, tx - 1, ty + 1, 1);
if (!CheckBlock(fx, fy, tx - 1, ty - 1))
CheckMissileCol(ia, v5, v5, 0, tx - 1, ty - 1, 1);
v13 = 112 * tx + ty;
if (!TransList[dung_map[0][v13]] /* check */
|| missile[v1]._mixvel < 0
&& (TransList[dung_map[0][v13 + 1]] && nSolidTable[dPiece[0][v13 + 1]]
|| TransList[dung_map[0][v13 - 1]] && nSolidTable[dPiece[0][v13 - 1]])) // TransList[*(&byte_5B78EB + v13)] && nSolidTable[*(_DWORD *)&dflags[39][4 * v13 + 36]]) )
{
++missile[v1]._mix;
++missile[v1]._miy;
missile[v1]._miyoff -= 32;
} }
if (missile[v1]._miyvel > 0 if (missile[i]._miyvel > 0
&& (TransList[dung_map[tx + 1][ty]] && nSolidTable[dPiece[1][v13]] && (TransList[dung_map[mx + 1][my]] && nSolidTable[dPiece[1 + mx][my]]
|| TransList[dung_map[tx - 1][ty]] && nSolidTable[dPiece[-1][v13]])) // TransList[block_lvid[v13 + 1940]] && nSolidTable[*(_DWORD *)&dflags[28][4 * v13 + 32]]) ) || TransList[dung_map[mx - 1][my]] && nSolidTable[dPiece[-1 + mx][my]])) {
{ missile[i]._miyoff -= 32;
missile[v1]._miyoff -= 32;
} }
if (missile[v1]._mixvel > 0 if (missile[i]._mixvel > 0
&& (TransList[dung_map[0][v13 + 1]] && nSolidTable[dPiece[0][v13 + 1]] && (TransList[dung_map[mx][my + 1]] && nSolidTable[dPiece[mx][my + 1]]
|| TransList[dung_map[0][v13 - 1]] && nSolidTable[dPiece[0][v13 - 1]])) // TransList[*(&byte_5B78EB + v13)] && nSolidTable[*(_DWORD *)&dflags[39][4 * v13 + 36]]) ) || TransList[dung_map[mx][my - 1]] && nSolidTable[dPiece[mx][my - 1]])) {
{ missile[i]._mixoff -= 32;
missile[v1]._mixoff -= 32;
} }
missile[v1]._mimfnum = 0; missile[i]._mimfnum = 0;
SetMissAnim(ia, MFILE_BIGEXP); SetMissAnim(i, MFILE_BIGEXP);
missile[v1]._mirange = missile[v1]._miAnimLen - 1; missile[i]._mirange = missile[i]._miAnimLen - 1;
} else if (missile[i]._mix != missile[i]._miVar1 || missile[i]._miy != missile[i]._miVar2) {
missile[i]._miVar1 = missile[i]._mix;
missile[i]._miVar2 = missile[i]._miy;
ChangeLight(missile[i]._mlid, missile[i]._mix, missile[i]._miy, 8);
} }
} }
PutMissile(ia);
PutMissile(i);
} }
void __fastcall MI_Lightctrl(int i) void __fastcall MI_Lightctrl(int i)

Loading…
Cancel
Save