diff --git a/sql/updates/world/master/2026_03_06_00_world.sql b/sql/updates/world/master/2026_03_06_00_world.sql new file mode 100644 index 0000000000..231dae34b6 --- /dev/null +++ b/sql/updates/world/master/2026_03_06_00_world.sql @@ -0,0 +1,9 @@ +DELETE FROM `spell_script_names` WHERE `ScriptName` IN ('spell_warr_brutal_finish'); +INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES +(227847,'spell_warr_brutal_finish'), -- Brutal Finish (Bladestorm) +(389774,'spell_warr_brutal_finish'), -- Brutal Finish (Bladestorm, Hurricane) +(446035,'spell_warr_brutal_finish'); -- Brutal Finish (Bladestorm, Unrelenting Onslaught) + +DELETE FROM `spell_proc` WHERE `SpellId` IN (446918); +INSERT INTO `spell_proc` (`SpellId`,`SchoolMask`,`SpellFamilyName`,`SpellFamilyMask0`,`SpellFamilyMask1`,`SpellFamilyMask2`,`SpellFamilyMask3`,`ProcFlags`,`ProcFlags2`,`SpellTypeMask`,`SpellPhaseMask`,`HitMask`,`AttributesMask`,`DisableEffectsMask`,`ProcsPerMinute`,`Chance`,`Cooldown`,`Charges`) VALUES +(446918,0x00,4,0x02000000,0x00000000,0x00000000,0x00800000,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0,0,0,1); -- Brutal Finish diff --git a/src/server/scripts/Spells/spell_warrior.cpp b/src/server/scripts/Spells/spell_warrior.cpp index 78aa4b8e09..edee2fc2c6 100644 --- a/src/server/scripts/Spells/spell_warrior.cpp +++ b/src/server/scripts/Spells/spell_warrior.cpp @@ -45,6 +45,8 @@ enum WarriorSpells SPELL_WARRIOR_BLOODTHIRST_HEAL = 117313, SPELL_WARRIOR_BOUNDING_STRIDE_AURA = 202163, SPELL_WARRIOR_BOUNDING_STRIDE = 202164, + SPELL_WARRIOR_BRUTAL_FINISH_BUFF = 446918, + SPELL_WARRIOR_BRUTAL_FINISH_TALENT = 446085, SPELL_WARRIOR_CHARGE = 34846, SPELL_WARRIOR_CHARGE_DROP_FIRE_PERIODIC = 126661, SPELL_WARRIOR_CHARGE_EFFECT = 198337, @@ -351,6 +353,33 @@ class spell_warr_bloodthirst : public SpellScript } }; +// 446085 - Brutal Finish (attached to 446035 - Bladestorm) +class spell_warr_brutal_finish : public AuraScript +{ + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_WARRIOR_BRUTAL_FINISH_TALENT, SPELL_WARRIOR_BRUTAL_FINISH_BUFF }); + } + + bool Load() override + { + return GetUnitOwner()->HasAura(SPELL_WARRIOR_BRUTAL_FINISH_TALENT); + } + + void HandleEffectRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) const + { + Unit* caster = GetTarget(); + caster->CastSpell(caster, SPELL_WARRIOR_BRUTAL_FINISH_BUFF, CastSpellExtraArgsInit{ + .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR + }); + } + + void Register() override + { + AfterEffectRemove += AuraEffectRemoveFn(spell_warr_brutal_finish::HandleEffectRemove, EFFECT_2, SPELL_AURA_DISABLE_CASTING_EXCEPT_ABILITIES, AURA_EFFECT_HANDLE_REAL); + } +}; + // 384036 - Brutal Vitality class spell_warr_brutal_vitality : public AuraScript { @@ -2314,6 +2343,7 @@ void AddSC_warrior_spell_scripts() RegisterSpellScript(spell_warr_avatar); RegisterSpellScript(spell_warr_bloodsurge); RegisterSpellScript(spell_warr_bloodthirst); + RegisterSpellScript(spell_warr_brutal_finish); RegisterSpellScript(spell_warr_brutal_vitality); RegisterSpellScript(spell_warr_charge); RegisterSpellScript(spell_warr_charge_drop_fire_periodic);