diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index 783af94ed4..cfe4fc26ef 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; isecond->GetPartAura(i))