mirror of
https://github.com/mangosfour/server.git
synced 2025-12-27 01:37:04 +00:00
[11354] Resolve porblems with Pet regeneration timer conflict with Creature version.
* Creature regeneration code moved to new virtual function RegenerateAll * Pet instead direct call own regeneration code overwrite now RegenerateAll Big thanks to Vladskywolf for problem research and original patch version.
This commit is contained in:
parent
24853d6410
commit
6f8aa617d0
5 changed files with 64 additions and 47 deletions
|
|
@ -567,35 +567,6 @@ void Pet::Update(uint32 update_diff, uint32 diff)
|
|||
return;
|
||||
}
|
||||
}
|
||||
|
||||
//regenerate focus for hunter pets or energy for deathknight's ghoul
|
||||
if(m_regenTimer <= update_diff)
|
||||
{
|
||||
switch (getPowerType())
|
||||
{
|
||||
case POWER_FOCUS:
|
||||
case POWER_ENERGY:
|
||||
Regenerate(getPowerType());
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
m_regenTimer = 4000;
|
||||
}
|
||||
else
|
||||
m_regenTimer -= update_diff;
|
||||
|
||||
if(getPetType() != HUNTER_PET)
|
||||
break;
|
||||
|
||||
if(m_happinessTimer <= update_diff)
|
||||
{
|
||||
LooseHappiness();
|
||||
m_happinessTimer = 7500;
|
||||
}
|
||||
else
|
||||
m_happinessTimer -= update_diff;
|
||||
|
||||
break;
|
||||
}
|
||||
default:
|
||||
|
|
@ -605,6 +576,44 @@ void Pet::Update(uint32 update_diff, uint32 diff)
|
|||
Creature::Update(update_diff, diff);
|
||||
}
|
||||
|
||||
void Pet::RegenerateAll( uint32 update_diff )
|
||||
{
|
||||
//regenerate focus for hunter pets or energy for deathknight's ghoul
|
||||
if (m_regenTimer <= update_diff)
|
||||
{
|
||||
switch (getPowerType())
|
||||
{
|
||||
case POWER_FOCUS:
|
||||
case POWER_ENERGY:
|
||||
Regenerate(getPowerType());
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if (!isInCombat() || IsPolymorphed())
|
||||
RegenerateHealth();
|
||||
|
||||
RegenerateMana();
|
||||
|
||||
m_regenTimer = 4000;
|
||||
}
|
||||
else
|
||||
m_regenTimer -= update_diff;
|
||||
|
||||
if (getPetType() != HUNTER_PET)
|
||||
return;
|
||||
|
||||
if(m_happinessTimer <= update_diff)
|
||||
{
|
||||
LooseHappiness();
|
||||
m_happinessTimer = 7500;
|
||||
}
|
||||
else
|
||||
m_happinessTimer -= update_diff;
|
||||
}
|
||||
|
||||
|
||||
void Pet::Regenerate(Powers power)
|
||||
{
|
||||
uint32 curValue = GetPower(power);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue