aboutsummaryrefslogtreecommitdiff
path: root/src/game/Unit.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/game/Unit.cpp')
-rw-r--r--src/game/Unit.cpp16
1 files changed, 15 insertions, 1 deletions
diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp
index 30c611e4ab4..6fe15958541 100644
--- a/src/game/Unit.cpp
+++ b/src/game/Unit.cpp
@@ -2002,6 +2002,20 @@ void Unit::CalcAbsorbResist(Unit *pVictim,SpellSchoolMask schoolMask, DamageEffe
}
case SPELLFAMILY_PRIEST:
{
+ // Guardian Spirit
+ if (spellProto->SpellFamilyFlags.IsEqual(0x400, 0, 0xC0000000))
+ {
+ if (pVictim->GetHealth() <= RemainingDamage) // Killing Blow
+ {
+ healAmount = pVictim->GetMaxHealth();
+ healCaster = pVictim;
+ healSpell = 48153;
+ currentAbsorb = mod->m_amount;
+ RemainingDamage=0;
+ break;
+ }
+ }
+
// Reflective Shield
if (spellProto->SpellFamilyFlags.IsEqual(0x1))
{
@@ -2246,7 +2260,7 @@ void Unit::CalcAbsorbResist(Unit *pVictim,SpellSchoolMask schoolMask, DamageEffe
}
}
- TotalAbsorb -= RemainingDamage;
+ TotalAbsorb = (TotalAbsorb - RemainingDamage > 0) ? TotalAbsorb - RemainingDamage : 0;
// TODO: School should be checked for absorbing auras or for attacks?
int32 auraAbsorbMod = GetMaxPositiveAuraModifier(SPELL_AURA_MOD_TARGET_ABSORB_SCHOOL);
AuraList const& AbsIgnoreAurasAb = GetAurasByType(SPELL_AURA_MOD_TARGET_ABILITY_ABSORB_SCHOOL);