diff --git a/src/game/Pet.cpp b/src/game/Pet.cpp index 07c4fb6dc..eb77476d6 100644 --- a/src/game/Pet.cpp +++ b/src/game/Pet.cpp @@ -552,18 +552,26 @@ void Pet::Update(uint32 diff) } } - if(getPetType() != HUNTER_PET) - break; - - //regenerate Focus + //regenerate focus for hunter pets or energy for deathknight's ghoul if(m_regenTimer <= diff) { - RegenerateFocus(); + switch (getPowerType()) + { + case POWER_FOCUS: + case POWER_ENERGY: + Regenerate(getPowerType()); + break; + default: + break; + } m_regenTimer = 4000; } else m_regenTimer -= diff; + if(getPetType() != HUNTER_PET) + break; + if(m_happinessTimer <= diff) { LooseHappiness(); @@ -580,22 +588,41 @@ void Pet::Update(uint32 diff) Creature::Update(diff); } -void Pet::RegenerateFocus() +void Pet::Regenerate(Powers power) { - uint32 curValue = GetPower(POWER_FOCUS); - uint32 maxValue = GetMaxPower(POWER_FOCUS); + uint32 curValue = GetPower(power); + uint32 maxValue = GetMaxPower(power); if (curValue >= maxValue) return; - float addvalue = 24 * sWorld.getRate(RATE_POWER_FOCUS); + float addvalue = 0.0f; + switch (power) + { + case POWER_FOCUS: + { + // For hunter pets. + addvalue = 24 * sWorld.getRate(RATE_POWER_FOCUS); + break; + } + case POWER_ENERGY: + { + // For deathknight's ghoul. + addvalue = 20; + break; + } + default: + return; + } + + // Apply modifiers (if any). AuraList const& ModPowerRegenPCTAuras = GetAurasByType(SPELL_AURA_MOD_POWER_REGEN_PERCENT); for(AuraList::const_iterator i = ModPowerRegenPCTAuras.begin(); i != ModPowerRegenPCTAuras.end(); ++i) - if ((*i)->GetModifier()->m_miscvalue == POWER_FOCUS) + if ((*i)->GetModifier()->m_miscvalue == power) addvalue *= ((*i)->GetModifier()->m_amount + 100) / 100.0f; - ModifyPower(POWER_FOCUS, (int32)addvalue); + ModifyPower(power, (int32)addvalue); } void Pet::LooseHappiness() diff --git a/src/game/Pet.h b/src/game/Pet.h index 255690e77..e3be2c4ed 100644 --- a/src/game/Pet.h +++ b/src/game/Pet.h @@ -152,7 +152,7 @@ class Pet : public Creature return m_autospells[pos]; } - void RegenerateFocus(); + void Regenerate(Powers power); void LooseHappiness(); HappinessState GetHappinessState(); void GivePetXP(uint32 xp); diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index a06c3d341..c5e56799c 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 "7784" + #define REVISION_NR "7785" #endif // __REVISION_NR_H__