aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rwxr-xr-xsrc/server/game/Spells/SpellScript.cpp5
-rwxr-xr-xsrc/server/game/Spells/SpellScript.h3
-rw-r--r--src/server/scripts/Spells/spell_generic.cpp8
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;