Scripts/Spells: Implement Thunder Blast (Fury Warrior) (#31693)

This commit is contained in:
Jeremy
2026-03-05 20:05:19 +01:00
committed by GitHub
parent 05fab3eb8f
commit 56cd4fd3bd
3 changed files with 67 additions and 3 deletions

View File

@@ -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');

View File

@@ -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)
{

View File

@@ -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);