fix(Core/Spells): Prevent extra attack abilities from chain-proccing (#24806)

Co-authored-by: blinkysc <blinkysc@users.noreply.github.com>
Co-authored-by: trickerer <onlysuffering@gmail.com>
This commit is contained in:
blinkysc
2026-02-22 11:27:54 -06:00
committed by GitHub
parent e281f10b5b
commit 2990f13840
3 changed files with 211 additions and 0 deletions

View File

@@ -1239,6 +1239,29 @@ bool AuraEffect::CheckEffectProc(AuraApplication* aurApp, ProcEventInfo& eventIn
if (GetCasterGUID() != eventInfo.GetActor()->GetGUID())
return false;
break;
case SPELL_AURA_PROC_TRIGGER_SPELL:
case SPELL_AURA_PROC_TRIGGER_SPELL_WITH_VALUE:
{
// Don't proc extra attacks while already processing extra attack spell
uint32 triggerSpellId = m_spellInfo->Effects[GetEffIndex()].TriggerSpell;
if (SpellInfo const* triggeredSpellInfo = sSpellMgr->GetSpellInfo(triggerSpellId))
{
if (triggeredSpellInfo->HasEffect(SPELL_EFFECT_ADD_EXTRA_ATTACKS))
{
uint32 lastExtraAttackSpell = eventInfo.GetActor()->GetLastExtraAttackSpell();
// Patch 1.12.0(?) extra attack abilities can no longer chain proc themselves
if (lastExtraAttackSpell == triggerSpellId)
return false;
// Patch 2.2.0 Sword Specialization (Warrior, Rogue) extra attack can no longer proc additional extra attacks
// 3.3.5 Sword Specialization (Warrior), Hack and Slash (Rogue)
if (lastExtraAttackSpell == SPELL_SWORD_SPECIALIZATION || lastExtraAttackSpell == SPELL_HACK_AND_SLASH)
return false;
}
}
break;
}
default:
break;
}