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.cpp20
1 files changed, 12 insertions, 8 deletions
diff --git a/src/game/Creature.cpp b/src/game/Creature.cpp
index 3fc5598295a..0fb26de1321 100644
--- a/src/game/Creature.cpp
+++ b/src/game/Creature.cpp
@@ -407,9 +407,8 @@ void Creature::Update(uint32 diff)
UpdateEntry(m_originalEntry);
CreatureInfo const *cinfo = GetCreatureInfo();
-
- SelectLevel(cinfo);
- SetUInt32Value(UNIT_DYNAMIC_FLAGS, 0);
+ SelectLevel(cinfo);
+
if (m_isDeadByDefault)
{
setDeathState(JUST_DIED);
@@ -504,8 +503,14 @@ void Creature::Update(uint32 diff)
if (m_regenTimer != 0)
break;
- if (!isInCombat() || IsPolymorphed())
- RegenerateHealth();
+ if (!isInCombat())
+ {
+ if(HasFlag(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_OTHER_TAGGER))
+ SetUInt32Value(UNIT_DYNAMIC_FLAGS, GetCreatureInfo()->dynamicflags);
+ RegenerateHealth();
+ }
+ else if(IsPolymorphed())
+ RegenerateHealth();
RegenerateMana();
@@ -1655,12 +1660,11 @@ void Creature::setDeathState(DeathState s)
SetLootRecipient(NULL);
Unit::setDeathState(ALIVE);
CreatureInfo const *cinfo = GetCreatureInfo();
- SetUInt32Value(UNIT_DYNAMIC_FLAGS, 0);
- RemoveFlag (UNIT_FIELD_FLAGS, UNIT_FLAG_SKINNABLE);
+ RemoveFlag (UNIT_FIELD_FLAGS, UNIT_FLAG_SKINNABLE);
AddUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
SetUInt32Value(UNIT_NPC_FLAGS, cinfo->npcflag);
clearUnitState(UNIT_STAT_ALL_STATE);
- i_motionMaster.Clear();
+ i_motionMaster.Initialize();
SetMeleeDamageSchool(SpellSchools(cinfo->dmgschool));
LoadCreaturesAddon(true);
}