aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTreeston <treeston.mmoc@gmail.com>2018-06-26 12:15:57 +0200
committerShauren <shauren.trinity@gmail.com>2021-10-07 21:20:40 +0200
commit2642fb1a489e4b79a17bbb63127c8b3ce2823e1e (patch)
tree1baa45d131a04bb2961638188fc220cc27541cb1 /src
parent49230849378bc404e8e0667ae103a7b1988569bb (diff)
Core/AI: Add a new LeavingWorld AI hook
(cherry picked from commit c0a7274ff148b35577bf8c57320142bb08e10710)
Diffstat (limited to 'src')
-rw-r--r--src/server/game/AI/CoreAI/UnitAI.h3
-rw-r--r--src/server/game/Entities/Unit/Unit.cpp3
2 files changed, 6 insertions, 0 deletions
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);