diff options
Diffstat (limited to 'src/game/Unit.cpp')
-rw-r--r-- | src/game/Unit.cpp | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index 4aee8dd99ba..3cad4a08d1b 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -9056,6 +9056,7 @@ uint32 Unit::SpellHealingBonus(Unit *pVictim, SpellEntry const *spellProto, uint // Check for table values SpellBonusEntry const* bonus = spellmgr.GetSpellBonusData(spellProto->Id); float coeff; + float factorMod = 1.0f; bool scripted = false; if (bonus) { @@ -9081,6 +9082,11 @@ uint32 Unit::SpellHealingBonus(Unit *pVictim, SpellEntry const *spellProto, uint else coeff = 1.0f; } + // Earthliving - 0.45% of normal hot coeff + else if (spellProto->SpellFamilyName==SPELLFAMILY_SHAMAN && spellProto->SpellFamilyFlags[1] & 0x80000) + { + factorMod *= 0.45f; + } } // Default calculation @@ -9137,15 +9143,15 @@ uint32 Unit::SpellHealingBonus(Unit *pVictim, SpellEntry const *spellProto, uint coeff = (CastingTime / 3500.0f) * DotFactor * 1.88f; } - float coeff2 = CalculateLevelPenalty(spellProto)* stack; - TakenTotal += TakenAdvertisedBenefit * coeff * coeff2; + factorMod *= CalculateLevelPenalty(spellProto)* stack; + TakenTotal += TakenAdvertisedBenefit * coeff * factorMod; if(Player* modOwner = GetSpellModOwner()) { coeff *= 100.0f; modOwner->ApplySpellMod(spellProto->Id, SPELLMOD_SPELL_BONUS_DAMAGE, coeff); coeff /= 100.0f; } - DoneTotal += DoneAdvertisedBenefit * coeff * coeff2; + DoneTotal += DoneAdvertisedBenefit * coeff * factorMod; } // use float as more appropriate for negative values and percent applying |