Scripts/Spells: Implement Meat Cleaver (Fury Warrior Talent) (#31671)

This commit is contained in:
Jeremy
2026-02-28 18:52:27 +01:00
committed by GitHub
parent 50e1d67688
commit 4eadd7f69a
2 changed files with 69 additions and 0 deletions

View File

@@ -0,0 +1,8 @@
DELETE FROM `spell_script_names` WHERE `ScriptName` IN ('spell_warr_meat_cleaver_damage_bonus', 'spell_warr_meat_cleaver_damage_bonus_thunder_clap');
INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
(199667, 'spell_warr_meat_cleaver_damage_bonus'),
(44949, 'spell_warr_meat_cleaver_damage_bonus'),
(199852, 'spell_warr_meat_cleaver_damage_bonus'),
(199851, 'spell_warr_meat_cleaver_damage_bonus'),
(6343, 'spell_warr_meat_cleaver_damage_bonus_thunder_clap'),
(435222, 'spell_warr_meat_cleaver_damage_bonus_thunder_clap');

View File

@@ -49,6 +49,7 @@ 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,
@@ -83,6 +84,7 @@ enum WarriorSpells
SPELL_WARRIOR_IMPENDING_VICTORY = 202168,
SPELL_WARRIOR_IMPENDING_VICTORY_HEAL = 202166,
SPELL_WARRIOR_IMPROVED_HEROIC_LEAP = 157449,
SPELL_WARRIOR_MEAT_CLEAVER_TALENT = 280392,
SPELL_WARRIOR_MORTAL_STRIKE = 12294,
SPELL_WARRIOR_MORTAL_WOUNDS = 115804,
SPELL_WARRIOR_OVERPOWER = 7384,
@@ -1314,6 +1316,63 @@ class spell_warr_item_t10_prot_4p_bonus : public AuraScript
}
};
// 280392 - Meat Cleaver (attached to 199667 - Whirlwind, 44949 - Whirlwind Off-Hand, 199852 - Whirlwind, 199851 - Whirlwind Off-Hand)
class spell_warr_meat_cleaver_damage_bonus : public SpellScript
{
protected:
bool Validate(SpellInfo const* /*spellInfo*/) override
{
return ValidateSpellEffect({{ SPELL_WARRIOR_MEAT_CLEAVER_TALENT, EFFECT_1 } });
}
bool Load() override
{
return GetCaster()->HasAura(SPELL_WARRIOR_MEAT_CLEAVER_TALENT);
}
void HandleDamageBonus(SpellEffectInfo const& spellEffectInfo, Unit const* /*victim*/, int32& /*damage*/, int32& /*flatMod*/, float& pctMod) const
{
Unit const* caster = GetCaster();
Aura const* meatCleaver = caster->GetAura(SPELL_WARRIOR_MEAT_CLEAVER_TALENT);
if (!meatCleaver)
return;
AuraEffect const* minTargetCount = meatCleaver->GetEffect(EFFECT_1);
if (!minTargetCount)
return;
int64 const targetCount = GetUnitTargetCountForEffect(spellEffectInfo.EffectIndex);
if (targetCount < minTargetCount->GetAmount())
return;
if (AuraEffect const* aurEff = meatCleaver->GetEffect(EFFECT_0))
AddPct(pctMod, aurEff->GetAmount());
}
void Register() override
{
CalcDamage += SpellCalcDamageFn(spell_warr_meat_cleaver_damage_bonus::HandleDamageBonus);
}
};
// 280392 - Meat Cleaver (attached to 6343 - Thunder Clap)
// 280392 - Meat Cleaver (attached to 435222 - Thunder Blast)
class spell_warr_meat_cleaver_damage_bonus_thunder_clap : public spell_warr_meat_cleaver_damage_bonus
{
bool Validate(SpellInfo const* spellInfo) override
{
return spell_warr_meat_cleaver_damage_bonus::Validate(spellInfo)
&& ValidateSpellInfo({ SPELL_WARRIOR_CRASHING_THUNDER_TALENT });
}
bool Load() override
{
return spell_warr_meat_cleaver_damage_bonus::Load()
&& GetCaster()->HasAura(SPELL_WARRIOR_CRASHING_THUNDER_TALENT);
}
};
// 12294 - Mortal Strike
class spell_warr_mortal_strike : public SpellScript
{
@@ -2011,6 +2070,8 @@ void AddSC_warrior_spell_scripts()
RegisterSpellScript(spell_warr_intimidating_shout_menace_knock_back);
RegisterSpellScript(spell_warr_invigorating_fury);
RegisterSpellScript(spell_warr_item_t10_prot_4p_bonus);
RegisterSpellScript(spell_warr_meat_cleaver_damage_bonus);
RegisterSpellScript(spell_warr_meat_cleaver_damage_bonus_thunder_clap);
RegisterSpellScript(spell_warr_mortal_strike);
RegisterSpellScript(spell_warr_overpowering_finish);
RegisterSpellScript(spell_warr_pain_and_gain_heal);