diff options
| author | historia <[not public]> | 2026-10-01 22:47:41 -0400 |
|---|---|---|
| committer | historia <[not public]> | 2026-10-01 22:47:41 -0400 |
| commit | 8eea0e4e06a4aaa6a18edabd9897d3bea1ea2ca0 (patch) | |
| tree | 63698c0618f382a553d4558a33e3d2087039c378 /internal/game/casino.go | |
| parent | 6d9908b29c8187196d23b126b1165c7e0bd0fc76 (diff) | |
| download | thehouseoficarus-8eea0e4e06a4aaa6a18edabd9897d3bea1ea2ca0.tar.gz | |
feat: consistent wager outcome table across casino games
Diffstat (limited to 'internal/game/casino.go')
| -rw-r--r-- | internal/game/casino.go | 21 |
1 files changed, 18 insertions, 3 deletions
diff --git a/internal/game/casino.go b/internal/game/casino.go index b15c965..8238b7c 100644 --- a/internal/game/casino.go +++ b/internal/game/casino.go @@ -546,7 +546,7 @@ func (g *Game) CasinoTick() { func (g *Game) emitCasinoEvents(events []casino.Event) { for _, event := range events { - if event.Message == "" && event.PrivateMessage == "" && event.Menu == nil && event.Snapshot == nil { + if event.Message == "" && event.PrivateMessage == "" && event.Menu == nil && event.Snapshot == nil && len(event.Settlement) == 0 { continue } category := event.Color @@ -583,7 +583,7 @@ func (g *Game) emitCasinoEvents(events []casino.Event) { if text == "" { text = event.Message } - if text == "" && event.Menu == nil && event.Snapshot == nil { + if text == "" && event.Menu == nil && event.Snapshot == nil && len(event.Settlement) == 0 { continue } g.charsMu.Lock() @@ -595,10 +595,25 @@ func (g *Game) emitCasinoEvents(events []casino.Event) { privateMessage := g.casinoPrivateMessage(sess, category, event.Menu, g.casinoTimeText(text)) privateMessage = g.renderCasinoMessage(sess, category, event.Menu, privateMessage) rendered := g.renderCasinoSnapshot(sess, event.Snapshot) + if len(event.Settlement) > 0 { + receipt := renderCasinoSettlement(event.Settlement, sess.Player.OptionBool("unicode"), func(tag, text string) string { return g.colorize(sess, tag, text) }) + if event.SettlementNote != "" { + receipt += "\n" + g.casinoProse(sess, "casino_warning", event.SettlementNote) + } + // Reveal first, then the receipt, then the next-action menu. A + // settlement's legacy prose is only a non-UI fallback, not a second payout. + rendered = composeTableThenReminder(rendered, receipt) + if event.Menu == nil { + privateMessage = "" + } + } if reminder, ok := g.casinoBoardReminder(sess, category, event.Menu, event.Snapshot, g.casinoTimeText(text)); ok { privateMessage = composeTableThenReminder(rendered, reminder) } else if rendered != "" { - privateMessage += "\n" + rendered + if privateMessage != "" { + privateMessage += "\n" + } + privateMessage += rendered } if event.ShowBalance { privateMessage += "\n" + g.casinoBalance(sess) |
