Skip to content

bcook/blackjack-challenge: The Star's Blackjack Challenge table variant#96

Merged
BCook98 merged 14 commits into
mainfrom
blackjack-challenge
Jul 5, 2026
Merged

bcook/blackjack-challenge: The Star's Blackjack Challenge table variant#96
BCook98 merged 14 commits into
mainfrom
blackjack-challenge

Conversation

@BCook98

@BCook98 BCook98 commented Jul 4, 2026

Copy link
Copy Markdown
Contributor

Summary

New catalog entry games/bcook/blackjack-challengeThe Star's Blackjack Challenge table variant, forked from bcook/blackjack (a fork was chosen over a shared engine or in-game mode: Meta is static per game, and CI's per-dir change detection makes cross-dir engines drift).

The variant, vs the classic table

  • Dealer takes ONE face-up card at the deal — no hole card, no peek, no insurance, no surrender; draws to 16, stands on all 17
  • Ties lose (the house-edge lever); dealer bust pays even money
  • Blackjack never loses: 2:1 normally, and vs a dealer blackjack pays by ten-card rank (K>Q>J>10) — higher 5:1, equal 4:1, lower 3:1; split-hand A+ten IS blackjack; the payout tier renders on the felt ("BJ 5:1")
  • Auto-wins at instant even money: Player 21 ("21!") and Five Card Trick ("5-CARD")
  • Double on two or three cards, original or split hands
  • Split on equal point value (K+10 splits), re-split to 3 hands, no split-ace freeze
  • Dealer-blackjack clawback: a seat's non-bust ordinary hands lose at most the original bet; extra double/split stakes come back
  • Star Pairs side bet (replaces Perfect Pairs): aces 30:1, perfect 20:1, coloured 8:1, mixed 5:1 → MaxPayoutMultiplier: 31
  • Bet-behind carried over (canonical in this variant); same credits economy and peak-credits leaderboard as blackjack

Review checklist

  • All rules concentrated in rules.go; settlement arithmetic unit-tested per tier (ranked BJ rows, ties-lose, clawback with doubles/splits, chip conservation)
  • smoke.yaml (seed 16) walks bet → Star Pairs + backing → deal → split → dealer draw-out to bust → payout → ready-up; preview pack re-authored from those shots
  • TinyGo release build + kit v2.17.0 conformance verified locally; no artifacts committed
  • Slug blackjack-challenge is unique in the catalog

🤖 Generated with Claude Code

BCook98 and others added 14 commits July 4, 2026 23:08
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…er path

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…ck, ties-lose grossMult)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…e hole card

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…d prose

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…hree hands, no surrender

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…J clawback

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Rewrites the smoke scenario for this variant: both seats bet (seat 0 adds
its own Star Pairs and backs seat 1 with behind + their-pairs), the deal
lands ONE face-up dealer card, seat 0 splits a mixed pair of eights (its
Star Pairs pays 5:1 on the spot) and stands both hands, seat 1 stands 17,
and the dealer draws out from its single card one paced hit at a time —
a mid-draw shot catches the second hit still face down. The dealer busts
on the third card and the payout shot folds main hands, own pairs, and
the back into each seat's net; ready-up flow preserved. Seed 16 produces
the pair; comments now document Star Pairs, the no-hole-card dealer, and
ties-lose settlement.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The preview/ frames were a verbatim copy of the classic blackjack pack:
title "BLACKJACK" and a rendered dealer hole card "[??]" — exactly the
thing this variant doesn't have (one face-up dealer card, no hole card).
Regenerated the game's smoke shots (smoke.yaml seed 16) as ground truth
and hand-authored four new frames from them: a deal with a single dealer
card, a split moment, the dealer's draw-out to a bust, and the payout
(with the Star Pairs tier folded in). Frames now read "BLACKJACK
CHALLENGE" and never depict a face-down dealer card.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Sweep of doc/comment drift left over from the classic-blackjack fork and
the Perfect Pairs -> Star Pairs rename: main.go's package doc said the
ranked blackjack payout depends on the ten-card's suits (it's RANK,
K>Q>J>10); game.go's registry comments still named the old
games/bcook/blackjack path and "the native blackjack meta"; layout.go's
example strings referenced retired numbers ("COLORED 12:1", "PUSH" - this
table has no push, ties lose, so the real narrow-label example is
"EVEN"); room.go/room_test.go said turns bind h/s/d/p/r as domain
commands, but r (re-buy) is betting-only; rules_test.go's
TestPairsCreditFor still exercised the retired Perfect Pairs 6/12/25
table instead of the live Star Pairs 5/8/20/30 one.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The spec's layout-deltas section requires the result to name the tier a
blackjack paid (e.g. "BLACKJACK 5:1"), but the value line only ever read
"BJ" and the net was shown separately, leaving the ranked 2:1/3:1/4:1/5:1
payout invisible on the felt. Following the Star Pairs precedent (the
pairs line renders e.g. "MIXED 5:1"), phand gains a display-only bjMult
field set in settle() from blackjackMult; valueLabel appends " X:1" to
"BJ" once it's nonzero, in both the single-hand and split-hand (compact
line) render paths. Payout arithmetic (grossMult) is unchanged - this is
display only. TDD: TestSettleShowsRankedBlackjackTier failed red before
the change and is green after.

Also pins two more invariants surfaced during this pass:
TestMetaMaxPayoutMultiplierMatchesConst (Meta().MaxPayoutMultiplier must
track the maxPayoutMult const the settlement clamp actually uses) and
TestPairsMult (a table test over pairsMult's four Star Pairs tiers plus
the no-pair default).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…+J = 23)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Jul 4, 2026

Copy link
Copy Markdown

Smoke screens

Deterministic scripted screens for 30ae0978577aef4bdb97d98d014036b748d3d887 (what is this?)

games/bcook/blackjack-challenge — 18 screens

01-bet.seat0
01-bet.seat0

01-bet.seat1
01-bet.seat1

02-backing.seat0
02-backing.seat0

02-backing.seat1
02-backing.seat1

03-sidebet.seat0
03-sidebet.seat0

03-sidebet.seat1
03-sidebet.seat1

04-dealt.seat0
04-dealt.seat0

04-dealt.seat1
04-dealt.seat1

05-split.seat0
05-split.seat0

05-split.seat1
05-split.seat1

06-draw.seat0
06-draw.seat0

06-draw.seat1
06-draw.seat1

07-payout.seat0
07-payout.seat0

07-payout.seat1
07-payout.seat1

08-ready.seat0
08-ready.seat0

08-ready.seat1
08-ready.seat1

09-next.seat0
09-next.seat0

09-next.seat1
09-next.seat1

@BCook98 BCook98 merged commit 7518436 into main Jul 5, 2026
5 checks passed
@BCook98 BCook98 deleted the blackjack-challenge branch July 5, 2026 00:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant