diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/game/Unit.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index 783af94ed47..cfe4fc26efa 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -12639,8 +12639,12 @@ void Unit::ProcDamageAndSpellFor( bool isVictim, Unit * pTarget, uint32 procFlag if (procAura && procAura->Id == itr->first) continue; ProcTriggeredData triggerData(itr->second); - if(!IsTriggeredAtSpellProcEvent(pTarget, triggerData.aura, procSpell, procFlag, procExtra, attType, isVictim, (damage > 0), triggerData.spellProcEvent)) + + // Defensive procs are active on absorbs (so absorption effects are not a hindrance) + bool active = (damage > 0) || ((procExtra & PROC_EX_ABSORB) && isVictim); + if(!IsTriggeredAtSpellProcEvent(pTarget, triggerData.aura, procSpell, procFlag, procExtra, attType, isVictim, active, triggerData.spellProcEvent)) continue; + for (uint8 i=0; i<MAX_SPELL_EFFECTS;++i) { if (AuraEffect * aurEff = itr->second->GetPartAura(i)) |