aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorrobinsch <robin.schriever.hude@web.de>2015-07-01 17:35:34 +0200
committerMik1893 <michele.roscelli@gmail.com>2015-07-01 17:37:36 +0200
commit2263cb9e1015ed0f6dbf83b63d8f0332bcbe6205 (patch)
tree5953aacbb9b3fc0c4c5efd85c5de18008340ab29 /src
parente142c3b87397a84a9169c25bc211c80ce917d508 (diff)
Core/Unit: Fix issue with Divine Shield immunities
Closes #14910
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Entities/Unit/Unit.cpp15
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);