Core/Unit: damage immune improvements

This commit is contained in:
ariel- authored and roc13x committed 2017-05-04 01:48:16 +01:00
1 parent 746cb97dce
commit b7b69b88ba
8 files changed
+80 -40

No files matched your search

+21 -11
View File
@@ -2457,15 +2457,29 @@ void Spell::DoAllEffectOnTarget(TargetInfo* target)
// Fill base damage struct (unitTarget - is real spell target)
SpellNonMeleeDamage damageInfo(caster, unitTarget, m_spellInfo->Id, m_spellSchoolMask);
// Add bonuses and fill damageInfo struct
caster->CalculateSpellDamageTaken(&damageInfo, m_damage, m_spellInfo, m_attackType, target->crit);
caster->DealDamageMods(damageInfo.target, damageInfo.damage, &damageInfo.absorb);
// Check damage immunity
if (unitTarget->IsImmunedToDamage(m_spellInfo))
{
hitMask = PROC_HIT_IMMUNE;
m_damage = 0;
// Send log damage message to client
caster->SendSpellNonMeleeDamageLog(&damageInfo);
// no packet found in sniffs
}
else
{
// Add bonuses and fill damageInfo struct
caster->CalculateSpellDamageTaken(&damageInfo, m_damage, m_spellInfo, m_attackType, target->crit);
caster->DealDamageMods(damageInfo.target, damageInfo.damage, &damageInfo.absorb);
hitMask |= createProcHitMask(&damageInfo, missInfo);
procVictim |= PROC_FLAG_TAKEN_DAMAGE;
// Send log damage message to client
caster->SendSpellNonMeleeDamageLog(&damageInfo);
hitMask |= createProcHitMask(&damageInfo, missInfo);
procVictim |= PROC_FLAG_TAKEN_DAMAGE;
m_damage = damageInfo.damage;
caster->DealSpellDamage(&damageInfo, true);
}
// Do triggers for unit
if (canEffectTrigger)
@@ -2477,10 +2491,6 @@ void Spell::DoAllEffectOnTarget(TargetInfo* target)
(m_spellInfo->DmgClass == SPELL_DAMAGE_CLASS_MELEE || m_spellInfo->DmgClass == SPELL_DAMAGE_CLASS_RANGED))
caster->ToPlayer()->CastItemCombatSpell(spellDamageInfo);
}
m_damage = damageInfo.damage;
caster->DealSpellDamage(&damageInfo, true);
}
// Passive spell hits/misses or active spells only misses (only triggers)
else