fix(scene): persist scene only after the client actually moves
The user's save was bricked by teleporting to entry 100000304: the client offers it in the map but NREs in AdventurePhase._EnterStep1_InitializeMapInfo while loading, and the server had already saved that scene - every login then replayed the broken scene (stuck on the train-window loading screen). - loadScene no longer calls SavePersistent; SceneEntityMove's 5s cadence persists the scene only once the client walks in it (the existing arena guard already kept challenge scenes out of the save) - reset persistent to entry 102020107 (proven walkable in the 01:00/01:38 sessions)
This commit is contained in:
1 parent
ebf313256f
commit
768baeb62a
3 files changed
+28
-8
No files matched your search
@@ -842,11 +842,14 @@ func loadScene(s *Session, entryID uint32, isEnterScene bool, teleportID *uint32
|
||||
sceneInfo.EntityGroupList = append(sceneInfo.EntityGroupList, playerGroup)
|
||||
|
||||
if isEnterScene {
|
||||
// in-memory only: the scene is persisted by SceneEntityMove once the
|
||||
// client actually moves. Saving here would brick the save when the
|
||||
// client cannot load the destination (e.g. entry 100000304) - every
|
||||
// login would then NRE in AdventurePhase on the same broken scene.
|
||||
player.Scene.EntryID = entryID
|
||||
player.Scene.FloorID = floorID
|
||||
player.Scene.PlaneID = planeID
|
||||
player.Position = jsonPos
|
||||
player.SavePersistent()
|
||||
|
||||
if err := s.Send(&goproto.EnterSceneByServerScNotify{
|
||||
Scene: sceneInfo,
|
||||
|
||||
Reference in new issue
Block a user