Scripts/Spells: Implement Cleave Damage Reduction from Improved Whirlwind (Fury Warrior Talent) (#31690)

This commit is contained in:
Jeremy
2026-03-04 20:00:18 +01:00
committed by GitHub
parent 811cdeeb9c
commit ba259c0b98
2 changed files with 102 additions and 0 deletions

View File

@@ -0,0 +1,37 @@
DELETE FROM `spell_proc` WHERE `SpellId` IN (85739);
INSERT INTO `spell_proc` (`SpellId`,`SchoolMask`,`SpellFamilyName`,`SpellFamilyMask0`,`SpellFamilyMask1`,`SpellFamilyMask2`,`SpellFamilyMask3`,`ProcFlags`,`ProcFlags2`,`SpellTypeMask`,`SpellPhaseMask`,`HitMask`,`AttributesMask`,`DisableEffectsMask`,`ProcsPerMinute`,`Chance`,`Cooldown`,`Charges`) VALUES
(85739,0x00,4,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x0,0x1,0x0,0x18,0x0,0,0,0,0); -- Whirlwind
DELETE FROM `spell_script_names` WHERE `ScriptName` IN ('spell_warr_improved_whirlwind_cleave');
INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
(1464, 'spell_warr_improved_whirlwind_cleave'), -- Slam
(1715, 'spell_warr_improved_whirlwind_cleave'), -- Hamstring
(23881, 'spell_warr_improved_whirlwind_cleave'), -- Bloodthirst
(23922, 'spell_warr_improved_whirlwind_cleave'), -- Shield Slam
(34428, 'spell_warr_improved_whirlwind_cleave'), -- Victory Rush
(85384, 'spell_warr_improved_whirlwind_cleave'), -- Raging Blow
(96103, 'spell_warr_improved_whirlwind_cleave'), -- Raging Blow
(100130, 'spell_warr_improved_whirlwind_cleave'), -- Furious Slash
(163558, 'spell_warr_improved_whirlwind_cleave'), -- Execute Off-Hand
(184707, 'spell_warr_improved_whirlwind_cleave'), -- Rampage
(184709, 'spell_warr_improved_whirlwind_cleave'), -- Rampage
(201363, 'spell_warr_improved_whirlwind_cleave'), -- Rampage
(201364, 'spell_warr_improved_whirlwind_cleave'), -- Rampage
(202168, 'spell_warr_improved_whirlwind_cleave'), -- Impending Victory
(218617, 'spell_warr_improved_whirlwind_cleave'), -- Rampage
(260798, 'spell_warr_improved_whirlwind_cleave'), -- Execute
(280772, 'spell_warr_improved_whirlwind_cleave'), -- Siegebreaker
(280849, 'spell_warr_improved_whirlwind_cleave'), -- Execute
(317483, 'spell_warr_improved_whirlwind_cleave'), -- Condemn (Venthyr)
(317488, 'spell_warr_improved_whirlwind_cleave'), -- Condemn (Venthyr)
(317489, 'spell_warr_improved_whirlwind_cleave'), -- Condemn Off-Hand (Venthyr)
(335096, 'spell_warr_improved_whirlwind_cleave'), -- Bloodbath
(335098, 'spell_warr_improved_whirlwind_cleave'), -- Crushing Blow
(335100, 'spell_warr_improved_whirlwind_cleave'), -- Crushing Blow
(394062, 'spell_warr_improved_whirlwind_cleave'), -- Rend
(394063, 'spell_warr_improved_whirlwind_cleave'), -- Rend
(396718, 'spell_warr_improved_whirlwind_cleave'), -- Onslaught
(463815, 'spell_warr_improved_whirlwind_cleave'), -- Arms Execute FX Test
(463816, 'spell_warr_improved_whirlwind_cleave'), -- Fury Execute FX Test
(463817, 'spell_warr_improved_whirlwind_cleave'), -- Fury Execute Off-Hand FX Test
(1269383, 'spell_warr_improved_whirlwind_cleave'); -- Heroic Strike

View File

@@ -1163,6 +1163,70 @@ class spell_warr_improved_whirlwind : public SpellScript
}
};
/**
* 85739 - Whirlwind Cleave aura, attached to the following spells:
*
* 1464 - Slam
* 1715 - Hamstring
* 23881 - Bloodthirst
* 23922 - Shield Slam
* 34428 - Victory Rush
* 85384 - Raging Blow
* 96103 - Raging Blow
* 100130 - Furious Slash
* 163558 - Execute Off-Hand
* 184707 - Rampage
* 184709 - Rampage
* 201363 - Rampage
* 201364 - Rampage
* 202168 - Impending Victory
* 218617 - Rampage
* 260798 - Execute
* 280772 - Siegebreaker
* 280849 - Execute
* 317483 - Condemn (Venthyr)
* 317488 - Condemn (Venthyr)
* 317489 - Condemn Off-Hand (Venthyr)
* 335096 - Bloodbath
* 335098 - Crushing Blow
* 335100 - Crushing Blow
* 394062 - Rend
* 394063 - Rend
* 396718 - Onslaught
* 463815 - Arms Execute FX Test
* 463816 - Fury Execute FX Test
* 463817 - Fury Execute Off-Hand FX Test
* 1269383 - Heroic Strike
*/
class spell_warr_improved_whirlwind_cleave : public SpellScript
{
bool Validate(SpellInfo const* spellInfo) override
{
return ValidateSpellEffect({ { SPELL_WARRIOR_WHIRLWIND_CLEAVE_AURA, EFFECT_1 } })
&& spellInfo->IsAffected(SPELLFAMILY_WARRIOR, sSpellMgr->AssertSpellInfo(SPELL_WARRIOR_WHIRLWIND_CLEAVE_AURA, DIFFICULTY_NONE)->GetEffect(EFFECT_0).SpellClassMask);
}
bool Load() override
{
return GetCaster()->HasAura(SPELL_WARRIOR_WHIRLWIND_CLEAVE_AURA);
}
void CalculateDamage(SpellEffectInfo const& spellEffectInfo, Unit const* victim, int32& /*damage*/, int32& /*flatMod*/, float& pctMod) const
{
int32 const targetIndex = GetUnitTargetIndexForEffect(victim->GetGUID(), spellEffectInfo.EffectIndex);
if (targetIndex == 0)
return; // nothing to do, it's the first target
if (AuraEffect const* damageEffect = GetCaster()->GetAuraEffect(SPELL_WARRIOR_WHIRLWIND_CLEAVE_AURA, EFFECT_1))
ApplyPct(pctMod, damageEffect->GetAmount());
}
void Register() override
{
CalcDamage += SpellCalcDamageFn(spell_warr_improved_whirlwind_cleave::CalculateDamage);
}
};
// 3411 - Intervene
class spell_warr_intervene : public SpellScript
{
@@ -2204,6 +2268,7 @@ void AddSC_warrior_spell_scripts()
RegisterSpellScript(spell_warr_heroic_leap_damage);
RegisterSpellScript(spell_warr_impending_victory);
RegisterSpellScript(spell_warr_improved_whirlwind);
RegisterSpellScript(spell_warr_improved_whirlwind_cleave);
RegisterSpellScript(spell_warr_intervene);
RegisterSpellScript(spell_warr_intervene_charge);
RegisterSpellScript(spell_warr_intimidating_shout);