aboutsummaryrefslogtreecommitdiff
path: root/building_guide/rooms.md
diff options
context:
space:
mode:
Diffstat (limited to 'building_guide/rooms.md')
-rw-r--r--building_guide/rooms.md46
1 files changed, 32 insertions, 14 deletions
diff --git a/building_guide/rooms.md b/building_guide/rooms.md
index 9cb93b1..f1e1712 100644
--- a/building_guide/rooms.md
+++ b/building_guide/rooms.md
@@ -246,7 +246,7 @@ Multiplayer table fields (`casino_tables`):
| Field | Type | Default | Notes |
|---|---|---|---|
| `id` | string | — | Required. Nonempty, no surrounding whitespace, unique among the room's tables and machines. |
-| `game` | string | — | Required. `blackjack`, `baccarat`, `roulette`, `craps`, `paigow`, or `video_poker`. |
+| `game` | string | — | Required. `blackjack`, `baccarat`, `roulette`, `craps`, `paigow`, `video_poker`, or `plinko`. |
| `max_players` | int | 8 | 0–64. Video poker is forced to 1; Pai Gow caps at 6. |
| `betting_ticks` | int | 20 | 0–3600. |
| `min_bet` | int | 1 | Must not exceed `max_bet`. |
@@ -255,6 +255,27 @@ Multiplayer table fields (`casino_tables`):
Game rules are nested in a block named after the game. `id` and `game` are the
only required keys; omitted numeric fields keep their defaults.
+#### Plinko
+
+Plinko is a single-seat fixture under `casino_tables`, addressed with `play plinko`:
+
+```yaml
+casino_tables:
+ - id: plinko
+ game: plinko
+ min_bet: 1
+ max_bet: 10000
+ plinko:
+ rtp: 98
+```
+
+| Field | Type | Default | Notes |
+|---|---|---|---|
+| `rtp` | int | 98 | Target return-to-player percentage, 31–100. |
+
+`max_players` may only be omitted, `0`, or `1`. Bet limits are per ball, and
+`max_bet` cannot exceed 10000000.
+
#### Blackjack
```yaml
@@ -402,7 +423,7 @@ casino_machines:
|---|---|---|---|
| `id` | string | — | Required; same rules as table IDs. |
| `game` | string | — | Required; only `slots`. |
-| `variant` | string | `huff_and_even_more_puff` | Registered in Go (`slotVariants` in `internal/casino/registry.go`); an unregistered name is rejected. |
+| `variant` | string | `huff_and_even_more_puff` | Must be a registered slot variant; an unregistered name is rejected. |
| `min_bet` | int | 1 | |
| `max_bet` | int | 1000000 | Must be at least `min_bet`. |
| `spin_ticks` | int | 2 | 0–3600. |
@@ -422,8 +443,7 @@ invalid room casino configurations. Unknown fields are rejected.
seat counts, split counts, decks, and payouts are rejected.
- Payouts and shuffle fractions must be finite (no NaN or infinity).
- Editing a room hot-reconfigures an **idle** table or machine on the next
- lookup; an occupied game keeps its live rules until it becomes idle, so a
- committed wager is never discarded.
+ lookup.
### Objects — interactive fixtures
@@ -532,9 +552,9 @@ on_enter:
#### Timed sequences
-`wait: N` on a step is the number of ticks to pause **before** that step fires (replaces the
-old `delay`). Messages are plain strings; effects on a step fire together when the wait
-elapses. A step with no `wait` fires on the next tick.
+`wait: N` on a step is the number of ticks to pause **before** that step fires. Messages
+are plain strings; effects on a step fire together when the wait elapses. A step with no
+`wait` fires on the next tick.
#### Step actions
@@ -558,12 +578,11 @@ on_enter:
despawn_on_leave: true
```
-#### First-match-wins and migration
+#### First-match-wins
-Entries in `on_enter` are walked top-to-bottom; the first whose `condition` passes fires
-and its steps run. The old on_enter ran **every** matching step, so migration wraps the old
-step list into a single Trigger entry to preserve behavior. For new content where steps
-are mutually exclusive, use multiple entries with distinct conditions.
+Entries in `on_enter` are walked top-to-bottom; the first whose `condition` passes
+fires and its steps run. For new content where steps are mutually exclusive, use
+multiple entries with distinct conditions.
Notes:
- `wait: 0` (or omitted) fires on the next tick.
@@ -592,8 +611,7 @@ on_exit:
Use on_exit for parting messages, closing out a spawn when a player departs, or recording
that the player has passed through an area. It obeys the same first-match-wins rule and the
-same Step vocabulary as on_enter. (New event block — did not exist before the Trigger
-unification.)
+same Step vocabulary as on_enter.
---