promotional bannermobile promotional banner

Chairface's Casino

Multiplayer casino games - Blackjack, 5 Card Stud, High-Lo and more coming soon!

File Details

Chairface's Casino v1.6.0

  • R
  • Jan 6, 2026
  • 27.80 MB
  • 60
  • 5.5.3+5
  • Classic + 3

File Name

Chairfaces_Casino_v1_6_0.zip

Supported Versions

  • 5.5.3
  • 4.4.2
  • 3.80.0
  • 3.4.5
  • 2.5.5
  • 1.15.8

v1.3.2
Changes Summary:
1. Help Window Trixie Scale

Help Trixie now scales with window scale setting (same as lobby and High-Lo)

2. Blackjack Settlement Panel

Increased size by 1.5x (350x250 → 525x375)
Moved to top-left corner with 10px padding
Larger fonts for better readability

3. Poker Settlement Panel

Increased size by 1.5x (200x100 → 300x150)
Moved to top-left corner with 10px padding
Added "Settlement" title header
Gold border to match Blackjack style

4. Turn Timer System (Local-Only)
Blackjack:

60 second timer starts when it becomes your turn
At 10 seconds: Warning message + visible countdown appears
At 0 seconds: Auto-stand executed
Timer resets on split (new hand for same player)
Timer cancels when turn ends or dealer phase begins

Poker:

60 second timer starts when it becomes your turn
At 10 seconds: Warning message + visible countdown appears
At 0 seconds: Auto-check (if no call needed) or auto-fold (if call required)
Timer cancels when turn ends or betting round ends

Timer UI:

Red warning box appears at top of window when ≤10 seconds remain
Shows countdown number
Label: "TIME LEFT"


Fixed:

Changed MP:PlayerStand(handIndex) to MP:Stand() (correct method name)
Updated warning messages to say "or you will auto-stand!" and "or you will auto-check/fold!"


v1.3.3 - Fixed turn timer error and properly scaled settlement panel:

Fixed PlayerStand nil error → now calls MP:Stand() correctly
Updated warning messages: "or you will auto-stand!" / "or you will auto-check/fold!"
Blackjack settlement panel fully scaled 1.5x:

Panel: 525x375 (was 350x250)
Scroll area: 465x270 (was 310x180)
Text font: 14pt (was ~9pt)
Text spacing: 4 (was 2-3)
Close button: 150x45 with 15pt font (was 100x30 with ~10pt)


v1.3.4 - Turn timer warning now shows on game window:
Blackjack timer box (200x70):

"TIME LEFT" label at top
Countdown number in center
"Auto-stand soon!" warning at bottom

Poker timer box (200x70):

"TIME LEFT" label at top
Countdown number in center
"Auto-check/fold soon!" warning at bottom

Both still also print the warning to chat at 10 seconds.


Chairface's Casino v1.3.5 with escape key support.
Changes in v1.3.5:

Added EscapeHandler.lua - pressing Escape now closes all game windows
Registered frames: Lobby, Blackjack, Poker, High-Lo, Settings, all Log panels, and Host panels
Uses WoW's standard UISpecialFrames mechanism for clean integration


Chairface's Casino v1.3.6 - Help window Trixie now uses the same fixed dimensions (274x350) as the lobby Trixie, and will scale with the window scale setting just like the lobby and high-lo Trixies.


Chairface's Casino v1.3.7 - Changed the help window's X button in the upper right to a "Back" text button with the same close functionality.


Chairface's Casino v1.3.8 - Settlement ledger windows scaled 1.5x larger for both Blackjack (now 788x563) and 5 Card Stud (now 450x225), keeping their top-right alignment.


Chairface's Casino v1.3.9 - The join/ante sound is now local only:

Table opening sound still plays for everyone (so all players know a game started)
When a player joins/antes, only THEY hear the chip sound (not everyone else in the game)


Chairface's Casino v1.3.10 - Fixed the ante sound to be properly local-only:

Blackjack: When you ante, you hear the chip sound. When others ante, no sound.
Poker: When you ante, you hear the chip sound. When others ante, no sound.
Table open sounds remain unchanged (everyone hears when a game starts)


Chairface's Casino v1.3.11 - Ace3 libraries are now embedded directly into the addon. Users no longer need to download Ace3 separately.
Embedded libraries in Libs/ folder:

