mirror of
https://github.com/mangosfour/server.git
synced 2025-12-18 19:37:01 +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
|
|
@ -592,22 +592,7 @@ void Creature::Update(uint32 update_diff, uint32 diff)
|
|||
// CORPSE/DEAD state will processed at next tick (in other case death timer will be updated unexpectedly)
|
||||
if(!isAlive())
|
||||
break;
|
||||
if(m_regenTimer > 0)
|
||||
{
|
||||
if(update_diff >= m_regenTimer)
|
||||
m_regenTimer = 0;
|
||||
else
|
||||
m_regenTimer -= update_diff;
|
||||
}
|
||||
if (m_regenTimer != 0)
|
||||
break;
|
||||
|
||||
if (!isInCombat() || IsPolymorphed())
|
||||
RegenerateHealth();
|
||||
|
||||
RegenerateMana();
|
||||
|
||||
m_regenTimer = REGEN_TIME_FULL;
|
||||
RegenerateAll(update_diff);
|
||||
break;
|
||||
}
|
||||
case CORPSE_FALLING:
|
||||
|
|
@ -637,6 +622,26 @@ void Creature::StopGroupLoot()
|
|||
m_groupLootId = 0;
|
||||
}
|
||||
|
||||
void Creature::RegenerateAll(uint32 update_diff)
|
||||
{
|
||||
if (m_regenTimer > 0)
|
||||
{
|
||||
if(update_diff >= m_regenTimer)
|
||||
m_regenTimer = 0;
|
||||
else
|
||||
m_regenTimer -= update_diff;
|
||||
}
|
||||
if (m_regenTimer != 0)
|
||||
return;
|
||||
|
||||
if (!isInCombat() || IsPolymorphed())
|
||||
RegenerateHealth();
|
||||
|
||||
RegenerateMana();
|
||||
|
||||
m_regenTimer = REGEN_TIME_FULL;
|
||||
}
|
||||
|
||||
void Creature::RegenerateMana()
|
||||
{
|
||||
uint32 curValue = GetPower(POWER_MANA);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue