From 91827e87d181bab39308177f205dbedc7cc78a76 Mon Sep 17 00:00:00 2001 From: Numielle Date: Sun, 20 Apr 2014 23:48:57 +0200 Subject: Core/Spells: Fixed double heal reduction on Eart Shield (issue #4032). --- src/server/scripts/Spells/spell_shaman.cpp | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'src') diff --git a/src/server/scripts/Spells/spell_shaman.cpp b/src/server/scripts/Spells/spell_shaman.cpp index 707c8a0985f..a199569401d 100644 --- a/src/server/scripts/Spells/spell_shaman.cpp +++ b/src/server/scripts/Spells/spell_shaman.cpp @@ -310,6 +310,12 @@ class spell_sha_earth_shield : public SpellScriptLoader amount = caster->SpellHealingBonusDone(GetUnitOwner(), GetSpellInfo(), amount, HEAL); amount = GetUnitOwner()->SpellHealingBonusTaken(caster, GetSpellInfo(), amount, HEAL); + // If target is affected by healing reduction, modifier is guaranteed to be negative + // value (e.g. -50). To revert the effect, multiply amount with reciprocal of relative value: + // (100 / ((-1) * modifier)) * 100 = (-1) * 100 * 100 / modifier = -10000 / modifier + if (int32 modifier = GetUnitOwner()->GetMaxNegativeAuraModifier(SPELL_AURA_MOD_HEALING_PCT)) + ApplyPct(amount, -10000.0f / float(modifier)); + // Glyph of Earth Shield //! WORKAROUND //! this glyph is a proc -- cgit v1.2.3