File Details
Chairface's Casino v1.7.0
- R
- Jan 15, 2026
- 23.70 MB
- 32
- 5.5.3+5
- Classic + 3
File Name
Chairfaces_Casino_v1_7_0.zip
Supported Versions
- 5.5.3
- 4.4.2
- 3.80.0
- 3.4.5
- 2.5.5
- 1.15.8
Here's v1.6.7 with the trophy icon fixed:
Changes:
Flipped the trophy/leaderboard icon right-side up in all locations:
MainFrame.lua (Blackjack game window)
PokerFrame.lua (5 Card Stud game window)
HiLoFrame.lua (High-Lo game window)
LeaderboardUI.lua (All-Time Leaderboard window header)
Here's v1.6.8 with the updated Warcraft deck:
Changes:
Replaced all 52 cards in the Warcraft deck with the new artwork
All cards are now uniform 128x180 source resolution, converted to 64x90 for in-game use
Version updated to 1.6.8
Here's v1.6.9 with the dice icons fixed:
Here's v1.6.10 with Phase 1 of the Craps Honor Ledger system. Ready for testing!
Changes:
Removed the vertical flip from dice icons on High-Lo and Craps buttons in the lobby (they were being double-flipped - the texture is already correct orientation)
Phase 1 Features:
Host Setup (Table Cap / Bankroll)
When clicking "HOST" in Craps, a settings panel now appears
Host can set Table Bank (10k - 1M gold) - this is the max payout the host can cover
Host can set Min Bet and Max Bet limits
Table cap is broadcast to all players when table opens
Player Buy-In System
When clicking "JOIN", players now see a Buy-In Panel
Players enter their buy-in amount (1 - 100,000 gold)
Request is sent to host for approval
Host sees pending requests in a Pending Requests Panel with ✓ (approve) and ✗ (deny) buttons
Balance Tracking
Each player now has a chip balance displayed ("Balance: Xg")
Players start with their buy-in amount
Balance persists throughout the session
Cash Out Receipts (Foundation)
RequestCashOut() function added
Generates receipt showing: Start Balance, End Balance, Net Win/Loss
Receipt displayed in chat for player and host
New Settings Added
crapsTableCap - Bank size for host
crapsMinBet / crapsMaxBet - Bet limits
All saved to SavedVariables
Next Phases to Implement:
Phase 2: Bet validation against cap, balance deduction on bets
Phase 3: Ready check/Lock-in system
Phase 4: Cash out flow, bankruptcy handling, haircut rule
Here's v1.6.11 with all the fixes:
Changes in v1.6.11:
UI Fixes:
Host Settings Panel - Now uses text entry boxes instead of dropdowns (Table Bank: 1000, Min Bet: 1, Max Bet: 10 defaults)
Buy-In Panel - Fixed button overlap, now uses separate left/right button positioning
Both panels now parent to UIParent with high frame level (200) so craps game buttons don't show through
Entry validation - All inputs validated as whole numbers between 1-100,000
Button Layout:
HOST button - Shows when no game active (opens host settings)
JOIN button - Shows for non-players when table is open (opens buy-in panel)
Close Table button - Shows for host when table is open (closes the table)
Reset button - Shows for host only (resets all game state for all clients)
Chat/Messaging:
Removed all SendChatMessage calls - Fixed the escape code error
All messages now use BJ:Print() - In-app messaging like blackjack with proper color codes
Host/Shooter Rules:
Host cannot be the shooter - Shooter is set to nil when host opens table
First joining player becomes shooter - When a player joins/is approved, they become shooter if none exists
Player Balances panel - Host can see real-time balances of all players
Reset System:
RESET message type added - Broadcasts reset to all clients
ResetGame() function - Host can reset all game state
HandleReset() - Clients properly reset when receiving reset message
Here's v1.6.12 with Phase 2 complete:
Changes in v1.6.12:
Phase 1 Fixes:
Game Link - Table open message now uses clickable [Craps] link like other games
Player Balances Panel - Now movable (drag to reposition)
Phase 2 - Balance & Risk Tracking:
Bet Validation:
Banker (host) cannot place bets
Bets validate against player balance ("Insufficient balance")
Bets validate against table cap ("Would exceed table bank limit")
Balance Deduction:
Balance deducted when bet is placed
Winnings added back to balance after roll settles
Original stake returned on winning bets
Risk Tracking:
currentRisk tracks total potential payout exposure
Risk recalculated after each roll settlement
CalculatePotentialPayout() - calculates max payout for each bet type
WouldExceedCap() - checks if new bet would exceed table cap
RecalculateRisk() - recalculates all active bet risk
UI - Risk Meter (Host Only):
Shows current risk vs table cap with percentage
Color coded: Green (<25%), Yellow (25-50%), Orange (50-75%), Red (>75%)
Format: "Risk: 500/1000g (50%)"
Settlement System:
CalculateWinningBetReturns() - returns original stake on winning bets
Balance properly updated for wins/losses
Risk reset after each roll
Here's v1.6.13 with all the requested features:
Changes in v1.6.13:
Lobby:
Copyright text added at bottom center: "© 2026 Chairface / Ionlydps"
Lobby height increased to 600px to accommodate
Craps - All Players See Bets:
All Players Bets Panel - Scrollable panel showing everyone's bets
Color-coded players - Each player has a unique color (Cyan, Orange, Lime, Pink, Lavender, Yellow)
Bets shown with player color - Makes it easy to see who bet what
Lock-in indicator - ✓ checkmark next to locked-in players
Craps - Dynamic Bet Amounts:
Chip amounts scale to min/max - Uses GenerateChipAmounts() based on table settings
Starts with min bet, scales up to max bet
Limited to 5 buttons for UI space
Craps - Lock-In System:
[Lock In] button for players during betting phase
Marks player as locked in
Can't lock in twice
Button hides after locking in
Craps - Host Roll Call Panel:
Roll Call Panel for host showing all players
✓ = locked in, ○ = still betting
Shows player's total bet amount
Color-coded to match player colors
Movable panel
Craps - ROLL NOW Button:
[⚡ ROLL NOW] button for host during betting phase
Force-locks all players who haven't locked in
Closes betting and starts rolling phase
Shows count of force-locked players
Craps - Bet Sync:
BET_SYNC message broadcasts bet changes to all players
All clients update their view of other players' bets in real-time
Host sees bet confirmations but doesn't see bets being placed (waits for sync)
Changes in v1.6.14:
Table Announcement:
Now includes min/max bets: "Hostname opened a [Craps] table! Min: 1g | Max: 10g | Bank: 1000g"
Bet Display on Markers:
Removed the "Active Bets" window completely
Player's own bets shown in green on bet buttons
Other players' combined bets shown in orange below player's bets
No overlap - amounts displayed on separate lines
Auto-Start on All Locked In:
When all non-host players are locked in, roll phase starts automatically after 0.5s delay
Message: "All players locked in! Starting roll phase..."
Host Processing Player Rolls Fixed:
HandleRollResult now properly processes roll results on clients
Added ProcessRollLocal() function to clear losing bets on client side
HandleSettlement now receives and applies new balance from host
Balance properly updated after each roll settlement
Lock-in status reset after each roll for next betting round
Settlement message now includes player's new balance (4th parameter)
Changes in v1.6.15:
Batched Bet Updates:
Bets are NO LONGER broadcast on each individual bet
HandleBetRequest now only sends whisper confirmation to the betting player
Bets are synced in batch when:
Player clicks Lock In - BroadcastPlayerBets() sends all their bets at once
Host clicks ROLL NOW - broadcasts ALL players' bets before closing betting
New batched format: BET_SYNC, playerName, balance, "betType:amount,betType:amount,..."
Host Parses Shooter Rolls from Chat:
OnSystemMessage now has dual functionality:
Shooter path: If local player is shooter and initiated roll, processes their own dice
Host path: If local player is host, watches for ANY system message from the shooter
Host tracks hostRollDie1 and hostRollDie2 separately from local shooter rolls
Host processes rolls when shooter's second die is detected in chat
Works regardless of who the shooter is (host watches chat for shooter's /roll results)
Other Fixes:
Removed the unused "pending" roll message path (host now watches chat directly)
Bet confirmation now sent via whisper instead of broadcastChanges in v1.6.15:
Batched Bet Updates:
Bets are NO LONGER broadcast on each individual bet
HandleBetRequest now only sends whisper confirmation to the betting player
Bets are synced in batch when:
Player clicks Lock In - BroadcastPlayerBets() sends all their bets at once
Host clicks ROLL NOW - broadcasts ALL players' bets before closing betting
New batched format: BET_SYNC, playerName, balance, "betType:amount,betType:amount,..."
Host Parses Shooter Rolls from Chat:
OnSystemMessage now has dual functionality:
Shooter path: If local player is shooter and initiated roll, processes their own dice
Host path: If local player is host, watches for ANY system message from the shooter
Host tracks hostRollDie1 and hostRollDie2 separately from local shooter rolls
Host processes rolls when shooter's second die is detected in chat
Works regardless of who the shooter is (host watches chat for shooter's /roll results)
Other Fixes:
Removed the unused "pending" roll message path (host now watches chat directly)
Bet confirmation now sent via whisper instead of broadcast
Changes in v1.6.16:
Host Win/Loss Messages:
Host now sees each player's win/loss after every roll
Format: PlayerName +50g (Balance: 950g) or PlayerName -100g (Balance: 400g)
Clear Bets on Shooter Change:
All player bets are cleared when seven-out occurs
Host sends SHOOTER_CHANGE with CLEAR flag
Clients clear all bets and display: "All bets cleared for new shooter."
Fixed Shooter Rotation:
Host is NO LONGER added to shooterOrder - host is the bank, not a player
AddPlayer() only adds non-host players to shooter rotation
First non-host player to join becomes the initial shooter
HostTable() now sets shooterName = nil and shooterIndex = 0 initially
Shooter now properly rotates among players on seven-out
Phase 4 Changes in v1.6.17:
Cash Out System:
[$ Cash Out] button added for players (visible during betting or when not shooter)
Clicking generates a Session Receipt printed in chat for both player and host:
--- CASINO RECEIPT ---
Player: PlayerName
Start Balance: 5000g
End Balance: 8200g
Net Win: +3200g
-----------------------
Player is removed from table after cashing out
Host cannot cash out (must close table instead)
Bankruptcy Handling:
When a player's balance hits 0 with no active bets, they are marked as isSpectator = true
Message added to settlement: "BANKRUPT - moved to spectator mode"
Spectators cannot place bets (must re-join with host permission to bet again)
Cash Out button hidden for spectators
Haircut Rule (Bank Bankruptcy Protection):
Before settling bets, system calculates total payouts
If total payouts exceed tableCap, a haircut factor is applied: tableCap / totalPayouts
All winning players receive scaled payouts (e.g., if haircut is 95%, everyone gets 95% of their winnings)
Message: "Bank shortage! Payouts scaled to 95.0%"
Settlement messages show: "(Haircut applied: 1000 -> 950)"
Files Modified:
CrapsMultiplayer.lua: Added RequestCashOut(), HandleCashOut(), HandleCashOutReceipt()
CrapsState.lua: Updated SettleRoll() with haircut logic and bankruptcy check, added CalculateSettlement() helper
UI/CrapsFrame.lua: Added Cash Out button and OnCashOutClick() handler
Here's v1.6.19 with all the fixes:
Changes in v1.6.19:
UI Improvements:
Host no longer sees chip selector - hidden for host since they don't bet
Pass Line width matches Don't Pass - both now 420px wide, aligned
WAIT label - Join button shows "WAIT" while waiting for host approval
Roll Call visible to everyone - not just host, shows during all phases
Player colors in roll call - each player gets unique color, shooter marked with 🎲
Player bets use matching colors - bets on markers show in same color as player's name in roll call
Shooter Timer:
60 second timer - shooter must roll within 60 seconds
10 second warning - airhorn sound plays for everyone, message displayed
Auto-roll on timeout - if shooter doesn't roll in time, random roll is forced
Timer stops when roll is processed
Cash Out Improvements:
Shooter can cash out before rolling - if passed dice but haven't started, can still cash out
Dice passed on cash out - if shooter cashes out, dice pass to next player
Movable receipt popup window - instead of chat spam, shows a proper popup with close button
Bug Fixes:
Bets now properly clear after resolution - added ClearResolvedBets() function
One-roll bets always clear - field, any7, craps, yo all clear every roll
Pass/Don't Pass clear on resolution - win or lose, bets clear properly
Host sees accurate bet display - no more stale/phantom bets
Changes in v1.6.20:
Player Panel:
Players see "Players" panel instead of "Roll Call" - shows player balances with matching colors
Host still sees "Roll Call" - shows lock-in checkmarks and bet totals during betting phase
Both panels use the same consistent color assignment for player names
Shooter marked with 🎲 emoji
Dice Display Moved to Control Bar:
Dice now shown in bottom control bar - right side
Format: [3] [4] = 7 with white dice boxes showing black numbers
Shows after any roll, persists until next game state change
Removed old top-of-frame dice display
Changes in v1.6.21:
JOIN Button WAIT State:
Button shows WAIT (yellow) while player's join request is pending host approval
Reverts to JOIN (green) if denied, or disappears if approved
Player's pending request tracked locally for UI state
New Bet Display System:
Three different display modes for other players' bets based on bet type:
Horizontal Display (Pass Line, Don't Pass, Come, Don't Come, Field):
Colored bet amounts spaced horizontally across the button
Up to 8 players' bets shown left-to-right
Ring Display (Place 4, 5, 6, 8, 9, 10):
Colored bet amounts arranged in a ring around the button label
8 positions clockwise from top-left
Dot Display (Props, Hardways, Big 6/8):
Small colored dots at bottom of button
Each dot represents a player with an active bet
Your Own Bets:
Always shown as a green number at the bottom of the button
Clearly distinguishable from other players' colored indicators
Changes in v1.6.22:
Player Bet Colors:
Players now see their own bets displayed in their assigned player color instead of green
Color matches the color shown in the Players/Roll Call panel
Makes it easier to identify your bets on the table
Assign Shooter System:
ROLL NOW replaced with 🎲 Assign Shooter button
Host clicks to open a player selection panel
Shows all available players (non-host, non-spectator) with their assigned colors
Click a player name to:
Set them as shooter
Build shooter order starting with that player
Close betting and start the game
Panel auto-hides after selection
Full StateSync Integration for Craps:
Craps now has the same robust sync system as Blackjack, Poker, and High-Lo
Auto-sync on login/reload - reconnecting players automatically receive full state
Host discovery - find active craps tables via /casino sync
Full state broadcasts - includes:
Game phase, point, shooter
All table settings (min/max bet, odds, table cap, etc.)
Complete player data with balances and bets
Pending join requests
Last roll info
State restoration - all player bets, balances, and positions preserved on disconnect/reconnect
v1.6.23 - Fixed the sync messages to properly show "Craps" instead of "High-Lo" when detecting an active craps game, and added craps to the multiplayer host tracking during sync.
Changes in v1.6.24:
Bug Fixes:
Fixed Lua error when clicking shooter name in Select Shooter panel - added AssignShooter function to CrapsMultiplayer
Game no longer auto-selects first shooter - host must manually select from the panel
UI Improvements:
Players panel now positioned below the "Place Your Bets" info panel
Pending Requests panel now 100% opaque with DIALOG frame strata (appears above all other craps windows)
Host's player list now shows player names in their assigned colors (matching roll call)
Cash Out Restrictions:
Cannot cash out if you have any bets on the table (must wait for all bets to clear)
Cannot cash out if you are the active shooter during COME_OUT or POINT phase
Lobby:
Removed Sync button from lobby (sync happens automatically on login/reload)
v1.6.25 - Centered the Settings / Help / Leaderboard buttons in the lobby window (adjusted row width from 4 buttons to 3 buttons after removing Sync button).
Changes in v1.6.26:
Shooter Selection Logic:
Game no longer auto-assigns shooter when everyone locks in
First shooter must be manually selected by host via "Assign Shooter" button
Assign Shooter button only shows during BETTING phase when no shooter is assigned yet
Once a shooter is assigned, the shooter rotates automatically through the player list on seven-out
When all players lock in with no shooter assigned: "Host: select a shooter to begin" message shown
Chip Selector (Bet: window):
Already hidden for non-joined players (was working correctly)
Dice Display:
Centered in the control bar at the bottom (was right-aligned)
Changes in v1.6.27:
Force Roll Now Uses Chat /roll:
When shooter timer expires, host now uses the actual /roll 6 chat system twice
Force roll is parsed from system messages just like regular player rolls
Added forceRollPending, OnForceRollMessage() tracking for host-initiated force rolls
Floating Combat Text for Winnings:
Added ShowFloatingWinnings() function
Win amounts show in green floating text (+XXXg)
Loss amounts show in red floating text (-XXXg)
Uses CombatText_AddMessage if available, falls back to UIErrorsFrame
Field Bet Logic:
Field bet payout structure is correct: wins on 2,3,4,9,10,11,12 and loses on 5,6,7,8
2 and 12 pay 2:1, all others pay 1:1
Changes in v1.6.28:
Other Players' Win/Loss Messages:
Now includes player name: "PlayerName +500g" or "PlayerName -200g"
Your own settlements still show without name (just the amount)
Bet Window (Chip Selector) Visibility:
Hidden when no table is open (IDLE phase)
Hidden for host (they don't bet)
Hidden for non-players watching
Hidden for players who have already locked in
Only shown for active players during betting phase who haven't locked in yet
Changes in v1.6.29:
Bug Fixes:
Fixed field2_12 error - Fixed CalculateSettlement to correctly use PAYOUTS.field[total] table lookup instead of non-existent field2_12 key
Shooter Selection:
Removed auto-assign shooter on join - Game no longer auto-selects the first joining player as shooter
Host must manually select shooter - Players join and wait until host uses "Assign Shooter" to pick who rolls first
Cash Out Button Visibility:
Hidden when player is active shooter during rolling phases
Hidden when player has any bets on the table
Only shown when player can actually cash out (no bets, not shooter)
Changes in v1.6.30:
New Craps Table Background:
Real craps table image is now used as the betting field background
Clickable regions mapped to correspond with the image areas:
Pass Line - Bottom curved area
Don't Pass Bar - Above pass line
Field - Center area with 2•3•4•9•10•11•12
Come - Large center area
Don't Come - Top left corner
Place Bets (4,5,6,8,9,10) - Top row number boxes
Big 6/8 - Bottom left corner
Proposition Bets - Right side column:
Any 7 (Seven) at top
Hardways (H4, H6, H8, H10)
Snake Eyes (2) and Boxcars (12) - 30:1
Ace-Deuce (3) and Yo (11) - 15:1
Any Craps at bottom
Hover highlight shows when mouse is over a bet area
Bet amounts display on the corresponding regions
Percentage-based positioning scales to fit the frame
v1.6.31 is ready:
Changes in v1.6.31:
TGA Image Fix:
Converted craps table image to RLE-compressed TGA (758KB) - WoW requires this format
Fixed texture path to use .tga extension
Debug Mode Borders:
Added UpdateDebugBorders() function
When BJ.debugMode is true, thin magenta borders are drawn around all betting area buttons
Use /cc debug to toggle debug mode and see the bet region boundaries
Borders are created as 1-pixel colored textures on each edge (top, bottom, left, right)
Called from UpdateDisplay() so borders update whenever the display refreshes
To test: Enable debug mode with /cc debug and the magenta outlines will show where each clickable bet region is located on the craps table image.
v1.6.35 ready with reorganized layout:
Changes:
Image file: Original size (758KB), Y-flipped only
Frame size: 1200x800 (enlarged to accommodate 2x table display)
Layout reorganized:
Bottom: Control bar (action buttons, dice display)
Above control bar: Craps table image displayed at ~2x size (520px tall)
Top: Info panel and other windows
The craps table texture is now stretched to fill a 1180x520 area, which displays it approximately 2x its native resolution.
v1.6.36 - Adjusted to 1.6x scale:
Frame: 1000x650
Table display: ~980x416 (1.6x scale)
v1.6.37 - Complete rewrite with layered texture buttons!
Changes:
24 separate TGA textures in Textures/craps/ folder (all RLE compressed, Y-flipped)
Background + 23 bet buttons each with their own texture slice
Pixel-perfect positioning based on actual image coordinates from your slices
Each button displays its portion of the original image using texture coordinates
Hover highlights work per-button
Maintains proper aspect ratio (1200x560 original → scaled to fit frame)
The buttons are now:
Pass Line, Don't Pass, Field, Come, Don't Come
Place 4, 5, 6, 8, 9, 10
Big 6, Big 8
Any 7, Hard 4/6/8/10
Snake Eyes (2), Boxcars (12), Ace-Deuce (3), Yo (11), Any Craps
Use /cc debug to see magenta borders around each clickable region.
v1.6.38 - Pass Line button area reduced to just the bottom curved portion (y=430, height=117), no longer extends up onto the vertical C area.
v1.6.39 - Pass Line is now L-shaped with two hit areas:
v1.6.40 - Craps window now follows the main settings window scale. Added BJ.UI.Craps.container to the ApplyWindowScale() function in Lobby.lua.
v1.6.41 - Window scale now applies immediately as the slider is dragged, not just on mouse release. All windows (including craps) update in real-time.
v1.6.42 - Changes:
Table image scaled to 80% of previous size
Table anchored to bottom-right of frame
Point puck (60x60) moved to upper-left of table area with "POINT" label above it
More room available at top for sub-windows
v1.6.43 - Window scale slider now waits until mouse release to apply the scale change (reverted from v1.6.41's immediate update).
v1.6.44 - Major craps UI repositioning:
Bet quantity bar - Moved to left side of table image (vertical layout with stacked buttons)
Point box - Moved to right side of table image with "POINT" label above
Roll Call/Players panel - Repositioned to upper left area above table, parented to main frame so it moves with the window
Info panel - Stays in upper right area above table
Craps window - Now properly included in scale slider changes and refreshes display after scaling
Sub-windows - Roll call panel stores offset when dragged to maintain relative position
v1.6.45 - Major craps UI changes:
Bet displays - All bets now show numbers (no colored dots), increased font size by 2pts
Pass Line - Betting area now only on bottom bar (not L-shaped)
Roll Dice button - Moved to left side of action bar
Auto shooter removed - Host must manually assign shooter when players join
Roll Call/Players panel - Locked to parent window (not draggable), positioned on left side
Table image - Raised up with gap above action bar
Bet bar - Moved right by 1.25x width (81px), layered over table image
Point box - Moved left over table image (bottom-right of table)
v1.6.46 - Pass line texture now displays at full size (not cropped). The button click area is still the bottom bar only, but the entire pass_line.tga image is shown overlaying the table at the correct position.
v1.6.48 - UI repositioning:
Pending requests panel - Now appears centered in the game window
Info panel (player balances) - Moved to left side where roll call was
Roll call panel - Now positioned to the right of the info panel
Bet window - Left edge now intersects/aligns with table image's left edge
v1.6.49 - Pass line button field adjusted:
Top of button now starts just below the don't pass button (y=487)
Left edge cropped past the curve (starts at x=285)
Button is now a smaller rectangle in the straight bottom section
Pass line texture still displays in full (unchanged)
v1.6.50 - Shooter system overhaul:
Removed "Assign Shooter" button - No longer needed
Auto-assign first shooter - First player to join the table automatically becomes the shooter
Added "Skip Shooter" button - Players can skip their turn as shooter when not actively rolling
Button shows for players who are at the table
Hidden when player is actively the shooter (during come-out or point phase)
Skipping moves the player to the end of the shooter rotation
Shooter broadcast on join - When first player joins, shooter assignment is broadcast to all clients
v1.6.51 - Don't Pass button contracted:
Button now covers only the bottom bar portion (y=429, height=58)
Left edge cropped where don't pass meets big 8 (starts at x=343)
Texture still displays in full, only the clickable hitbox is reduced
v1.6.52:
Refresh button - Added next to the Back button (↻ symbol), calls UpdateDisplay and prints confirmation
Don't Pass texture - Now displays in full (uncropped) like Pass Line, while the clickable hitbox remains contracted to the bottom bar only
v1.6.53:
Refresh button - Now uses the refresh_icon texture (same as other games) instead of text
Skip shooter logic updated:
Players can skip as shooter anytime before they roll the dice
Once dice are rolled, skip button hides - must seven-out to pass
Seven-out automatically passes shooter to next player and resets the "has rolled" flag
New state variable shooterHasRolled tracks whether current shooter has rolled
v1.6.55:
Fixed skip shooter error - Changed SendToHost to SendWhisper(self.currentHost, ...) which is the correct method
Roll Call panel - Now dynamically resizes height based on player count (30px header + 18px per player)
Players panel (for non-hosts) - Same dynamic resizing as roll call, expands/contracts based on player count
Player Balances panel (host's view) - Already had dynamic height from v1.6.54, now supports up to 12 players
v1.6.56:
5 second cooldown between rolls - After each roll, shooter must wait 5 seconds before rolling again. This gives players time to place/adjust bets. If they try to roll early, they get a message showing remaining time.
Player Balances colors fixed - The host's Player Balances window now correctly assigns and displays player colors using the same PLAYER_COLORS array and sorted order as the Roll Call panel. Players are sorted by name and assigned colors consistently.
v1.6.58:
Deleted background.tga - Removed the unused inert background texture file from the craps textures folder
Reduced window width - Changed FRAME_WIDTH from 1000 to 850 pixels to compensate for the removed background space on the left side of the window
v1.6.60 - Reduced bet piece opacity from 75% to 65% (10% more translucent).
v1.6.61:
Bet pieces flush right - Moved betting frame to flush against the right edge of the game window (removed 10px margin)
Point puck repositioned - Moved from overlaying the bet pieces to above the betting frame (anchored to TOPRIGHT of betting area)
Reduced window width - Changed from 850 to 750 pixels
Increased table scale - Bumped from 80% to 90% to better fill the narrower window
v1.6.62 - Shifted the betting frame right by 14% of its width so the proposition bets (rightmost content at x=1017 in the 1200px image) align close to the right edge of the window.
v1.6.63 - Moved point puck to be positioned above the proposition bets area (200 pixels right of center of betting frame).
v1.6.64 - Added Scrimshaw dice set:
New dice textures - Added Textures/dice/scrimshaw/ folder with die_1.tga through die_6.tga (96x96 dice faces)
Dice Style settings - Updated the Settings panel with a new "Dice Style" selector:
Numeric - Shows plain numbers (default, like before)
Scrimshaw - Shows the beautiful bone-carved dice textures
Point puck - Updated to show the point number as text (since points like 8, 9, 10 aren't single die faces)
Dice display - The dice in the control bar now show the selected texture style when you roll
Live updates - Selecting a new dice style immediately updates the display if dice are showing
v1.6.65 - Major craps flow overhaul:
Settings dice preview - Now shows die_1 instead of die_5
Lock-in after every roll - After each dice roll, game returns to a 30-second betting phase
Players can place/modify bets during this window
All players must lock in (or timer expires) before next roll
Betting disabled when locked - Once you lock in:
Chip selector hides
Clicking bet areas shows "Bets are locked!" message
Must wait for next betting phase
Betting timer display - Shows countdown in info panel:
Green when >10 seconds
Yellow when ≤10 seconds
Red when ≤5 seconds
Point puck on table - Now positions directly over the point number (4, 5, 6, 8, 9, 10) on the table like real craps
Hidden when point is OFF
Shows white "ON" marker over the established point
Reduced window height - From 650 to 550 pixels (less empty space above table)
Seven-out also starts new betting phase - After shooter change, betting timer starts for the new round
v1.6.66 - UI and window management fixes:
Host info panel expanded - Increased height from 140px to 175px to fully contain the risk line
Deny button restyled - Now uses the same red X texture as the close button (UI-StopButton) instead of text, for visual consistency
ESC key closes all craps windows - Added all craps frames to the EscapeHandler:
ChairfacesCasinoCraps (main window)
CrapsShooterPanel
CrapsPlayerListPanel
CrapsRollCallPanel
CrapsAllBetsPanel
CrapsBuyInPanel
CrapsHostSettingsPanel
CrapsReceiptPopup
CrapsPendingJoinsPanel
Craps closes when other windows open - Opening Lobby, Blackjack, Poker, or HiLo now closes the craps window and all its sub-windows
Hide method closes all sub-windows - Updated Craps:Hide() to close all panels including shooter panel, player list, roll call, all bets panel, and receipt popup
v1.6.67 - Pending requests panel updated:
Changed checkmark icon to ALLOW button (green, 55px wide)
Changed X icon to DENY button (red, 50px wide)
Widened panel from 220px to 280px
Widened rows from 200px to 260px to accommodate the new button labels
v1.6.68 - Updated dice style navigation in Settings to use arrow texture:
Replaced text "<" and ">" with the arrow_right.tga texture (same as leaderboard)
Left arrow uses flipped texture coordinates (SetTexCoord(1, 0, 0, 1))
Arrow size is 14x14 pixels, centered in the 24x24 button
v1.6.69 - Multiple craps fixes:
Bet window hidden after lock-in - Chip selector now only shows during BETTING phase when player is NOT locked in
ON puck positioned above numbers - Point puck now displays outside/above the betting number boxes (y = -10 in image coords) instead of overlapping them
Timer display in upper right corner - New timer frame (120x50px) in top-right corner shows:
"Betting" label with countdown in seconds
Color-coded: green (>10s), yellow (≤10s), red (≤5s)
Client-side timer countdown - Clients now run their own countdown timer after receiving BETTING_PHASE message, so the timer displays properly for all players
Arrow textures for all settings navigation:
Card Deck selector: uses arrow_right.tga (flipped for left)
Card Back selector: uses arrow_right.tga (flipped for left)
Dice Style selector: already updated in previous version
v1.6.70 - Settings persistence and tooltip improvements:
Dice style is now persistent - Added diceStyle to the defaults table in Core.lua, ensuring it's properly saved and loaded between sessions
Bet button tooltips show current bets - When hovering over any bet area, the tooltip now shows:
Standard bet info (payout, odds, rules)
A "Current Bets:" section listing all players with bets on that spot
Player names shown in their assigned color
Bet amounts displayed next to each player name
v1.6.72 - Fixed tooltip error: Changed CS:GetPlayerColor(bet.name) to use self.playerColors[bet.name] since player colors are stored on the UI object, not on CrapsState.
v1.6.73 - Fixed betting phase not returning chip selector:
StartBettingTimer() (host): Now resets lockedIn = false for ALL players when a new betting phase begins
HandleBettingOpen() (client): Also resets local player's lockedIn status
The chip selector should now properly reappear when a new betting phase starts.
v1.6.74 - Fixed tooltip color handling. The playerColors table stores RGB values as tables ({r=0.2, g=0.8, b=1.0}), not hex strings. Now properly extracts color.r, color.g, color.b values.
v1.6.77 - Two fixes:
Reset confirmation popup - Host reset button now shows "Are you sure you want to reset the game? This will end the current session for all players." with Yes/Cancel buttons, matching the other games.
Fixed hardway payouts:
Hard 6 & Hard 8: Now 10:1 (was 9:1)
Hard 4 & Hard 10: Now 8:1 (was 7:1)
v1.6.78 - Added per-round breakdown and persistent roll history log:
Round Breakdown:
After each roll, players now see a detailed breakdown of each bet result:
"Pass Line wins 20"
"Field loses"
"Hard 6 wins 100"
Then shows the total: "Total: +40g" or "Total: -15g"
Log Button & Panel:
New "Log" button on far right of action bar (Reset moved left to make room)
Click to open scrollable history panel showing last 50 rolls
Each entry shows:
Timestamp
Dice values and total (e.g., [3+4=7])
Result (natural, craps, point_hit, seven_out, point_set)
Per-player winnings with bet breakdown
Color-coded: green for wins, red for losses, blue for point set
Log persists between sessions (saved to database)
Panel appears to the right of the craps window
v1.6.80 - Replaced Unicode icons with proper textures in Roll Call panel:
New Textures Added:
checked.tga - Green checkmark (flipped vertically) for locked-in players
unchecked.tga - Gray circle for players not yet locked in
dice_icon.tga - 32x32 scaled minimap icon to mark the shooter
Roll Call Panel Changes:
Check/uncheck status now uses texture icons instead of ✓/○ text
Shooter indicator now uses dice_icon texture instead of 🎲 emoji
Host sees check icons + dice icon for shooter
Players see dice icon for shooter (no check icons)
Roll button text changed from "🎲 ROLL DICE" to "ROLL DICE"
v1.6.81 - Updated Roll button with dice icons:
Roll button now shows: [dice icon] ROLL [dice icon]
Uses 24x24 dice_icon textures on left and right sides
Text changed from "ROLL DICE" to just "ROLL" in the center
v1.6.84 - Two fixes:
Betting Timer Extended:
Changed from 30 seconds to 60 seconds (1 minute)
Chip Selector Visibility Fix:
Now shows chip selector during COME_OUT and POINT phases as well, as long as betting time remains
This fixes the issue where chip selector wouldn't appear after the opening roll
Uses bettingTimeRemaining > 0 to determine if betting is still open
v1.6.85 - Three fixes:
Checkmarks Clear Each Betting Phase:
When a new betting phase starts, ALL players' lockedIn status is reset to false
This clears the checkmarks at the start of each new betting round for both host and clients
Log Recording for Clients:
Added robust BJ.db initialization in AddLogEntry to ensure the database exists
Clients should now properly record roll history in their local log
Roll Call Panel Visibility:
Host's Roll Call panel now stays visible during all game phases (not just betting)
Same behavior as the Players panel for non-hosts
Panel shows whenever there are players at the table and game is not idle
v1.6.86 - Fixed betting restriction after opening roll:
The issue was that after a roll, clients receive the roll result which sets their phase to COME_OUT or POINT before the BETTING_PHASE message arrives. The bet button click handler was only checking for CS.PHASE.BETTING.
Fix: Updated OnBetButtonClick to allow betting during:
BETTING phase (as before)
COME_OUT or POINT phases if bettingTimeRemaining > 0
This matches the same logic used for the chip selector visibility, ensuring players can bet whenever the betting timer is active.
v1.6.87 - Added lock icon texture to Lock In button:
20x20 lock icon on the left side of the button
Text "Lock In" positioned to the right of the icon
Replaced Unicode checkmark with proper texture
v1.6.88 - Fixed Place/Come/Don't Come bets being blocked during betting phase after point established:
The Issue:
The CanPlaceBet function was checking game phase to determine which bets are allowed:
Come-out phase (no point): Pass/Don't Pass
Point phase: Place bets, Come, Don't Come, Odds
v1.6.89 - Removed incorrect restriction on Place bets for the point number. Players can now Place bet on any number including the current point, which is allowed in real craps.
v1.6.90 - Fixed Lock In button visibility:
The Lock In button now uses the same logic as chip selector and bet validation:
Shows during BETTING phase
Also shows during COME_OUT or POINT phases if bettingTimeRemaining > 0
This ensures the Lock In button appears consistently whenever betting is allowed, so players can always skip the betting timer when ready.
v1.6.91 - Two fixes:
1. Place/Come/Don't Come bet settlement:
Place bets: Now properly clear and return original bet + profit on win (was only adding profit)
Don't Come bets: Added complete settlement logic that was missing:
Wins on 2 or 3 (1:1 payout + return bet)
Pushes on 12 (bar 12 - bet returned)
Loses on 7 or 11
Moves to point on other numbers
Don't Come on points: wins on 7, loses when point rolls
2. Lock In button position:
Moved from offset 140 to 170 to avoid overlapping with the Roll button (150px wide)
v1.6.92 - Moved Lock In button to the right side, positioned to the left of the Cash Out button (at RIGHT offset -170).
Presented file
v1.6.93 - Roll command now only works during rolling phases:
Changes:
Shooter's pending roll - Added phase check to cancel pending rolls if phase changes during roll processing (e.g., if someone rolls during betting phase, it gets ignored and state is cleared)
Host roll detection - Added ROLLING phase to valid phases and now clears partial roll state (hostRollDie1, hostRollDie2) if someone rolls outside valid phases
Rolls are now only processed during COME_OUT, POINT, or ROLLING phases. Rolling during BETTING or other phases will be ignored.
v1.6.94 - Version compatibility checking for craps multiplayer:
When a table opens:
Host now broadcasts their version in the TABLE_OPEN message
Players with older versions see a warning: "WARNING: Host is running v1.6.94 but you have v1.6.xx. Please update to join this table!"
v1.6.95 - Fixed Lock In button click handler:
The issue was that the phase is POINT (not BETTING) when a point is established, but there's still a betting timer running. The click handler was only checking for CS.phase == CS.PHASE.BETTING.
Now the Lock In click uses the same logic as the button visibility:
Allows lock in during BETTING phase
Also allows lock in during COME_OUT or POINT phases if bettingTimeRemaining > 0
v1.6.96 - Gold/Silver currency formatting:
Added two helper functions in Core.lua:
BJ:FormatGold(amount) - Returns "1097g 10s" format
BJ:FormatGoldColored(amount) - Returns colored version with gold (yellow) and silver (gray)
Updated all gold displays throughout the addon to use the new format:
Player balances
Bet amounts
Winnings/losses
Table min/max/bank
Join buy-ins
Cash out receipts
Floating combat text
Examples:
1097.1 → 1097g 10s
50 → 50g
0.75 → 75s
Amounts are rounded to the nearest silver (0.01g). No more decimal gold like "1097.1g".
v1.6.98 - Simplified balance logging:
Simple balance log stored in ChairfacesCasinoSaved.crapsBalanceLog:
Logs time, player name, balance, and a short note
Entries logged when: player joins, balance changes after a roll, player cashes out
Keeps last 100 entries
Auto-saves to SavedVariables
Example entries:
{time = "14:32:15", player = "Gametester", balance = 1000, note = "Joined"}
{time = "14:33:22", player = "Gametester", balance = 1050, note = "Roll 7"}
{time = "14:45:00", player = "Gametester", balance = 1200, note = "Cashed out"}
v1.6.99 - Fixed Place bet clearing:
Bug: Place 6 bet wasn't cleared when the shooter hit the point (rolled 6).
Cause: ProcessRollLocal (client-side bet clearing) only cleared Place bets on 7 (lose), but didn't clear them when the number was hit (win).
Fix: Now clears the specific Place bet when that number is rolled:
Roll 7 → All Place bets cleared (lose)
Roll any other number → That specific Place bet cleared (win)
v1.6.100 - Cash Out button visibility fix:
Added isHost check to Cash Out button visibility (host/bank should never see Cash Out)
Restructured the visibility logic to be more explicit and robust
Button now shows only when ALL conditions are met:
Player exists in game state
Player is not the host (bank)
Player is not a spectator
Player is not the active shooter during rolling phase
Player has no active bets on table
v1.6.101 - Fixed Come/Don't Come bet clearing in ProcessRollLocal:
The client-side bet clearing function wasn't handling Come and Don't Come bets at all. Now properly clears:
Come bets:
Cleared on 7/11 (win)
Cleared on 2/3/12 (lose)
Cleared when moving to a point (4,5,6,8,9,10)
Come point bets cleared when that number is hit (win) or on 7 (lose)
Don't Come bets:
Cleared on 7/11 (lose)
Cleared on 2/3 (win)
Cleared on 12 (push - returned)
Cleared when moving to a point
Don't Come point bets cleared when that number is hit (lose) or on 7 (win)
v1.6.102 - Table close receipts for all players:
When the host closes the table:
All players with a remaining balance receive a receipt popup showing their start balance, end balance, and net win/loss
Host sees a summary in chat for each player returned
Players see "Table closed - your balance: X" in chat (different message from voluntary cash out)
Balance logged to ledger with "Table closed" note
Players don't get removed individually (table close resets everything anyway)
v1.6.103 - Added status bar like 5 Card Stud:
Layout Changes:
Raised betting pieces from y=65 to y=90 to make room
Added status bar (25px tall) just above the action bar
Status Bar Features:
Gold bar with dark background, positioned above action buttons
Shows contextual messages based on game state:
"Welcome to Craps!" when no table open
"Waiting for players to join..." (host idle)
"Place your bets! Xs remaining" (betting phase with timer)
"You're the shooter! Roll for a come-out!" (shooter in come-out)
"[Name] is rolling come-out..." (other players)
"Point is X - Roll to hit it!" (shooter in point phase)
"[Name] rolling for point X" (other players)
Roll Result Messages (with color coding):
"Natural X! Pass Line wins!" (green)
"Craps X! Pass Line loses!" (red)
"Point is X!" (blue)
"Point hit! X! Winner!" (green)
"Seven out! Shooter loses!" (red)
"Rolled X - Keep rolling!" (gold)
v1.6.104 - Fixed Come/Don't Come bet double-resolution bug:
The Problem:
When you placed a Come bet and rolled an 8, the bet would:
Move to point 8 ✓
Immediately evaluate against the same roll of 8 and win ✗
v1.6.105 - Updated receipt popup with "Casino Owes" line:
The receipt now shows:
Player: [name]
Buy-in: [starting balance]
Final Balance: [ending balance]
Net Win/Loss: [+X or -X]
─────────────────
Casino Owes: [final balance] ← New line showing payout amount
The popup is also slightly taller (220px vs 200px) to accommodate the new line.
v1.6.107 - Host Recovery System (like Blackjack):
How it works now:
Host Disconnects:
Game immediately PAUSES for all players
First online player becomes "temporary host" (holds state but can't roll)
All players see a popup: "GAME PAUSED - Waiting for [host] to return"
2-minute countdown timer begins
During Pause:
Players cannot place bets ("Game is paused - waiting for host to return")
Shooter cannot roll dice
Timer counts down with 10-second sync ticks
Temporary host has a "Void Now" button if they want to end early
Host Returns:
Host automatically regains control when they reconnect
Broadcasts "HOST_RESTORED" to all players
Popup closes, game resumes
If betting phase was active, timer resumes
Status bar shows "Host returned! Resuming..."
Host Doesn't Return (2 min timeout):
Game is VOIDED
All state is reset (players keep the gold they were owed via balance log)
Saved session is cleared
Key Features:
No permanent host transfer (unlike v1.6.106)
Players stay connected throughout
All player state (balances, bets) preserved during pause
Session auto-saved when host disconnects
Works the same as Blackjack's system
v1.6.108 - Chip Textures Integration:
New Chip Textures:
Added 9 chip textures to Textures/chips/: 1g, 2g, 5g, 10g, 25g, 50g, 100g, 500g, 1000g
All chips are 64x64 TGA files
Chip Selector Changes:
Only uses valid denominations: 1, 2, 5, 10, 25, 50, 100, 500, 1000
Chip buttons now show actual chip textures instead of text
Green highlight glow shows selected chip
Tooltip on hover shows "Xg chip"
Dynamically filters chips based on table min/max bet
Bet Display Changes:
Bets on the table now show stacked chip textures instead of numbers
Chips are broken down into proper denominations (e.g., 27g = 25g + 2g chips)
Up to 5 chips shown per stack
Player's color subtly tints their chips
Small amount text below each stack
Multiple players' bets spread horizontally across betting areas
BreakIntoChips() Function:
Converts any amount into optimal chip denominations
Goes from largest to smallest (greedy algorithm)
Example: 137g → 100g + 25g + 10g + 2g
v1.6.109 - Increased chip selector size:
Chip buttons now 64x64 (up from 48x48) to match full texture size
Frame width 80px (up from 75px)
Spacing increased to 68px between chips
Table stacks unchanged (still 20x20 chips)
v1.6.109 - Increased chip selector size:
Chip buttons now 64x64 (up from 48x48) to match full texture size
Frame width 80px (up from 75px)
Spacing increased to 68px between chips
Table stacks unchanged (still 20x20 chips
v1.6.111 - Added Sound Effects:
Dice Roll Sound:
Added Craps:PlayDiceSound() function
Plays dice.mp3 on every roll result
All players hear it when shooter rolls
Chips Sound:
Added Craps:PlayChipsSound() function
Plays chips.ogg when any player locks in their bets
All players hear it (sound triggers on receiving lock-in message)
Cleanup:
Removed broken reference to UI.Lobby:PlaySound("dice") which didn't exist
Trixie reactions still play appropriately for wins/losses
v1.6.112 - SFX Toggle Integration:
Both PlayDiceSound() and PlayChipsSound() now check UI.Lobby.sfxEnabled before playing. When SFX is toggled off in the main lobby settings, craps sounds are silenced too.
v1.6.113 - Come/Don't Come Point Display Fix:
Problem: When Come/Don't Come bets moved to a point number (e.g., "Come bet moves to 5"), the chip stacks weren't displaying on the Place bet buttons and the bets appeared lost.
Fix: Updated UpdateDisplay() to include comePoints and dontComePoints in the bet totals shown on Place buttons (place4, place5, place6, place8, place9, place10). Now when a Come bet moves to point 5, the chip stack will appear on the Place 5 button.
Also fixed: Updated ShowBetTooltip() to properly show:
Come bets that moved to points (labeled as "Come->5", "Come->6", etc.)
Don't Come bets that moved to points (labeled as "DC->5", "DC->6", etc.)
Place bets and hardway bets now properly look up their nested data structures
v1.6.116 - Chips Sound Only on New Bets:
Added player.betsAddedThisRound flag:
Reset to false when betting opens (HandleBettingOpen, HandleBettingPhase)
Set to true when a bet is confirmed (HandleBetConfirm)
Chips sound only plays on lock-in if betsAddedThisRound is true
This means players with existing bets from previous rounds who don't add any new bets will lock in silently.
v1.6.117 - Larger Field Chips:
Added optional scale parameter to CreateChipStack() function
Field bet chips now display at 1.5x scale (30px instead of 20px)
Stack offset also scales proportionally for proper stacking appearance
v1.6.118 - All table chips now display at 2x scale (40px instead of 20px).
v1.6.119 - Come/Don't Come Point Bets Sync Fix:
Problem: When Come/Don't Come bets moved to point numbers (e.g., "Come bet moves to 5"), the chip stacks weren't displaying on the Place buttons because comePoints and dontComePoints weren't being synced to other clients.
Fixed:
BroadcastPlayerBets - Now includes comePoints and dontComePoints (and their odds) in the bet sync message, serialized as comePoint5:10, comePointOdds5:20, dontComePoint8:15, etc.
HandleBetSync - Now parses these new bet types and properly reconstructs the comePoints and dontComePoints tables with {base, odds} structure on receiving clients.
Now when a Come bet moves to point 5, all players will see the chip stack appear on the Place 5 button.
v1.6.120 - Client Come/Don't Come Bet Movement Fix:
Problem: Clients (non-hosts) weren't seeing their Come/Don't Come bets move to point numbers. The host processed bets correctly, but ProcessRollLocal() (used by clients) was just clearing the bets instead of moving them.
Fixed in ProcessRollLocal():
Come bets now properly move to comePoints[total] when a point number is rolled (instead of just being cleared)
Don't Come bets now properly move to dontComePoints[total] when a point number is rolled
Now both host and clients will see Come/Don't Come bets move to their respective point numbers on the Place buttons.
v1.6.121 - Fixed Local Player Come Bet Display Bug:
Root Cause: In ProcessRollLocal(), after moving a Come bet to comePoints[total], the code then immediately checked if comePoints[total] existed and cleared it (since it was processing "come point bets that hit their number"). This meant the bet was moved and then immediately deleted on the same roll.
Example before fix:
Player has 10g Come bet
Roll of 5
comePoints[5] = {base: 10} created
Then if bets.comePoints[5] then bets.comePoints[5] = nil clears it immediately
Fix: Added comeMoved and dontComeMoved tracking flags. When a Come/Don't Come bet is moved to a point on this roll, the subsequent "clear hit come points" logic skips clearing that specific point.
Now clients will correctly see their own moved Come/Don't Come bets displayed on the Place buttons.
v1.6.122 - Two major changes:
1. Point Hit Returns All Bets on Place Numbers:
When the shooter wins (point hit), ALL bets on place numbers (4,5,6,8,9,10) are now returned to players:
Place bets are returned (no profit, just the original bet)
Come point bets are returned (bet + any odds)
Don't Come point bets are returned (bet + any odds)
Messages show "Place X returned", "Come X returned", etc.
This applies to both host's CalculateSettlement and client's ProcessRollLocal.
2. Right-Click to Remove Place Bets:
Right-click any Place bet button (4,5,6,8,9,10) during betting phase to remove your bet
Bet amount is returned to your balance
Only works during betting phase and before locking in
Tooltip now shows "Right-click to remove bet" hint for place bets
New message types: BET_REMOVE_REQ and BET_REMOVE_OK
New functions: CS:RemoveBet(), CM:RequestRemoveBet(), handlers
v1.6.124 - Fixed Session Restore Reconnection
The Bug: The reconnect check was in the wrong place. HandleJoinRequest is what handles JOIN_REQUEST messages from players, but it was going through the normal join flow instead of checking for reconnecting players first.
The Fix: Updated HandleJoinRequest to check if the sender is a reconnecting player from a restored session BEFORE processing as a normal join request. If they are:
Calls CS:HandlePlayerReconnect(senderName) to restore their saved data
Sends JOIN_APPROVE with their restored balance (not the buy-in they entered)
Broadcasts PLAYER_JOIN with restored balance
Auto-finalizes restoration when all players have reconnected
Flow now works correctly:
Host clicks "Restore" → session restored, notifications sent to players
Player clicks "Join Table" (enters any buy-in - it's ignored)
Host receives JOIN_REQUEST, sees player is in restoredPlayers, uses their saved balance instead
Player receives JOIN_APPROVE with correct restored balance
v1.6.125 - Fixed Session Restore Panel and Order of Operations
Changes:
When all players reconnect (pendingCount == 0), the pending reconnects panel is now explicitly hidden immediately after calling FinalizeRestoration()
Reordered code so UI updates happen AFTER finalization completes (ensures isRestoring is cleared before panel update checks)
The flow now:
Player reconnects → HandlePlayerReconnect() removes them from restoredPlayers
If pendingCount == 0:
Print "All players reconnected!"
Call FinalizeRestoration() which clears isRestoring
Explicitly hide the panel
Update panel and display (panel will stay hidden since isRestoring is now nil)
v1.6.126 - Fixed Session Restore to Start Betting Phase
Changes:
FinalizeRestoration() now always sets phase to BETTING (instead of COME_OUT or POINT based on saved state) - this gives players a chance to place bets before rolling
When all players reconnect: After calling FinalizeRestoration(), the host now broadcasts BETTING_PHASE message to start the betting timer for all players
When host clicks "Continue Without": Same behavior - after finalization, broadcasts BETTING_PHASE to start the game properly
Flow now:
Host restores session → Waiting for reconnects panel shown
Players reconnect (or host clicks Continue Without)
FinalizeRestoration() sets phase to BETTING
Host broadcasts BETTING_PHASE with timer
All players see betting phase start with countdown
Game proceeds normally
v1.6.127 - Fixed nil sessionBalance error
The Bug: When players reconnected via session restore, the sessionBalance field wasn't being set in their player data, causing a nil error when SettleRoll tried to add winnings to it.
Fixes:
Added sessionBalance = restored.sessionBalance or 0 to HandlePlayerReconnect()
Made sessionBalance access defensive in SettleRoll: (player.sessionBalance or 0) + winnings
Made sessionBalance access defensive in game history: player.sessionBalance or 0
v1.6.129 - Reduced Chip Selector Size
Changes:
Frame width: 80px → 50px
Frame height: 350px → 250px (base)
Chip button size: 64px → 40px
Chip spacing: 68px → 44px
Highlight border: 4px → 3px
Adjusted padding/margins to be more compact
The chip selector bar should now be much more compact while still showing the chip textures clearly.
v1.6.130 - Fixed Chip Selector - Full Size Textures
Changes:
Button hitbox: 40px (smaller for tighter spacing)
Chip texture: 64px (full size, centered on button)
Spacing: 44px between buttons
Highlight now anchors to the texture, not the button
The chip textures will now display at their full 64px size while the buttons are spaced more compactly (44px apart instead of 68px). The textures will overlap slightly which creates a nice stacked appearance.
v1.6.131 - Horizontal Chip Selector
Changes:
Chip selector is now horizontal (left to right layout)
Frame size: 250x70 (wide and short)
"Bet:" label positioned on the left
Chips arranged horizontally with 44px spacing
Positioned to the right of the Player Balances panel
Tooltips now appear above the chips (ANCHOR_TOP)
Frame width auto-adjusts based on number of chips
v1.6.132 - Fixed Chip Selector Position
Changed the anchor from SetPoint("LEFT", self.playerListPanel, "RIGHT", 5, 0) to SetPoint("TOPLEFT", self.playerListPanel, "TOPRIGHT", 5, 0) so the chip selector's top-left corner aligns with the player list panel's top-right corner. This places it horizontally to the right of the players window instead of below it.
v1.6.132 - Fixed Chip Selector Position
Changed the anchor from SetPoint("LEFT", self.playerListPanel, "RIGHT", 5, 0) to SetPoint("TOPLEFT", self.playerListPanel, "TOPRIGHT", 5, 0) so the chip selector's top-left corner aligns with the player list panel's top-right corner. This places it horizontally to the right of the players window instead of below it.
v1.6.134 - Golden Underline for Selected Chip
Changed the selection indicator from a green highlight box to a bold golden underline:
54px wide, 4px thick gold bar (RGB: 1, 0.84, 0)
Positioned just below the chip texture
Shows/hides cleanly when selecting different chips
v1.6.135 - Underline width reduced to 30px.
v1.6.137 - Added addon icon
Added ## IconTexture: Interface\Icons\INV_Misc_Dice_02 to the TOC file. This will show a dice icon next to your addon in the addon list instead of the red question mark.
Added ## IconTexture: Interface\Icons\INV_Misc_Dice_02 to the TOC file. This will show a dice icon next to your addon in the addon list instead of the red question mark.
Removed:
Textures/illidan_card_frames.tga
decreased texture size of icon.tga and on_puck.tga
Added Caribbean Stud files:
CaribbeanState.lua - Game state and logic
CaribbeanMultiplayer.lua - Network communication
UI/CaribbeanFrame.lua - User interface
Modified files:
Chairfaces Casino.toc - Added the three Caribbean files to the load order
Core.lua - Added initialization for Caribbean multiplayer and UI, plus added Caribbean to the game link handler
EscapeHandler.lua - Added ChairfacesCasinoCaribbean frame registration
UI/Lobby.lua - Made these changes:
Converted the Caribbean button from disabled placeholder to active button
Added Caribbean to IsAnyGameActive()
Added Caribbean to IsOtherGameActive()
Added Caribbean to GetGameName()
Added Caribbean to IsGameInSession()
Added Caribbean to UpdateGameButtons()
Added Caribbean to ApplyWindowScale()
Here's your updated addon (v1.6.143) with the following fixes:
Version updated: TOC now shows 1.6.143 (was 1.6.139, filename was 1.6.142)
Caribbean Stud button styling: Now matches other game buttons with:
Green text (|cff00ff00Caribbean Stud|r) instead of white
GameFontNormalLarge with 16pt outline font
King of Diamonds card icon on the left
Ace of Clubs card icon on the right
Proper vertical positioning for the text and subtext
Reload button for Caribbean Stud: Added a RELOAD button that:
Appears in the bottom-right corner of the game window during the settlement phase
Only visible to the host
Starts a new round with the same ante amount
The CLOSE button moves to bottom-left during settlement so both buttons are accessible
Here's version 1.6.144 with the chat link fix.
The issue was that the game links used garrmission as the link type, which is a valid WoW hyperlink type that triggers WoW's internal garrison mission UI handlers before our custom handler could run.
I changed the approach to use a custom link type casinolink and hook SetItemRef directly (which handles all hyperlink clicks before WoW processes them). This ensures our handler runs first and properly opens the Caribbean Stud game window when clicking the link.
Here's version 1.6.145 with these fixes:
Back and Refresh buttons added - The Caribbean Stud title bar now has:
A refresh icon button (same style as other games) that refreshes the window
A "Back" button that returns to the lobby
Phase transition fix - The OnCardsDealt function now properly calls UpdateDisplay():
Immediately when cards are dealt (to update status)
After animations complete (with a timer to show the fold/raise buttons)
The issue was that when card animations were queued, UpdateDisplay() was never called, so the fold/raise buttons never appeared. Now it updates the display both immediately and after the animation delay.
Here's version 1.6.146 with both fixes:
Card flash fixed - Cards no longer flash before the deal animation. The OnCardsDealt function now:
Sets isAnimating = true and dealtCards[myName] = 0 immediately
Explicitly hides all existing cards before starting animations
Only updates the status bar text, not the full display
Waits until all animations complete before calling UpdateDisplay() and showing the fold/raise buttons
Fold/Raise buttons centered - The button area is now positioned at BOTTOM of the frame with offset 55, centered horizontally. The buttons are positioned RIGHT and LEFT of the center point with a 10px gap between them.
Here's version 1.7 with:
Version updated to 1.7
Craps now shows "|cffffcc00Beta|r" (yellow/gold color) instead of "Play Now!"
Caribbean Stud now shows "|cffff6600Alpha|r" (orange color) instead of "Play Now!"
Done! Craps is now linked to the session system like all other games:
Added "craps" case to IsGameInSession() - checks CrapsState.phase against PHASE.IDLE and PHASE.SETTLEMENT
Added crapsActive variable to UpdateGameButtons()
Added craps to anyActive check so it affects all other game buttons
Added Craps button section in UpdateGameButtons():
Shows "Join Now!" (green) when craps is active
Shows "Table is Busy" (yellow) when another game is active
Shows "Beta" (yellow/gold) when no games are active