From cc33072eced3d5460512c09c42ec4531c807d7af Mon Sep 17 00:00:00 2001 From: historia <[not public]> Date: Sat, 19 Sep 2026 01:55:34 -0400 Subject: fix: casino stake preservation, world state reconciliation, casino game registration --- building_guide/rooms.md | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) (limited to 'building_guide') diff --git a/building_guide/rooms.md b/building_guide/rooms.md index c70b379..719c09e 100644 --- a/building_guide/rooms.md +++ b/building_guide/rooms.md @@ -357,11 +357,17 @@ casino configurations. Raw file editing is not a validated save endpoint. - IDs must be nonempty, have no surrounding whitespace, and be unique across the room's tables and machines (including legacy slots table entries). - Supported table games are `blackjack` and `baccarat`; machines use `slots` - with the optional variant `huff_and_even_more_puff`. -- Only one table/machine per game is addressable: a room is addressed by game - name (`play blackjack`), so a second entry for the same game, or the same - machine variant (including a legacy slots table alongside a slots machine), - is rejected as unreachable content. + with the optional variant `huff_and_even_more_puff`. A machine variant is + registered in Go (`slotVariants` in `internal/casino/registry.go`); naming an + unregistered variant is a validation error. +- A multiplayer table is addressed by its game name (`play blackjack`), so a + room may host only one table per game; a legacy slots table still collides + with a slots machine. +- A machine is addressed by its `variant` when one is declared, so a room may + host several variants of one game, each reached by its own variant name. A + bare game name addresses a machine only when it is the sole machine of that + game (or declares no variant). Two variant-less machines of one game, or two + machines sharing a variant, are rejected as unreachable duplicates. - Omitted/zero numeric values keep their existing defaults. Negative bets, timers, seat counts, split counts, decks, and payouts are rejected. - An explicit `max_bet` must be at least `min_bet`. An omitted or zero -- cgit v1.2.3