diff options
-rwxr-xr-x | src/server/game/Entities/Creature/Creature.cpp | 9 | ||||
-rwxr-xr-x | src/server/game/Entities/Creature/Creature.h | 1 |
2 files changed, 9 insertions, 1 deletions
diff --git a/src/server/game/Entities/Creature/Creature.cpp b/src/server/game/Entities/Creature/Creature.cpp index 16a84e533ad..dce2c968a84 100755 --- a/src/server/game/Entities/Creature/Creature.cpp +++ b/src/server/game/Entities/Creature/Creature.cpp @@ -161,6 +161,7 @@ m_formation(NULL) m_CombatDistance = 0;//MELEE_RANGE; ResetLootMode(); // restore default loot mode + TriggerJustRespawned = false; } Creature::~Creature() @@ -437,6 +438,12 @@ void Creature::Update(uint32 diff) else m_GlobalCooldown -= diff; + if (IsAIEnabled && TriggerJustRespawned) + { + TriggerJustRespawned = false; + AI()->JustRespawned(); + } + switch(m_deathState) { case JUST_ALIVED: @@ -1630,7 +1637,7 @@ void Creature::Respawn(bool force) //Call AI respawn virtual function if (IsAIEnabled) - AI()->JustRespawned(); + TriggerJustRespawned = true;//delay event to next tick so all creatures are created on the map before processing uint32 poolid = GetDBTableGUIDLow() ? sPoolMgr.IsPartOfAPool<Creature>(GetDBTableGUIDLow()) : 0; if (poolid) diff --git a/src/server/game/Entities/Creature/Creature.h b/src/server/game/Entities/Creature/Creature.h index 5700c161e90..6e4290e08d5 100755 --- a/src/server/game/Entities/Creature/Creature.h +++ b/src/server/game/Entities/Creature/Creature.h @@ -732,6 +732,7 @@ class Creature : public Unit, public GridObject<Creature> //Formation var CreatureGroup *m_formation; + bool TriggerJustRespawned; }; class AssistDelayEvent : public BasicEvent |