diff --git a/src/server/game/AI/CoreAI/UnitAI.h b/src/server/game/AI/CoreAI/UnitAI.h index a4c01dd47..3d2eb09c3 100644 --- a/src/server/game/AI/CoreAI/UnitAI.h +++ b/src/server/game/AI/CoreAI/UnitAI.h @@ -355,6 +355,11 @@ public: */ virtual void JustExitedCombat() { } + /** + * @brief Called when the unit is about to be removed from the world (despawn, grid unload, corpse disappearing, player logging out etc.) + */ + virtual void OnDespawn() { } + /** * @brief Called when evade timer expires (target unreachable for too long) */ diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index f0dfa9f53..fa167eb67 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -12561,6 +12561,9 @@ void Unit::RemoveFromWorld() if (IsInWorld()) { m_duringRemoveFromWorld = true; + if (IsAIEnabled) + GetAI()->OnDespawn(); + if (IsVehicle()) RemoveVehicleKit();