diff --git a/src/game/Creature.cpp b/src/game/Creature.cpp index 7beaba139..b3a1c9ad1 100644 --- a/src/game/Creature.cpp +++ b/src/game/Creature.cpp @@ -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); diff --git a/src/game/Creature.h b/src/game/Creature.h index 4aeb18bec..284dfbae7 100644 --- a/src/game/Creature.h +++ b/src/game/Creature.h @@ -457,7 +457,9 @@ class MANGOS_DLL_SPEC Creature : public Unit char const* GetSubName() const { return GetCreatureInfo()->SubName; } - void Update(uint32 update_diff, uint32 time); // overwrite Unit::Update + void Update(uint32 update_diff, uint32 time); // overwrite Unit::Update + + virtual void RegenerateAll(uint32 update_diff); void GetRespawnCoord(float &x, float &y, float &z, float* ori = NULL, float* dist =NULL) const; uint32 GetEquipmentId() const { return m_equipmentId; } diff --git a/src/game/Pet.cpp b/src/game/Pet.cpp index b46220f48..36e795d1d 100644 --- a/src/game/Pet.cpp +++ b/src/game/Pet.cpp @@ -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); diff --git a/src/game/Pet.h b/src/game/Pet.h index 8eb892a83..3177013dc 100644 --- a/src/game/Pet.h +++ b/src/game/Pet.h @@ -168,6 +168,7 @@ class Pet : public Creature return m_autospells[pos]; } + void RegenerateAll(uint32 update_diff); // overwrite Creature::RegenerateAll void Regenerate(Powers power); void LooseHappiness(); HappinessState GetHappinessState(); diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index ddc95a3f8..9e4d53b54 100644 --- a/src/shared/revision_nr.h +++ b/src/shared/revision_nr.h @@ -1,4 +1,4 @@ #ifndef __REVISION_NR_H__ #define __REVISION_NR_H__ - #define REVISION_NR "11353" + #define REVISION_NR "11354" #endif // __REVISION_NR_H__