*Send overheal amount to client.

*Fix potion cooldowns.

--HG--
branch : trunk
This commit is contained in:
QAston
2009-04-19 14:44:16 +02:00
parent 6e27a4c455
commit 568879e109
5 changed files with 55 additions and 18 deletions
+38 -2
View File
@@ -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;