Major Overhaul
Big major update!
The first release in a long time. Alongside the classic single-player game, completely reworked codebase and many other things, this are the three major features:
PvP Duel Mode
Full self creating OBS browser-source overlay
Persistent leaderboard
Chatters can now play against each other, fully supported in chat and in the OBS overlay
No more importing the overlay yourself with SourceCopy or other tinkering, everything you need is in the GUI
The old Stats system has worn off, the new Leaderboard is now fully persistent and tracks all important things
⚔️Duel System
- Both players are dealt two cards face up from a single shared deck.
- The challenger acts first, then the opponent, then a showdown.
- Bust loses immediately. A natural blackjack beats a made 21 and stands
automatically, so a player holding one is never asked to act. - Equal totals push and both stakes are refunded.
- Both stakes are held from the moment the challenge is made and are refunded on
decline, timeout, or a push.
Raises need the opponent's agreement
Splitting and doubling down increase the stakes for both players, so they can't be
one-sided. The opponent gets an accept/decline prompt, and declining refuses the raise
only — it never ends the duel.
- Each split hand plays for its own equally funded side pot.
- If one player has fewer hands, their single hand defends every pot.
- A split that doesn't increase the pot count needs no agreement and happens instantly.
Sudden Death (optional, off by default)
When enabled, a tied duel offers double-or-nothing instead of simply refunding. Both
players must accept, both stake another bet, and each draws one more card. Any decline,
timeout, or shortfall refunds everything. Repeats up to a configurable round limit.
| Command | Description |
|---|---|
!bjduel @user <bet> |
Challenge a chatter. Accepts the same bet shortcuts as !blackjack (all, half, max, 1.5k, 50%, …). Order doesn't matter — !duel 500 @user works too. |
accept |
Accept whichever prompt is currently waiting on you. |
decline |
Decline whichever prompt is currently waiting on you. |
hit / stand |
Play your hand, same as a normal game. |
double / split |
Request a raise (see below). |
quit |
Forfeit the duel — your opponent takes the whole pot. (Moderators only) |
Also included
- Configurable timeouts for accepting a challenge, taking a turn, and answering a raise.
- Full Free Game support — duels work as pure bragging rights with no points involved.
- Blocked groups, the Addicted List, cooldowns, and Max Games/Hour all apply to duels.
- A dedicated ⚔️ Duel settings tab and a ⚔️ Duel Messages tab with ~50
customisable chat messages.
📺 OBS Overlay (new)
A self-contained browser source that renders the game live on stream. It is installed
automatically into the overlay folder — no manual file copying.
Setup: add a Browser Source in OBS pointing at blackjack_overlay.html. The
background is transparent, so it layers over any scene.
Renders
- Dealer and player hands with real card faces, suits, and colours.
- Deal-in animations, an animated highlight on the hand currently in play, hand values,
bet amounts, insurance indicator, and outcome badges (win / lose / push / bust /
blackjack / 5-card charlie / triple 7s). - Duels: the two players face each other with a VS badge and the live pot between
them. Split hands stack per side pot, and each seat gets a win / lose / push result. - Prompt cards with an animated countdown ring for a pending challenge, a split or
double raise, and a sudden-death offer. The card counts down on its own and hides
itself when the timer expires, so the overlay never sits on a dead prompt. - Fades out a few seconds after a round ends.
Customisable from the OBS Overlay tab
Scale, font scale, card red/black colours, background colour and opacity, dealer name,
and toggles for hand values, bet amounts, outcome badges, insurance display, animations,
and hiding the overlay entirely during Free Game.
Automatic updates — the overlay file is version-stamped. When a newer version ships,
it is written out automatically and your previous file is preserved as a .bak backup
instead of being silently overwritten.
🏆 Leaderboard & Statistics (new / reworked)
Stats are no longer stored in a file. Every tracked value is written to a persisted
Streamer.bot user variable named bjg_* — 44 of them, covering games, wins, losses,
blackjacks, busts, streaks, double downs, splits, surrenders, insurance, and a complete
separate set of duel records.
This means any other Streamer.bot action can read a player's stats directly — for
example bjg_duelsWon or bjg_netProfit — without involving this game at all.
Stats commands now live in their own action (Blackjack Game - Stats), so the
leaderboard can be extended without touching the game.
!allstats leaderboard
- Ranked on combined lifetime net — dealer-game profit plus duel winnings — so
players who only ever duel are included. - 🥇 🥈 🥉 medals for the top three (toggleable), numbers below that.
- Configurable size, 1–10 places.
- Optionally hide the broadcaster and the bot account, matched by user id so a
name change can't put them back on the board. - Its own Use Bot / Send As Action toggles, independent of the general message settings.
Leaderboard resets
- A Reset Now button in the settings window, with a confirmation dialog spelling out
exactly what will be cleared. - Automatic weekly or monthly resets for running seasons.
- Two scopes: leaderboard totals only (keeps games played, blackjacks, streaks and
duel records intact) or all stats. - Enabling automatic resets never wipes anything immediately — the current period is
recorded first and the reset happens at the next boundary.
!stats now also reports your duel record, duel blackjacks, duel busts, forfeits,
and a combined total net matching the leaderboard ranking.
Migration — an existing CBJG-PlayerStats.json is imported into user variables
automatically on first run. The old file is left on disk as a backup and is never read
again. No history is lost.
🎨 Settings Window
- New ⚔️ Duel tab — rules, betting limits, timeouts, raise behaviour, sudden death.
- New ⚔️ Duel Messages tab — every duel chat message, grouped by phase.
- New 🏆 Leaderboard tab — appearance, who appears, message delivery, and resets.
- Explanatory tooltips throughout, including placeholder lists for every message.
🆓 Free Game Mode
Free Game now has its own dedicated messages rather than reusing the ones written for
real currency. Wins, blackjack wins, losses, quitting, and the duel challenge / expiry /
sudden-death lines all have Free Game variants, so nothing refers to points that were
never wagered.
🗑️ Removed
- Maximum Payout and Show Payout Cap Message, along with the payout-capped
message. These predated the current payout model and no longer served a purpose.