From b0fac7e542d20dddc03d5ba930d5986f4a3dc20c Mon Sep 17 00:00:00 2001 From: Sergey Semushin Date: Fri, 19 Apr 2019 23:50:21 +0300 Subject: [PATCH] Clean up Obj_BCrossDamage. --- Source/objects.cpp | 62 +++++++++++++++++++--------------------------- 1 file changed, 25 insertions(+), 37 deletions(-) diff --git a/Source/objects.cpp b/Source/objects.cpp index 6d2050322..5012863c6 100644 --- a/Source/objects.cpp +++ b/Source/objects.cpp @@ -2029,45 +2029,33 @@ void Obj_Trap(int i) void Obj_BCrossDamage(int i) { - int v1; // esi - BOOLEAN v2; // zf - int v3; // ecx - int v4; // edx - int v6; // ecx - int damage[4]; // [esp+4h] [ebp-18h] - int v8; // [esp+18h] [ebp-4h] - - v1 = myplr; - v8 = i; - v2 = plr[myplr]._pmode == PM_DEATH; - damage[0] = 6; - damage[1] = 8; - damage[2] = 10; - damage[3] = 12; - if (!v2) { - v3 = plr[v1]._pFireResist; - if (v3 > 0) - damage[leveltype - 1] -= v3 * damage[leveltype - 1] / 100; - if (plr[v1].WorldX == object[v8]._ox && plr[v1].WorldY == object[v8]._oy - 1) { - v4 = damage[leveltype - 1]; - plr[v1]._pHitPoints -= v4; - plr[v1]._pHPBase -= v4; - if (plr[v1]._pHitPoints >> 6 <= 0) { - SyncPlrKill(myplr, 0); - drawhpflag = TRUE; - return; - } - if (plr[myplr]._pClass == PC_WARRIOR) { - v6 = PS_WARR68; - } else if (plr[myplr]._pClass == PC_ROGUE) { - v6 = PS_ROGUE68; - } else if (plr[myplr]._pClass == PC_SORCERER) { - v6 = PS_MAGE68; - } - PlaySfxLoc(v6, plr[v1].WorldX, plr[v1].WorldY); - drawhpflag = TRUE; + int fire_resist; + int damage[4] = { 6, 8, 10, 12 }; + + if (plr[myplr]._pmode == PM_DEATH) + return; + + fire_resist = plr[myplr]._pFireResist; + if (fire_resist > 0) + damage[leveltype - 1] -= fire_resist * damage[leveltype - 1] / 100; + + if (plr[myplr].WorldX != object[i]._ox || plr[myplr].WorldY != object[i]._oy - 1) + return; + + plr[myplr]._pHitPoints -= damage[leveltype - 1]; + plr[myplr]._pHPBase -= damage[leveltype - 1]; + if (plr[myplr]._pHitPoints >> 6 <= 0) { + SyncPlrKill(myplr, 0); + } else { + if (plr[myplr]._pClass == PC_WARRIOR) { + PlaySfxLoc(PS_WARR68, plr[myplr].WorldX, plr[myplr].WorldY); + } else if (plr[myplr]._pClass == PC_ROGUE) { + PlaySfxLoc(PS_ROGUE68, plr[myplr].WorldX, plr[myplr].WorldY); + } else if (plr[myplr]._pClass == PC_SORCERER) { + PlaySfxLoc(PS_MAGE68, plr[myplr].WorldX, plr[myplr].WorldY); } } + drawhpflag = TRUE; } void ProcessObjects()