From d649427edc057011562b61c814d912f756745ff6 Mon Sep 17 00:00:00 2001 From: Shauren Date: Tue, 24 Feb 2026 00:23:21 +0100 Subject: [PATCH] Core/AreaTriggers: Fixed crashes caused by areatrigger OnUnitEnter/OnUnitExit scripts teleporting players to other maps --- src/server/game/Entities/AreaTrigger/AreaTrigger.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/server/game/Entities/AreaTrigger/AreaTrigger.cpp b/src/server/game/Entities/AreaTrigger/AreaTrigger.cpp index 082bdc840c..ad447d792f 100644 --- a/src/server/game/Entities/AreaTrigger/AreaTrigger.cpp +++ b/src/server/game/Entities/AreaTrigger/AreaTrigger.cpp @@ -895,8 +895,8 @@ void AreaTrigger::HandleUnitEnter(Unit* unit) _ai->OnUnitEnter(unit); - // OnUnitEnter script can despawn this areatrigger - if (!IsInWorld()) + // OnUnitEnter script can despawn this areatrigger or teleport player to a different map + if (!IsInWorld() || !IsInMap(unit)) return; // Register areatrigger in Unit after actions/scripts to allow them to determine @@ -925,10 +925,11 @@ void AreaTrigger::HandleUnitExitInternal(Unit* unit, AreaTriggerExitReason exitM UndoActions(unit); + // OnUnitExit script can teleport player to another map, causing it to attempt to exit the areatrigger again (from Unit::ExitAllAreaTriggers) + unit->ExitAreaTrigger(this); + if (canTriggerOnExit) _ai->OnUnitExit(unit, exitMode); - - unit->ExitAreaTrigger(this); } void AreaTrigger::HandleUnitExit(Unit* unit)