From dbd720030af384b8170cde24a82e14518e78b29a Mon Sep 17 00:00:00 2001 From: hates_sundays Date: Sun, 19 Feb 2017 18:59:16 +0000 Subject: [PATCH] Fix Divine Shield not absorbing lava or slime damage. thanks NostraliaWow --- src/game/Object/Player.cpp | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/game/Object/Player.cpp b/src/game/Object/Player.cpp index 1d39e433..3f85f579 100644 --- a/src/game/Object/Player.cpp +++ b/src/game/Object/Player.cpp @@ -904,9 +904,19 @@ uint32 Player::EnvironmentalDamage(EnvironmentalDamageType type, uint32 damage) uint32 absorb = 0; uint32 resist = 0; if (type == DAMAGE_LAVA) - { CalculateDamageAbsorbAndResist(this, SPELL_SCHOOL_MASK_FIRE, DIRECT_DAMAGE, damage, &absorb, &resist); } + { + if (this->IsImmuneToDamage(SPELL_SCHOOL_MASK_FIRE)) + return 0; + + CalculateDamageAbsorbAndResist(this, SPELL_SCHOOL_MASK_FIRE, DIRECT_DAMAGE, damage, &absorb, &resist); + } else if (type == DAMAGE_SLIME) - { CalculateDamageAbsorbAndResist(this, SPELL_SCHOOL_MASK_NATURE, DIRECT_DAMAGE, damage, &absorb, &resist); } + { + if (this->IsImmuneToDamage(SPELL_SCHOOL_MASK_NATURE)) + return 0; + + CalculateDamageAbsorbAndResist(this, SPELL_SCHOOL_MASK_NATURE, DIRECT_DAMAGE, damage, &absorb, &resist); + } damage -= absorb + resist;