From 9db6771d92ae656fb89277276980a7ef12ad87e2 Mon Sep 17 00:00:00 2001 From: hondacrx Date: Mon, 11 Dec 2017 11:09:18 -0500 Subject: [PATCH] Core/Spells: do not add PROC_HIT_NORMAL/PROC_HIT_CRITICAL flags if damage is fully nullified --- Source/Game/Entities/Unit/Unit.Fields.cs | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/Source/Game/Entities/Unit/Unit.Fields.cs b/Source/Game/Entities/Unit/Unit.Fields.cs index 6642791a4..65c9beaea 100644 --- a/Source/Game/Entities/Unit/Unit.Fields.cs +++ b/Source/Game/Entities/Unit/Unit.Fields.cs @@ -261,7 +261,7 @@ namespace Game.Entities break; } - if (m_absorb != 0) + if (dmgInfo.HitInfo.HasAnyFlag(HitInfo.PartialAbsorb | HitInfo.FullAbsorb)) m_hitMask |= ProcFlagsHit.Absorb; if (dmgInfo.HitInfo.HasAnyFlag(HitInfo.FullResist)) @@ -270,6 +270,7 @@ namespace Game.Entities if (m_block != 0) m_hitMask |= ProcFlagsHit.Block; + bool damageNullified = dmgInfo.HitInfo.HasAnyFlag(HitInfo.FullAbsorb | HitInfo.FullResist) || m_hitMask.HasAnyFlag(ProcFlagsHit.Immune | ProcFlagsHit.FullBlock); switch (dmgInfo.hitOutCome) { case MeleeHitOutcome.Miss: @@ -287,10 +288,12 @@ namespace Game.Entities case MeleeHitOutcome.Crushing: case MeleeHitOutcome.Glancing: case MeleeHitOutcome.Normal: - m_hitMask |= ProcFlagsHit.Normal; + if (!damageNullified) + m_hitMask |= ProcFlagsHit.Normal; break; case MeleeHitOutcome.Crit: - m_hitMask |= ProcFlagsHit.Critical; + if (!damageNullified) + m_hitMask |= ProcFlagsHit.Critical; break; default: break; @@ -335,7 +338,10 @@ namespace Game.Entities m_resist += amount; m_damage -= amount; if (m_damage == 0) + { m_hitMask |= ProcFlagsHit.FullResist; + m_hitMask &= ~(ProcFlagsHit.Normal | ProcFlagsHit.Critical); + } } void BlockDamage(uint amount) { @@ -344,7 +350,10 @@ namespace Game.Entities m_damage -= amount; m_hitMask |= ProcFlagsHit.Block; if (m_damage == 0) + { m_hitMask |= ProcFlagsHit.FullBlock; + m_hitMask &= ~(ProcFlagsHit.Normal | ProcFlagsHit.Critical); + } } public Unit GetAttacker() { return m_attacker; }