aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Spells/Spell.cpp
diff options
context:
space:
mode:
authorUnholychick <lucas__jensen@hotmail.com>2014-12-24 16:40:51 +0100
committerNayd <dnpd.dd@gmail.com>2014-12-25 21:33:02 +0000
commitd13036442e82f4fe8140db09707eaa37e2392160 (patch)
treeaf8493e0186540d5675f6df130184a3355a97a71 /src/server/game/Spells/Spell.cpp
parent3cb6ac02b2d9114ef493369b68afac1b355d81a4 (diff)
Core/Scripts: Add new SpellScript hook OnEffectSuccessfulDispel
Adds SpellScript hook to execute scripts after succesful dispels, example could be warlock pets Devour Magic, which should only trigger when succesfully dispelling an aura. (cherry picked from commit ebf95e7ed7f518c54d9c4044e050d50e0dcb0c57) Conflicts: src/server/game/Spells/SpellEffects.cpp
Diffstat (limited to 'src/server/game/Spells/Spell.cpp')
-rw-r--r--src/server/game/Spells/Spell.cpp13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp
index e85fbba104b..e8e1bbd8ff4 100644
--- a/src/server/game/Spells/Spell.cpp
+++ b/src/server/game/Spells/Spell.cpp
@@ -7043,6 +7043,19 @@ bool Spell::CallScriptEffectHandlers(SpellEffIndex effIndex, SpellEffectHandleMo
return preventDefault;
}
+void Spell::CallScriptSuccessfulDispel(SpellEffIndex effIndex)
+{
+ for (std::list<SpellScript*>::iterator scritr = m_loadedScripts.begin(); scritr != m_loadedScripts.end(); ++scritr)
+ {
+ (*scritr)->_PrepareScriptCall(SPELL_SCRIPT_HOOK_EFFECT_SUCCESSFUL_DISPEL);
+ std::list<SpellScript::EffectHandler>::iterator hookItrEnd = (*scritr)->OnEffectSuccessfulDispel.end(), hookItr = (*scritr)->OnEffectSuccessfulDispel.begin();
+ for (; hookItr != hookItrEnd; ++hookItr)
+ hookItr->Call(*scritr, effIndex);
+
+ (*scritr)->_FinishScriptCall();
+ }
+}
+
void Spell::CallScriptBeforeHitHandlers()
{
for (std::list<SpellScript*>::iterator scritr = m_loadedScripts.begin(); scritr != m_loadedScripts.end(); ++scritr)