aboutsummaryrefslogtreecommitdiff
path: root/src/game/Unit.cpp
diff options
context:
space:
mode:
authorQAston <none@none>2009-04-19 14:44:16 +0200
committerQAston <none@none>2009-04-19 14:44:16 +0200
commit568879e10967c984a39c9b7a37be55e0ffa4a00b (patch)
tree3536ea7eb9c7339825ee7e56704a4aba7605b261 /src/game/Unit.cpp
parent6e27a4c455633851c381d8ded602325c6c888ff9 (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.cpp40
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;