diff options
-rw-r--r-- | sql/updates/world/master/2025_07_19_06_world.sql | 10 | ||||
-rw-r--r-- | src/server/scripts/Spells/spell_warrior.cpp | 56 |
2 files changed, 66 insertions, 0 deletions
diff --git a/sql/updates/world/master/2025_07_19_06_world.sql b/sql/updates/world/master/2025_07_19_06_world.sql new file mode 100644 index 00000000000..cbc48251422 --- /dev/null +++ b/sql/updates/world/master/2025_07_19_06_world.sql @@ -0,0 +1,10 @@ +DELETE FROM `spell_proc` WHERE `SpellId` IN (392536, 280776); +INSERT INTO `spell_proc` (`SpellId`,`SchoolMask`,`SpellFamilyName`,`SpellFamilyMask0`,`SpellFamilyMask1`,`SpellFamilyMask2`,`SpellFamilyMask3`,`ProcFlags`,`ProcFlags2`,`SpellTypeMask`,`SpellPhaseMask`,`HitMask`,`AttributesMask`,`DisableEffectsMask`,`ProcsPerMinute`,`Chance`,`Cooldown`,`Charges`) VALUES +(392536,0x01,4,0x00000000,0x00000000,0x00000000,0x00100000,0x0,0x0,0x1,0x2,0x577,0x10,0x0,0,0,0,0), -- Ashen Juggernaut +(280776,0x01,4,0x00000000,0x00000000,0x00000000,0x00100000,0x0,0x0,0x1,0x2,0x577,0x10,0x0,0,0,0,1); -- Sudden Death + +DELETE FROM `spell_script_names` WHERE `ScriptName` IN('spell_warr_ashen_juggernaut', 'spell_warr_sudden_death', 'spell_warr_sudden_death_proc'); +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(392536, 'spell_warr_ashen_juggernaut'), +(280776, 'spell_warr_sudden_death'), +(280721, 'spell_warr_sudden_death_proc'); diff --git a/src/server/scripts/Spells/spell_warrior.cpp b/src/server/scripts/Spells/spell_warrior.cpp index 88d39450bd4..a8b9d2ca995 100644 --- a/src/server/scripts/Spells/spell_warrior.cpp +++ b/src/server/scripts/Spells/spell_warrior.cpp @@ -82,6 +82,8 @@ enum WarriorSpells SPELL_WARRIOR_STORM_BOLT_STUN = 132169, SPELL_WARRIOR_STORM_BOLTS = 436162, SPELL_WARRIOR_STRATEGIST = 384041, + SPELL_WARRIOR_SUDDEN_DEATH = 280721, + SPELL_WARRIOR_SUDDEN_DEATH_BUFF = 280776, SPELL_WARRIOR_SWEEPING_STRIKES_EXTRA_ATTACK_1 = 12723, SPELL_WARRIOR_SWEEPING_STRIKES_EXTRA_ATTACK_2 = 26654, SPELL_WARRIOR_TAUNT = 355, @@ -113,6 +115,21 @@ static void ApplyWhirlwindCleaveAura(Player* caster, Difficulty difficulty, Spel }); } +// 392536 - Ashen Juggernaut +class spell_warr_ashen_juggernaut : public AuraScript +{ + static bool CheckProc(ProcEventInfo const& eventInfo) + { + // should only proc on primary target + return eventInfo.GetActionTarget() == eventInfo.GetProcSpell()->m_targets.GetUnitTarget(); + } + + void Register() override + { + DoCheckProc += AuraCheckProcFn(spell_warr_ashen_juggernaut::CheckProc); + } +}; + // 107574 - Avatar class spell_warr_avatar : public SpellScript { @@ -1115,6 +1132,42 @@ class spell_warr_strategist : public AuraScript } }; +// 280776 - Sudden Death +class spell_warr_sudden_death : public AuraScript +{ + static bool CheckProc(ProcEventInfo const& eventInfo) + { + // should only proc on primary target + return eventInfo.GetActionTarget() == eventInfo.GetProcSpell()->m_targets.GetUnitTarget(); + } + + void Register() override + { + DoCheckProc += AuraCheckProcFn(spell_warr_sudden_death::CheckProc); + } +}; + +// 280721 - Sudden Death +class spell_warr_sudden_death_proc : public AuraScript +{ + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_WARRIOR_SUDDEN_DEATH_BUFF }); + } + + void HandleProc(AuraEffect* /*aurEff*/, ProcEventInfo& /*eventInfo*/) const + { + GetTarget()->CastSpell(nullptr, SPELL_WARRIOR_SUDDEN_DEATH_BUFF, CastSpellExtraArgsInit{ + .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR + }); + } + + void Register() override + { + OnEffectProc += AuraEffectProcFn(spell_warr_sudden_death_proc::HandleProc, EFFECT_0, SPELL_AURA_DUMMY); + } +}; + // 12328, 18765, 35429 - Sweeping Strikes class spell_warr_sweeping_strikes : public AuraScript { @@ -1343,6 +1396,7 @@ class spell_warr_victory_rush : public SpellScript void AddSC_warrior_spell_scripts() { + RegisterSpellScript(spell_warr_ashen_juggernaut); RegisterSpellScript(spell_warr_avatar); RegisterSpellScript(spell_warr_bloodthirst); RegisterSpellScript(spell_warr_brutal_vitality); @@ -1378,6 +1432,8 @@ void AddSC_warrior_spell_scripts() RegisterSpellScript(spell_warr_storm_bolt); RegisterSpellScript(spell_warr_storm_bolts); RegisterSpellScript(spell_warr_strategist); + RegisterSpellScript(spell_warr_sudden_death); + RegisterSpellScript(spell_warr_sudden_death_proc); RegisterSpellScript(spell_warr_sweeping_strikes); RegisterSpellScript(spell_warr_titanic_rage); RegisterSpellScript(spell_warr_trauma); |