fix(Core/Spells): Do not add PROC_HIT_NORMAL/PROC_HIT_CRITICAL if damage is fully nullified (#25105)
Co-authored-by: blinkysc <blinkysc@users.noreply.github.com> Co-authored-by: ariel- <ariel-@users.noreply.github.com>
This commit is contained in:
parent
a90570a2de
commit
57db75a474
1 changed files with 26 additions and 10 deletions
|
|
@ -126,6 +126,28 @@ DamageInfo::DamageInfo(CalcDamageInfo const& dmgInfo, uint8 damageIndex)
|
|||
m_damageType(DIRECT_DAMAGE), m_attackType(dmgInfo.attackType), m_absorb(dmgInfo.damages[damageIndex].absorb), m_resist(dmgInfo.damages[damageIndex].resist), m_block(dmgInfo.blocked_amount),
|
||||
m_cleanDamage(dmgInfo.cleanDamage), m_hitMask(0)
|
||||
{
|
||||
switch (dmgInfo.TargetState)
|
||||
{
|
||||
case VICTIMSTATE_IS_IMMUNE:
|
||||
m_hitMask |= PROC_HIT_IMMUNE;
|
||||
break;
|
||||
case VICTIMSTATE_BLOCKS:
|
||||
m_hitMask |= PROC_HIT_FULL_BLOCK;
|
||||
break;
|
||||
}
|
||||
|
||||
if (dmgInfo.HitInfo & (HITINFO_PARTIAL_ABSORB | HITINFO_FULL_ABSORB))
|
||||
m_hitMask |= PROC_HIT_ABSORB;
|
||||
|
||||
if (dmgInfo.HitInfo & HITINFO_FULL_RESIST)
|
||||
m_hitMask |= PROC_HIT_FULL_RESIST;
|
||||
|
||||
if (m_block)
|
||||
m_hitMask |= PROC_HIT_BLOCK;
|
||||
|
||||
bool const damageNullified = (dmgInfo.HitInfo & (HITINFO_FULL_ABSORB | HITINFO_FULL_RESIST)) != 0
|
||||
|| (m_hitMask & (PROC_HIT_IMMUNE | PROC_HIT_FULL_BLOCK)) != 0;
|
||||
|
||||
switch (dmgInfo.hitOutCome)
|
||||
{
|
||||
case MELEE_HIT_MISS:
|
||||
|
|
@ -141,25 +163,19 @@ DamageInfo::DamageInfo(CalcDamageInfo const& dmgInfo, uint8 damageIndex)
|
|||
m_hitMask |= PROC_HIT_EVADE;
|
||||
break;
|
||||
case MELEE_HIT_BLOCK:
|
||||
m_hitMask |= PROC_HIT_BLOCK;
|
||||
[[fallthrough]];
|
||||
case MELEE_HIT_CRUSHING:
|
||||
case MELEE_HIT_GLANCING:
|
||||
case MELEE_HIT_NORMAL:
|
||||
m_hitMask |= PROC_HIT_NORMAL;
|
||||
if (!damageNullified)
|
||||
m_hitMask |= PROC_HIT_NORMAL;
|
||||
break;
|
||||
case MELEE_HIT_CRIT:
|
||||
m_hitMask |= PROC_HIT_CRITICAL;
|
||||
if (!damageNullified)
|
||||
m_hitMask |= PROC_HIT_CRITICAL;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if (dmgInfo.damages[damageIndex].absorb)
|
||||
m_hitMask |= PROC_HIT_ABSORB;
|
||||
|
||||
if (dmgInfo.blocked_amount)
|
||||
m_hitMask |= (dmgInfo.damages[damageIndex].damage == dmgInfo.blocked_amount) ? PROC_HIT_FULL_BLOCK : PROC_HIT_BLOCK;
|
||||
}
|
||||
|
||||
DamageInfo::DamageInfo(SpellNonMeleeDamage const& spellNonMeleeDamage, DamageEffectType damageType, WeaponAttackType attackType, uint32 hitMask)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue