*Allow vehicles to regenerate energy.
--HG-- branch : trunk
This commit is contained in:
+11
-17
@@ -539,28 +539,22 @@ void Creature::Update(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(diff >= m_regenTimer)
|
||||
m_regenTimer = 0;
|
||||
else
|
||||
m_regenTimer -= diff;
|
||||
}
|
||||
if (m_regenTimer != 0)
|
||||
break;
|
||||
|
||||
if (!isInCombat())
|
||||
if(m_regenTimer > diff)
|
||||
m_regenTimer -= diff;
|
||||
else
|
||||
{
|
||||
if(HasFlag(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_OTHER_TAGGER))
|
||||
SetUInt32Value(UNIT_DYNAMIC_FLAGS, GetCreatureInfo()->dynamicflags);
|
||||
RegenerateHealth();
|
||||
}
|
||||
else if(IsPolymorphed())
|
||||
if (!isInCombat() || IsPolymorphed())
|
||||
RegenerateHealth();
|
||||
|
||||
RegenerateMana();
|
||||
if(getPowerType() == POWER_ENERGY)
|
||||
Regenerate(POWER_ENERGY);
|
||||
else
|
||||
RegenerateMana();
|
||||
|
||||
m_regenTimer += 2000 - diff;
|
||||
}
|
||||
|
||||
m_regenTimer = 2000;
|
||||
break;
|
||||
}
|
||||
case DEAD_FALLING:
|
||||
|
||||
@@ -751,6 +751,7 @@ class TRINITY_DLL_SPEC Creature : public Unit
|
||||
ReactStates m_reactState; // for AI, not charmInfo
|
||||
void RegenerateMana();
|
||||
void RegenerateHealth();
|
||||
void Regenerate(Powers power);
|
||||
MovementGeneratorType m_defaultMovementType;
|
||||
Cell m_currentCell; // store current cell where creature listed
|
||||
uint32 m_DBTableGuid; ///< For new or temporary creatures is 0 for saved it is lowguid
|
||||
|
||||
+6
-4
@@ -537,17 +537,19 @@ void Pet::Update(uint32 diff)
|
||||
{
|
||||
case POWER_FOCUS:
|
||||
Regenerate(POWER_FOCUS);
|
||||
m_regenTimer = 4000;
|
||||
m_regenTimer += 4000 - diff;
|
||||
if(!m_regenTimer) ++m_regenTimer;
|
||||
break;
|
||||
case POWER_ENERGY:
|
||||
Regenerate(POWER_ENERGY);
|
||||
m_regenTimer = 2000;
|
||||
m_regenTimer += 2000 - diff;
|
||||
if(!m_regenTimer) ++m_regenTimer;
|
||||
break;
|
||||
default:
|
||||
m_regenTimer = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(getPetType() != HUNTER_PET)
|
||||
@@ -569,7 +571,7 @@ void Pet::Update(uint32 diff)
|
||||
Creature::Update(diff);
|
||||
}
|
||||
|
||||
void Pet::Regenerate(Powers power)
|
||||
void Creature::Regenerate(Powers power)
|
||||
{
|
||||
uint32 curValue = GetPower(power);
|
||||
uint32 maxValue = GetMaxPower(power);
|
||||
|
||||
+1
-2
@@ -159,7 +159,6 @@ class Pet : public Guardian
|
||||
return m_autospells[pos];
|
||||
}
|
||||
|
||||
void Regenerate(Powers power);
|
||||
void LooseHappiness();
|
||||
HappinessState GetHappinessState();
|
||||
void GivePetXP(uint32 xp);
|
||||
@@ -238,7 +237,7 @@ class Pet : public Guardian
|
||||
int32 m_duration; // time until unsummon (used mostly for summoned guardians and not used for controlled pets)
|
||||
uint64 m_auraRaidUpdateMask;
|
||||
bool m_loading;
|
||||
uint32 m_regenTimer;
|
||||
int32 m_regenTimer;
|
||||
|
||||
DeclinedName *m_declinedname;
|
||||
|
||||
|
||||
+5
-1
@@ -10550,8 +10550,12 @@ void Unit::ClearInCombat()
|
||||
RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IN_COMBAT);
|
||||
|
||||
// Player's state will be cleared in Player::UpdateContestedPvP
|
||||
if(GetTypeId()!=TYPEID_PLAYER)
|
||||
if(GetTypeId() != TYPEID_PLAYER)
|
||||
{
|
||||
clearUnitState(UNIT_STAT_ATTACK_PLAYER);
|
||||
if(HasFlag(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_OTHER_TAGGER))
|
||||
SetUInt32Value(UNIT_DYNAMIC_FLAGS, ((Creature*)this)->GetCreatureInfo()->dynamicflags);
|
||||
}
|
||||
else
|
||||
((Player*)this)->UpdatePotionCooldown();
|
||||
|
||||
|
||||
+1
-1
@@ -1933,7 +1933,7 @@ class TRINITY_DLL_SPEC Unit : public WorldObject
|
||||
//uint32 m_unit_movement_flags;
|
||||
|
||||
uint32 m_reactiveTimer[MAX_REACTIVE];
|
||||
uint32 m_regenTimer;
|
||||
int32 m_regenTimer;
|
||||
|
||||
ThreatManager m_ThreatManager;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user