aboutsummaryrefslogtreecommitdiff
path: root/src/game/Creature.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/game/Creature.cpp')
-rw-r--r--src/game/Creature.cpp28
1 files changed, 11 insertions, 17 deletions
diff --git a/src/game/Creature.cpp b/src/game/Creature.cpp
index a8d1ffe9b54..9aa6eb78c74 100644
--- a/src/game/Creature.cpp
+++ b/src/game/Creature.cpp
@@ -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: