diff --git a/src/game/Object/Creature.cpp b/src/game/Object/Creature.cpp index 813250b6..b946b5f2 100644 --- a/src/game/Object/Creature.cpp +++ b/src/game/Object/Creature.cpp @@ -253,6 +253,9 @@ void Creature::RemoveCorpse() if (m_isCreatureLinkingTrigger) GetMap()->GetCreatureLinkingHolder()->DoCreatureLinkingEvent(LINKING_EVENT_DESPAWN, this); + if (InstanceData* mapInstance = GetInstanceData()) + { mapInstance->OnCreatureDespawn(this); } + // script can set time (in seconds) explicit, override the original if (respawnDelay) { m_respawnTime = time(NULL) + respawnDelay; } diff --git a/src/game/WorldHandlers/InstanceData.h b/src/game/WorldHandlers/InstanceData.h index 3ce494a0..575aa326 100644 --- a/src/game/WorldHandlers/InstanceData.h +++ b/src/game/WorldHandlers/InstanceData.h @@ -99,6 +99,9 @@ class InstanceData // called on creature death virtual void OnCreatureDeath(Creature* /*creature*/) {} + // called on creature despawn + virtual void OnCreatureDespawn(Creature* /*creature*/) {} + // All-purpose data storage 64 bit virtual uint64 GetData64(uint32 /*Data*/) const { return 0; } virtual void SetData64(uint32 /*Data*/, uint64 /*Value*/) { }