*Send to client periodic heal absorbtion.

*Heal over time spells are updating healing achievement progress now.

--HG--
branch : trunk
This commit is contained in:
QAston
2010-08-27 01:13:27 +02:00
parent 1bb14ba578
commit 1d3deae555
5 changed files with 30 additions and 27 deletions
@@ -1480,7 +1480,7 @@ void AuraEffect::PeriodicTick(Unit * target, Unit * caster) const
uint32 heal = uint32(caster->SpellHealingBonus(caster, GetSpellProto(), uint32(new_damage * gainMultiplier), DOT, GetBase()->GetStackAmount()));
int32 gain = caster->DealHeal(caster, heal, GetSpellProto());
int32 gain = caster->HealBySpell(caster, GetSpellProto(), heal);
caster->getHostileRefManager().threatAssist(caster, gain * 0.5f, GetSpellProto());
break;
}
@@ -1504,7 +1504,7 @@ void AuraEffect::PeriodicTick(Unit * target, Unit * caster) const
damage = int32(damage * gainMultiplier);
caster->DealHeal(target, damage, GetSpellProto());
caster->HealBySpell(target, GetSpellProto(), damage);
break;
}
case SPELL_AURA_PERIODIC_HEAL:
@@ -1573,16 +1573,14 @@ void AuraEffect::PeriodicTick(Unit * target, Unit * caster) const
sLog.outDetail("PeriodicTick: %u (TypeId: %u) heal of %u (TypeId: %u) for %u health inflicted by %u",
GUID_LOPART(GetCasterGUID()), GuidHigh2TypeId(GUID_HIPART(GetCasterGUID())), target->GetGUIDLow(), target->GetTypeId(), damage, GetId());
int32 gain = target->ModifyHealth(damage);
uint32 absorb = 0;
uint32 heal = uint32(damage);
caster->CalcHealAbsorb(target, GetSpellProto(), heal, absorb);
int32 gain = caster->DealHeal(target, heal);
SpellPeriodicAuraLogInfo pInfo(this, damage, damage - gain, 0, 0, 0.0f, crit);
SpellPeriodicAuraLogInfo pInfo(this, damage, damage - gain, absorb, 0, 0.0f, crit);
target->SendPeriodicAuraLog(&pInfo);
// add HoTs to amount healed in bgs
if (caster->GetTypeId() == TYPEID_PLAYER)
if (Battleground *bg = caster->ToPlayer()->GetBattleground())
bg->UpdatePlayerScore(caster->ToPlayer(), SCORE_HEALING_DONE, gain);
target->getHostileRefManager().threatAssist(caster, float(gain) * 0.5f, GetSpellProto());
bool haveCastItem = GetBase()->GetCastItemGUID() != 0;
@@ -1666,7 +1664,7 @@ void AuraEffect::PeriodicTick(Unit * target, Unit * caster) const
SpellPeriodicAuraLogInfo pInfo(this, drain_amount, 0, 0, 0, gain_multiplier, false);
target->SendPeriodicAuraLog(&pInfo);
int32 gain_amount = int32(drain_amount*gain_multiplier);
int32 gain_amount = int32(drain_amount * gain_multiplier);
if (gain_amount)
{
@@ -2143,7 +2141,7 @@ void AuraEffect::TriggerSpell(Unit * target, Unit * caster) const
case 23493:
{
int32 heal = caster->CountPctFromMaxHealth(10);
caster->DealHeal(target, heal, auraSpellInfo);
caster->HealBySpell(target, auraSpellInfo, heal);
int32 mana = caster->GetMaxPower(POWER_MANA);
if (mana)