Some checks failed
.NET Core / build (push) Has been cancelled
MoveHomeAsync wrote PositionX/PositionY/CurrentMap/Rotation on the character record directly, which is a partial copy of Player.PlaceAtGateAsync: it placed the player but skipped removing him from the map and telling the client. Player.Position is backed by those very fields, so the coordinates jumped on the server while the client never got a map change. The client then interpolated a walk to the new spot and the character visibly slid across the map after a reset. WarpToAsync does the same placement plus the map removal and the map change notification, and it handles respawning on the same map. It is the path every other caller uses (duel room, gate NPCs, mini games, castle siege portal). The existing tests all ran with MoveHome = false, which is why this path was never covered. The new test pins the notification: it fails on the old code because MapChangeAsync is never invoked. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
11 KiB
11 KiB