From 29b16b5cf9ba363ea80136cc78f5329a8a062a8d Mon Sep 17 00:00:00 2001 From: CAtlas0784 Date: Wed, 7 Oct 2026 02:28:32 +0700 Subject: [PATCH] fix(scene): never answer GetMapRotationData with an empty ScRsp Client session 02:20 died in AdventurePhase._EnterStep1_InitializeMapInfo ('AdventureModule should not be null' -> RuntimeGroupManager _InitMissionToLegacyGroupRelation NRE) and never left the loading screen. The 01:00 session reached the scene when this request was dropped; the empty reply added in the auto-empty round put the client into map-rotation mode with a null state. Drop it again until real RotaterData is built. --- internal/gameserver/dispatch.go | 6 ++++++ internal/gameserver/handlers_ui.go | 9 ++++----- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/internal/gameserver/dispatch.go b/internal/gameserver/dispatch.go index 5c1507c..8d6d2af 100644 --- a/internal/gameserver/dispatch.go +++ b/internal/gameserver/dispatch.go @@ -124,6 +124,12 @@ func isDangerCmd(cmdID uint16) bool { case 4143, 4146, 8541, 5410, 5449, 7142, 3174, 9252, 8175: return true } + // GetMapRotationData: an empty reply NREs the client's map init + // (AdventurePhase._EnterStep1_InitializeMapInfo) - drop until real + // RotaterData is implemented + if cmdID == 6827 { + return true + } return false } diff --git a/internal/gameserver/handlers_ui.go b/internal/gameserver/handlers_ui.go index 2e6d794..7960213 100644 --- a/internal/gameserver/handlers_ui.go +++ b/internal/gameserver/handlers_ui.go @@ -39,11 +39,10 @@ func init() { return nil }) - // Amphoreus map rotation (teleport pillars) — empty but valid - handle("GetMapRotationData", func(s *Session, req *goproto.GetMapRotationDataCsReq, rsp *goproto.GetMapRotationDataScRsp) error { - rsp.Retcode = 0 - return nil - }) + // NOTE: GetMapRotationData (6827) must NOT be answered with an empty + // ScRsp - the client enters map-rotation mode with a null state and NREs + // in AdventurePhase._EnterStep1_InitializeMapInfo (no scene load). + // Implement real RotaterData before answering this one. handle("GetPamSkinData", func(s *Session, req *goproto.GetPamSkinDataCsReq, rsp *goproto.GetPamSkinDataScRsp) error { rsp.Retcode = 0