LibStub.lua
CallbackHandler-1.0.lua
ChatThrottleLib.lua
AceComm-3.0.lua
AceSerializer-3.0.lua


Chairface's Casino v1.3.12 - Settlement ledger windows scaled an additional 1.5x larger (including all text):

Blackjack: Now 1182x845 with 40pt title, 32pt body text, 35pt button
Poker: Now 675x338 with 32pt title, 27pt body text

Chairface's Casino v1.3.13 - Settlement ledger windows adjusted to reasonable sizes:
Blackjack Settlement: 700x450 with 24pt title, 18pt body text, 18pt button
Poker Settlement: 450x280 with 21pt title, 18pt body text

 

Chairface's Casino v1.3.14 - Found and scaled the correct ledger!
The "Ledger" scoreboard that appears during settlement (showing "Owe Host" and "Host Owes" columns) has been scaled 1.5x:

Window size: 225x180 base (was 150x120)
Title font: 18pt (was ~12pt)
Label fonts: 15pt (was ~10pt)
Content fonts: 15pt (was ~10pt)
Column widths and spacing scaled proportionally
Dynamic resizing calculations also scaled


Chairface's Casino v1.3.15 - Ledger scaled to 1.4x (down from 1.5x).

 

Chairface's Casino v1.3.16 - 5 Card Stud settlement box fixes:

Increased width to 380px
Positioned right edge ~15px from host button's right edge
Increased vertical padding for text (line height 18, base height 80, extra padding)
Dynamic resizing now properly accommodates text content


Chairface's Casino v1.3.17 - Added airhorn warning sound:

Blackjack: Plays at 10 seconds remaining on your turn (local only)
Poker: Plays at 10 seconds remaining on your turn (local only)
High-Lo: Plays at 10 seconds remaining in the 2-minute game timer for players who haven't rolled yet (local only)

Chairface's Casino v1.3.18 - Fixed 5 Card Stud settlement box positioning back to upper right corner (TOPRIGHT with -10 offset).

Chairface's Casino v1.3.19 - 5 Card Stud settlement scaled to 1.4x:

Frame size: 630x315 (450×1.4, 225×1.4)
Title font: 20pt (14×1.4)
Body font: 17pt (12×1.4)
Text positioning adjusted proportionally

Chairface's Casino v1.3.21 - 5 Card Stud settlement window width constrained to 360px so its left edge aligns with the host button's right edge.


Chairface's Casino v1.3.23 - 5 Card Stud button bar changes:

DEAL button: Now hidden by default, only shows when you're the host AND deal is available (waiting for 2+ players)
RESET button: Moved to bottom right corner of window (inside the brown border)
LOG button: Now at the right end of the button bar
Raise input: Now starts with "1" prefilled instead of max raise
RAISE button: Label now shows "RAISE (X)" where X is the number in the input box, updates dynamically
New MAX RAISE button: Added to the right of RAISE button, shows "RAISE (Y)" where Y is the maximum remaining raise for the round

Button bar order: FOLD, CHECK/CALL, [input], RAISE (X), RAISE (MAX), LOG


Chairface's Casino v1.3.24 - Added validation to the 5 Card Stud raise input box:

Input is now validated to only allow values between 1 and the maximum remaining raise for the round
If you enter a value below 1, it auto-corrects to 1
If you enter a value above the max remaining (e.g., max bet is 100, 50 has been bet, so max remaining is 50), it auto-corrects to the max remaining
Validation triggers on text change and when focus is lost


Chairface's Casino v1.3.25 - Fixed raise input validation to allow clearing the field:

You can now delete all text in the input box while typing
Validation only occurs when you click away (focus lost) or press Enter
While the field is blank, the RAISE button shows "RAISE (?)" to indicate invalid/incomplete input
Once you leave the field, it validates and corrects to 1 if empty/invalid, or clamps to max if too high


Chairface's Casino v1.3.26 - HOST buttons now hidden when another game is in session:

Added IsOtherGameActive(excludeGame) function to Lobby that checks if any game OTHER than the specified one is active
Blackjack HOST button hides when Poker or High-Lo is in an active phase (not idle or settlement)
Poker HOST button hides when Blackjack or High-Lo is in an active phase
High-Lo HOST button hides when Blackjack or Poker is in an active phase

This prevents players from accidentally trying to start a new game while another game is in progress.


