From 13726438daa6aed6cff8545b6f488e7c6ff58409 Mon Sep 17 00:00:00 2001 From: joschiwald Date: Sat, 23 Dec 2017 17:03:53 +0100 Subject: Core/Spells: Moved applying exclusive aura spells to scripts --- src/server/scripts/Spells/spell_generic.cpp | 67 +++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) (limited to 'src/server/scripts') diff --git a/src/server/scripts/Spells/spell_generic.cpp b/src/server/scripts/Spells/spell_generic.cpp index ab5fe968716..f1360c7fc8f 100644 --- a/src/server/scripts/Spells/spell_generic.cpp +++ b/src/server/scripts/Spells/spell_generic.cpp @@ -3371,6 +3371,71 @@ class spell_gen_tournament_pennant : public SpellScriptLoader } }; +class spell_gen_trigger_exclude_caster_aura_spell : public SpellScriptLoader +{ + public: + spell_gen_trigger_exclude_caster_aura_spell() : SpellScriptLoader("spell_gen_trigger_exclude_caster_aura_spell") { } + + class spell_gen_trigger_exclude_caster_aura_spell_SpellScript : public SpellScript + { + PrepareSpellScript(spell_gen_trigger_exclude_caster_aura_spell_SpellScript); + + bool Validate(SpellInfo const* spellInfo) override + { + return ValidateSpellInfo({ spellInfo->ExcludeCasterAuraSpell }); + } + + void HandleTrigger() + { + // Blizz seems to just apply aura without bothering to cast + GetCaster()->AddAura(GetSpellInfo()->ExcludeCasterAuraSpell, GetCaster()); + } + + void Register() override + { + AfterCast += SpellCastFn(spell_gen_trigger_exclude_caster_aura_spell_SpellScript::HandleTrigger); + } + }; + + SpellScript* GetSpellScript() const override + { + return new spell_gen_trigger_exclude_caster_aura_spell_SpellScript(); + } +}; + +class spell_gen_trigger_exclude_target_aura_spell : public SpellScriptLoader +{ + public: + spell_gen_trigger_exclude_target_aura_spell() : SpellScriptLoader("spell_gen_trigger_exclude_target_aura_spell") { } + + class spell_gen_trigger_exclude_target_aura_spell_SpellScript : public SpellScript + { + PrepareSpellScript(spell_gen_trigger_exclude_target_aura_spell_SpellScript); + + bool Validate(SpellInfo const* spellInfo) override + { + return ValidateSpellInfo({ spellInfo->ExcludeTargetAuraSpell }); + } + + void HandleTrigger() + { + if (Unit* target = GetHitUnit()) + // Blizz seems to just apply aura without bothering to cast + GetCaster()->AddAura(GetSpellInfo()->ExcludeTargetAuraSpell, target); + } + + void Register() override + { + AfterHit += SpellHitFn(spell_gen_trigger_exclude_target_aura_spell_SpellScript::HandleTrigger); + } + }; + + SpellScript* GetSpellScript() const override + { + return new spell_gen_trigger_exclude_target_aura_spell_SpellScript(); + } +}; + enum PvPTrinketTriggeredSpells { SPELL_WILL_OF_THE_FORSAKEN_COOLDOWN_TRIGGER = 72752, @@ -4629,6 +4694,8 @@ void AddSC_generic_spell_scripts() new spell_gen_throw_shield(); new spell_gen_tournament_duel(); new spell_gen_tournament_pennant(); + new spell_gen_trigger_exclude_caster_aura_spell(); + new spell_gen_trigger_exclude_target_aura_spell(); new spell_pvp_trinket_wotf_shared_cd("spell_pvp_trinket_shared_cd"); new spell_pvp_trinket_wotf_shared_cd("spell_wotf_shared_cd"); new spell_gen_turkey_marker(); -- cgit v1.2.3