From 2263cb9e1015ed0f6dbf83b63d8f0332bcbe6205 Mon Sep 17 00:00:00 2001 From: robinsch Date: Wed, 1 Jul 2015 17:35:34 +0200 Subject: Core/Unit: Fix issue with Divine Shield immunities Closes #14910 --- src/server/game/Entities/Unit/Unit.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'src/server') 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); -- cgit v1.2.3