diff --git a/packages/server/src/index.ts b/packages/server/src/index.ts index 6bb5f57..c056047 100644 --- a/packages/server/src/index.ts +++ b/packages/server/src/index.ts @@ -319,9 +319,11 @@ wss.on("connection", (socket) => { session.roomId = room.id; session.token = result.token; send(socket, { type: "seat", playerId: name, token: result.token }); - // Rejoining a running game: replay the chronicle so far. + // Rejoining a running game: replay the chronicle so far. The + // replayed flag keeps one-time fanfare (the opening roll-off) + // from firing again on every return to the room. if (room.state) { - send(socket, { type: "events", events: redactFor(room.events, name) }); + send(socket, { type: "events", events: redactFor(room.events, name), replayed: true }); } broadcastRoomState(room); runBots(room); diff --git a/packages/web/src/net.svelte.ts b/packages/web/src/net.svelte.ts index 59be4f3..b3e39d4 100644 --- a/packages/web/src/net.svelte.ts +++ b/packages/web/src/net.svelte.ts @@ -334,7 +334,7 @@ class Net { let talk = 0; for (const e of msg.events as GameEvent[]) { if (e.type === "tableTalk") talk++; - if (e.type === "gameStarted") { + if (e.type === "gameStarted" && !msg.replayed) { this.openingRolls = { rolls: e.dieRolls, first: e.firstPlayer, players: e.players }; } const line = humanize(e);