aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xsrc/server/game/Entities/Creature/Creature.cpp9
-rwxr-xr-xsrc/server/game/Entities/Creature/Creature.h1
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