From 8eea0e4e06a4aaa6a18edabd9897d3bea1ea2ca0 Mon Sep 17 00:00:00 2001 From: historia <[not public]> Date: Thu, 1 Oct 2026 22:47:41 -0400 Subject: feat: consistent wager outcome table across casino games --- internal/game/casino.go | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) (limited to 'internal/game/casino.go') 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) -- cgit v1.2.3