aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeremy <Golrag@users.noreply.github.com>2025-07-19 18:05:45 +0200
committerGitHub <noreply@github.com>2025-07-19 18:05:45 +0200
commit1a282933c72427dd5b0e9ea659f09e22b12be5f3 (patch)
tree3b1b7e427bbb07afd3437965cbe62b7710401f28
parentac9d659ad8857d3f0dc13c477b381f38c6aa358f (diff)
Script/Spells: Implement Sudden Death & Juggernaut (Fury) (#31065)
Co-authored-by: ModoX <moardox@gmail.com>
-rw-r--r--sql/updates/world/master/2025_07_19_06_world.sql10
-rw-r--r--src/server/scripts/Spells/spell_warrior.cpp56
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);