From 669acd68341989121bb550f0de9d164f920e9df2 Mon Sep 17 00:00:00 2001 From: Anders Jenbo Date: Sat, 18 May 2019 01:43:35 +0200 Subject: [PATCH] Clean up MI_Firebolt --- Source/missiles.cpp | 207 ++++++++++++++------------------------------ 1 file changed, 66 insertions(+), 141 deletions(-) diff --git a/Source/missiles.cpp b/Source/missiles.cpp index 03903d03b..8fd640df3 100644 --- a/Source/missiles.cpp +++ b/Source/missiles.cpp @@ -2667,157 +2667,82 @@ void MI_Arrow(int i) void MI_Firebolt(int i) { - int v1; // edi - int v2; // esi - int v3; // ecx - int v4; // ST1C_4 - int v5; // edx - int v6; // ecx - int v7; // eax - int v9; // edi - int v10; // eax - int v11; // edi - int v12; // eax - int v13; // ecx - int v14; // ecx - int v15; // eax - int v16; // esi - int v17; // edx - int v18; // eax - int v19; // esi - int v21; // [esp+Ch] [ebp-Ch] - int v22; // [esp+10h] [ebp-8h] - int ia; // [esp+14h] [ebp-4h] + int omx, omy; + int d, p; - v1 = i; - ia = i; - v2 = i; - --missile[v2]._mirange; - if (missile[i]._mitype == MIS_BONESPIRIT && missile[v2]._mimfnum == 8) { - if (!missile[i]._mirange) { - v3 = missile[v2]._mlid; - if (v3 >= 0) - AddUnLight(v3); - v4 = missile[v2]._miy; - v5 = missile[v2]._mix; - missile[v2]._miDelFlag = TRUE; - PlaySfxLoc(LS_BSIMPCT, v5, v4); + missile[i]._mirange--; + if (missile[i]._mitype != MIS_BONESPIRIT || missile[i]._mimfnum != 8) { + omx = missile[i]._mitxoff; + omy = missile[i]._mityoff; + missile[i]._mitxoff += missile[i]._mixvel; + missile[i]._mityoff += missile[i]._miyvel; + GetMissilePos(i); + p = missile[i]._misource; + if (p != -1) { + if (!missile[i]._micaster) { + switch (missile[i]._mitype) { + case MIS_FIREBOLT: + d = random(75, 10) + (plr[p]._pMagic >> 3) + missile[i]._mispllvl + 1; + break; + case MIS_FLARE: + d = 3 * missile[i]._mispllvl - (plr[p]._pMagic >> 3) + (plr[p]._pMagic >> 1); + break; + case MIS_BONESPIRIT: + d = 0; + break; + } + } else { + d = monster[p].mMinDamage + random(77, monster[p].mMaxDamage - monster[p].mMinDamage + 1); + } + } else { + d = currlevel + random(78, 2 * currlevel); } - goto LABEL_39; - } - v6 = missile[v2]._mityoff; - v22 = missile[v2]._mitxoff; - v21 = v6; - v7 = v6 + missile[v2]._miyvel; - missile[v2]._mitxoff = v22 + missile[v2]._mixvel; - missile[v2]._mityoff = v7; - GetMissilePos(v1); - v9 = missile[v2]._misource; - if (v9 == -1) { - v12 = random(78, 2 * currlevel); - v13 = currlevel; - goto LABEL_17; - } - if (missile[v2]._micaster) { - v11 = v9; - v12 = random(77, (unsigned char)monster[v11].mMaxDamage - (unsigned char)monster[v11].mMinDamage + 1); - v13 = (unsigned char)monster[v11].mMinDamage; - LABEL_17: - v10 = v13 + v12; - goto LABEL_19; - } - switch (missile[v2]._mitype) { - case 1: - v10 = (plr[v9]._pMagic >> 3) + random(75, 10) + missile[v2]._mispllvl + 1; - break; - case 0x18: - v10 = (plr[v9]._pMagic >> 1) + 3 * missile[v2]._mispllvl - (plr[v9]._pMagic >> 3); - break; - case 0x3F: - v10 = 0; - break; - default: - v10 = v21; - break; - } -LABEL_19: - v14 = missile[v2]._mix; - if (v14 == missile[v2]._misx && missile[v2]._miy == missile[v2]._misy) { - v1 = ia; - } else { - v1 = ia; - CheckMissileCol(ia, v10, v10, 0, v14, missile[v2]._miy, 0); - } - if (missile[v2]._mirange) { - v17 = missile[v2]._mix; - if (v17 != missile[v2]._miVar1 || missile[v2]._miy != missile[v2]._miVar2) { - missile[v2]._miVar1 = v17; - v18 = missile[v2]._miy; - missile[v2]._miVar2 = v18; - v19 = missile[v2]._mlid; - if (v19 >= 0) - ChangeLight(v19, v17, v18, 8); + if (missile[i]._mix != missile[i]._misx || missile[i]._miy != missile[i]._misy) { + CheckMissileCol(i, d, d, 0, missile[i]._mix, missile[i]._miy, 0); } - } else { - missile[v2]._mitxoff = v22; - missile[v2]._miDelFlag = TRUE; - missile[v2]._mityoff = v21; - GetMissilePos(v1); - v15 = missile[v2]._mitype - 1; - if (missile[v2]._mitype == MIS_FIREBOLT || (v15 = missile[v2]._mitype - 21, missile[v2]._mitype == MIS_MAGMABALL)) { - _LOBYTE(v15) = missile[v2]._micaster; - AddMissile( - missile[v2]._mix, - missile[v2]._miy, - v1, - 0, - missile[v2]._mimfnum, - MIS_MISEXP, - v15, - missile[v2]._misource, - 0, - 0); - } else { - switch (missile[v2]._mitype) { + if (!missile[i]._mirange) { + missile[i]._miDelFlag = TRUE; + missile[i]._mitxoff = omx; + missile[i]._mityoff = omy; + GetMissilePos(i); + switch (missile[i]._mitype) { + case MIS_FIREBOLT: + case MIS_MAGMABALL: + AddMissile(missile[i]._mix, missile[i]._miy, i, 0, missile[i]._mimfnum, MIS_MISEXP, missile[i]._micaster, missile[i]._misource, 0, 0); + break; case MIS_FLARE: - AddMissile( - missile[v2]._mix, - missile[v2]._miy, - v1, - 0, - missile[v2]._mimfnum, - MIS_MISEXP2, - _LOBYTE(missile[v2]._micaster), - missile[v2]._misource, - 0, - 0); + AddMissile(missile[i]._mix, missile[i]._miy, i, 0, missile[i]._mimfnum, MIS_MISEXP2, missile[i]._micaster, missile[i]._misource, 0, 0); break; case MIS_ACID: - AddMissile( - missile[v2]._mix, - missile[v2]._miy, - v1, - 0, - missile[v2]._mimfnum, - MIS_MISEXP3, - _LOBYTE(missile[v2]._micaster), - missile[v2]._misource, - 0, - 0); + AddMissile(missile[i]._mix, missile[i]._miy, i, 0, missile[i]._mimfnum, MIS_MISEXP3, missile[i]._micaster, missile[i]._misource, 0, 0); break; case MIS_BONESPIRIT: - SetMissDir(v1, 8); - missile[v2]._mirange = 7; - missile[v2]._miDelFlag = FALSE; - goto LABEL_39; + SetMissDir(i, 8); + missile[i]._mirange = 7; + missile[i]._miDelFlag = FALSE; + PutMissile(i); + return; + } + if (missile[i]._mlid >= 0) + AddUnLight(missile[i]._mlid); + PutMissile(i); + } 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; + if (missile[i]._mlid >= 0) + ChangeLight(missile[i]._mlid, missile[i]._miVar1, missile[i]._miVar2, 8); } + PutMissile(i); } - v16 = missile[v2]._mlid; - if (v16 >= 0) - AddUnLight(v16); - } -LABEL_39: - PutMissile(v1); + } else if (!missile[i]._mirange) { + if (missile[i]._mlid >= 0) + AddUnLight(missile[i]._mlid); + missile[i]._miDelFlag = TRUE; + PlaySfxLoc(LS_BSIMPCT, missile[i]._mix, missile[i]._miy); + PutMissile(i); + } else + PutMissile(i); } void MI_Lightball(int i)