diff --git a/Source/Game/AI/CoreAI/UnitAI.cs b/Source/Game/AI/CoreAI/UnitAI.cs index 92467d657..11e0e1a8b 100644 --- a/Source/Game/AI/CoreAI/UnitAI.cs +++ b/Source/Game/AI/CoreAI/UnitAI.cs @@ -480,6 +480,10 @@ namespace Game.AI // Called when the unit leaves combat public virtual void JustExitedCombat() { } + // Called when the unit is about to be removed from the world (despawn, grid unload, corpse disappearing, player logging out etc.) + public virtual void LeavingWorld() { } + + // Called at any Damage to any victim (before damage apply) public virtual void DamageDealt(Unit victim, ref uint damage, DamageEffectType damageType) { } public virtual void DamageTaken(Unit attacker, ref uint damage) { } public virtual void HealReceived(Unit by, uint addhealth) { } diff --git a/Source/Game/Entities/Unit/Unit.cs b/Source/Game/Entities/Unit/Unit.cs index cda7db4e3..fec3e7e50 100644 --- a/Source/Game/Entities/Unit/Unit.cs +++ b/Source/Game/Entities/Unit/Unit.cs @@ -435,6 +435,9 @@ namespace Game.Entities if (IsInWorld) { m_duringRemoveFromWorld = true; + if (IsAIEnabled) + GetAI().LeavingWorld(); + if (IsVehicle()) RemoveVehicleKit(true);