aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShauren <none@none>2010-09-02 15:34:36 +0200
committerShauren <none@none>2010-09-02 15:34:36 +0200
commit15880d27eadbd3cdabf2ff2df607caf1229f48c9 (patch)
tree035b4267ac2a0cdf1083a33c38cf37b534520878
parentee31212cd5c208d17aa0d4af1c023a95a25affee (diff)
Core/Spells: Fixed Health Leech effect, should not apply healing multiplier to damage done
--HG-- branch : trunk
-rw-r--r--src/server/game/Spells/SpellEffects.cpp10
1 files changed, 5 insertions, 5 deletions
diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp
index ce0afca879f..3b177cfc57f 100644
--- a/src/server/game/Spells/SpellEffects.cpp
+++ b/src/server/game/Spells/SpellEffects.cpp
@@ -2436,14 +2436,14 @@ void Spell::EffectHealthLeech(SpellEffIndex effIndex)
float healMultiplier = SpellMgr::CalculateSpellEffectValueMultiplier(m_spellInfo, effIndex, m_originalCaster, this);
- int32 newDamage = int32(damage * healMultiplier);
- newDamage = std::min(int32(unitTarget->GetHealth()), newDamage);
- m_damage += newDamage;
+ m_damage += damage;
+ // get max possible damage, don't count overkill for heal
+ uint32 healthGain = uint32(-unitTarget->GetHealthGain(-damage) * healMultiplier);
if (m_caster->isAlive())
{
- newDamage = m_caster->SpellHealingBonus(m_caster, m_spellInfo, newDamage, HEAL);
- m_caster->HealBySpell(m_caster, m_spellInfo, uint32(newDamage));
+ healthGain = m_caster->SpellHealingBonus(m_caster, m_spellInfo, healthGain, HEAL);
+ m_caster->HealBySpell(m_caster, m_spellInfo, uint32(healthGain));
}
}