From 2ba8affc8fb3f1cbb4e43ce6d7007a8abbde3d87 Mon Sep 17 00:00:00 2001 From: qndel Date: Sun, 29 Sep 2019 02:58:51 +0200 Subject: [PATCH] [hellfire] AddBlodboil bin exact --- Source/missiles.cpp | 25 +++++++++++++++++++++++++ Source/missiles.h | 1 + 2 files changed, 26 insertions(+) diff --git a/Source/missiles.cpp b/Source/missiles.cpp index aed5756b9..acc946620 100644 --- a/Source/missiles.cpp +++ b/Source/missiles.cpp @@ -1857,6 +1857,31 @@ void missiles_hbolt_arrow(int mi, int sx, int sy, int dx, int dy, int midir, cha missile[mi]._miVar2 = sy; missile[mi]._mlid = AddLight(sx, sy, 8); } + +void AddBlodboil(int mi, int sx, int sy, int dx, int dy, int midir, char mienemy, int id, int dam) +{ + int lvl; + + if (id == -1 || plr[id]._pSpellFlags & 6 || plr[id]._pHitPoints <= plr[id]._pLevel << 6) { + missile[mi]._miDelFlag = TRUE; + } else { + int blodboilSFX[NUM_CLASSES] = { PS_WARR70, PS_ROGUE70, PS_MAGE70, PS_MAGE70, PS_ROGUE70, PS_WARR70 }; // BUGFIX: change second PS_MAGE70 to PS_MONK70? + UseMana(id, 22); + missile[mi]._miVar1 = id; + int tmp = 3 * plr[id]._pLevel; + tmp <<= 7; + plr[id]._pSpellFlags |= 2u; + missile[mi]._miVar2 = tmp; + if (2 * (id > 0)) + lvl = plr[id]._pLevel; + else + lvl = 1; + missile[mi]._mirange = lvl + 10 * missile[mi]._mispllvl + 245; + CalcPlrItemVals(id, TRUE); + drawpanflag = 255; + PlaySfxLoc(blodboilSFX[plr[id]._pClass], plr[id].WorldX, plr[id].WorldY); + } +} #endif void AddLArrow(int mi, int sx, int sy, int dx, int dy, int midir, char mienemy, int id, int dam) diff --git a/Source/missiles.h b/Source/missiles.h index 4909ee6c9..dc524b32d 100644 --- a/Source/missiles.h +++ b/Source/missiles.h @@ -64,6 +64,7 @@ void missiles_ring(int mi, int sx, int sy, int dx, int dy, int midir, char miene void missiles_search(int mi, int sx, int sy, int dx, int dy, int midir, char mienemy, int id, int dam); void missiles_cbolt_arrow(int mi, int sx, int sy, int dx, int dy, int midir, char mienemy, int id, int dam); void missiles_hbolt_arrow(int mi, int sx, int sy, int dx, int dy, int midir, char mienemy, int id, int dam); +void AddBlodboil(int mi, int sx, int sy, int dx, int dy, int midir, char mienemy, int id, int dam); #endif void AddLArrow(int mi, int sx, int sy, int dx, int dy, int midir, char mienemy, int id, int dam); void AddArrow(int mi, int sx, int sy, int dx, int dy, int midir, char mienemy, int id, int dam);