diff options
author | offl <11556157+offl@users.noreply.github.com> | 2021-12-16 02:17:46 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2022-03-24 13:18:56 +0100 |
commit | 9dabdf7724e0555a5935f0073d0b2db7035b23cf (patch) | |
tree | a62f7e77804fb587d8bb03c9aecfeeb50d341724 /src | |
parent | 1bfbc371d5e2c756da6dc9f658cafcac5779ff60 (diff) |
Scripts/Spells: Furious Rage & scripts for creatures who uses it (#27403)
(cherry picked from commit 7ae525d5e5f068ab09166f6f4a2045a72726cb8e)
Diffstat (limited to 'src')
-rw-r--r-- | src/server/scripts/Spells/spell_generic.cpp | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/src/server/scripts/Spells/spell_generic.cpp b/src/server/scripts/Spells/spell_generic.cpp index 459f8417194..173eb3c2e07 100644 --- a/src/server/scripts/Spells/spell_generic.cpp +++ b/src/server/scripts/Spells/spell_generic.cpp @@ -1606,6 +1606,48 @@ class spell_gen_feign_death_no_prevent_emotes : public AuraScript } }; +enum FuriousRage +{ + EMOTE_FURIOUS_RAGE = 19415, + EMOTE_EXHAUSTED = 18368, + SPELL_EXHAUSTION = 35492 +}; + +// 35491 - Furious Rage +class spell_gen_furious_rage : public AuraScript +{ + PrepareAuraScript(spell_gen_furious_rage); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_EXHAUSTION }) && + sBroadcastTextStore.HasRecord(EMOTE_FURIOUS_RAGE) && + sBroadcastTextStore.HasRecord(EMOTE_EXHAUSTED); + } + + void AfterApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) + { + Unit* target = GetTarget(); + target->Unit::TextEmote(EMOTE_FURIOUS_RAGE, target, false); + } + + void AfterRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) + { + if (GetTargetApplication()->GetRemoveMode() != AURA_REMOVE_BY_EXPIRE) + return; + + Unit* target = GetTarget(); + target->Unit::TextEmote(EMOTE_EXHAUSTED, target, false); + target->CastSpell(target, SPELL_EXHAUSTION, true); + } + + void Register() override + { + AfterEffectApply += AuraEffectApplyFn(spell_gen_furious_rage::AfterApply, EFFECT_0, SPELL_AURA_MOD_DAMAGE_PERCENT_DONE, AURA_EFFECT_HANDLE_REAL); + AfterEffectRemove += AuraEffectRemoveFn(spell_gen_furious_rage::AfterRemove, EFFECT_0, SPELL_AURA_MOD_DAMAGE_PERCENT_DONE, AURA_EFFECT_HANDLE_REAL); + } +}; + // 46642 - 5,000 Gold class spell_gen_5000_gold : public SpellScript { @@ -4753,6 +4795,7 @@ void AddSC_generic_spell_scripts() RegisterSpellScript(spell_gen_feign_death_all_flags); RegisterSpellScript(spell_gen_feign_death_no_dyn_flag); RegisterSpellScript(spell_gen_feign_death_no_prevent_emotes); + RegisterSpellScript(spell_gen_furious_rage); RegisterSpellScript(spell_gen_5000_gold); RegisterSpellScript(spell_gen_fishing); RegisterSpellScript(spell_gen_gadgetzan_transporter_backfire); |