From cf2c99f8a806ec3cc844ea2f4d60822073e93af0 Mon Sep 17 00:00:00 2001 From: Andrew <47818697+Nyeriah@users.noreply.github.com> Date: Mon, 24 Aug 2026 20:20:47 -0300 Subject: [PATCH] feat(Core/AI): add the UnitAI::OnDespawn hook (#27285) Co-authored-by: Treeston --- src/server/game/AI/CoreAI/UnitAI.h | 5 +++++ src/server/game/Entities/Unit/Unit.cpp | 3 +++ 2 files changed, 8 insertions(+) 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();