diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/scripts/Spells/spell_generic.cpp | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/src/server/scripts/Spells/spell_generic.cpp b/src/server/scripts/Spells/spell_generic.cpp index 48deb028625..0285699a621 100644 --- a/src/server/scripts/Spells/spell_generic.cpp +++ b/src/server/scripts/Spells/spell_generic.cpp @@ -1206,6 +1206,62 @@ class spell_gen_launch : public SpellScriptLoader } }; +class spell_gen_soul_preserver : public SpellScriptLoader +{ + enum Spells + { + HEALING_TRANCE_DRUID = 60512, + HEALING_TRANCE_PALADIN = 60513, + HEALING_TRANCE_PRIEST = 60514, + HEALING_TRANCE_SHAMAN = 60515, + }; + + public: + spell_gen_soul_preserver() : SpellScriptLoader("spell_gen_soul_preserver") { } + + class spell_gen_soul_preserver_SpellScript : public SpellScript + { + PrepareSpellScript(spell_gen_soul_preserver_SpellScript); + + void HandleScript(SpellEffIndex /*effIndex*/) + { + uint32 triggeredSpell = 0; + Player* caster = GetCaster()->ToPlayer(); + if (!caster) + return; + + switch (caster->getClass()) + { + case CLASS_DRUID: + triggeredSpell = HEALING_TRANCE_DRUID; + break; + case CLASS_PALADIN: + triggeredSpell = HEALING_TRANCE_PALADIN; + break; + case CLASS_PRIEST: + triggeredSpell = HEALING_TRANCE_PRIEST; + break; + case CLASS_SHAMAN: + triggeredSpell = HEALING_TRANCE_SHAMAN; + break; + } + + if (triggeredSpell) + caster->CastSpell(caster, triggeredSpell, true); + } + + void Register() + { + OnEffect += SpellEffectFn(spell_gen_soul_preserver_SpellScript::HandleScript, EFFECT_0, SPELL_EFFECT_DUMMY); + } + }; + + SpellScript* GetSpellScript() const + { + return new spell_gen_soul_preserver_SpellScript(); + } +}; + class spell_gen_vehicle_scaling : public SpellScriptLoader { public: @@ -1286,5 +1342,6 @@ void AddSC_generic_spell_scripts() new spell_gen_magic_rooster(); new spell_gen_allow_cast_from_item_only(); new spell_gen_launch(); + new spell_gen_soul_preserver(); new spell_gen_vehicle_scaling(); } |