[7785] Allow regenerate energy for pets if this current power type.

Signed-off-by: VladimirMangos <vladimir@getmangos.com>
This commit is contained in:
Astellar 2009-05-06 07:16:07 +04:00 committed by VladimirMangos
parent 75dda239d7
commit 7355eb2f52
3 changed files with 40 additions and 13 deletions

View file

@ -552,18 +552,26 @@ void Pet::Update(uint32 diff)
} }
} }
if(getPetType() != HUNTER_PET) //regenerate focus for hunter pets or energy for deathknight's ghoul
break;
//regenerate Focus
if(m_regenTimer <= diff) if(m_regenTimer <= diff)
{ {
RegenerateFocus(); switch (getPowerType())
{
case POWER_FOCUS:
case POWER_ENERGY:
Regenerate(getPowerType());
break;
default:
break;
}
m_regenTimer = 4000; m_regenTimer = 4000;
} }
else else
m_regenTimer -= diff; m_regenTimer -= diff;
if(getPetType() != HUNTER_PET)
break;
if(m_happinessTimer <= diff) if(m_happinessTimer <= diff)
{ {
LooseHappiness(); LooseHappiness();
@ -580,22 +588,41 @@ void Pet::Update(uint32 diff)
Creature::Update(diff); Creature::Update(diff);
} }
void Pet::RegenerateFocus() void Pet::Regenerate(Powers power)
{ {
uint32 curValue = GetPower(POWER_FOCUS); uint32 curValue = GetPower(power);
uint32 maxValue = GetMaxPower(POWER_FOCUS); uint32 maxValue = GetMaxPower(power);
if (curValue >= maxValue) if (curValue >= maxValue)
return; 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); AuraList const& ModPowerRegenPCTAuras = GetAurasByType(SPELL_AURA_MOD_POWER_REGEN_PERCENT);
for(AuraList::const_iterator i = ModPowerRegenPCTAuras.begin(); i != ModPowerRegenPCTAuras.end(); ++i) 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; addvalue *= ((*i)->GetModifier()->m_amount + 100) / 100.0f;
ModifyPower(POWER_FOCUS, (int32)addvalue); ModifyPower(power, (int32)addvalue);
} }
void Pet::LooseHappiness() void Pet::LooseHappiness()

View file

@ -152,7 +152,7 @@ class Pet : public Creature
return m_autospells[pos]; return m_autospells[pos];
} }
void RegenerateFocus(); void Regenerate(Powers power);
void LooseHappiness(); void LooseHappiness();
HappinessState GetHappinessState(); HappinessState GetHappinessState();
void GivePetXP(uint32 xp); void GivePetXP(uint32 xp);

View file

@ -1,4 +1,4 @@
#ifndef __REVISION_NR_H__ #ifndef __REVISION_NR_H__
#define __REVISION_NR_H__ #define __REVISION_NR_H__
#define REVISION_NR "7784" #define REVISION_NR "7785"
#endif // __REVISION_NR_H__ #endif // __REVISION_NR_H__