diff options
author | offl <11556157+offl@users.noreply.github.com> | 2021-12-16 02:17:46 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-12-16 02:17:46 +0200 |
commit | 7ae525d5e5f068ab09166f6f4a2045a72726cb8e (patch) | |
tree | f66fa0a9fd8d56a184f83516090ed3309629f1f5 /src | |
parent | fade6fbf4fab1c520de72417cbfb1c7a6dc69c32 (diff) |
Scripts/Spells: Furious Rage & scripts for creatures who uses it (#27403)
Diffstat (limited to 'src')
-rw-r--r-- | src/server/scripts/Spells/spell_generic.cpp | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/src/server/scripts/Spells/spell_generic.cpp b/src/server/scripts/Spells/spell_generic.cpp index 1854ae17716..6134db00e95 100644 --- a/src/server/scripts/Spells/spell_generic.cpp +++ b/src/server/scripts/Spells/spell_generic.cpp @@ -33,6 +33,7 @@ #include "Item.h" #include "LFGMgr.h" #include "Log.h" +#include "ObjectMgr.h" #include "Pet.h" #include "ReputationMgr.h" #include "SkillDiscovery.h" @@ -1736,6 +1737,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 }) && + sObjectMgr->GetBroadcastText(EMOTE_FURIOUS_RAGE) && + sObjectMgr->GetBroadcastText(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 { @@ -4457,6 +4500,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_gadgetzan_transporter_backfire); RegisterSpellScript(spell_gen_gift_of_naaru); |