diff options
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(); |
