diff options
-rw-r--r-- | src/server/game/Entities/Unit/Unit.cpp | 2 | ||||
-rw-r--r-- | src/server/game/Spells/Auras/SpellAuras.cpp | 23 |
2 files changed, 14 insertions, 11 deletions
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 6a422b65201..e3d661a54d2 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -9911,7 +9911,7 @@ void Unit::GetProcAurasTriggeredOnEvent(AuraApplicationProcContainer& aurasTrigg if (SpellProcEntry const* procEntry = sSpellMgr->GetSpellProcEntry(aurApp->GetBase()->GetSpellInfo())) { aurApp->GetBase()->PrepareProcChargeDrop(procEntry, eventInfo); - aurApp->GetBase()->ConsumeProcCharges(procEntry); + aurasTriggeringProc.emplace_back(0, aurApp); } } diff --git a/src/server/game/Spells/Auras/SpellAuras.cpp b/src/server/game/Spells/Auras/SpellAuras.cpp index 8fd19d2804a..b40083c4d87 100644 --- a/src/server/game/Spells/Auras/SpellAuras.cpp +++ b/src/server/game/Spells/Auras/SpellAuras.cpp @@ -1943,20 +1943,23 @@ float Aura::CalcProcChance(SpellProcEntry const& procEntry, ProcEventInfo& event void Aura::TriggerProcOnEvent(uint32 procEffectMask, AuraApplication* aurApp, ProcEventInfo& eventInfo) { - bool prevented = CallScriptProcHandlers(aurApp, eventInfo); - if (!prevented) + if (procEffectMask) { - for (uint8 i = 0; i < MAX_SPELL_EFFECTS; ++i) + bool prevented = CallScriptProcHandlers(aurApp, eventInfo); + if (!prevented) { - if (!(procEffectMask & (1 << i))) - continue; + for (uint8 i = 0; i < MAX_SPELL_EFFECTS; ++i) + { + if (!(procEffectMask & (1 << i))) + continue; - // OnEffectProc / AfterEffectProc hooks handled in AuraEffect::HandleProc() - if (aurApp->HasEffect(i)) - GetEffect(i)->HandleProc(aurApp, eventInfo); - } + // OnEffectProc / AfterEffectProc hooks handled in AuraEffect::HandleProc() + if (aurApp->HasEffect(i)) + GetEffect(i)->HandleProc(aurApp, eventInfo); + } - CallScriptAfterProcHandlers(aurApp, eventInfo); + CallScriptAfterProcHandlers(aurApp, eventInfo); + } } ConsumeProcCharges(ASSERT_NOTNULL(sSpellMgr->GetSpellProcEntry(GetSpellInfo()))); |