diff options
author | Machiavelli <machiavelli.trinity@gmail.com> | 2011-08-06 19:39:45 +0200 |
---|---|---|
committer | Machiavelli <machiavelli.trinity@gmail.com> | 2011-08-06 19:40:50 +0200 |
commit | 156d491c2771fcff1ff2940ff5f90b1c7f4df867 (patch) | |
tree | 0abdac2d0c7f99b9b00bff001fef4b487552b9d0 | |
parent | 157dff1ed319e21886728066eebe61898589f792 (diff) |
Core/Spells: Add GetTriggeringSpell() method to SpellScript and use it to properly filter server side spell 18350's script.
-rwxr-xr-x | src/server/game/Spells/SpellScript.cpp | 5 | ||||
-rwxr-xr-x | src/server/game/Spells/SpellScript.h | 3 | ||||
-rw-r--r-- | src/server/scripts/Spells/spell_generic.cpp | 8 |
3 files changed, 16 insertions, 0 deletions
diff --git a/src/server/game/Spells/SpellScript.cpp b/src/server/game/Spells/SpellScript.cpp index 069c0581590..bb7b242a561 100755 --- a/src/server/game/Spells/SpellScript.cpp +++ b/src/server/game/Spells/SpellScript.cpp @@ -455,6 +455,11 @@ void SpellScript::CreateItem(uint32 effIndex, uint32 itemId) m_spell->DoCreateItem(effIndex, itemId); } +SpellInfo const* SpellScript::GetTriggeringSpell() +{ + return m_spell->m_triggeredByAuraSpell; +} + void SpellScript::FinishCast(SpellCastResult result) { m_spell->SendCastResult(result); diff --git a/src/server/game/Spells/SpellScript.h b/src/server/game/Spells/SpellScript.h index bbb68305983..e28030d7605 100755 --- a/src/server/game/Spells/SpellScript.h +++ b/src/server/game/Spells/SpellScript.h @@ -320,6 +320,9 @@ class SpellScript : public _SpellScript // Creates item. Calls Spell::DoCreateItem method. void CreateItem(uint32 effIndex, uint32 itemId); + // Returns SpellInfo from the spell that triggered the current one + SpellInfo const* GetTriggeringSpell(); + // finishes spellcast prematurely with selected error message void FinishCast(SpellCastResult result); diff --git a/src/server/scripts/Spells/spell_generic.cpp b/src/server/scripts/Spells/spell_generic.cpp index 0285699a621..a0f83997d30 100644 --- a/src/server/scripts/Spells/spell_generic.cpp +++ b/src/server/scripts/Spells/spell_generic.cpp @@ -1210,6 +1210,7 @@ class spell_gen_soul_preserver : public SpellScriptLoader { enum Spells { + SOUL_PRESERVER = 60510, HEALING_TRANCE_DRUID = 60512, HEALING_TRANCE_PALADIN = 60513, HEALING_TRANCE_PRIEST = 60514, @@ -1223,6 +1224,13 @@ class spell_gen_soul_preserver : public SpellScriptLoader { PrepareSpellScript(spell_gen_soul_preserver_SpellScript); + bool Load() + { + // 18350 is a common placeholder for trigered spells + // this script only applies to 60510 + return GetTriggeringSpell()->Id == SOUL_PRESERVER; + } + void HandleScript(SpellEffIndex /*effIndex*/) { uint32 triggeredSpell = 0; |