Chairface's Casino v1.3.27 - Lobby game buttons now reflect game status:

When a game is in session, its button shows "Join Now!" in green
When another game is in session, the other game buttons turn yellow with "Table is Busy" text
When no games are active, all buttons show "Play Now!" in green
Hover effects now respect the current button color state


Chairface's Casino v1.3.28 - Lobby now auto-refreshes when game states change:

Added a refresh ticker that checks every 0.5 seconds while the lobby is visible
When any game's state changes (starts/ends), the button colors and text update automatically
The ticker stops when the lobby is hidden to save resources
No need to close and reopen the lobby to see updated button states


Chairface's Casino v1.3.29 - HOST buttons now properly hidden when any game is in session:

Blackjack: HOST button hidden when any game (including itself) is in session. JOIN button still shows during WAITING_FOR_PLAYERS phase for non-host players who haven't anted.
5 Card Stud: HOST button hidden when any game is in session. JOIN button still shows during WAITING_FOR_PLAYERS phase for players not yet in the game.
High-Lo: HOST button hidden when any game is in session. JOIN button still shows during LOBBY phase for players not yet in the game.

The key change: Now checks IsAnyGameActive() instead of IsOtherGameActive() to properly hide the HOST button when the current game itself is in a session (like waiting for players).

Chairface's Casino v1.3.30 - Restructured action button logic for all games:
The key changes:

Each game now checks for the game's own "waiting/lobby" phase FIRST - if this game is in its waiting phase, show JOIN (for non-joined players) or hide
THEN check anyGameActive - if ANY game (including another game) is in session, hide the HOST button
Only if no games are active, proceed to show HOST for idle/settlement phases

This ensures that:

When Blackjack is in WAITING_FOR_PLAYERS → Poker and HiLo frames hide their HOST buttons
When Poker is in WAITING_FOR_PLAYERS → Blackjack and HiLo frames hide their HOST buttons
When HiLo is in LOBBY → Blackjack and Poker frames hide their HOST buttons
JOIN buttons still work correctly for the active game

Chairface's Casino v1.3.29 - HOST buttons now hidden when any game is in session:

HOST button (big green button) in each game is now hidden when ANY game is in an active session (not idle, not settlement)
Each game window now has a refresh ticker that checks every 0.5 seconds for game state changes
When a game starts or ends, the HOST button visibility updates automatically
The tickers stop when the game window is hidden to save resources

The logic now matches the lobby buttons - when any game is actively being played (dealing, betting, rolling, etc.), the HOST buttons in all games are hidden. They reappear when games end or return to idle/settlement.


Chairface's Casino v1.3.30 - Blackjack ledger max width constraint:

The ledger (settlement scoreboard) now has a maximum width constraint
The left edge of the ledger will not extend past the right edge of the HOST button
Calculated as: maxWidth = (frameWidth / 2) - 105 pixels
If the ledger content would exceed this width, it gets constrained and column widths are recalculated
Minimum width of 224px is preserved to ensure readability

Chairface's Casino v1.3.31 - High-Lo UI adjustments:

Host settings window lowered by 15 points (from y=20 to y=5)
HOST button repositioned below the host settings window (y=-115)


Chairface's Casino v1.3.32 - High-Lo UI adjustments:

