diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/server/game/Spells/SpellMgr.cpp | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/server/game/Spells/SpellMgr.cpp b/src/server/game/Spells/SpellMgr.cpp index 1416dd5c08c..aaeb40c7fc9 100644 --- a/src/server/game/Spells/SpellMgr.cpp +++ b/src/server/game/Spells/SpellMgr.cpp @@ -1768,6 +1768,7 @@ void SpellMgr::LoadSpellProcs() bool addTriggerFlag = false; uint32 procSpellTypeMask = PROC_SPELL_TYPE_NONE; + uint32 nonProcMask = 0; for (uint8 i = 0; i < MAX_SPELL_EFFECTS; ++i) { if (!spellInfo->Effects[i].IsEffect()) @@ -1778,7 +1779,11 @@ void SpellMgr::LoadSpellProcs() continue; if (!isTriggerAura[auraName]) + { + // explicitly disable non proccing auras to avoid losing charges on self proc + nonProcMask |= 1 << i; continue; + } procSpellTypeMask |= spellTypeMask[auraName]; if (isAlwaysTriggeredAura[auraName]) @@ -1798,7 +1803,6 @@ void SpellMgr::LoadSpellProcs() break; } } - break; } if (!procSpellTypeMask) @@ -1861,6 +1865,8 @@ void SpellMgr::LoadSpellProcs() procEntry.AttributesMask |= PROC_ATTR_REQ_EXP_OR_HONOR; if (addTriggerFlag) procEntry.AttributesMask |= PROC_ATTR_TRIGGERED_CAN_PROC; + if (nonProcMask) + procEntry.AttributesMask |= nonProcMask * PROC_ATTR_DISABLE_EFF_0; procEntry.ProcsPerMinute = 0; procEntry.Chance = spellInfo->ProcChance; |
