diff options
author | QAston <none@none> | 2009-04-19 14:44:16 +0200 |
---|---|---|
committer | QAston <none@none> | 2009-04-19 14:44:16 +0200 |
commit | 568879e10967c984a39c9b7a37be55e0ffa4a00b (patch) | |
tree | 3536ea7eb9c7339825ee7e56704a4aba7605b261 /src/game/Unit.cpp | |
parent | 6e27a4c455633851c381d8ded602325c6c888ff9 (diff) |
*Send overheal amount to client.
*Fix potion cooldowns.
--HG--
branch : trunk
Diffstat (limited to 'src/game/Unit.cpp')
-rw-r--r-- | src/game/Unit.cpp | 40 |
1 files changed, 38 insertions, 2 deletions
diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index bcc96c972bc..0820e7a2fcd 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -6473,6 +6473,7 @@ bool Unit::HandleDummyAuraProc(Unit *pVictim, uint32 damage, AuraEffect* trigger } case SPELLFAMILY_POTION: { + // alchemist's stone if (dummySpell->Id == 17619) { if (procSpell->SpellFamilyName == SPELLFAMILY_POTION) @@ -8308,15 +8309,21 @@ void Unit::UnsummonAllTotems() } } -void Unit::SendHealSpellLog(Unit *pVictim, uint32 SpellID, uint32 Damage, bool critical) +void Unit::SendHealSpellLog(Unit *pVictim, uint32 SpellID, uint32 Damage, bool critical, int32 * Gain ) { // we guess size WorldPacket data(SMSG_SPELLHEALLOG, (8+8+4+4+1)); data.append(pVictim->GetPackGUID()); data.append(GetPackGUID()); data << uint32(SpellID); + int32 gainAmount; + if (!Gain) + gainAmount = pVictim->GetHealthGain(Damage); + else + gainAmount = *Gain; + data << uint32(Damage); - data << uint32(0); // over healing? + data << uint32(Damage-gainAmount >0 ? Damage-gainAmount : 0); // overheal data << uint8(critical ? 1 : 0); data << uint8(0); // unused in client? SendMessageToSet(&data, true); @@ -9776,6 +9783,35 @@ int32 Unit::ModifyHealth(int32 dVal) return gain; } +int32 Unit::GetHealthGain(int32 dVal) +{ + int32 gain = 0; + + if(dVal==0) + return 0; + + int32 curHealth = (int32)GetHealth(); + + int32 val = dVal + curHealth; + if(val <= 0) + { + return -curHealth; + } + + int32 maxHealth = (int32)GetMaxHealth(); + + if(val < maxHealth) + { + gain = dVal; + } + else if(curHealth != maxHealth) + { + gain = maxHealth - curHealth; + } + + return gain; +} + int32 Unit::ModifyPower(Powers power, int32 dVal) { int32 gain = 0; |