

// messages are left alone instead of being treated like casino commands.1.0.x while learning how version numbers should work.1.0.9, but the correct SemVer-style number is 1.6.0 because it added compatible new performance options.1.0.x labels in parentheses so people can still match them to the original Thunderstore releases.TurnChanged packet. All clients now receive current-turn changes for table prompts and green active-seat stool indicators.SeatTrigger, SeatAnchor, DealerAnchor, and Stool objects. This supports Unity prefab layouts where SeatTrigger is nested under a stool instead of being a direct table child.SeatTrigger index detection can now infer the seat from a parent Stool object, so both Stool (1)/SeatTrigger (1) and Stool (1)/SeatTrigger layouts work.Casino_TableInfoAnchor/Casino_TableInfoText hierarchy.[connID: 0]_player(name/Azrael) into readable names such as Azrael.SlotBetConfirm rejects extra pulls on an in-use machine with a countdown HUD prompt.Plugin.IsTypingInUI() so casino F-key interactions are blocked only while the player is actually typing.F in chat does not fire casino interactions.Plugin.ShowHUDOnce() suppresses casino HUD prompts when the local player is not actually in the casino, preventing host-side Sanctum HUD leakage while the casino scene remains loaded.CasinoLog wrapper around BepInEx logging. Routine Info, Debug, and Message output is suppressed on headless/dedicated server while warnings, errors, and fatal logs remain visible.HostCasinoVisibilityWatcher path, including batch mode, -nographics, and -server launch arguments._entity_recallPortal from leak cleanup so Map Loader's legitimate Sanctum recall portal is no longer destroyed after casino exit.BlackjackDebugCommands.cs by default behind the ATLYSS_CASINO_DEBUG_COMMANDS compile symbol. The old debug card/deck/table tools are preserved for later testing but are not part of regular builds./br for ready, /bd for deal/start, /bh for hit, /bst for stand, and /bl for leave./rb for placing bets, /rr for ready/standby, and /rc for clearing bets./rb d1, /rb d2, /rb d3 for dozens and /rb c1, /rb c2, /rb c3 for columns./rs alias mapped to roulette ready/standby for backwards compatibility.HostCasinoVisibilityWatcher to handle ATLYSS's additive scene behavior where the casino scene can remain loaded after the local player has returned to Sanctum.Plugin.IsLocalPlayerInCasino() became the shared gate for casino input and HUD behavior, preventing triggers from firing while the local player is outside the casino.Player.Network_playerMapInstance comparison against the casino MapInstance, which works with ATLYSS additive loading and overlapping world origins.SkinnedMeshRenderer body meshes.PlayerInventory.Network_heldCurrency directly from the host for blackjack bets, payouts, and other host-authoritative currency changes._entity_recallPortal from leak cleanup. That object is a legitimate Map Loader recall portal, and destroying it was the real cause behind the earlier 1.0.3 "harmless" MapInstance.Handle_VisualSettings NullRefs.HostCasinoVisibilityWatcher.Info to Debug.HCVW.cs.500x the bet, with other payout rows increased to match the new table./tbet, /rstandby, and /rleave./slotbet -> /sbet, /sb./blackjackbet -> /bjbet, /bjb, /bb; /ready -> /rdy, /rd; /start -> /deal, /begin; /hit -> /h; /stand -> /stay, /st; /leave -> /lv, /l./tbet -> /tb; /rclearbets -> /rclear, /rcb, /rcl; /rstandby -> /rready, /rsb, /rs; /rspin -> /rsp; /rleave -> /rl, /rlv./casinohelp -> /chelp, /ch./casinohelp, README, and changelog content to better reflect the current command set and previous release changes.Plugin.ScopeToCasinoScene helper that explicitly binds runtime-instantiated GameObjects to the casino scene at spawn time, so they're properly destroyed when the casino unloads instead of orphaning into whatever scene was active on the host's machineRPlayerLeft to all clients when an abruptly-disconnected player is evicted by the host's 1Hz polling. Previously the host would clear the ghost locally but never tell other clients, leaving phantom seats lingering on every other machine until they re-entered the casinoBlackjackSceneWatcher — runs immediately on casino scene unload, +1 frame later, and +1 second later. Catches casino objects (cards, slot machines, tables) that survive the unload event due to Mirror lifecycle quirks. Includes scanning the DontDestroyOnLoad scene where Mirror sometimes deposits orphaned NetworkIdentity'd objects/rleave which refunds normally)/leave or /rleave next time. If the player has fewer than 10 Crowns, drains to zero (never goes negative). Penalty applies even if no bet was at stake — strict by designRouletteTable.LeaveNoRefund(player) method and Forfeit flag on RLeaveTableRequest packet so the no-refund behavior works correctly for both lobby host and client walk-away pathsPLAYER_CARD_SCALE, DEALER_CARD_SCALE, and TABLE_SCALE_EXPONENT constants in BlackjackTable.csSTACK_OFFSET_FRACTION constant (0.20) controls how much each subsequent card peeks out from the previous one — easy to tweak from 0.10 (tight) to 1.00 (full spread, old behavior)SlotBet_Confirm) and blackjack seat triggers (SeatTrigger) now use a BoxCollider for detection if one is present on the GameObject, falling back to the previous fixed-radius behavior otherwise. Trigger zones automatically scale with their parent table — a 0.33x slot machine has a tiny detection zone, a 3x has a huge one, no code changes neededRouletteTrigger, EntryFee, and Exit for consistencyPlugin.ShowHUDInfo() and Plugin.ShowHUDError() helpers wrap messages in TextMeshPro rich-text color tags. All ~60 call sites across the casino code routed through these helpersPlugin.ShowHUD() lingering coroutine that re-fired prompts every 2.8 seconds for 8 seconds total. Manifested as visible text spam rather than the intended "longer-lasting prompt" effect. ShowHUD() and ShowHUDErrorLong() are kept as compatibility shims that now just delegate to single-shot ShowHUDInfo / ShowHUDErrorMapInstance.Handle_VisualSettings NullReferenceExceptions appear in the BepInEx log on entering the casino. These come from ATLYSS's own MapInstance script reading visual references that occasionally don't resolve in time. They don't affect gameplay. Will investigate further if they ever start firing more frequently than 4 per sessionBJNetcode.AmHost() now uses SteamMatchmaking.GetLobbyOwner directly (matching CodeTalker's own SenderIsLobbyOwner check) instead of relying solely on Player.Network_isHostPlayer reflectiontrue when host detection failed, which could cause clients to incorrectly behave as host and broadcast unauthoritative packets that get silently rejectedfalse (treat as client and send request packets to host) — safer behavior that prevents desync when reflection fails/slotbet, /blackjackbet, /rbet, etc.) — players no longer have to press Escape to dismiss the chat inputChatBehaviour.Send_ChatMessage was blocking the original method (which normally closes chat and re-locks the cursor), so SetChatFocusFalse() now tries ATLYSS's own close methods via reflection, with a fallback that manually clears _focusedInChat and forces Cursor.lockState = Locked + Cursor.visible = falseCasinoPatch setup logic that hooks slot machines, blackjack tables, and roulette tables previously ran exactly once, two frames after scene load. That worked for the host (whose scene is populated immediately) but failed for clients, whose scene contents arrive over the network slightly later, leaving the client with zero hooked objects despite the map appearing visually_entity_portal, _MapInstance, and _npc_Skrit GameObjects being saved as inactive prefabs with broken sceneId state, which prevented Mirror from properly replicating networked scene contents to clients — these are now active scene instances with valid sceneIdsTools → Casino → Inspect Scene NetworkIdentities) to detect and report missing or duplicate sceneIds before building the asset bundle, including options to force-assign missing IDs or wipe and reassign all of them as a last resort