From df145cca4742e05d56feee7ca69ea9390df99d7f Mon Sep 17 00:00:00 2001 From: qndel Date: Sun, 29 Sep 2019 03:38:18 +0200 Subject: [PATCH] [hellfire] MI_Blodboil bin exact --- Source/missiles.cpp | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/Source/missiles.cpp b/Source/missiles.cpp index aed5756b9..cc2ba673f 100644 --- a/Source/missiles.cpp +++ b/Source/missiles.cpp @@ -5028,10 +5028,50 @@ void MI_Nova(int i) missile[i]._miDelFlag = TRUE; } +#ifdef HELLFIRE +void MI_Blodboil(int i) +{ + int lvl, id, hpdif; + + missile[i]._mirange--; + if (missile[i]._mirange == 0) { + id = missile[i]._miVar1; + if ((plr[id]._pSpellFlags & 2) == 2) { + int blodboilSFX[NUM_CLASSES] = { PS_WARR72, PS_ROGUE72, PS_MAGE72, PS_MAGE72, PS_ROGUE72, PS_WARR72 }; // BUGFIX: change second PS_MAGE72 to PS_MONK72? + plr[id]._pSpellFlags &= ~0x2; + plr[id]._pSpellFlags |= 4; + if (2 * (id > 0)) + lvl = plr[id]._pLevel; + else + lvl = 1; + missile[i]._mirange = lvl + 10 * missile[i]._mispllvl + 245; + hpdif = plr[id]._pMaxHP - plr[id]._pHitPoints; + CalcPlrItemVals(id, TRUE); + plr[id]._pHitPoints -= hpdif; + if (plr[id]._pHitPoints < 64) + plr[id]._pHitPoints = 64; + drawpanflag = 255; + PlaySfxLoc(blodboilSFX[plr[id]._pClass], plr[id].WorldX, plr[id].WorldY); + } else { + int blodboilSFX[NUM_CLASSES] = { PS_WARR72, PS_ROGUE72, PS_MAGE72, PS_MAGE72, PS_ROGUE72, PS_WARR72 }; // BUGFIX: change second PS_MAGE72 to PS_MONK72? + missile[i]._miDelFlag = TRUE; + plr[id]._pSpellFlags &= ~0x4; + hpdif = plr[id]._pMaxHP - plr[id]._pHitPoints; + CalcPlrItemVals(id, TRUE); + plr[id]._pHitPoints -= hpdif + missile[i]._miVar2; + if (plr[id]._pHitPoints < 64) + plr[id]._pHitPoints = 64; + drawpanflag = 255; + PlaySfxLoc(blodboilSFX[plr[id]._pClass], plr[id].WorldX, plr[id].WorldY); + } + } +} +#else void MI_Blodboil(int i) { missile[i]._miDelFlag = TRUE; } +#endif void MI_Flame(int i) {