aboutsummaryrefslogtreecommitdiff
path: root/src/game/Unit.cpp
diff options
context:
space:
mode:
authorQAston <none@none>2009-03-08 21:29:00 +0100
committerQAston <none@none>2009-03-08 21:29:00 +0100
commit7289f5b36dd490e88e52d46ae1dbe5519f04f556 (patch)
tree9e53136f09680d4dfa4e35d68a7faee7942f7e46 /src/game/Unit.cpp
parente979eb56f268d9ee9e94c61c40f1f66e6147d442 (diff)
*Fix Guardian Spirit.
*Fix Replenishment-by panaut0lordv. --HG-- branch : trunk
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);