aboutsummaryrefslogtreecommitdiff
path: root/src/game/SpellEffects.cpp
diff options
context:
space:
mode:
authormegamage <none@none>2009-08-10 15:52:11 -0500
committermegamage <none@none>2009-08-10 15:52:11 -0500
commitf86d54376a440165bff703a255f95eb8ed7b1868 (patch)
tree082a73697533bf13ac03013600c53af6224b0896 /src/game/SpellEffects.cpp
parent7982a75c5c759efc1f4a85853524074bf579638b (diff)
*Fix Lightwell. By Elron
--HG-- branch : trunk
Diffstat (limited to 'src/game/SpellEffects.cpp')
-rw-r--r--src/game/SpellEffects.cpp51
1 files changed, 51 insertions, 0 deletions
diff --git a/src/game/SpellEffects.cpp b/src/game/SpellEffects.cpp
index f68488e538b..5b1179c0ed8 100644
--- a/src/game/SpellEffects.cpp
+++ b/src/game/SpellEffects.cpp
@@ -5181,6 +5181,57 @@ void Spell::EffectScriptEffect(uint32 effIndex)
if(Unit *passenger = ((Vehicle*)m_caster)->GetPassenger(0))
passenger->CastSpell(m_caster->m_Vehicle, damage, true);
return;
+ case 60123: // Lightwell Renew, TODO: 30% Attackdamage check for Lightwell
+ {
+ if(unitTarget && m_originalCaster)
+ {
+ Unit* owner = m_originalCaster->GetOwner();
+ uint32 spell_heal;
+ uint32 spell_charges = 59907;
+
+ switch(m_originalCaster->GetEntry())
+ {
+ case 31897: spell_heal = 7001; break;
+ case 31896: spell_heal = 27873; break;
+ case 31895: spell_heal = 27874; break;
+ case 31894: spell_heal = 28276; break;
+ case 31893: spell_heal = 48084; break;
+ case 31883: spell_heal = 48085; break;
+ }
+
+ if(owner && spell_heal && spell_charges)
+ {
+ if(owner->GetTypeId() == TYPEID_PLAYER && unitTarget->GetTypeId() == TYPEID_PLAYER)
+ {
+ if(((Player*)owner)->IsInSameRaidWith(((Player*)unitTarget)) && (!((Player*)unitTarget)->duel || unitTarget == owner) && !unitTarget->HasAura(spell_heal))
+ {
+ Aura *chargesaura = m_originalCaster->GetAura(spell_charges);
+ if(chargesaura)
+ {
+ if(chargesaura->GetAuraCharges() > 1)
+ {
+ chargesaura->SetAuraCharges(chargesaura->GetAuraCharges() - 1);
+ owner->CastSpell(unitTarget, spell_heal, true);
+ if(unitTarget->IsPvP() && !owner->IsPvP())
+ {
+ owner->SetPvP(true);
+ }
+ }
+ else
+ {
+ m_originalCaster->RemoveAura(chargesaura);
+ owner->CastSpell(unitTarget, spell_heal, true);
+ if(unitTarget->IsPvP() && !owner->IsPvP())
+ {
+ owner->SetPvP(true);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
}
break;
}