diff options
-rwxr-xr-x | src/server/game/Entities/Unit/Unit.cpp | 16 | ||||
-rwxr-xr-x | src/server/game/Entities/Unit/Unit.h | 2 |
2 files changed, 10 insertions, 8 deletions
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index e20cf410396..ecfc4e9c943 100755 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -5723,7 +5723,7 @@ bool Unit::HandleDummyAuraProc(Unit *pVictim, uint32 damage, AuraEffect* trigger } triggered_spell_id = 12654; - basepoints0 += pVictim->GetRemainingDotDamage(GetGUID(), triggered_spell_id); + basepoints0 += pVictim->GetRemainingPeriodicAmount(GetGUID(), triggered_spell_id, SPELL_AURA_PERIODIC_DAMAGE); break; } // Glyph of Ice Block @@ -6332,7 +6332,7 @@ bool Unit::HandleDummyAuraProc(Unit *pVictim, uint32 damage, AuraEffect* trigger return false; basepoints0 = CalculatePctN(int32(damage), triggerAmount) / (GetSpellMaxDuration(triggeredSpell) / triggeredSpell->EffectAmplitude[0]); // Add remaining ticks to damage done - basepoints0 += pVictim->GetRemainingDotDamage(GetGUID(), triggered_spell_id); + basepoints0 += pVictim->GetRemainingPeriodicAmount(GetGUID(), triggered_spell_id, SPELL_AURA_PERIODIC_DAMAGE); } break; } @@ -6632,7 +6632,7 @@ bool Unit::HandleDummyAuraProc(Unit *pVictim, uint32 damage, AuraEffect* trigger basepoints0 = triggerAmount*damage/400; triggered_spell_id = 61840; // Add remaining ticks to damage done - basepoints0 += pVictim->GetRemainingDotDamage(GetGUID(), triggered_spell_id); + basepoints0 += pVictim->GetRemainingPeriodicAmount(GetGUID(), triggered_spell_id, SPELL_AURA_PERIODIC_DAMAGE); break; } // Sheath of Light @@ -8208,6 +8208,8 @@ bool Unit::HandleProcTriggerSpell(Unit *pVictim, uint32 damage, AuraEffect* trig } basepoints0 = CalculatePctN(int32(damage), triggerAmount) / 3; target = this; + // Add remaining ticks to healing done + basepoints0 += GetRemainingPeriodicAmount(GetGUID(), trigger_spell_id, SPELL_AURA_PERIODIC_HEAL); } break; } @@ -8262,7 +8264,7 @@ bool Unit::HandleProcTriggerSpell(Unit *pVictim, uint32 damage, AuraEffect* trig return false; basepoints0 = CalculatePctN(int32(damage), triggerAmount) / (GetSpellMaxDuration(TriggerPS) / TriggerPS->EffectAmplitude[0]); - basepoints0 += pVictim->GetRemainingDotDamage(GetGUID(), trigger_spell_id); + basepoints0 += pVictim->GetRemainingPeriodicAmount(GetGUID(), trigger_spell_id, SPELL_AURA_PERIODIC_DAMAGE); break; } break; @@ -17098,11 +17100,11 @@ void Unit::OutDebugInfo() const sLog->outString("On vehicle %u.", GetVehicleBase()->GetEntry()); } -uint32 Unit::GetRemainingDotDamage(uint64 caster, uint32 spellId, uint8 effectIndex) const +uint32 Unit::GetRemainingPeriodicAmount(uint64 caster, uint32 spellId, AuraType auraType, uint8 effectIndex) const { uint32 amount = 0; - AuraEffectList const& DoTAuras = GetAuraEffectsByType(SPELL_AURA_PERIODIC_DAMAGE); - for (AuraEffectList::const_iterator i = DoTAuras.begin(); i != DoTAuras.end(); ++i) + AuraEffectList const& periodicAuras = GetAuraEffectsByType(auraType); + for (AuraEffectList::const_iterator i = periodicAuras.begin(); i != periodicAuras.end(); ++i) { if ((*i)->GetCasterGUID() != caster || (*i)->GetId() != spellId || (*i)->GetEffIndex() != effectIndex) continue; diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h index da01a11e2e3..7d936509620 100755 --- a/src/server/game/Entities/Unit/Unit.h +++ b/src/server/game/Entities/Unit/Unit.h @@ -1925,7 +1925,7 @@ class Unit : public WorldObject void MeleeDamageBonus(Unit *pVictim, uint32 *damage, WeaponAttackType attType, SpellEntry const *spellProto = NULL); uint32 GetCastingTimeForBonus(SpellEntry const *spellProto, DamageEffectType damagetype, uint32 CastingTime); - uint32 GetRemainingDotDamage(uint64 caster, uint32 spellId, uint8 effectIndex = 0) const; + uint32 GetRemainingPeriodicAmount(uint64 caster, uint32 spellId, AuraType auraType, uint8 effectIndex = 0) const; void ApplySpellImmune(uint32 spellId, uint32 op, uint32 type, bool apply); void ApplySpellDispelImmunity(const SpellEntry * spellProto, DispelType type, bool apply); |