aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorariel- <ariel-@users.noreply.github.com>2016-10-07 12:52:01 -0300
committerariel- <ariel-@users.noreply.github.com>2016-10-07 12:52:01 -0300
commitb93ee312fac22bf4828dc1afece644e3bd93cb84 (patch)
treeaae07fd855f4661e7052f4a32c659bb58cdf863d /src
parentd07802912428dde1a001820a267f823389cd85a7 (diff)
Core/Auras: prevent stack overflow while processing SPELL_EFFECT_ADD_EXTRA_ATTACKS
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Spells/Auras/SpellAuraEffects.cpp10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.cpp b/src/server/game/Spells/Auras/SpellAuraEffects.cpp
index 28b26d42395..e19512b9cad 100644
--- a/src/server/game/Spells/Auras/SpellAuraEffects.cpp
+++ b/src/server/game/Spells/Auras/SpellAuraEffects.cpp
@@ -993,6 +993,16 @@ bool AuraEffect::CheckEffectProc(AuraApplication* aurApp, ProcEventInfo& eventIn
if (!spellInfo || !(spellInfo->GetSchoolMask() & GetMiscValue()))
result = 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 = GetSpellInfo()->Effects[GetEffIndex()].TriggerSpell;
+ if (SpellInfo const* triggeredSpellInfo = sSpellMgr->GetSpellInfo(triggerSpellId))
+ if (aurApp->GetTarget()->m_extraAttacks && triggeredSpellInfo->HasEffect(SPELL_EFFECT_ADD_EXTRA_ATTACKS))
+ result = false;
+ break;
+ }
default:
break;
}