From 009b8dbbdd68e35643392ea891d2ce8930e7c943 Mon Sep 17 00:00:00 2001 From: James Huston Date: Sat, 13 Dec 2025 17:02:03 -0500 Subject: [PATCH] fix(mcp): Fix same-map teleport and add phase initialization for bot visibility - Same-map teleport now uses direct Relocate() instead of NearTeleportTo() which expects client ACK that headless sessions can't provide - Add phase initialization (phase 169) so bot players are visible to others --- src/araxiaonline/mcp/MCPPlayerManager.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/araxiaonline/mcp/MCPPlayerManager.cpp b/src/araxiaonline/mcp/MCPPlayerManager.cpp index 1a1e78dc42..53b626e757 100644 --- a/src/araxiaonline/mcp/MCPPlayerManager.cpp +++ b/src/araxiaonline/mcp/MCPPlayerManager.cpp @@ -515,6 +515,10 @@ bool MCPPlayerManager::Login(uint32 sessionId, ObjectGuid playerGuid) session->player->SetMap(map); session->player->UpdatePositionData(); + // Clear any phase restrictions so bot is visible to everyone + session->player->GetPhaseShift().Clear(); + session->player->GetPhaseShift().AddPhase(169, PhaseFlags::None, nullptr); // Default phase + // Link session to player session->worldSession->SetPlayer(session->player); @@ -740,8 +744,11 @@ bool MCPPlayerManager::TeleportTo(uint32 sessionId, uint32 mapId, float x, float if (!isCrossMap) { - // Same map teleport - simple relocate - player->NearTeleportTo(x, y, z, o); + // Same map teleport - direct relocate for headless sessions + // NearTeleportTo expects client ACK, so we manually relocate + player->Relocate(x, y, z, o); + player->UpdatePositionData(); + player->UpdateObjectVisibility(); return true; }