diff options
-rw-r--r-- | sql/updates/world/master/2025_06_08_00_world.sql | 4 | ||||
-rw-r--r-- | src/server/scripts/Spells/spell_warrior.cpp | 60 |
2 files changed, 64 insertions, 0 deletions
diff --git a/sql/updates/world/master/2025_06_08_00_world.sql b/sql/updates/world/master/2025_06_08_00_world.sql new file mode 100644 index 00000000000..b00d59e5fbd --- /dev/null +++ b/sql/updates/world/master/2025_06_08_00_world.sql @@ -0,0 +1,4 @@ +DELETE FROM `spell_script_names` WHERE `ScriptName` IN ('spell_warr_frenzied_enrage', 'spell_warr_powerful_enrage'); +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(184362, 'spell_warr_frenzied_enrage'), +(184362, 'spell_warr_powerful_enrage'); diff --git a/src/server/scripts/Spells/spell_warrior.cpp b/src/server/scripts/Spells/spell_warrior.cpp index 3a6a6c17b3d..aa8ee8a08bf 100644 --- a/src/server/scripts/Spells/spell_warrior.cpp +++ b/src/server/scripts/Spells/spell_warrior.cpp @@ -45,6 +45,7 @@ enum WarriorSpells SPELL_WARRIOR_CRITICAL_THINKING_ENERGIZE = 392776, SPELL_WARRIOR_EXECUTE = 20647, SPELL_WARRIOR_ENRAGE = 184362, + SPELL_WARRIOR_FRENZIED_ENRAGE = 383848, SPELL_WARRIOR_FUELED_BY_VIOLENCE_HEAL = 383104, SPELL_WARRIOR_GLYPH_OF_THE_BLAZING_TRAIL = 123779, SPELL_WARRIOR_GLYPH_OF_HEROIC_LEAP = 159708, @@ -60,6 +61,7 @@ enum WarriorSpells SPELL_WARRIOR_IMPROVED_HEROIC_LEAP = 157449, SPELL_WARRIOR_MORTAL_STRIKE = 12294, SPELL_WARRIOR_MORTAL_WOUNDS = 115804, + SPELL_WARRIOR_POWERFUL_ENRAGE = 440277, SPELL_WARRIOR_RALLYING_CRY = 97463, SPELL_WARRIOR_RUMBLING_EARTH = 275339, SPELL_WARRIOR_SHIELD_BLOCK_AURA = 132404, @@ -351,6 +353,62 @@ class spell_warr_execute_damage : public SpellScript } }; +// 383848 - Frenzied Enrage (attached to 184362 - Enrage) +class spell_warr_frenzied_enrage : public SpellScript +{ + bool Validate(SpellInfo const* spellInfo) override + { + return ValidateSpellInfo({ SPELL_WARRIOR_FRENZIED_ENRAGE }) + && ValidateSpellEffect({ { spellInfo->Id, EFFECT_1 } }) + && spellInfo->GetEffect(EFFECT_0).IsAura(SPELL_AURA_MELEE_SLOW) + && spellInfo->GetEffect(EFFECT_1).IsAura(SPELL_AURA_MOD_INCREASE_SPEED); + } + + bool Load() override + { + return !GetCaster()->HasAura(SPELL_WARRIOR_FRENZIED_ENRAGE); + } + + static void HandleFrenziedEnrage(WorldObject*& target) + { + target = nullptr; + } + + void Register() override + { + OnObjectTargetSelect += SpellObjectTargetSelectFn(spell_warr_frenzied_enrage::HandleFrenziedEnrage, EFFECT_0, TARGET_UNIT_CASTER); + OnObjectTargetSelect += SpellObjectTargetSelectFn(spell_warr_frenzied_enrage::HandleFrenziedEnrage, EFFECT_1, TARGET_UNIT_CASTER); + } +}; + +// 440277 - Powerful Enrage (attached to 184362 - Enrage) +class spell_warr_powerful_enrage : public SpellScript +{ + bool Validate(SpellInfo const* spellInfo) override + { + return ValidateSpellInfo({ SPELL_WARRIOR_POWERFUL_ENRAGE }) + && ValidateSpellEffect({ { spellInfo->Id, EFFECT_4 } }) + && spellInfo->GetEffect(EFFECT_3).IsAura(SPELL_AURA_ADD_PCT_MODIFIER) && spellInfo->GetEffect(EFFECT_3).MiscValue == int32(SpellModOp::HealingAndDamage) + && spellInfo->GetEffect(EFFECT_4).IsAura(SPELL_AURA_ADD_PCT_MODIFIER) && spellInfo->GetEffect(EFFECT_4).MiscValue == int32(SpellModOp::PeriodicHealingAndDamage); + } + + bool Load() override + { + return !GetCaster()->HasAura(SPELL_WARRIOR_POWERFUL_ENRAGE); + } + + static void HandlePowerfulEnrage(WorldObject*& target) + { + target = nullptr; + } + + void Register() override + { + OnObjectTargetSelect += SpellObjectTargetSelectFn(spell_warr_powerful_enrage::HandlePowerfulEnrage, EFFECT_3, TARGET_UNIT_CASTER); + OnObjectTargetSelect += SpellObjectTargetSelectFn(spell_warr_powerful_enrage::HandlePowerfulEnrage, EFFECT_4, TARGET_UNIT_CASTER); + } +}; + // 383103 - Fueled by Violence class spell_warr_fueled_by_violence : public AuraScript { @@ -944,6 +1002,7 @@ void AddSC_warrior_spell_scripts() RegisterSpellScript(spell_warr_critical_thinking); RegisterSpellScript(spell_warr_devastator); RegisterSpellScript(spell_warr_execute_damage); + RegisterSpellScript(spell_warr_frenzied_enrage); RegisterSpellScript(spell_warr_fueled_by_violence); RegisterSpellScript(spell_warr_heroic_leap); RegisterSpellScript(spell_warr_heroic_leap_jump); @@ -952,6 +1011,7 @@ void AddSC_warrior_spell_scripts() RegisterSpellScript(spell_warr_invigorating_fury); RegisterSpellScript(spell_warr_item_t10_prot_4p_bonus); RegisterSpellScript(spell_warr_mortal_strike); + RegisterSpellScript(spell_warr_powerful_enrage); RegisterSpellScript(spell_warr_rallying_cry); RegisterSpellScript(spell_warr_rampage_enrage); RegisterSpellScript(spell_warr_rumbling_earth); |