diff options
Diffstat (limited to 'src/game/SpellAuraEffects.cpp')
-rw-r--r-- | src/game/SpellAuraEffects.cpp | 24 |
1 files changed, 18 insertions, 6 deletions
diff --git a/src/game/SpellAuraEffects.cpp b/src/game/SpellAuraEffects.cpp index 51c707ea5a8..df9b1b02214 100644 --- a/src/game/SpellAuraEffects.cpp +++ b/src/game/SpellAuraEffects.cpp @@ -1295,9 +1295,15 @@ void AuraEffect::PeriodicTick(Unit * target, Unit * caster) const damage -= target->GetSpellCritDamageReduction(damage); } - // only from players - if (IS_PLAYER_GUID(GetCasterGUID())) - damage -= target->GetSpellDamageReduction(damage); + // Reduce damage from resilience for players and pets only. + // As of patch 3.3 pets inherit 100% of master resilience. + if (caster->GetSpellModOwner()) + if (Player* modOwner = target->GetSpellModOwner()) + { + if (crit) + damage -= modOwner->GetSpellCritDamageReduction(damage); + damage -= modOwner->GetSpellDamageReduction(damage); + } caster->CalcAbsorbResist(target, GetSpellSchoolMask(GetSpellProto()), DOT, damage, &absorb, &resist, m_spellProto); @@ -1368,9 +1374,15 @@ void AuraEffect::PeriodicTick(Unit * target, Unit * caster) const damage = damageReductedArmor; } - // Reduce dot damage from resilience for players. - if (target->GetTypeId() == TYPEID_PLAYER) - damage-=target->GetSpellDamageReduction(damage); + // Reduce damage from resilience for players and pets only. + // As of patch 3.3 pets inherit 100% of master resilience. + if (caster->GetSpellModOwner()) + if (Player* modOwner = target->GetSpellModOwner()) + { + if (crit) + damage -= modOwner->GetSpellCritDamageReduction(damage); + damage -= modOwner->GetSpellDamageReduction(damage); + } caster->CalcAbsorbResist(target, GetSpellSchoolMask(GetSpellProto()), DOT, damage, &absorb, &resist, m_spellProto); |