feat: add TMP3 support and fix shard probe lifecycle bug

Add Trivia Murder Party 3 (Playtest) ticker and seed data. Bind-mount
tickers.json in docker-compose so ticker changes take effect on restart
without image rebuilds.

Fix shard monitor probe poisoning game lifecycle state — the player-count
probe no longer sets gameFinished, which was preventing the main WS from
processing room/lock and room/exit for games like TMP3 that don't send
entity updates.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
cottongin
2026-06-24 12:45:59 -04:00
parent a2164c8242
commit c24223be5c
5 changed files with 9 additions and 3 deletions

View File

@@ -172,8 +172,9 @@ class EcastShardClient {
this.playerCount = playerCount;
this.playerNames = playerNames;
}
} else if (msg.opcode === 'error' && msg.result?.code === 2027) {
this.gameFinished = true;
} else if (msg.opcode === 'error') {
// Probe errors are transient — lifecycle is managed
// by the main connection and reconnect logic
}
} catch (_) {}
clearTimeout(timeout);
@@ -562,6 +563,8 @@ class EcastShardClient {
finalPlayerCount: this.playerCount,
});
activeShards.delete(`${this.sessionId}-${this.gameId}`);
this.gameFinished = true;
this.disconnect();
return false;
} finally {
this.reconnecting = false;