From e0fe11ba46b885a01e4a4038001e0055822cc7ba Mon Sep 17 00:00:00 2001 From: Andrew <47818697+Nyeriah@users.noreply.github.com> Date: Sat, 25 Jul 2026 21:24:00 -0300 Subject: [PATCH] fix(Core/Movement): don't teleport unreleased corpses out of instances when falling under the map (#26768) --- src/server/game/Handlers/MovementHandler.cpp | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/src/server/game/Handlers/MovementHandler.cpp b/src/server/game/Handlers/MovementHandler.cpp index d809747c5..925281e39 100644 --- a/src/server/game/Handlers/MovementHandler.cpp +++ b/src/server/game/Handlers/MovementHandler.cpp @@ -22,7 +22,6 @@ #include "CellImpl.h" #include "Chat.h" #include "Corpse.h" -#include "GameGraveyard.h" #include "GameTime.h" #include "InstanceSaveMgr.h" #include "Log.h" @@ -520,15 +519,10 @@ void WorldSession::HandleMoverRelocation(MovementInfo& movementInfo, Unit* mover if (plrMover->IsAlive()) plrMover->KillPlayer(); } - else if (!plrMover->HasPlayerFlag(PLAYER_FLAGS_IS_OUT_OF_BOUNDS)) - { - GraveyardStruct const* grave = sGraveyard->GetClosestGraveyard(plrMover, plrMover->GetTeamId()); - if (grave) - { - plrMover->TeleportTo(grave->Map, grave->x, grave->y, grave->z, plrMover->GetOrientation()); - plrMover->Relocate(grave->x, grave->y, grave->z, plrMover->GetOrientation()); - } - } + // Rescue only released ghosts: teleporting an unreleased body would move the corpse + // out of instances (e.g. Eye of Eternity platform destruction, issue #25757). + else if (plrMover->HasPlayerFlag(PLAYER_FLAGS_GHOST) && !plrMover->HasPlayerFlag(PLAYER_FLAGS_IS_OUT_OF_BOUNDS)) + plrMover->RepopAtGraveyard(); } } }