diff --git a/src/game/SpellMgr.cpp b/src/game/SpellMgr.cpp index 1b2595ba1..9a46493c9 100644 --- a/src/game/SpellMgr.cpp +++ b/src/game/SpellMgr.cpp @@ -1154,8 +1154,8 @@ bool SpellMgr::IsSpellProcEventCanTriggeredBy(SpellProcEventEntry const * spellP // Exist req for PROC_EX_EX_TRIGGER_ALWAYS if (procEvent_procEx & PROC_EX_EX_TRIGGER_ALWAYS) return true; - // Passive spells can`t trigger if need hit - if ((procEvent_procEx & PROC_EX_NORMAL_HIT) && !active) + // Passive spells can`t trigger if need hit (exclude cases when procExtra include non-active flags) + ((procEvent_procEx & PROC_EX_NORMAL_HIT & procExtra) && !active) return false; // Check Extra Requirement like (hit/crit/miss/resist/parry/dodge/block/immune/reflect/absorb and other) if (procEvent_procEx & procExtra) diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index 3a912a4f1..c13c8335a 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -1494,6 +1494,9 @@ void Unit::CalculateMeleeDamage(Unit *pVictim, uint32 damage, CalcDamageInfo *da damageInfo->blocked_amount = damageInfo->damage; damageInfo->procEx |= PROC_EX_FULL_BLOCK; } + else + damageInfo->procEx |= PROC_EX_NORMAL_HIT; // Partial blocks can still cause attacker procs + damageInfo->damage -= damageInfo->blocked_amount; damageInfo->cleanDamage += damageInfo->blocked_amount; break; diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index bfa153411..dcffd0afe 100644 --- a/src/shared/revision_nr.h +++ b/src/shared/revision_nr.h @@ -1,4 +1,4 @@ #ifndef __REVISION_NR_H__ #define __REVISION_NR_H__ - #define REVISION_NR "9455" + #define REVISION_NR "9456" #endif // __REVISION_NR_H__