Core/Spells: Moved applying exclusive aura spells to scripts

This commit is contained in:
joschiwald
2017-12-23 17:03:53 +01:00
parent 439ac5756c
commit 13726438da
4 changed files with 134 additions and 55 deletions

View File

@@ -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();