diff --git a/src/server/game/AI/CoreAI/UnitAI.h b/src/server/game/AI/CoreAI/UnitAI.h index 3936cd686b..fc49f8a469 100644 --- a/src/server/game/AI/CoreAI/UnitAI.h +++ b/src/server/game/AI/CoreAI/UnitAI.h @@ -249,6 +249,9 @@ class TC_GAME_API UnitAI // Called when the unit leaves combat virtual void JustExitedCombat() { } + // Called when the unit is about to be removed from the world (despawn, grid unload, corpse disappearing, player logging out etc.) + virtual void LeavingWorld() { } + // Called at any Damage to any victim (before damage apply) virtual void DamageDealt(Unit* /*victim*/, uint32& /*damage*/, DamageEffectType /*damageType*/) { } diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 4e43fb8349..6e1b5b589d 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -10038,6 +10038,9 @@ void Unit::RemoveFromWorld() if (IsInWorld()) { m_duringRemoveFromWorld = true; + if (IsAIEnabled) + GetAI()->LeavingWorld(); + if (IsVehicle()) RemoveVehicleKit();