aboutsummaryrefslogtreecommitdiff
path: root/src/server/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/scripts')
-rw-r--r--src/server/scripts/Spells/spell_generic.cpp67
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();