LOG button repositioned below the HOST button (anchored to action button's bottom)
LOG button now parented to main frame with same high frame level as HOST button
HOST button remains centered (x=0)


Chairface's Casino v1.3.33 - High-Lo UI improvements:

Frame height increased - Minimum height raised from 310 to 360 to ensure LOG button (below HOST button) is always within the background
Header background lowered - FELT_TOP_OFFSET increased from 55 to 70 to cover the "Host: name | Max: bet" line with the dark header area
START button repositioned - Now placed above the player table (anchored to listContainer's top) instead of in the button container at the bottom
HOST button dynamic positioning - After a game ends (settlement visible), the HOST button is now positioned between the settlement area and player table. During normal idle state without settlement, it remains in the default centered position. The LOG button follows below the HOST button in either case.


Chairface's Casino v1.3.34 - High-Lo roll phase UI:

Roll button (/roll X) now positioned above the player table (same position as START button)
Timer text ("Time remaining: Xs") now anchored above the roll button so it stays with the roll button during the rolling phase

Chairface's Casino v1.3.35 - High-Lo close/refresh buttons:

Close button replaced from UIPanelCloseButton template to custom 18x18 button matching refresh button size
Both buttons now 18x18 pixels
Close button positioned at TOPRIGHT with -6, -6 offset
Refresh button positioned 4 pixels to the left of close button
Both have tooltips and hover effects (close turns red on hover)

 

Chairface's Casino v1.3.36 - High-Lo chat announcement improvement:
The chat announcement when hosting a High-Lo game now includes the max roll value:
Before: [Casino] === HIGH-LO GAME === Joining closes in 30 seconds. Type 1 to join!
After: [Casino] === HIGH-LO GAME (/roll 100) === Joining closes in 30 seconds. Type 1 to join!
This allows players who don't have the addon open to know what roll range the game is using.


Chairface's Casino v1.3.37 - 5 Card Stud turn timer fix:
The turn timer system was already implemented but had bugs that prevented it from working:
Bugs Fixed:

PS.currentBettor → PS.currentPlayerIndex - The timer was referencing a non-existent variable
myPlayer.roundBet → myPlayer.currentBet - The player bet tracking variable was incorrect

How the Timer Works:

60 second timer starts when it becomes your turn during betting phase
At 10 seconds remaining: AirHorn sound plays and red warning box appears with countdown
Warning text: "Auto-check/fold soon!"
At 0 seconds:

If you can check (no call required): auto-checks
If you must call to continue: auto-folds


Timer cancels when it's no longer your turn


Chairface's Casino v1.3.39 - Peer-to-peer version checking:
How it works:

When a host opens a table - Their version is broadcast to all players
When a player joins a game - Their version is sent to the host
Version comparison - If either party has a newer version, the one with the older version gets a popup warning

Popup message:
Chairface's Casino

A player in your group (PlayerName) has a newer version (1.3.40).

Your version: 1.3.39

Please update from CurseForge for the latest features and bug fixes!
Technical details:

BJ:OnPeerVersion(version, playerName) - Called whenever we receive a version from another player
BJ:IsVersionOlder(v1, v2) - Compares semantic versions (1.3.39 < 1.3.40 < 1.4.0, etc.)
BJ.highestSeenVersion - Tracks the highest version seen this session
BJ.versionWarningShown - Ensures popup only shows once per session

Triggers:

Blackjack: TABLE_OPEN (host→clients), ANTE (player→host)
Poker: TABLE_OPEN (host→clients), ANTE (player→host)
High-Lo: TABLE_OPEN (host→clients), PLAYER_JOIN (player→host)

Also included: Updated trix_win7.tga image file.


Changes in v1.4.1
Fixed Issues:

Session button icons - Changed from emoji (📊) to text "LB" that renders properly in WoW
Leaderboard button in Lobby - Now properly appears as a full "Leaderboard" button in a second row below Settings/Help. The lobby now has:

Row 1: [Settings] [Help]
Row 2: [Leaderboard] [Sync]


Host/Dealer tracking in Blackjack - The host's profit/loss is now recorded to the leaderboard. When players win, the host loses that amount; when players lose, the host gains. This makes session totals properly zero-sum.
Removed all emojis - Trophy icon in the all-time leaderboard header is now a gold asterisk instead of 🏆, sync button just says "Sync Now"

Here's v1.4.2 with your custom icons:
Changes:

Session leaderboard button - Now uses the clipboard icon you provided (on all game frames: Blackjack, Poker, Hi-Lo)
All-time leaderboard header - Now uses the trophy icon you provided in the header of the main leaderboard window

The icons are converted to 32x32 TGA format with alpha transparency and placed in the Textures folder:

leaderboard_session.tga (clipboard)
leaderboard_alltime.tga (trophy)

 

Here's v1.4.3 with all the fixes:
Changes:

Session leaderboard layering - Frame strata changed to DIALOG with high frame level, so it always appears above the game windows
Auto-close with parent - Session leaderboards now automatically close when their parent game window is closed (Blackjack, Poker, Hi-Lo)
Session persistence for same host - If the same host re-opens a table, the session data is preserved rather than reset
Session data sync to clients - Host now broadcasts session leaderboard updates to all players in the group. Clients request session data when they open the session leaderboard window.
Proper Blackjack dealer accounting - The host/dealer's profit/loss from banking the game is now properly recorded to both session and all-time leaderboards. If there are other players at the table, the host's "dealer result" (opposite of all player results) is tracked separately.


Here's v1.4.4 with all the requested changes:
Changes:

Lobby window height - Increased from 580px to 620px so the bottom edge is below the "More games coming soon" message
All-time leaderboard width - Increased from 500px to 620px, height from 480px to 500px to better cover the table area
All-time data encryption - Already implemented and verified - uses XOR encryption with player GUID binding and HMAC-style checksum for tamper detection
Party-wide session tracking - Complete redesign:

Session data is now tied to your party/raid, not individual games
Win/loss totals are cumulative across ALL games (Blackjack, Poker, Hi-Lo) while in the same party
Session automatically starts when you join a group and ends when you leave
All party members sync their session data via addon communication
Session persists no matter who hosts which game - it's all one running tally
Session window title changed from "[Game] SESSION" to "PARTY SESSION"
Leaving the party resets the session


v1.4.5 - Fixed the startup error. The issue was that UnitName("player") can return nil during early login, and the code was trying to insert it directly into the table without checking. Now it properly validates all names before adding them.


Here's v1.4.6 with all icons replaced by proper textures:
Icon Changes:

Tab Icons (All-Time Leaderboard):

Blackjack - Ace of Spades card texture
5 Card Stud - Ace of Diamonds card texture
High-Lo - Minimap dice icon (icon.tga)


Self-Highlight Arrow:

Both session and all-time leaderboards now use the green arrow texture you provided instead of the Unicode ➤ character
Arrow appears next to your rank number to indicate your position

 

All squares should now render properly since we're using texture files instead of Unicode characters that WoW Classic fonts don't support.


v1.4.7 - Fixed the session frame header. The title icon in the "PARTY SESSION" window was still trying to use the old text-based info.icon field. Now it uses a proper texture icon (the Ace of Spades/Diamonds/dice depending on which game's session button you clicked).


v1.4.8 - All-time leaderboard now updates for ALL players when session data changes.
Changes:

When any hand result is recorded (RecordHandResult), ALL players' stats are now saved to the all-time leaderboard (not just your own)
Data is encrypted and persistently saved after each hand
The all-time UI automatically refreshes when session data updates
You'll now see other players' cumulative stats across all your gaming sessions with them


v1.4.9 - All-time leaderboard now syncs across all clients in the party.

Changes:

Added ALLTIME_UPDATE message type for syncing all-time data
When any hand result is recorded, the update is broadcast to all party members
Each client receives the broadcast and updates their local all-time data
Data merging uses "higher game count wins" logic - if incoming data has more games, it's considered more recent and replaces local data
All clients should now show identical all-time leaderboard data after hands are played


v1.5.0 - Added debug "Clear DB" button to the all-time leaderboard.
Changes:

New orange "Clear DB" button appears next to "Sync Now" when debug mode is enabled (/casino debug)
Clicking it shows a confirmation dialog warning that it will wipe ALL local data AND broadcast a clear command to party members
When confirmed:

Clears all local all-time leaderboard data
Clears all session data
Clears party session data
Saves the cleared state
Broadcasts CLEAR_DB message to all group members


Other clients receiving the CLEAR_DB message automatically clear their local databases too
Button visibility updates when you toggle debug mode on/off


v1.5.1 - Version mismatch warnings are now deferred until the user opens the casino.
Changes:

When a version mismatch is detected (another player has a newer version), the warning is stored instead of shown immediately
The warning popup only appears when the user opens the casino lobby
This prevents interrupting players who are doing other activities (questing, raiding, etc.)
The warning is still shown once per session, just at a more convenient time


v1.5.2 - Fixed the Clear DB button not showing when debug mode is enabled.
The issue was that the code was checking BJ.debugMode which doesn't exist - the actual flag is BJ.TestMode.enabled. Now the button correctly shows/hides based on the TestMode enabled state.


v1.5.3 - Fixed "YOUR [GAME] STATS" section not updating for clients.
The problem: Only the host was calling RecordHandResult, which updates myStats. Clients received the all-time leaderboard broadcasts but only updated the leaderboard entries, not their personal myStats section.
The fix: When a client receives an ALLTIME_UPDATE message about themselves, they now also update their myStats to match. This ensures the "YOUR BLACKJACK STATS" (and poker/hilo) section shows the correct Games/Won/Lost/Push/Net values for all players, not just the host.


v1.5.4 - Simplified all-time leaderboard to only track essential data.
Changes:

All-time leaderboard now only tracks: Games Played, Net Gold, and Last Sync
Removed the W/L (wins/losses) column from the leaderboard display
Reduced data broadcast size (fewer fields synced between clients)
Note: Your personal "YOUR [GAME] STATS" section at the bottom still tracks wins/losses/pushes locally (myStats), this change only affects the main leaderboard table

 

v1.5.5 - Fixed game count mismatch between host and clients in the all-time leaderboard.
The problem: Both host and clients were calling RecordToLeaderboard/RecordHandResult, causing double-counting on clients. The host would record and broadcast, then clients would ALSO record locally, resulting in different counts.
The fix: Added host-only checks to all three game types:

Blackjack (GameState.lua): RecordToLeaderboard() now checks if we're the host before recording
Poker (PokerState.lua): CalculateSettlements() leaderboard recording is now host-only
Hi-Lo (HiLoState.lua): Settlement recording is now host-only

Now only the host records results and broadcasts them to clients. Clients receive the updates via ALLTIME_UPDATE messages and update their local data without double-recording.


v1.5.6 - Added trophy icon button to all game windows for quick access to the all-time leaderboard.
Changes:

Blackjack: Trophy button added to the left of the session (clipboard) button in the title bar
Poker: Trophy button added to the left of the session button in the title bar
Hi-Lo: Trophy button added to the right of the session button (next to back button)

Each trophy button opens the all-time leaderboard directly to the corresponding game's tab. Hover shows tooltip "All-Time Leaderboard - View all-time rankings".


v1.5.7 - Fixed clients not receiving their personal stats (wins/losses/pushes/bestWin/worstLoss) in the all-time leaderboard.
The problem: When we made leaderboard recording host-only in v1.5.5, clients stopped updating their myStats (the "YOUR BLACKJACK STATS" section) because that data was only computed locally during recording.
The fix:

Added new MYSTATS_UPDATE message type for broadcasting detailed personal stats
Host now tracks stats for each remote player in remotePlayerStats
When host records a result for a client, it computes their wins/losses/pushes/bestWin/worstLoss and broadcasts via BroadcastMyStatsUpdate
Clients receive the MYSTATS_UPDATE message and update their local myStats
The handler only updates if the incoming game count is higher (more recent data)
For bestWin/worstLoss, it takes the more extreme values to ensure accuracy


v1.5.8 - Moved Hi-Lo leaderboard buttons below the back button.
The session (clipboard) and all-time (trophy) buttons are now positioned below the back button in a horizontal row, instead of next to it. This provides a cleaner layout for the Hi-Lo game window.


v1.5.11 - Simplified myStats tracking - clients now compute their own stats locally.
The change: Instead of the host broadcasting detailed myStats to clients, clients now compute their own wins, losses, pushes, bestWin, and worstLoss locally when they receive the settlement sync.
What was removed:

MYSTATS_UPDATE message type
BroadcastMyStatsUpdate() function
HandleMyStatsUpdate() function
ComputeAndBroadcastPlayerStats() function
remotePlayerStats tracking table
myStats update in HandleAllTimeUpdate()

What was added:

UpdateMyStatsFromSettlement(gameType) - New function that extracts win/loss/push data from the local settlement and updates myStats
Called in Multiplayer.lua after BuildSettlementFromSync() for non-host clients

This is cleaner because:

Less network traffic (no separate myStats broadcast)
Clients determine their own detailed stats from data they already have
The settlement already contains all the outcome information needed


v1.5.12 - Fixed client win/loss/push stats not populating.
The bug: When clients received the settlement sync, outcomes were being parsed with tonumber(outcome) or 0. Since outcomes are strings like "win", "lose", "push", tonumber("win") returns nil, so all outcomes became 0. This caused BuildSettlementFromSync to produce "unknown" results instead of the actual outcomes.
The fix: Removed tonumber() from outcome parsing - outcomes are now correctly kept as strings (e.g., "win", "lose", "push", "blackjack", "bust").


v1.5.13 - Added W/L column back to the all-time leaderboard.
Changes:

Added "W/L" column to the all-time leaderboard between Net and Games
Shows wins/losses in green/red format (e.g., "3/1")
For players without W/L data synced (other players), shows "-" in gray
Your own W/L will always show since it's tracked locally
Adjusted column widths to fit the new column:

Player: 130px (was 150)
Net: 80px (was 100)
W/L: 60px (new)
Games: 50px (was 70)
Last Sync: 90px (was 100)

 

Note: W/L data is only tracked locally for your own stats. Other players will show "-" unless we add W/L to the sync broadcast in a future update.

 

v1.5.14 - Added W/L to the all-time sync broadcast.
Changes:

BroadcastAllTimeUpdate now sends: gameType|playerName|net|games|wins|losses
HandleAllTimeUpdate now parses and stores wins and losses
All players in the leaderboard will now show W/L data after syncing

Now when the host broadcasts all-time updates, everyone in the group will receive and display the W/L stats for all players.


v1.5.15 - Fixed three issues:

Escape key now closes leaderboards - Added all leaderboard frames to the escape handler:

CasinoAllTimeLeaderboard
CasinoSessionLeaderboard_blackjack
CasinoSessionLeaderboard_poker
CasinoSessionLeaderboard_hilo


Clients now properly record W/L to all-time board - Fixed UpdateMyStatsFromSettlement to also update the allTimeData[gameType][myFullName] entry (the leaderboard entry), not just myStats. Previously it was updating myStats but not the actual leaderboard entry that gets displayed.
Clear DB button moved to TestMode bar - Removed from the all-time leaderboard and added as an orange "CLR DB" button on the purple test mode bar. Shows the same confirmation popup when clicked.


v1.5.16 - Fixed host not recording W/L stats.
The issue: UpdateAllTimeStats was creating leaderboard entries with only net, games, lastSync - no wins/losses. The broadcast was sent before UpdateMyAllTimeStats could add the W/L data.
The fix: UpdateAllTimeStats now:

Creates entries with wins and losses fields initialized to 0
Tracks wins/losses directly based on the outcome
Broadcasts the complete data including W/L

Now both hosts and clients should properly record and display W/L stats.


v1.5.18 - Two fixes:

Added debug output to UpdateMyStatsFromSettlement to trace why client poker stats aren't being recorded. When you test, enable debug mode (/cc db) and check the chat for messages like:

UpdateMyStatsFromSettlement: gameType=poker, myName=Gametester
Poker settlement keys: followed by the actual keys in the settlement table
mySettlement not found for 'X' or 'X-Realm' if that's the issue


Added more frames to escape handler:

CasinoRecoveryPopup - Blackjack recovery popup
CasinoPokerRecoveryPopup - Poker recovery popup
LobbyTrixieFrame - Lobby Trixie
TrixieIntroContainer / TrixieIntroFrame - Intro frames
HelpTrixieFrame - Help Trixie
BlackjackBetPopup - Bet selection popup

 

The debug output should help identify why client poker stats aren't being saved. Please test and let me know what you see in chat when a poker game ends on the client side.


v1.5.19 - Added more detailed debug output to trace the poker client stats issue.
Enable debug mode with /cc db and play a poker game. On the client when the game ends, you should see messages like:
HandleSettlement: About to call UpdateMyStatsFromSettlement
HandleSettlement: myName='Gametester', myRealm='YourRealm'
HandleSettlement: Settlement keys:
  Key: 'Apptester', total=100
  Key: 'Playtester', total=-50
  Key: 'Gametester', total=-50
UpdateMyStatsFromSettlement: gameType=poker, myName=Gametester
UpdateMyStatsFromSettlement: Found settlement, total=-50
OR if it fails:
UpdateMyStatsFromSettlement: mySettlement not found for 'Gametester' or 'Gametester-Realm'
This will tell us exactly what's happening - whether the name lookup is failing or something else. Please test and share what the debug output shows on the client side.


v1.5.21 - Leaderboard improvements:
High-Lo Changes

Game counting for all participants - Players who participate but aren't the winner/loser now get their games counted (no W/L, but game counts)
Removed Push - Push no longer shows in "YOUR HIGH-LO STATS" since Hi-Lo doesn't have pushes
Sorting - Players with W/L are sorted first by net, then players with only games are sorted by games played

Blackjack Changes

W/L/P header - The column header now shows "W/L/P" instead of "W/L"
W/L/P display - Each row shows wins/losses/pushes (e.g., "3/1/2")

5 Card Stud Changes

Removed Push - Push no longer shows in "YOUR 5 CARD STUD STATS" since poker doesn't have pushes

All Leaderboards

Header alignment - All column headers now match the alignment of their content:


- Center

Player - Left
Net - Right
W/L (or W/L/P) - Center
Games - Center
Last Sync - Right


v1.5.22 - Fixed column header alignment.
The headers now use the exact same x-positions as the row content:
The headers should now line up perfectly with the data in each column.

 

v1.5.23 - Adjusted column spacing:
The gap between Player and Net is now smaller, and the gaps after Net and W/L are now doubled.


v1.5.24 - The Roll button now executes the roll directly in chat using RandomRoll(1, X) where X is the bet amount (or 100 for tiebreakers). No more needing to press Enter after clicking - it just rolls immediately.


v1.5.25 - High-Lo UI changes:

Log button moved - Now positioned under the clipboard and trophy icons (top-left area) with a tooltip
Settlement window repositioned - Now starts on the felt background (at -72 from top, just below where felt begins at -70)
Host button - Still dynamically repositions between settlement and player table when settlement is shown

The leaderboards already have automatic sync when players meet in parties/raids - that was implemented earlier with the GROUP_ROSTER_UPDATE event triggering RequestFullSync().


v1.5.27 - Fixed potential edge case for lobby button states:
Root cause identified: When a player leaves a party while in an active game, their local game state wasn't being reset. This could cause:

You leave a HiLo game mid-session
Join a new party with a Poker game running
Both games would show as "active" on your client
Two "Join Now!" buttons could appear green simultaneously

Fix applied to all three games:

Blackjack (Multiplayer.lua): Added check in OnRosterUpdate() - if not in group/raid, reset GameState to IDLE
Poker (PokerMultiplayer.lua): Added check in OnRosterUpdate() - if not in group/raid, reset PokerState to IDLE
High-Lo (HiLoMultiplayer.lua): Added check in GROUP_ROSTER_UPDATE handler - if not in group/raid, reset HiLoState to IDLE

All three now properly clear their local game state, multiplayer flags, and update their UI when the player leaves the party.


v1.5.28 - Host settings label updates:
Blackjack:

"Betting Countdown:" → "Time to Join / Deal:"

5 Card Stud:

"Max Raise (1-1000g):" → "The Cap (1-1000g):" with hover tooltip explaining:

"Maximum total bet per player per round."
"Once betting reaches the cap, players can only call or fold - no more raises."


"Join Countdown:" → "Time to Join / Deal:"
Info text now shows "Cap: Xg" instead of "Max Raise: Xg"


v1.5.29 - Fixed "The Cap" tooltip to correctly explain cumulative betting:

The Cap
The maximum total amount that can be bet across all players each round. Once the cap is reached, no further raises are allowed - players can only call or fold.


v1.5.30 - High-Lo host settings: Changed "Max Roll:" to "/ROLL" with 14pt font (4pt larger than the previous ~10pt small font).


v1.5.31 - Automatic all-time leaderboard sync on party/raid:
When joining a party/raid:

After 2 seconds, automatically broadcasts your all-time stats to all party members
Everyone receives your stats and updates their local leaderboard if you have more games played

When roster changes (new members join):

After 1 second, automatically broadcasts your stats
Uses a 5-second cooldown to prevent spam on rapid roster changes (e.g., mass invites)

Merge logic remains the same:

Higher game count wins - if someone has played more games, their stats are considered more current
This prevents older/stale data from overwriting newer data


v1.6.0 - The Leaderboard Release! 🏆
Updated CurseForge description includes:
New Sections:

Leaderboards - Full documentation of session and all-time leaderboards
How sync works between players
Encrypted storage explanation
Per-game tracking details

Updated Game Descriptions:

High-Lo: Added airhorn warning, visual timer, timeout handling
Poker: "The Cap" terminology with explanation
All games: "Time to Join / Deal" countdown labels

Updated Features List:

Added Leaderboards section with all features
Added Leaderboard Sync to Synchronization
Added Airhorn Warning to Audio

Updated FAQ:

How do leaderboards sync between players?
Are my leaderboard stats secure?

Updated Changelog:

v1.6.0 section with all leaderboard features
High-Lo improvements
Host settings updates
Bug fixes