diff options
| author | joschiwald <joschiwald.trinity@gmail.com> | 2017-12-23 17:03:53 +0100 |
|---|---|---|
| committer | joschiwald <joschiwald.trinity@gmail.com> | 2017-12-24 18:31:29 +0100 |
| commit | 13726438daa6aed6cff8545b6f488e7c6ff58409 (patch) | |
| tree | 32a97a201c434c56980bfc75b96ad5de05ceed93 /src/server/scripts | |
| parent | 439ac5756c683e43103b8cc8f632397e93ce9357 (diff) | |
Core/Spells: Moved applying exclusive aura spells to scripts
Diffstat (limited to 'src/server/scripts')
| -rw-r--r-- | src/server/scripts/Spells/spell_generic.cpp | 67 |
1 files changed, 67 insertions, 0 deletions
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_WILL_OF_THE_FORSAKEN_COOLDOWN_TRIGGER>("spell_pvp_trinket_shared_cd"); new spell_pvp_trinket_wotf_shared_cd<SPELL_WILL_OF_THE_FORSAKEN_COOLDOWN_TRIGGER_WOTF>("spell_wotf_shared_cd"); new spell_gen_turkey_marker(); |
