File Details
Chairface's Casino v1.2.0
- R
- Jan 1, 2026
- 10.87 MB
- 21
- 5.5.3+38
- Classic + 2
File Name
Chairfaces_Casino_v1.2.0.zip
Supported Versions
- 5.5.3
- 5.5.2
- 5.5.1
- 5.5.0
- 4.4.2
- 4.4.1
- 4.4.0
- 3.4.5
- 3.4.4
- 3.4.3
- 3.4.2
- 3.4.1
- 3.4.0
- 2.5.5
- 2.5.4
- 2.5.3
- 2.5.2
- 2.5.1
- 1.15.8
- 1.15.7
- 1.15.6
- 1.15.5
- 1.15.4
- 1.15.3
- 1.15.2
- 1.15.1
- 1.15.0
- 1.14.4
- 1.14.3
- 1.14.2
- 1.14.1
- 1.14.0
- 1.13.7
- 1.13.6
- 1.13.5
- 1.13.4
- 1.13.3
- 1.13.2
- 1.13.0
Chairface's Casino v1.1.1
Changes:
Clickable game links in chat - When a table opens, the game name (e.g., [High-Lo], [Blackjack], [5 Card Stud]) is now clickable and opens that game's window
Trixie intro reset - All players will see Trixie's intro again when they first open the lobby with this update
Chairface's Casino v1.1.1 updated!
Trixie easter egg poke sound chance increased from 1 in 2000 to 1 in 500 clicks
Chairface's Casino v1.1.2 - Settings now include:
Voice Frequency Slider (all users)
Always (100% chance)
Frequent (50% chance)
Normal (33% chance) - default
Occasional (20% chance)
Rare (10% chance)
Debug: Poke Chance Input (debug mode only)
Manual text input for "1 in X" chance
Type a number and press Enter to set
Lower = more frequent easter egg triggers
Chairface's Casino v1.1.3 - Networking hardened with AceComm
Changes:
All three multiplayer modules (Blackjack, Poker, High-Lo) now use AceComm:SendCommMessage() instead of direct C_ChatInfo.SendAddonMessage() calls
Updated channel prefixes:
Blackjack: CCBlackjack
Poker: CCPoker
High-Lo: CCHiLo
Removed all C_ChatInfo.RegisterAddonMessagePrefix() calls - AceComm handles this internally
Changed message handlers from OnAddonMessage() to OnCommReceived() using AceComm's callback system
Chairface's Casino v1.1.4
Changes:
Party/Raid Requirement Messaging
Blackjack & 5 Card Stud: Status bar shows "Join a party or raid to host a game." when not in group
High-Lo: Warning displayed in game window AND Host button disabled entirely
Debug mode bypasses these requirements
Version Check on Join
Host broadcasts addon version when opening table
Players with mismatched versions are rejected with popup dialog
Prevents sync issues between different addon versions
Reset Button Confirmation
Added confirmation popup to 5 Card Stud reset button (was missing)
Blackjack and High-Lo already had confirmations
Chairface's Casino v1.1.5
Fixed: Opening Blackjack now properly closes the 5 Card Stud window (was checking wrong frame property UI.Poker.frame instead of UI.Poker.mainFrame)
Chairface's Casino v1.1.6
Fixed: Poker UI event handlers now check isInitialized before accessing UI elements, preventing errors when receiving network messages while the Poker window hasn't been opened yet
Chairface's Casino v1.1.7
Fixed: Blackjack ANTE message now uses empty string instead of nil for the anteType parameter, preventing table.concat error when joining a table
Chairface's Casino v1.1.8
LibCompress Integration:
Added new Compression.lua module that wraps LibCompress
All three multiplayer modules (Blackjack, Poker, High-Lo) now compress outgoing messages using Huffman compression
Compression is only applied to messages >50 bytes and only if the compressed result is actually smaller
Compressed messages are prefixed with ~ to distinguish them from uncompressed
Gracefully degrades if LibCompress is not available - messages are sent uncompressed
Added LibCompress as optional dependency in TOC
How it works:
Outgoing: Serialize → Compress (if beneficial) → Send via AceComm
Incoming: Receive → Decompress (if prefixed with ~) → Deserialize → Handle
Benefits:
Reduces network traffic for large messages (deal syncs with many players, settlements)
Falls back to uncompressed if LibCompress isn't installed
Backward compatible - uncompressed messages from older versions still work
Chairface's Casino v1.1.9
Fixed: Turn timer now restarts when a player splits, giving them a fresh 30 seconds for each split hand
Chairface's Casino v1.1.10
5 Card Stud: Increased window width from 920 to 970 pixels
5 Card Stud: Increased player cell width from 175 to 185 pixels (+10pt spacing between players)
5 Card Stud: Lowered the hand value caption during settlement by 5 points (from -4 to -9)
Chairface's Casino v1.1.11
Blackjack: Increased player turn timer from 30 seconds to 60 seconds
Blackjack: Trixie now resets to "waiting" state when a new game is hosted (both for host and joining clients)
Chairface's Casino v1.1.12
5 Card Stud: Kickers are now only shown when relevant
"Pair of Aces" vs "Pair of 8's" - no kickers shown (aces clearly beat 8's)
"Pair of Aces, Q Kicker" vs "Pair of Aces, 9 Kicker" - kickers shown (same pair, kicker decides winner)
Logic: Only displays kicker information when another player has the same hand rank
Chairface's Casino v1.1.13
High-Lo: Added 5pt vertical spacing between lines in the settlement text display
Chairface's Casino v1.1.14
All three games now have a unified centered action button:
New centered HOST/JOIN button - A large (180x54) button centered in each game window, layered above all other UI elements
Triple-sized text (24pt font) for high visibility
Context-aware label: Shows "HOST" when no game is active, "JOIN" when a table is open and waiting for players
Auto-hide behavior:
Disappears when host clicks it (until game ends/resets)
Disappears when client clicks to join (until game ends/resets)
Reappears after settlement/game conclusion
Removed from button bar: HOST and ANTE/JOIN buttons no longer appear in the bottom button bar for all three games
Changes applied to:
Blackjack (MainFrame.lua)
5 Card Stud (PokerFrame.lua)
High-Lo (HiLoFrame.lua)
Chairface's Casino v1.1.15
High-Lo UI Changes:
Trixie checkbox moved to bottom-left corner of the window, vertically aligned with the reset button
High-Lo Chat Integration (for players without the addon):
Join Phase:
When game is hosted, announces in party/raid chat: === HIGH-LO GAME === Type 1 to join!
Players can type 1 in party/raid chat to join the game
Host's addon automatically adds chat-joiners to the game
Rolling Phase:
Announces: === ROLLING PHASE === Everyone /roll X - You have 2 minutes!
Timer announcements at:
1:30 remaining
1 minute remaining
30 seconds remaining
Countdown from 10, 9, 8... 1
Tiebreaker:
Announces: === TIE! Both players rolled X === Reroll needed! /roll 100
For multi-player ties: === TIEBREAKER for HIGH/LOW === [players] must /roll 100
Settlement:
Announces: === GAME OVER ===
Shows winner: [Player] rolled [X] (HIGH) - WINNER!
Shows loser: [Player] rolled [X] (LOW) - LOSER
Shows debt: [Loser] owes [Winner] Xg (high - low = amount)
Game End:
Reset: === HIGH-LO GAME RESET ===
Cancel: === HIGH-LO GAME CANCELLED ===
Chairface's Casino v1.1.16
New /hilo Quick Start Command:
Usage: /hilo X where X is the max roll value (default 100)
Automatically hosts a High-Lo game with a 60 second join window
Opens the High-Lo UI automatically
Example: /hilo 500 starts a game with max roll of 500
Chat Message Formatting:
All High-Lo chat messages now have [Casino] prefix
Messages appear in party or raid chat as: [Player]: [Casino] === HIGH-LO GAME === Type 1 to join!
This makes it clear the messages are addon-generated and helps identify the game in busy chats
Raid chat is properly used when in a raid (instead of party chat)
Chairface's Casino v1.1.17
Bug Fixes:
Reset button now properly cancels and resets the join timer countdown display
Join timer is cancelled on game reset, table close, and game cancel
High-Lo Chat Join Improvements:
When a player joins via chat (typing "1"), their name is now announced in chat: [Casino] PlayerName has joined the game!
/hilo Command Updates:
No longer opens the game window - just hosts the table quietly
Now includes a 60 second join timer with chat announcements:
At 30 seconds: [Casino] 30 seconds to join! Type 1 to join!
Final 5 second countdown: [Casino] 5... 4... 3... 2... 1...
Auto-starts rolling phase when timer expires (if 2+ players)
Timer Countdown Changes:
Join phase final countdown: 5 seconds (30s warning, then 5-4-3-2-1)
Rolling phase final countdown: Changed from 10 to 5 seconds (5-4-3-2-1)
Chairface's Casino v1.1.18
High-Lo Timer Fix:
Timer now continues running when the window is closed - The join timer and rolling timer are now fully managed by HiLoMultiplayer (which runs independently of the UI)
When the High-Lo window is reopened, it correctly shows the remaining time by reading from the HiLoMultiplayer timer state
Previously the UI had its own timer that would stop when the window was hidden, causing the countdown to freeze
Technical Changes:
Removed duplicate timer logic from HiLoFrame's OnUpdate
UI now reads remaining time directly from HiLoMultiplayer.joinStartTime and HiLoMultiplayer.joinDuration
All game logic (auto-start rolling, not enough players) is handled by HiLoMultiplayer's timer, which keeps running even when the window is closed
Removed obsolete joinCountdown variable from UI
Chairface's Casino v1.1.19
Major Feature: State Synchronization System
Implemented a robust versioned state synchronization system for all three games (Blackjack, 5 Card Stud, High-Lo) to handle network reliability issues.
Architecture:
Version Tracking: Each game state change increments a version number
Gap Detection: Clients track the last received version; if a gap is detected (received v7 when expected v6), the client ignores the message and requests a full sync
Full State Dumps: Host can send complete game state to individual players via whisper using AceSerializer compression
New File: StateSync.lua
SS:IncrementVersion(game) - Increments and returns version (host only)
SS:ValidateVersion(game, version, host) - Checks if version is valid, requests sync if gap detected
SS:RequestFullSync(game, host) - Client requests full state from host
SS:HandleSyncRequest(game, requester) - Host builds and sends full state
SS:BuildFullState(game) - Creates complete state table for serialization
SS:HandleFullState(game, data) - Client receives and applies full state
SS:ApplyBlackjackState(state) - Apply Blackjack state
SS:ApplyPokerState(state) - Apply Poker state
SS:ApplyHiLoState(state) - Apply High-Lo state
Flow:
Host sends: SYNC|ACTION|version=5|data...
Client receives v5, expected v5 ✓ → Apply normally
Client receives v7, expected v6 ✗ → Gap detected!
Client sends whisper: REQUEST_SYNC|blackjack
Host responds with full compressed state dump via AceSerializer
Client deserializes and applies full state, synced!
Benefits:
Handles packet loss: If messages are dropped, client auto-recovers
Handles lag/reloads: Player can /reload and request current state
Handles disconnects: When rejoining, gap detection triggers resync
Efficient: Uses AceSerializer + compression for minimal bandwidth
Per-game tracking: Each game has independent version counters
Chairface's Casino v1.1.20
New: Sync Button in Lobby
Added a Sync button to the lobby screen, positioned next to Settings and Help buttons.
Features:
Manual Full Sync: Click to request a complete state dump from all active game hosts
5 Second Cooldown: Prevents spam - shows remaining cooldown time if clicked too soon
Multi-Game Support: Syncs all three games at once (Blackjack, 5 Card Stud, High-Lo)
Smart Detection: Only requests sync from games where you're connected to a host (not if you ARE the host)
Feedback Messages:
Shows which games are being synced and from which hosts
Shows "No active games to sync" if not connected to any hosts
Shows cooldown remaining if clicked too soon
Button Layout:
Buttons are now 3 across: [Settings] [Help] [Sync]
Each button is 78px wide to fit in the row
Tooltip:
Hovering shows: "Sync Game State - Request full state sync from hosts for all active games. 5 second cooldown between clicks"
Chairface's Casino v1.1.21
Fixed: Sync Button Now Works for Spectators
The Sync button now works even if you haven't joined/anted into the game. This enables spectator mode - anyone in the party/raid can sync to see the current game state.
How it works now:
Click Sync - If no known hosts, broadcasts a discovery request on all 3 game channels
Hosts respond - Any active game host (not in idle phase) responds with a host announcement via whisper
Client learns host - The client's multiplayer module is updated with the discovered host
Auto-sync - Immediately requests full state sync from the discovered host
UI updates - Game state is applied and UI refreshes to show current game
Flow for a reloading player:
Player reloads UI, loses all game state
Opens Casino lobby, clicks Sync
Sees: "Searching for active game hosts..."
Host responds automatically
Sees: "Found blackjack host: HostName - Requesting sync..."
Full game state synced, can now spectate (or play if it was their turn)
Changes:
Added BroadcastDiscovery() - Sends DISCOVER message on all 3 channels
Added HandleDiscoveryRequest() - Host responds if hosting active game
Added HandleHostAnnounce() - Client learns about host and auto-syncs
All 3 multiplayer modules (Blackjack, Poker, HiLo) now handle discovery/announce messages
Chairface's Casino v1.1.22
Fixed: Sync Success/Failure Messages + Blackjack Cards Display
1. Success/Failure Feedback:
After sync completes: |cff00ff00Sync successful:|r Blackjack state restored.
If deserialize fails: |cffff4444Sync failed:|r Could not deserialize blackjack state.
If apply fails: |cffff4444Sync failed:|r Could not apply blackjack state.
2. Blackjack Cards Now Display After Sync:
The UI tracks dealt cards separately from game state (UI.dealtCards and UI.dealerDealtCards). After sync, these are now properly set:
UI.dealerDealtCards = number of dealer cards
UI.dealtCards[playerName_handIndex] = number of cards in each player's hand
UI.isDealingAnimation = false (clears any stuck animation state)
3. Host Tracking Updated:
All three Apply functions now also update the multiplayer module's host tracking:
MP.currentHost / PM.currentHost / HLM.currentHost = host name
MP.tableOpen / etc. = true
MP.isHost / etc. = whether you are the host
This ensures subsequent actions (hit, stand, etc.) work correctly after syncing.
Chairface's Casino v1.1.23
Fixed friendly game names in all sync feedback messages:
Success: |cff00ff00Sync successful:|r Blackjack state restored.
Success: |cff00ff00Sync successful:|r 5 Card Stud state restored.
Success: |cff00ff00Sync successful:|r High-Lo state restored.
Failure: |cffff4444Sync failed:|r Could not deserialize Blackjack state.
Failure: |cffff4444Sync failed:|r Could not apply 5 Card Stud state.
Chairface's Casino v1.1.24
Changes:
1. Removed Blackjack Turn Timer
Removed the 60-second turn timer completely
No more auto-stand when time expires
Players can take as long as they need
2. Improved Sync Feedback (from 1.1.23)
All games now show friendly names in success/failure messages
Chairface's Casino v1.1.25
Fixed: HOST Button Now Shows After Settlement
The HOST button was being hidden during the SETTLEMENT phase, which prevented the host from starting a new hand after the game completed.
Changes:
During SETTLEMENT or IDLE phase, the host now sees the HOST button to start a new hand
Non-hosts in a party/raid can also see HOST button during IDLE if no table is open
Button is still hidden during active gameplay (DEALING, PLAYER_TURN, DEALER_TURN)
Updated Logic:
Active game phases (dealing, player turn, dealer turn): Button hidden for everyone
Settlement/Idle phases:
If you're the current host → Show HOST button
If no table is open and you can host → Show HOST button
Otherwise → Hide button
Waiting for players phase: Show JOIN button for non-host players who haven't anted
Chairface's Casino v1.1.26
New Features:
1. Auto-Sync on Login/Reload
When you log in or reload your UI while in a party/raid, the addon automatically pings "Am I playing?" to the group. If a host has you in their active game, they'll automatically send you the full game state.
Flow:
Player reloads UI → PLAYER_ENTERING_WORLD fires
After 2 second delay, broadcasts AM_I_PLAYING|PlayerName to party/raid
Each host checks if that player is in their GS.players table
If found, host sends YOU_ARE_PLAYING|game and then full state sync
Player receives sync and UI updates automatically
2. Host Disconnect Detection & Recovery
If the host goes offline (disconnects but stays in group), the game is no longer stuck:
Detects when host is in group but UnitIsConnected() returns false
Shows status: HOST DISCONNECTED - Type /bj reset session to clear
Shows RESET button for everyone (not just host)
Anyone can click RESET or use /bj reset session to clear the stuck game
Trixie shows concerned expression
3. Improved Host Leave Detection
If host completely leaves the group, table auto-closes immediately
More robust online/offline checking for all players
Changes to OnRosterUpdate:
Separate checks for host in-group vs host online
Tracks MP.hostDisconnected flag
New MP:CanForceReset() helper function
Chairface's Casino v1.1.27
Fixed: Auto-Sync Now Works for Spectators
Changed CheckIfPlayerInGame to send sync to anyone in the party/raid when a game is active, not just players who have joined/anted.
Before: Only checked if GS.players[playerName] existed
After: Checks if GS.phase ~= "idle" (any active game state)
Flow:
Player logs in/reloads while in party/raid
Broadcasts "Am I playing?" to group
Host checks: Is any game active (not idle)?
If yes → Send sync to that player (whether they're a player OR spectator)
Player receives full game state and can watch the action
This enables:
Rejoining players - Get back into their active hand
Spectators - Watch games in progress without joining
Late joiners - See current game state immediately
Chairface's Casino v1.1.28
Fixed: Duplicate Sync Message
The sync was happening twice because:
Host receives "Am I playing?" → sends YOU_ARE_PLAYING notification AND pushes full sync
Client receives YOU_ARE_PLAYING → was calling OnHostDiscovered() which requested sync again
Fix: The YOU_ARE_PLAYING handler now only updates host tracking (currentHost, tableOpen, isHost) without requesting sync, since the host is already pushing it.
Now you'll see:
[Casino] Found active blackjack game hosted by Playtester - syncing...
[Casino] Sync successful: Blackjack state restored.
Chairface's Casino v1.1.29
Fixed: HOST Button Now Shows for All Players During Settlement
Problem: During settlement phase, only the previous host saw the HOST button. Clients couldn't start a new game.
Cause: The logic checked MP.tableOpen which was still true during settlement, preventing non-hosts from seeing the button.
Fix: Separated settlement and idle phase handling:
Settlement phase: Anyone who can host (in party/raid or test mode) sees the HOST button
Idle phase: Original logic - host sees button, or anyone if no table is open
Now after a hand completes, any player in the party/raid can click HOST to start the next hand.
Chairface's Casino v1.1.30
Fixed: HOST Button Now Works for All Players During Settlement
Problem: The HOST button appeared for non-hosts during settlement, but clicking it did nothing.
Cause: OnActionButtonClick only allowed the previous host to proceed during settlement phase (line 556 checked isCurrentHost or MP.isHost).
Fix: Updated click handler to match the visibility logic:
Settlement phase: Anyone who can host (in party/raid or test mode) can click to start a new game
Idle phase: Host can start new hand, or anyone if no table is open
Now any player can click HOST after a hand completes to start the next game.
Chairface's Casino v1.1.31
Added: Clickable Game Links in Sync Messages
Game names in sync messages are now clickable links that open the game window:
Messages updated:
Found active [Blackjack] game hosted by PlayerName - syncing...
Sync successful: [Blackjack] state restored.
Click [Blackjack], [5 Card Stud], or [High-Lo] to open that game's window directly from chat.
Uses the existing BJ:CreateGameLink() system that was already in place for other chat messages.
Chairface's Casino v1.1.32
Added: Persistent Shoe Between Hands
When the same host continues dealing, the deck is now preserved between hands:
New behavior:
Same host continuing: Shoe is preserved, cards continue to be dealt from same deck
Reshuffle only when needed: At 75% penetration (per Vegas rules)
New host: Full reset, new shuffled deck
Shuffle notification: Shuffling deck... message when reshuffle occurs
Changes:
Added GS:ResetForNewHand() - Clears hands/players but preserves shoe
Updated GS:StartRound() - Detects if same host, uses ResetForNewHand() if so
TABLE_OPEN now broadcasts cardsRemaining to clients
Clients track syncedCardsRemaining for UI display
Why this matters:
More realistic casino experience
Card counting becomes possible (for those who track)
Consistent with real blackjack rules
Chairface's Casino v1.1.33
Added: Conditional Shuffle Animation
The shuffle sound/animation sequence now only plays when a reshuffle actually occurs:
When shuffle animation plays:
First hand of a new session (new host)
When deck reaches 75% penetration and needs reshuffling
When shuffle animation skips:
Same host continuing with existing deck
Cards dealt immediately with "Dealing..." status
Changes:
Added GS.reshuffledThisRound flag in StartRound()
OnCardsDealt() checks flag to decide whether to play shuffle sequence
If no shuffle needed: Trixie goes straight to dealing pose, cards dealt immediately
Faster gameplay when continuing with same deck
Fixed v1.1.33 - Added the missing end to properly close the startDealing() function.
Fixed v1.1.33 - Added the missing end to properly close the startDealing() function.
Chairface's Casino v1.1.34
Added: Auto-Stand on 21
Players now automatically stand when they hit 21:
After hitting, if hand total equals 21, player auto-stands
Logged as "auto-stand at 21" in game history
Speeds up gameplay - no need to manually stand on perfect hand
Priority order for auto-actions after hit:
Bust (over 21) → Hand loses
5-Card Charlie (5+ cards ≤21) → Auto-win
21 exactly → Auto-stand (new!)
Chairface's Casino v1.1.37
Fixed: Max Players Options
Changed Host Panel max players options from { 1, 2, 4, 6, 10, 20 } to { 2, 4, 6, 10, 15, 20 }
Now includes 15 as an option
Fixed: Shuffle Sequence Properly Blocks Dealing
During shuffle:
Info bar shows "Shuffling..." instead of card count during the shuffle sequence
Card count updates only AFTER shuffle completes - not before/during
Cards don't fly until shuffle finishes - the startDealing callback only fires after the 3.5 second shuffle sequence
Shuffle sequence flow:
isShuffling = true, hide card count
Play 3 shuffle sounds with Trixie animation (3.5 seconds total)
After shuffle: isShuffling = false, update displayedCardCount to new deck amount
Update info bar with fresh card count
THEN call startDealing() to animate cards
Chairface's Casino v1.1.38
Fixed: 5 Card Stud Join Error
Root Cause: When StateSync sent FULLSTATE|<serialized_data> messages to game channels (CCPoker, CCHiLo, CCBlackjack), the multiplayer handlers didn't recognize the FULLSTATE message type. The serialized data contained | delimiters which got parsed into the parts array, causing parts to be misinterpreted. For example, if serialized data started with something like ANTE|1|..., the handler might try to process parts[2] as "ANTE" and call PlayerAnte("1", nil).
Fix: Added proper FULLSTATE and REQSYNC message handlers to all three multiplayer modules:
Multiplayer.lua (Blackjack)
PokerMultiplayer.lua (5 Card Stud)
HiLoMultiplayer.lua (High-Lo)
Each handler now:
Recognizes FULLSTATE message type
Rejoins the remaining parts with | delimiter (table.concat(parts, "|", 2))
Routes to BJ.StateSync:HandleFullState(game, serializedData)
Also handles REQSYNC requests by routing to BJ.StateSync:HandleSyncRequest().
Also Fixed: Max Players Options
Updated Host Panel max players buttons to { 2, 4, 6, 10, 15, 20 }
Chairface's Casino v1.1.40
Fixes:
5 Card Stud: ANTE sync error fixed
Added nil check before calling PlayerAnte in HandleSyncState
If malformed data is received (playerName or amount is nil), it's now logged and ignored instead of crashing
5 Card Stud: "Betting Countdown" → "Join Countdown"
Changed label in the poker host panel to correctly reflect that it's for joining, not betting
5 Card Stud: Buttons inactive after player action
Added an explicit UpdateButtons() call with a 0.1 second delay after OnPlayerAction
This ensures button states are properly refreshed after any action, even if there's a timing issue with state updates
Chairface's Casino v1.1.42
5 Card Stud Sync Improvements:
Client join visibility - The client already optimistically adds themselves to local state when they click JOIN, so they should see themselves immediately. The ANTE sync from host then confirms it. If this still isn't working, enable debug mode (/cc db) to see the sync messages.
Turn change sync debugging - Added extensive debug logging:
Host logs: "ProcessAction: Sending sync - nextPlayerIdx=X (PlayerName), phase=Y"
Client logs: "Client received ACTION sync: player=X, action=Y, nextPlayerIdx=Z, phase=W"
Client also logs: "Client: Next player should be: PlayerName (index X)"
Improved OnPlayerAction UI refresh:
Calls UpdateDisplay() immediately
Then calls UpdateStatus() and UpdateButtons() again after 0.1 second delay
Added isInitialized check in the timer callback for safety
To debug: Enable debug mode with /cc db or /bj debug, then perform actions and check chat for the debug messages. This will show exactly what data is being sent and received.
Chairface's Casino v1.1.43
Debug Build for 5 Card Stud Turn Sync
This version adds extensive debug logging to track down why clients don't see turn changes when the host acts first.
Changes:
Host UI refresh after action - When host acts and game is still in BETTING phase, explicitly calls UpdateDisplay() on host's UI before checking for test players
More debug logging in HandleSyncState:
Logs sender name, currentHost, and syncType at entry
Logs if message is REJECTED because sender != host
This will help identify if clients are receiving the sync or filtering it
To debug:
Enable debug mode on BOTH host and client: /cc db
Have the host be first to act on a street
Host performs action (check/call/raise)
Check BOTH clients' chat for debug messages:
Client should see: "HandleSyncState: sender=HostName, currentHost=HostName, syncType=ACTION"
Client should see: "Client received ACTION sync: player=HostName, action=check, nextPlayerIdx=2, phase=betting"
If you see "REJECTED - sender is not host", that's the problem
Chairface's Casino v1.1.44
Fixed: 5 Card Stud SYNC_STATE Message Parsing
Root Cause Found: The PM:Send() function was inserting a version number into SYNC_STATE messages at position 2 (after syncType), making the message format:
PSYNC|syncType|version|...data
But HandleSyncState was reading:
parts[2] expecting syncType → actually got VERSION NUMBER
parts[3] expecting playerName → actually got syncType
So when syncType was "5" (the version number) instead of "ACTION", neither the ANTE nor ACTION branch matched, and the message was silently ignored!
Fix: Updated HandleSyncState to correctly parse the message format:
parts[2] = syncType (ANTE, ACTION, etc.)
parts[3] = version number
parts[4+] = actual data
This should fix both:
Clients not seeing when they've joined
Clients not seeing turn changes when host acts
Chairface's Casino v1.1.46
Fixed: Double ante sound on join
Added skipSound parameter to OnPlayerAnted()
When client receives ANTE sync for themselves (after optimistically adding), the sound is skipped since it already played
Other players' antes still play the sound
Fixed: HOST button visible after 5 Card Stud settlement
During SETTLEMENT phase, anyone who can host (in party/raid or test mode) now sees the HOST button
Both previous host and clients can start a new game after one concludes
Chairface's Casino v1.1.47
Fixed: HOST button now works during settlement
Changes:
Custom Enable/Disable for action button - Added custom Enable(), Disable(), and IsEnabled() methods with proper visual feedback:
Enabled: Green background, white text
Disabled: Gray background, gray text
Also enables/disables mouse input
Click handler for settlement phase - Added settlement phase handling to OnPokerActionButtonClick() so clicking HOST during settlement opens the host panel
RegisterForClicks and EnableMouse - Ensured the button properly receives mouse clicks
Chairface's Casino v1.1.47
Fixed: HOST button now works during settlement
Changes:
Custom Enable/Disable for action button - Added custom Enable(), Disable(), and IsEnabled() methods with proper visual feedback:
Enabled: Green background, white text
Disabled: Gray background, gray text
Also enables/disables mouse input
Click handler for settlement phase - Added settlement phase handling to OnPokerActionButtonClick() so clicking HOST during settlement opens the host panel
RegisterForClicks and EnableMouse - Ensured the button properly receives mouse clicks
Chairface's Casino v1.1.48
Fixed: 5 Card Stud reconnect sync issues
playerArea nil error - Added initialization checks to:
UpdateDisplay() - returns early if self.isInitialized is false
UpdatePlayerHands() - returns early if not initialized or playerArea is nil
Cards face down after sync - Now includes faceUp property when serializing cards in BuildPokerState()
Cards disappearing after sync - ApplyPokerState() now initializes dealtCards for each player based on their hand size, so synced cards appear immediately instead of requiring new card animations
Chairface's Casino v1.1.49
Fixed: currentBet nil error after sync
Added nil safety in GetAvailableActions - Now uses player.currentBet or 0 instead of directly accessing player.currentBet
Include currentBet in sync data - BuildPokerState now includes currentBet when serializing player data, so it's restored properly after reconnect
Chairface's Casino v1.1.50
Fixed: Buttons active after state restore
Added missing state fields to sync:
currentStreet - which betting round we're in
maxRaise - maximum raise amount
Delayed button update after sync - Added a 0.1 second delayed call to UpdateButtons() after poker state is restored to ensure all state is fully applied
Debug logging - When debug mode is on, shows phase, currentPlayerIndex, currentPlayer, and myName after sync to help diagnose any remaining issues
Test with /cc db enabled to see the debug output showing whether it correctly identifies you as the current player.
Chairface's Casino v1.1.51
Added: Raise input auto-fills with max remaining raise
The raise input box now:
Shows remaining raise amount in gray text (e.g., if max is 100g and current bet is 15g, shows "85")
Clears on focus - When you click the box, it clears and turns white for typing
Restores placeholder on blur - If you click away without entering a value, it shows the max again
Uses the displayed value - If you just click Raise without changing it, it raises by the max remaining amount
Chairface's Casino v1.1.51
Added: Raise input auto-fills with max remaining raise
The raise input box now:
Shows remaining raise amount in gray text (e.g., if max is 100g and current bet is 15g, shows "85")
Clears on focus - When you click the box, it clears and turns white for typing
Restores placeholder on blur - If you click away without entering a value, it shows the max again
Uses the displayed value - If you just click Raise without changing it, it raises by the max remaining amount
Chairface's Casino v1.1.53
Changes:
Minimap scale range changed to 1x-5x (was 0.25x-3x)
Step size: 0.5x increments
Added /cc default command - Resets all settings to defaults:
Sound: ON
Voice: ON
Voice Frequency: Normal (3)
Card Back: Blue
Minimap Scale: 1.0x
Window Scale: 100%
Poke Chance: 1 in 500
Debug: OFF
Also updates the settings panel sliders/buttons if it's open, and immediately applies the minimap and window scale changes.
Chairface's Casino v1.1.55
Window scale slider now only applies the scale on mouse release, not during dragging. The percentage text still updates live so you can see what value you're selecting.
Chairface's Casino v1.1.56 - Window scale range changed to 60% - 120%.
Chairface's Casino v1.1.57
Changes:
Minimap scale range changed to 1.5x - 5x (was 1x - 5x)
Default is now 1.5x
Minimap hover scaling now matches the set scale
On hover, the button grows 15% larger than its current scaled size
On leave, it returns to the exact scaled size
Works correctly regardless of what scale you've set
Chairface's Casino v1.1.59
Changes:
Help window now shows commands and tips by default:
Slash Commands: /cc, /casino, /cc help, /cc default, /cc intro, /hilo
Tips about clickable game links in chat, party requirements, hosting, settling debts, and clicking Trixie
Still shows "Select a game on the left to see its rules"
Fixed /cc help - Now only shows commands that actually exist:
/cc or /casino - Open casino lobby
/cc default - Reset all settings to defaults
/cc intro - Replay Trixie's introduction
/cc help - Show this help
/hilo - Quick start High-Lo game
Chairface's Casino v1.1.59
Changes:
Help window now shows commands and tips by default:
Slash Commands: /cc, /casino, /cc help, /cc default, /cc intro, /hilo
Tips about clickable game links in chat, party requirements, hosting, settling debts, and clicking Trixie
Still shows "Select a game on the left to see its rules"
Fixed /cc help - Now only shows commands that actually exist:
/cc or /casino - Open casino lobby
/cc default - Reset all settings to defaults
/cc intro - Replay Trixie's introduction
/cc help - Show this help
/hilo - Quick start High-Lo game
Chairface's Casino v1.1.61
Changes:
Help panel updated:
/hilo <max> now shows it requires a max roll parameter with example: /hilo 1000
Removed "Click Trixie for a surprise!" tip
/cc help updated to show /hilo <max> syntax with example
Settings left column moved up 20 pts - Card Face section now starts at -20 instead of -40
Chairface's Casino v1.2.0 (Updated)
/hilo Command Updated
New syntax: /hilo <max> [timer]
max = maximum roll value (required, minimum 2)
timer = join window in seconds (optional, 20-120, default 60)
Examples:
/hilo 1000 - Max roll 1000, 60 second join window
/hilo 1000 30 - Max roll 1000, 30 second join window
/hilo 500 120 - Max roll 500, 2 minute join window
Updated in:
/hilo command handler
/cc help output
Help panel default content
CurseForge description
Chairface's Casino v1.2.0 (Fixed)
High-Lo Join Timer Fix
When the join timer expires with insufficient players (less than 2):
- Before: Game stayed in LOBBY phase, HOST button hidden, "Waiting for manual start" message
- After: Game is cancelled automatically, all clients reset, HOST button reappears for everyone
Changes:
HiLoMultiplayer.lua- Join timer expiry now broadcastsTCLOSEand resets game state when < 2 playersHandleTableClose- Now also clearstableOpen,isHostflags and cancels any running join timer on clients
The message now says "Game cancelled" instead of "Waiting for manual start".