From 66d403b599347f501794aea11cfdcef96eb46855 Mon Sep 17 00:00:00 2001 From: qndel Date: Tue, 19 Mar 2019 22:11:53 +0100 Subject: [PATCH] MI_Etherealize bin exact --- Source/missiles.cpp | 62 ++++++++++++++++----------------------------- 1 file changed, 22 insertions(+), 40 deletions(-) diff --git a/Source/missiles.cpp b/Source/missiles.cpp index 182452371..79aad72eb 100644 --- a/Source/missiles.cpp +++ b/Source/missiles.cpp @@ -4078,52 +4078,34 @@ LABEL_33: void __fastcall MI_Etherealize(int i) { - int v1; // ebx - int v2; // esi - int v3; // edi - int v4; // edi - int v5; // edx - int v6; // eax - int v7; // ecx - int v8; // edx - BOOLEAN v9; // zf - char v10; // al + int src; - v1 = i; - v2 = i; - v3 = missile[i]._misource; - --missile[v2]._mirange; - v4 = v3; - v5 = plr[v4]._pxoff; - v6 = plr[v4].WorldX; - v7 = plr[v4].WorldY; - missile[v2]._mix = v6; - missile[v2]._mitxoff = v5 << 16; - v8 = plr[v4]._pyoff << 16; - v9 = plr[v4]._pmode == PM_WALK3; - missile[v2]._miy = v7; - missile[v2]._mityoff = v8; - if (v9) { - missile[v2]._misx = plr[v4]._px; - missile[v2]._misy = plr[v4]._py; + src = missile[i]._misource; + missile[i]._mirange--; + missile[i]._mix = plr[src].WorldX; + missile[i]._miy = plr[src].WorldY; + missile[i]._mitxoff = plr[src]._pxoff << 16; + missile[i]._mityoff = plr[src]._pyoff << 16; + if (plr[src]._pmode == PM_WALK3) { + missile[i]._misx = plr[src]._px; + missile[i]._misy = plr[src]._py; } else { - missile[v2]._misx = v6; - missile[v2]._misy = v7; + missile[i]._misx = missile[i]._mix; + missile[i]._misy = missile[i]._miy; } - GetMissilePos(v1); - if (plr[v4]._pmode == PM_WALK3) { - if (plr[v4]._pdir == 2) - ++missile[v2]._mix; + GetMissilePos(i); + if (plr[src]._pmode == PM_WALK3) { + if (plr[src]._pdir == 2) + missile[i]._mix++; else - ++missile[v2]._miy; + missile[i]._miy++; } - _LOBYTE(plr[v4]._pSpellFlags) |= 1u; - v10 = plr[v4]._pSpellFlags; - if (!missile[v2]._mirange || plr[v4]._pHitPoints <= 0) { - missile[v2]._miDelFlag = TRUE; - _LOBYTE(plr[v4]._pSpellFlags) = v10 & 0xFE; + plr[src]._pSpellFlags |= 1; + if (!missile[i]._mirange || plr[src]._pHitPoints <= 0) { + missile[i]._miDelFlag = TRUE; + plr[src]._pSpellFlags &= ~0x1; } - PutMissile(v1); + PutMissile(i); } void __fastcall MI_Firemove(int i)