mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-21 09:44:45 +01:00
Core/Spells: do not add PROC_HIT_NORMAL/PROC_HIT_CRITICAL flags if damage is fully nullified
- Aka: full absorbs/full resists/full blocks/immune
This commit is contained in:
@@ -113,7 +113,7 @@ DamageInfo::DamageInfo(CalcDamageInfo const& dmgInfo)
|
||||
break;
|
||||
}
|
||||
|
||||
if (m_absorb)
|
||||
if (dmgInfo.HitInfo & (HITINFO_PARTIAL_ABSORB | HITINFO_FULL_ABSORB))
|
||||
m_hitMask |= PROC_HIT_ABSORB;
|
||||
|
||||
if (dmgInfo.HitInfo & HITINFO_FULL_RESIST)
|
||||
@@ -122,6 +122,8 @@ DamageInfo::DamageInfo(CalcDamageInfo const& dmgInfo)
|
||||
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:
|
||||
@@ -139,10 +141,12 @@ DamageInfo::DamageInfo(CalcDamageInfo const& dmgInfo)
|
||||
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;
|
||||
@@ -180,7 +184,10 @@ void DamageInfo::ResistDamage(uint32 amount)
|
||||
m_resist += amount;
|
||||
m_damage -= amount;
|
||||
if (!m_damage)
|
||||
{
|
||||
m_hitMask |= PROC_HIT_FULL_RESIST;
|
||||
m_hitMask &= ~(PROC_HIT_NORMAL | PROC_HIT_CRITICAL);
|
||||
}
|
||||
}
|
||||
|
||||
void DamageInfo::BlockDamage(uint32 amount)
|
||||
@@ -190,7 +197,10 @@ void DamageInfo::BlockDamage(uint32 amount)
|
||||
m_damage -= amount;
|
||||
m_hitMask |= PROC_HIT_BLOCK;
|
||||
if (!m_damage)
|
||||
{
|
||||
m_hitMask |= PROC_HIT_FULL_BLOCK;
|
||||
m_hitMask &= ~(PROC_HIT_NORMAL | PROC_HIT_CRITICAL);
|
||||
}
|
||||
}
|
||||
|
||||
uint32 DamageInfo::GetHitMask() const
|
||||
|
||||
Reference in New Issue
Block a user