Browse Source

Clean up MI_Fireball

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

179
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 (_LOBYTE(missile[v1]._miAnimType) == MFILE_KRULL) {
if (!v4) {
v10 = missile[v1]._mlid;
missile[v1]._miDelFlag = 1;
AddUnLight(v10);
} }
} else {
missile[v1]._mitxoff += missile[v1]._mixvel; if (missile[i]._miAnimType == MFILE_BIGEXP) {
missile[v1]._mityoff += missile[v1]._miyvel; if (!missile[i]._mirange) {
GetMissilePos(ia); missile[i]._miDelFlag = 1;
v11 = missile[v1]._mix; AddUnLight(missile[i]._mlid);
if (v11 != missile[v1]._misx || missile[v1]._miy != missile[v1]._misy)
CheckMissileCol(ia, v5, v5, 0, v11, missile[v1]._miy, 0);
v12 = missile[v1]._mix;
if (missile[v1]._mirange) {
if (v12 != missile[v1]._miVar1 || missile[v1]._miy != missile[v1]._miVar2) {
v14 = missile[v1]._mlid;
missile[v1]._miVar1 = v12;
v15 = missile[v1]._miy;
missile[v1]._miVar2 = v15;
ChangeLight(v14, v12, v15, 8);
} }
} else { } else {
tx = missile[v1]._mix; missile[i]._mitxoff += missile[i]._mixvel;
ty = missile[v1]._miy; missile[i]._mityoff += missile[i]._miyvel;
ChangeLight(missile[v1]._mlid, v12, ty, missile[v1]._miAnimFrame); GetMissilePos(i);
if (!CheckBlock(fx, fy, tx, ty)) if (missile[i]._mix != missile[i]._misx || missile[i]._miy != missile[i]._misy)
CheckMissileCol(ia, v5, v5, 0, tx, ty, 1); CheckMissileCol(i, dam, dam, 0, missile[i]._mix, missile[i]._miy, 0);
if (!CheckBlock(fx, fy, tx, ty + 1)) if (!missile[i]._mirange) {
CheckMissileCol(ia, v5, v5, 0, tx, ty + 1, 1); mx = missile[i]._mix;
if (!CheckBlock(fx, fy, tx, ty - 1)) my = missile[i]._miy;
CheckMissileCol(ia, v5, v5, 0, tx, ty - 1, 1); ChangeLight(missile[i]._mlid, missile[i]._mix, my, missile[i]._miAnimFrame);
if (!CheckBlock(fx, fy, tx + 1, ty)) if (!CheckBlock(px, py, mx, my))
CheckMissileCol(ia, v5, v5, 0, tx + 1, ty, 1); CheckMissileCol(i, dam, dam, 0, mx, my, 1);
if (!CheckBlock(fx, fy, tx + 1, ty - 1)) if (!CheckBlock(px, py, mx, my + 1))
CheckMissileCol(ia, v5, v5, 0, tx + 1, ty - 1, 1); /* check x/y */ CheckMissileCol(i, dam, dam, 0, mx, my + 1, 1);
if (!CheckBlock(fx, fy, tx + 1, ty + 1)) if (!CheckBlock(px, py, mx, my - 1))
CheckMissileCol(ia, v5, v5, 0, tx + 1, ty + 1, 1); CheckMissileCol(i, dam, dam, 0, mx, my - 1, 1);
if (!CheckBlock(fx, fy, tx - 1, ty)) if (!CheckBlock(px, py, mx + 1, my))
CheckMissileCol(ia, v5, v5, 0, tx - 1, ty, 1); CheckMissileCol(i, dam, dam, 0, mx + 1, my, 1);
if (!CheckBlock(fx, fy, tx - 1, ty + 1)) if (!CheckBlock(px, py, mx + 1, my - 1))
CheckMissileCol(ia, v5, v5, 0, tx - 1, ty + 1, 1); CheckMissileCol(i, dam, dam, 0, mx + 1, my - 1, 1); /* check x/y */
if (!CheckBlock(fx, fy, tx - 1, ty - 1)) if (!CheckBlock(px, py, mx + 1, my + 1))
CheckMissileCol(ia, v5, v5, 0, tx - 1, ty - 1, 1); CheckMissileCol(i, dam, dam, 0, mx + 1, my + 1, 1);
v13 = 112 * tx + ty; if (!CheckBlock(px, py, mx - 1, my))
if (!TransList[dung_map[0][v13]] /* check */ CheckMissileCol(i, dam, dam, 0, mx - 1, my, 1);
|| missile[v1]._mixvel < 0 if (!CheckBlock(px, py, mx - 1, my + 1))
&& (TransList[dung_map[0][v13 + 1]] && nSolidTable[dPiece[0][v13 + 1]] CheckMissileCol(i, dam, dam, 0, mx - 1, my + 1, 1);
|| TransList[dung_map[0][v13 - 1]] && nSolidTable[dPiece[0][v13 - 1]])) // TransList[*(&byte_5B78EB + v13)] && nSolidTable[*(_DWORD *)&dflags[39][4 * v13 + 36]]) ) if (!CheckBlock(px, py, mx - 1, my - 1))
{ CheckMissileCol(i, dam, dam, 0, mx - 1, my - 1, 1);
++missile[v1]._mix; if (!TransList[dung_map[mx][my]]
++missile[v1]._miy; || (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]])))) {
missile[v1]._miyoff -= 32; missile[i]._mix++;
} missile[i]._miy++;
if (missile[v1]._miyvel > 0 missile[i]._miyoff -= 32;
&& (TransList[dung_map[tx + 1][ty]] && nSolidTable[dPiece[1][v13]] }
|| TransList[dung_map[tx - 1][ty]] && nSolidTable[dPiece[-1][v13]])) // TransList[block_lvid[v13 + 1940]] && nSolidTable[*(_DWORD *)&dflags[28][4 * v13 + 32]]) ) if (missile[i]._miyvel > 0
{ && (TransList[dung_map[mx + 1][my]] && nSolidTable[dPiece[1 + mx][my]]
missile[v1]._miyoff -= 32; || TransList[dung_map[mx - 1][my]] && nSolidTable[dPiece[-1 + mx][my]])) {
} missile[i]._miyoff -= 32;
if (missile[v1]._mixvel > 0 }
&& (TransList[dung_map[0][v13 + 1]] && nSolidTable[dPiece[0][v13 + 1]] if (missile[i]._mixvel > 0
|| 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]]
{ || TransList[dung_map[mx][my - 1]] && nSolidTable[dPiece[mx][my - 1]])) {
missile[v1]._mixoff -= 32; missile[i]._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