diff options
| -rwxr-xr-x | src/server/game/Entities/Unit/Unit.cpp | 9 | 
1 files changed, 8 insertions, 1 deletions
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index ed3f3bf3827..7dc1afa9738 100755 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -14361,10 +14361,17 @@ void Unit::ProcDamageAndSpellFor(bool isVictim, Unit* target, uint32 procFlag, u              continue;          ProcTriggeredData triggerData(itr->second->GetBase());          // Defensive procs are active on absorbs (so absorption effects are not a hindrance) -        bool active = (damage > 0) || (procExtra & (PROC_EX_ABSORB|PROC_EX_BLOCK) && isVictim); +        bool active = damage || (procExtra & PROC_EX_BLOCK && isVictim);          if (isVictim)              procExtra &= ~PROC_EX_INTERNAL_REQ_FAMILY; +          SpellInfo const* spellProto = itr->second->GetBase()->GetSpellInfo(); + +        // only auras that has triggered spell should proc from fully absorbed damage +        if (procExtra & PROC_EX_ABSORB && isVictim) +            if (damage || spellProto->Effects[EFFECT_0].TriggerSpell || spellProto->Effects[EFFECT_1].TriggerSpell || spellProto->Effects[EFFECT_2].TriggerSpell) +                active = true; +          if (!IsTriggeredAtSpellProcEvent(target, triggerData.aura, procSpell, procFlag, procExtra, attType, isVictim, active, triggerData.spellProcEvent))              continue;  | 
