From e3ff06fc79682673194c8913f0feb9e90920e7d0 Mon Sep 17 00:00:00 2001 From: historia <[not public]> Date: Wed, 30 Sep 2026 20:50:45 -0400 Subject: feat: look, rules, and list commands updated for casino games --- internal/casino/roulette_wagers.go | 39 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 internal/casino/roulette_wagers.go (limited to 'internal/casino/roulette_wagers.go') diff --git a/internal/casino/roulette_wagers.go b/internal/casino/roulette_wagers.go new file mode 100644 index 0000000..7562582 --- /dev/null +++ b/internal/casino/roulette_wagers.go @@ -0,0 +1,39 @@ +package casino + +import "fmt" + +// Roulette offers one wager per spin, but the target catalogue is the whole +// layout, so the state-based list doubles as the payout reference: every +// legal target with its profit odds and its chance (pockets out of an +// equally-likely wheel). Racetrack call bets join on tables that offer them. +func (t *rouletteTable) wagerRows() []WagerRow { + pockets, basketOdds, basketPockets := 37, "8:1", 4 + if t.Config.Roulette.DoubleZero { + pockets, basketOdds, basketPockets = 38, "6:1", 5 + } + chance := func(n int) string { return fmt.Sprintf("%d/%d", n, pockets) } + rows := []WagerRow{ + {"", "35:1", "One pocket (" + chance(1) + ")"}, + {"red / black", "1:1", "The color (" + chance(18) + ")"}, + {"odd / even", "1:1", "The parity (" + chance(18) + ")"}, + {"low / high", "1:1", "Low 1-18 / high 19-36 (" + chance(18) + ")"}, + {"1to12 / 13to24 / 25to36", "2:1", "A dozen (" + chance(12) + ")"}, + {"row1 / row2 / row3", "2:1", "A numbered row (" + chance(12) + ")"}, + {"split ", "17:1", "Two touching pockets (" + chance(2) + ")"}, + {"street ", "11:1", "Three numbers in a street (" + chance(3) + ")"}, + {"trio 0 ", "11:1", "A zero-edge trio (" + chance(3) + ")"}, + {"corner ", "8:1", "A 2x2 square (" + chance(4) + ")"}, + {"line … ", "5:1", "Two adjoining streets (" + chance(6) + ")"}, + {"basket", basketOdds, "0, 1, 2, 3 (+ 00) (" + chance(basketPockets) + ")"}, + } + if t.Config.Roulette.Racetrack && !t.Config.Roulette.DoubleZero { + rows = append(rows, + WagerRow{"voisins", "5:3 or 1:1", "17 pockets around zero, 9 chips"}, + WagerRow{"tiers", "2:1", "The 12 pockets opposite zero, 6 chips"}, + WagerRow{"orphelins", "31:5 or 13:5", "The two orphan arcs, 5 chips"}, + WagerRow{"zero / jeu zero", "8:1 or 7:2", "The 7 pockets nearest zero, 4 chips"}, + WagerRow{"neighbors ", "3:1", "Pocket n plus four numbers each side, 9 chips"}, + ) + } + return rows +} -- cgit v1.2.3