From 1614966dc03bf24cdd430fb71bcbe8d54ee4b616 Mon Sep 17 00:00:00 2001 From: Alexei Frolov Date: Tue, 3 Feb 2026 06:24:52 -0800 Subject: [PATCH] Don't reinitialize RoomDataTracker when relogging Logging out of then back into an ongoing ToB raid briefly changes the client's location to ELSEWHERE as it loads in. This location change caused the challenge to reinitialize its active room data tracker once it corrected to the active room, restarting from tick 0 and sending bad data to the server. This updates room tracker initialization to ignore location ELSEWHERE as the only way that can happen in an active raid is when relogging. --- .../java/io/blert/challenges/tob/TheatreChallenge.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/main/java/io/blert/challenges/tob/TheatreChallenge.java b/src/main/java/io/blert/challenges/tob/TheatreChallenge.java index 18de97e..e52bbe6 100644 --- a/src/main/java/io/blert/challenges/tob/TheatreChallenge.java +++ b/src/main/java/io/blert/challenges/tob/TheatreChallenge.java @@ -299,6 +299,14 @@ private void updateLocation() { log.debug("Location changed to {}", loc); location = loc; + if (location == Location.ELSEWHERE) { + // ELSEWHERE should only occur during a raid when logging out then + // back in (since actually going ELSEWHERE would terminate the + // TheatreChallenge). Don't reinitialize the data tracker. + locationChangedThisTick = true; + return; + } + if (roomDataTracker == null || !location.inRoomInstance(roomDataTracker.getRoom())) { // When entering a new instance for the first time, its room data tracker must be initialized. initializeRoomDataTracker();