diff options
author | robinsch <robin.schriever.hude@web.de> | 2015-07-01 17:35:34 +0200 |
---|---|---|
committer | Mik1893 <michele.roscelli@gmail.com> | 2015-07-01 17:37:36 +0200 |
commit | 2263cb9e1015ed0f6dbf83b63d8f0332bcbe6205 (patch) | |
tree | 5953aacbb9b3fc0c4c5efd85c5de18008340ab29 /src | |
parent | e142c3b87397a84a9169c25bc211c80ce917d508 (diff) |
Core/Unit: Fix issue with Divine Shield immunities
Closes #14910
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Entities/Unit/Unit.cpp | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 34481449334..17915e53cfb 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -1787,6 +1787,13 @@ void Unit::CalcAbsorbResist(Unit* victim, SpellSchoolMask schoolMask, DamageEffe dmgInfo.AbsorbDamage(splitDamage); + // check if caster is immune to damage + if (caster->IsImmunedToDamage(schoolMask)) + { + victim->SendSpellMiss(caster, (*itr)->GetSpellInfo()->Id, SPELL_MISS_IMMUNE); + continue; + } + uint32 splitted = splitDamage; uint32 splitted_absorb = 0; DealDamageMods(caster, splitted, &splitted_absorb); @@ -1824,6 +1831,14 @@ void Unit::CalcAbsorbResist(Unit* victim, SpellSchoolMask schoolMask, DamageEffe splitDamage = RoundToInterval(splitDamage, uint32(0), uint32(dmgInfo.GetDamage())); dmgInfo.AbsorbDamage(splitDamage); + + // check if caster is immune to damage + if (caster->IsImmunedToDamage(schoolMask)) + { + victim->SendSpellMiss(caster, (*itr)->GetSpellInfo()->Id, SPELL_MISS_IMMUNE); + continue; + } + uint32 split_absorb = 0; DealDamageMods(caster, splitDamage, &split_absorb); |