diff --git a/Source/player.cpp b/Source/player.cpp index ec40ebb2e..7265e597c 100644 --- a/Source/player.cpp +++ b/Source/player.cpp @@ -2292,7 +2292,7 @@ BOOL WeaponDur(int pnum, int durrnd) BOOL PlrHitMonst(int pnum, int m) { BOOL rv, ret; - int hit, hper, mind, maxd, dam, lvl, phanditype, mClass, skdam, tac; + int hit, hper, mind, maxd, ddp, dam, skdam, phanditype, tmac; if ((DWORD)m >= MAXMONSTERS) { app_fatal("PlrHitMonst: illegal monster %d", m); @@ -2321,7 +2321,8 @@ BOOL PlrHitMonst(int pnum, int m) hit = 0; } - hper = (plr[pnum]._pDexterity >> 1) + plr[pnum]._pLevel + 50 - (monster[m].mArmorClass - plr[pnum]._pIEnAc); + tmac = monster[m].mArmorClass - plr[pnum]._pIEnAc; + hper = (plr[pnum]._pDexterity >> 1) + plr[pnum]._pLevel + 50 - tmac; if (plr[pnum]._pClass == PC_WARRIOR) { hper += 20; } @@ -2342,12 +2343,13 @@ BOOL PlrHitMonst(int pnum, int m) if (hit < hper) { #endif mind = plr[pnum]._pIMinDam; - maxd = random(5, plr[pnum]._pIMaxDam - mind + 1); - dam = maxd + mind; - dam += plr[pnum]._pDamageMod + plr[pnum]._pIBonusDamMod + dam * plr[pnum]._pIBonusDam / 100; + maxd = plr[pnum]._pIMaxDam; + dam = random(5, maxd - mind + 1) + mind; + dam += dam * plr[pnum]._pIBonusDam / 100; + dam += plr[pnum]._pDamageMod + plr[pnum]._pIBonusDamMod; if (plr[pnum]._pClass == PC_WARRIOR) { - lvl = plr[pnum]._pLevel; - if (random(6, 100) < lvl) { + ddp = plr[pnum]._pLevel; + if (random(6, 100) < ddp) { dam *= 2; } } @@ -2360,8 +2362,7 @@ BOOL PlrHitMonst(int pnum, int m) phanditype = ITYPE_MACE; } - mClass = monster[m].MData->mMonstClass; - switch (mClass) { + switch (monster[m].MData->mMonstClass) { case MC_UNDEAD: if (phanditype == ITYPE_SWORD) { dam -= dam >> 1; @@ -2384,18 +2385,18 @@ BOOL PlrHitMonst(int pnum, int m) dam *= 3; } - skdam = dam << 6; + dam <<= 6; if (pnum == myplr) { - monster[m]._mhitpoints -= skdam; + monster[m]._mhitpoints -= dam; } if (plr[pnum]._pIFlags & ISPL_RNDSTEALLIFE) { - tac = random(7, skdam >> 3); - plr[pnum]._pHitPoints += tac; + skdam = random(7, dam >> 3); + plr[pnum]._pHitPoints += skdam; if (plr[pnum]._pHitPoints > plr[pnum]._pMaxHP) { plr[pnum]._pHitPoints = plr[pnum]._pMaxHP; } - plr[pnum]._pHPBase += tac; + plr[pnum]._pHPBase += skdam; if (plr[pnum]._pHPBase > plr[pnum]._pMaxHPBase) { plr[pnum]._pHPBase = plr[pnum]._pMaxHPBase; } @@ -2403,16 +2404,16 @@ BOOL PlrHitMonst(int pnum, int m) } if (plr[pnum]._pIFlags & (ISPL_STEALMANA_3 | ISPL_STEALMANA_5) && !(plr[pnum]._pIFlags & ISPL_NOMANA)) { if (plr[pnum]._pIFlags & ISPL_STEALMANA_3) { - tac = 3 * skdam / 100; + skdam = 3 * dam / 100; } if (plr[pnum]._pIFlags & ISPL_STEALMANA_5) { - tac = 5 * skdam / 100; + skdam = 5 * dam / 100; } - plr[pnum]._pMana += tac; + plr[pnum]._pMana += skdam; if (plr[pnum]._pMana > plr[pnum]._pMaxMana) { plr[pnum]._pMana = plr[pnum]._pMaxMana; } - plr[pnum]._pManaBase += tac; + plr[pnum]._pManaBase += skdam; if (plr[pnum]._pManaBase > plr[pnum]._pMaxManaBase) { plr[pnum]._pManaBase = plr[pnum]._pMaxManaBase; } @@ -2420,16 +2421,16 @@ BOOL PlrHitMonst(int pnum, int m) } if (plr[pnum]._pIFlags & (ISPL_STEALLIFE_3 | ISPL_STEALLIFE_5)) { if (plr[pnum]._pIFlags & ISPL_STEALLIFE_3) { - tac = 3 * skdam / 100; + skdam = 3 * dam / 100; } if (plr[pnum]._pIFlags & ISPL_STEALLIFE_5) { - tac = 5 * skdam / 100; + skdam = 5 * dam / 100; } - plr[pnum]._pHitPoints += tac; + plr[pnum]._pHitPoints += skdam; if (plr[pnum]._pHitPoints > plr[pnum]._pMaxHP) { plr[pnum]._pHitPoints = plr[pnum]._pMaxHP; } - plr[pnum]._pHPBase += tac; + plr[pnum]._pHPBase += skdam; if (plr[pnum]._pHPBase > plr[pnum]._pMaxHPBase) { plr[pnum]._pHPBase = plr[pnum]._pMaxHPBase; } @@ -2452,13 +2453,13 @@ BOOL PlrHitMonst(int pnum, int m) } } else { if (monster[m]._mmode == MM_STONE) { - M_StartHit(m, pnum, skdam); + M_StartHit(m, pnum, dam); monster[m]._mmode = MM_STONE; } else { if (plr[pnum]._pIFlags & ISPL_KNOCKBACK) { M_GetKnockback(m); } - M_StartHit(m, pnum, skdam); + M_StartHit(m, pnum, dam); } } rv = TRUE;