From 2642fb1a489e4b79a17bbb63127c8b3ce2823e1e Mon Sep 17 00:00:00 2001 From: Treeston Date: Tue, 26 Jun 2018 12:15:57 +0200 Subject: Core/AI: Add a new LeavingWorld AI hook (cherry picked from commit c0a7274ff148b35577bf8c57320142bb08e10710) --- src/server/game/AI/CoreAI/UnitAI.h | 3 +++ src/server/game/Entities/Unit/Unit.cpp | 3 +++ 2 files changed, 6 insertions(+) (limited to 'src/server') diff --git a/src/server/game/AI/CoreAI/UnitAI.h b/src/server/game/AI/CoreAI/UnitAI.h index 30fa8a56958..bcfa93f33f3 100644 --- a/src/server/game/AI/CoreAI/UnitAI.h +++ b/src/server/game/AI/CoreAI/UnitAI.h @@ -284,6 +284,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 86db8294fcb..ea7e53e5838 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -9064,6 +9064,9 @@ void Unit::RemoveFromWorld() if (IsInWorld()) { m_duringRemoveFromWorld = true; + if (IsAIEnabled) + GetAI()->LeavingWorld(); + if (IsVehicle()) RemoveVehicleKit(true); -- cgit v1.2.3