From f7c2007567101a335dc6bb52babaad3ca5f11e31 Mon Sep 17 00:00:00 2001 From: Anders Jenbo Date: Wed, 30 Dec 2020 00:21:24 +0100 Subject: [PATCH] [hellfire] Plr2PlrMHit --- Source/missiles.cpp | 47 ++++++++++++++++++++++++++++++++------------- 1 file changed, 34 insertions(+), 13 deletions(-) diff --git a/Source/missiles.cpp b/Source/missiles.cpp index 3d3129830..9c07edca7 100644 --- a/Source/missiles.cpp +++ b/Source/missiles.cpp @@ -958,8 +958,11 @@ BOOL Plr2PlrMHit(int pnum, int p, int mindam, int maxdam, int dist, int mtype, B #endif ) { - int tac, resper, dam, blk, blkper, hper, hit; + int dam, blk, blkper, hper, hit, resper; +#ifdef HELLFIRE + *blocked = false; +#endif if (plr[p]._pInvincible) { return FALSE; } @@ -968,7 +971,7 @@ BOOL Plr2PlrMHit(int pnum, int p, int mindam, int maxdam, int dist, int mtype, B return FALSE; } - if (plr[p]._pSpellFlags & 1 && !missiledata[mtype].mType) { + if (plr[p]._pSpellFlags & 1 && missiledata[mtype].mType == 0) { return FALSE; } @@ -988,7 +991,7 @@ BOOL Plr2PlrMHit(int pnum, int p, int mindam, int maxdam, int dist, int mtype, B break; } hper = random_(69, 100); - if (!missiledata[mtype].mType) { + if (missiledata[mtype].mType == 0) { hit = plr[pnum]._pIBonusToHit + plr[pnum]._pLevel - (dist * dist >> 1) @@ -998,7 +1001,11 @@ BOOL Plr2PlrMHit(int pnum, int p, int mindam, int maxdam, int dist, int mtype, B + plr[pnum]._pDexterity + 50; if (plr[pnum]._pClass == PC_ROGUE) hit += 20; +#ifdef HELLFIRE + if (plr[pnum]._pClass == PC_WARRIOR || plr[pnum]._pClass == PC_BARD) +#else if (plr[pnum]._pClass == PC_WARRIOR) +#endif hit += 10; } else { hit = plr[pnum]._pMagic @@ -1007,6 +1014,10 @@ BOOL Plr2PlrMHit(int pnum, int p, int mindam, int maxdam, int dist, int mtype, B + 50; if (plr[pnum]._pClass == PC_SORCERER) hit += 20; +#ifdef HELLFIRE + else if (plr[pnum]._pClass == PC_BARD) + hit += 10; +#endif } if (hit < 5) hit = 5; @@ -1033,38 +1044,48 @@ BOOL Plr2PlrMHit(int pnum, int p, int mindam, int maxdam, int dist, int mtype, B dam = plr[p]._pHitPoints / 3; } else { dam = mindam + random_(70, maxdam - mindam + 1); - if (!missiledata[mtype].mType) + if (missiledata[mtype].mType == 0) dam += plr[pnum]._pIBonusDamMod + plr[pnum]._pDamageMod + dam * plr[pnum]._pIBonusDam / 100; if (!shift) dam <<= 6; } - if (missiledata[mtype].mType) + if (missiledata[mtype].mType != 0) dam >>= 1; if (resper > 0) { + dam -= (dam * resper) / 100; if (pnum == myplr) - NetSendCmdDamage(TRUE, p, dam - resper * dam / 100); + NetSendCmdDamage(TRUE, p, dam); if (plr[pnum]._pClass == PC_WARRIOR) { - tac = PS_WARR69; + PlaySfxLoc(PS_WARR69, plr[pnum]._px, plr[pnum]._py); #ifndef SPAWN } else if (plr[pnum]._pClass == PC_ROGUE) { - tac = PS_ROGUE69; + PlaySfxLoc(PS_ROGUE69, plr[pnum]._px, plr[pnum]._py); } else if (plr[pnum]._pClass == PC_SORCERER) { - tac = PS_MAGE69; + PlaySfxLoc(PS_MAGE69, plr[pnum]._px, plr[pnum]._py); +#endif +#ifdef HELLFIRE + } else if (plr[pnum]._pClass == PC_MONK) { + PlaySfxLoc(PS_MONK69, plr[pnum]._px, plr[pnum]._py); + } else if (plr[pnum]._pClass == PC_BARD) { + PlaySfxLoc(PS_ROGUE69, plr[pnum]._px, plr[pnum]._py); + } else if (plr[pnum]._pClass == PC_BARBARIAN) { + PlaySfxLoc(PS_WARR69, plr[pnum]._px, plr[pnum]._py); #endif - } else { - return TRUE; } - PlaySfxLoc(tac, plr[pnum]._px, plr[pnum]._py); + return TRUE; } else { if (blkper < blk) { StartPlrBlock(p, GetDirection(plr[p]._px, plr[p]._py, plr[pnum]._px, plr[pnum]._py)); +#ifdef HELLFIRE + *blocked = true; +#endif } else { if (pnum == myplr) NetSendCmdDamage(TRUE, p, dam); StartPlrHit(p, dam, FALSE); } + return TRUE; } - return TRUE; } return FALSE; }