diff --git a/sql/updates/world/master/2026_03_05_00_world.sql b/sql/updates/world/master/2026_03_05_00_world.sql new file mode 100644 index 0000000000..9a5ecddbee --- /dev/null +++ b/sql/updates/world/master/2026_03_05_00_world.sql @@ -0,0 +1,12 @@ +DELETE FROM `spell_proc` WHERE `SpellId` IN (435607,435615); +INSERT INTO `spell_proc` (`SpellId`,`SchoolMask`,`SpellFamilyName`,`SpellFamilyMask0`,`SpellFamilyMask1`,`SpellFamilyMask2`,`SpellFamilyMask3`,`ProcFlags`,`ProcFlags2`,`SpellTypeMask`,`SpellPhaseMask`,`HitMask`,`AttributesMask`,`DisableEffectsMask`,`ProcsPerMinute`,`Chance`,`Cooldown`,`Charges`) VALUES +(435607,0x01,4,0x00000000,0x00000600,0x00000000,0x00000000,0x0,0x0,0x1,0x4,0x403,0x0,0x0,0,0,0,0), -- Thunder Blast +(435615,0x00,4,0x00000080,0x00000000,0x00000000,0x00000000,0x0,0x0,0x0,0x4,0x0,0x10,0x0,0,0,0,0); -- Thunder Blast + +DELETE FROM `spell_script_names` WHERE `ScriptName` IN ('spell_warr_thunder_blast', 'spell_warr_thunder_clap_rend', 'spell_warr_thunder_clap'); +INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES +(6343, 'spell_warr_thunder_clap'), +(6343, 'spell_warr_thunder_clap_rend'), +(435222, 'spell_warr_thunder_clap'), +(435222, 'spell_warr_thunder_clap_rend'), +(435607,'spell_warr_thunder_blast'); diff --git a/src/server/game/Spells/SpellMgr.cpp b/src/server/game/Spells/SpellMgr.cpp index 3cace4b65a..4c6fab2c0d 100644 --- a/src/server/game/Spells/SpellMgr.cpp +++ b/src/server/game/Spells/SpellMgr.cpp @@ -5490,6 +5490,11 @@ void SpellMgr::LoadSpellInfoTargetCaps() spellInfo->_LoadSqrtTargetLimit(5, 0, {}, EFFECT_1, {}, {}); }); + ApplySpellFix({ 435222 }, [](SpellInfo* spellInfo) + { + spellInfo->_LoadSqrtTargetLimit(5, 0, {}, EFFECT_4, {}, {}); + }); + // Rampaging Ruin ApplySpellFix({ 1265579, 1265580, 1265581, 1265582 }, [](SpellInfo* spellInfo) { diff --git a/src/server/scripts/Spells/spell_warrior.cpp b/src/server/scripts/Spells/spell_warrior.cpp index 4aebffb0ca..78aa4b8e09 100644 --- a/src/server/scripts/Spells/spell_warrior.cpp +++ b/src/server/scripts/Spells/spell_warrior.cpp @@ -49,10 +49,10 @@ enum WarriorSpells SPELL_WARRIOR_CHARGE_DROP_FIRE_PERIODIC = 126661, SPELL_WARRIOR_CHARGE_EFFECT = 198337, SPELL_WARRIOR_CHARGE_ROOT_EFFECT = 105771, - SPELL_WARRIOR_CRASHING_THUNDER_TALENT = 436707, SPELL_WARRIOR_COLD_STEEL_HOT_BLOOD_TALENT = 383959, SPELL_WARRIOR_COLOSSUS_SMASH = 167105, SPELL_WARRIOR_COLOSSUS_SMASH_AURA = 208086, + SPELL_WARRIOR_CRASHING_THUNDER = 436707, SPELL_WARRIOR_CRITICAL_THINKING_ENERGIZE = 392776, SPELL_WARRIOR_DEFT_EXPERIENCE = 383295, SPELL_WARRIOR_ENRAGE = 184362, @@ -123,6 +123,7 @@ enum WarriorSpells SPELL_WARRIOR_SWEEPING_STRIKES_EXTRA_ATTACK_2 = 26654, SPELL_WARRIOR_TACTICIAN_ACTION_BUTTON_GLOW = 199854, SPELL_WARRIOR_TAUNT = 355, + SPELL_WARRIOR_THUNDER_BLAST = 435615, SPELL_WARRIOR_THUNDER_CLAP_SLOW = 435203, SPELL_WARRIOR_TITANIC_RAGE = 394329, SPELL_WARRIOR_TRAUMA_EFFECT = 215537, @@ -1551,13 +1552,13 @@ class spell_warr_meat_cleaver_damage_bonus_thunder_clap : public spell_warr_meat bool Validate(SpellInfo const* spellInfo) override { return spell_warr_meat_cleaver_damage_bonus::Validate(spellInfo) - && ValidateSpellInfo({ SPELL_WARRIOR_CRASHING_THUNDER_TALENT }); + && ValidateSpellInfo({ SPELL_WARRIOR_CRASHING_THUNDER }); } bool Load() override { return spell_warr_meat_cleaver_damage_bonus::Load() - && GetCaster()->HasAura(SPELL_WARRIOR_CRASHING_THUNDER_TALENT); + && GetCaster()->HasAura(SPELL_WARRIOR_CRASHING_THUNDER); } }; @@ -2028,7 +2029,51 @@ class spell_warr_tenderize : public AuraScript } }; +// 435607 - Thunder Blast +class spell_warr_thunder_blast : public SpellScript +{ + static void PreventDefaultTargetObject(SpellScript const&, WorldObject*& target) + { + target = nullptr; + } + + void Register() override + { + // unused effects + OnObjectTargetSelect += SpellObjectTargetSelectFn(spell_warr_thunder_blast::PreventDefaultTargetObject, EFFECT_1, TARGET_UNIT_CASTER); + OnObjectTargetSelect += SpellObjectTargetSelectFn(spell_warr_thunder_blast::PreventDefaultTargetObject, EFFECT_2, TARGET_UNIT_CASTER); + } +}; + +class spell_warr_thunder_blast_aura : public AuraScript +{ + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_WARRIOR_THUNDER_BLAST }); + } + + static bool CheckProc(AuraScript const&, AuraEffect const* aurEff, ProcEventInfo const& /*eventInfo*/) + { + return roll_chance_i(aurEff->GetAmount()); + } + + void HandleProc(AuraEffect const* /*aurEff*/, ProcEventInfo const& /*eventInfo*/) const + { + Unit* target = GetTarget(); + target->CastSpell(nullptr, SPELL_WARRIOR_THUNDER_BLAST, CastSpellExtraArgsInit{ + .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR, + }); + } + + void Register() override + { + DoCheckEffectProc += AuraCheckEffectProcFn(spell_warr_thunder_blast_aura::CheckProc, EFFECT_0, SPELL_AURA_DUMMY); + OnEffectProc += AuraEffectProcFn(spell_warr_thunder_blast_aura::HandleProc, EFFECT_0, SPELL_AURA_DUMMY); + } +}; + // 6343 - Thunder Clap +// 435222 - Thunder Blast class spell_warr_thunder_clap : public SpellScript { bool Validate(SpellInfo const* /*spellInfo*/) override @@ -2051,6 +2096,7 @@ class spell_warr_thunder_clap : public SpellScript }; // 6343 - Thunder Clap (Rend) +// 435222 - Thunder Blast (Rend) class spell_warr_thunder_clap_rend : public SpellScript { bool Validate(SpellInfo const* /*spellInfo*/) override @@ -2320,6 +2366,7 @@ void AddSC_warrior_spell_scripts() RegisterSpellScript(spell_warr_sweeping_strikes); RegisterSpellScript(spell_warr_tactician); RegisterSpellScript(spell_warr_tenderize); + RegisterSpellAndAuraScriptPair(spell_warr_thunder_blast, spell_warr_thunder_blast_aura); RegisterSpellScript(spell_warr_thunder_clap); RegisterSpellScript(spell_warr_thunder_clap_rend); RegisterSpellScript(spell_warr_titanic_rage);