diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/game/Unit.cpp | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index 457439e3d08..587b102a8a5 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -13074,6 +13074,15 @@ void Unit::ProcDamageAndSpellFor(bool isVictim, Unit * pTarget, uint32 procFlag, // If not trigger by default and spellProcEvent==NULL - skip if (!isTriggerAura[aurEff->GetAuraName()] && triggerData.spellProcEvent==NULL) continue; + uint32 triggered_spell_id = aurEff->GetSpellProto()->EffectTriggerSpell[i]; + // check for positive auras that proc with charge drop + bool positive = (!triggered_spell_id && IsPositiveSpell(aurEff->GetId()) && aurEff->GetParentAura()->GetAuraCharges()) || + // check for positive auras that triggers unknown spells (Blessing Recovery, etc...) + (!sSpellStore.LookupEntry(triggered_spell_id) && IsPositiveSpell(aurEff->GetId())) || + // final check for positive triggered spell + IsPositiveSpell(triggered_spell_id); + if (!damage && (procExtra & PROC_EX_ABSORB) && isVictim && positive) + continue; triggerData.effMask |= 1<<i; } } |