aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAnubisss <none@none>2009-06-01 21:30:31 +0200
committerAnubisss <none@none>2009-06-01 21:30:31 +0200
commit16e0e9931edf21f837672cdc14f5a8298eba444e (patch)
tree11b932b1813ab0c3f6b9d8c4634beb242f6c8153 /src
parent38c6880d93327ca18c92b6c03bae6629de8592b3 (diff)
*Fix the bug that Lay on Hands heals the target for an amount equal to the target's maximum health instead of the caster's maximum health.
--HG-- branch : trunk
Diffstat (limited to 'src')
-rw-r--r--src/game/SpellEffects.cpp15
1 files changed, 14 insertions, 1 deletions
diff --git a/src/game/SpellEffects.cpp b/src/game/SpellEffects.cpp
index 190f9934b84..f2ea33c5cc4 100644
--- a/src/game/SpellEffects.cpp
+++ b/src/game/SpellEffects.cpp
@@ -4348,7 +4348,20 @@ void Spell::EffectHealMaxHealth(uint32 /*i*/)
return;
uint32 addhealth = unitTarget->GetMaxHealth() - unitTarget->GetHealth();
- unitTarget->SetHealth(unitTarget->GetMaxHealth());
+
+ // Lay on Hands
+ if(m_spellInfo->SpellFamilyName == SPELLFAMILY_PALADIN && m_spellInfo->SpellFamilyFlags & 0x0000000000008000)
+ {
+ if(!m_originalCaster)
+ return;
+ addhealth = addhealth > m_originalCaster->GetMaxHealth() ? m_originalCaster->GetMaxHealth() : addhealth;
+ uint32 LoHamount = unitTarget->GetHealth() + m_originalCaster->GetMaxHealth();
+ LoHamount = LoHamount > unitTarget->GetMaxHealth() ? unitTarget->GetMaxHealth() : LoHamount;
+ unitTarget->SetHealth(LoHamount);
+ }
+ else
+ unitTarget->SetHealth(unitTarget->GetMaxHealth());
+
if(m_originalCaster)
m_originalCaster->SendHealSpellLog(unitTarget, m_spellInfo->Id, addhealth, false);
}