Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
BazaarCasino
A multiplayer casino lounge with shared blackjack/roulette, 3D slots, native Hermit Crab racing, 1x/5x/10x Command-compatible item cases, gold broker and original BGM. Bigger Bazaar pricing integration.
| Date uploaded | 4 days ago |
| Version | 1.10.5 |
| Download link | SkyFall-BazaarCasino-1.10.5.zip |
| Downloads | 97 |
| Dependency string | SkyFall-BazaarCasino-1.10.5 |
This mod requires the following mods to function
bbepis-BepInExPack
Unified BepInEx all-in-one modding pack - plugin framework, detour library
Preferred version: 5.4.2121README
Bazaar Casino
A Casino Lounge in the Bazaar Between Time for Risk of Rain 2. Play shared blackjack and roulette with friends, pull animated slot machines, open weighted item cases, bet on the Hermit Derby, and sell items to the Lunar Broker for gold.
Play
- Enter the Bazaar through a blue portal. Find the glowing Casino Lounge doorway at the back of the dark alcove beside the Seer area; press E to enter.
- E on a table assigns a seat. Blackjack and roulette support up to eight players, sharing one dealer or wheel while keeping wagers and payouts separate.
- Top View / Seat View switches the fixed table camera. Stand up / Exit, ESC, or F6 releases the seat and restores movement/camera.
- E on a slot machine opens only that machine's slots. Adjust your wager on the physical panel below the reels, then click the 3D lever to spin. Its white outline appears on hover. E on the Lunar Broker opens only item selling. There is no separate private blackjack/roulette menu.
Games and gold
Blackjack: choose a scaled gold-chip denomination (minimum ×1/×2/×5/×10, shown as actual gold amounts, or −/+), then click Add gold or your own chip spot on the table. Each chip adds gold to the existing stake; right-click the spot removes one chip, or Refund all clears it. Further chips are allowed until the original 15-second betting countdown closes. Gold updates debit/refund only the difference, and the countdown does not restart. Committed gold appears beside each physical chip and as Wager paid in the player view, including the updated total after Double/Split. Cards appear on the table and in a readable screen overlay. Hit, Stand, Double, or Split on your turn. One split into two hands is allowed for matching ranks; double after split is supported. Split aces receive one card each. Dealer stands on all 17s. Natural blackjack pays 3:2; a split 21 pays the ordinary 1:1 win. Each hand has a 25-second timeout.
Roulette: select a scaled gold-chip denomination (actual gold amounts or −/+; no multiply/divide buttons) and click the actual 3D betting felt to place a chip. Right-click removes one. The first confirmed chip starts a 15-second countdown; Spin now starts sooner. All players share the same simulated ball and final pocket. Single zero, straight-number, outside, dozen, and column bets are supported. A number pays 36×, outside 2×, and dozen/column 3×, including the original stake.
Slots: three machines with a fixed cabinet view, wager/gold/exit controls drawn on the cabinet and picture reels, downward spin animation, lever and win/jackpot effects. Three Cherry/Lemon/Bell/Star/Seven/Moon symbols return 3×/5×/8×/12×/25×/60× the wager. A pair returns the wager. A machine is ready as soon as its reels stop; win effects do not delay another spin.
Lunar Cache: press E at the green machine on the door-side wall. The case reel, price, odds, gold and Open/Exit controls are on the cabinet itself. Choose 1×, 5× or 10× on the enlarged cabinet. The quoted batch price is the current scaled per-case cost multiplied by the count. Each purchased case has its own horizontal reel: 5× shows five stacked rows, 10× shows ten. Rows start and stop 0.06 seconds apart; every prize is revealed by 5.2 seconds, then one normal world pickup is ejected per case. The cabinet, display, collider and camera remain the same size/position for every batch. One or five reels are centered inside the same display that accommodates ten reels. Each winning item remains under its own central rarity marker. Walk over to collect it; with Artifact of Command enabled it becomes a Command essence of the rolled tier. Closing the view does not cancel a purchase, and reopening replays the receipt without buying again. Leaving the stage before a pending batch is dispensed refunds its total price; a failed individual drop refunds only that case. Default odds: 70% common, 27% uncommon, 3% legendary. Unavailable rarities are excluded and remaining chances renormalized. The reward pool uses the run's ordinary common/uncommon/legendary drop lists. Equipment, lunar/void/boss tiers, scrap, hidden items, WorldUnique/IgnoreForDropList items and survivor-only Belmont relics such as Crissaegrim are excluded. Command-blacklisted items are excluded while Artifact of Command is enabled. Ordinary modded droppable items remain eligible. Cost mirrors Bigger Bazaar's uncommon gold-shop settings/scaling when available; otherwise it uses a difficulty-scaled base 50. The host verifies the quoted price.
Hermit Derby: press E at the rear arena's betting desk. The four racers use RoR2's original Hermit Crab mesh, avatar, material and RunForward/BurrowIn/Burrowed/BurrowOut animations, loaded directly from the game. The persistent Back to bets, Track view, Top view, and Exit buttons remain accessible in every camera. Track view follows the pack; Back to bets returns to the physical desk, including during a race. Press V or the desk View control to toggle top view and the betting desk. The countdown/race status remains visible while watching. Select one of four Hermit Crabs, adjust the stake on the physical board and click BET. The first accepted wager starts a visible 15-second betting countdown. Crabs sprint and occasionally bury themselves, pausing before they emerge and resume. The BET button shows the gold committed (for example BET 500 GOLD). A separate line explains the potential return: 2,000 including the 500 stake, profit +1,500. Every player sees the same race; the host decides the finish and pays once. All four lanes have equal odds; a winning ticket returns 4× the stake including the original wager. Minimum stake is the current scaled Cache price ×10 by default, capped by MaximumBet. Replace or cancel/refund before the countdown ends. During a race, ESC/F6 exits the view while your committed ticket remains active. Results stay visible for six seconds, then betting reopens. On stage exit, uncommitted wagers are refunded and an active race settles against its existing run/burrow timeline.
The lounge is now 60 × 60 units with a 16-unit ceiling: five times its previous floor area. The 28-unit, four-lane sand track occupies a dedicated rear arena with a finish gate/scoreboard and viewing aisles. Full-size crabs are approximately 2.4 units wide. Blackjack/roulette occupy the front gaming wing, slots form a side-wall bank, and the broker/cache remain by the entrance wall. Warm chandeliers, camera-scoped ambient lighting and shadow-free fill lights illuminate the lounge without changing the outside Bazaar. Larger pillars and side seating define the casino areas. The external doorway stays at the same dark Bazaar alcove.
Broker: select a permanent removable item, then confirm Sell 1. Temporary, rental, hidden, and non-removable items cannot be sold. Sale values follow difficulty by default. Gold uses the ordinary CharacterMaster wallet, including Bigger Bazaar shops.
Casino screen buttons use rounded corners, high-contrast hover/focus colors, white hover outlines, press feedback and visible disabled states. They initialize at their actual tint without a white ColorTint flash after clicks/state updates. Chip labels contain numbers only and automatically shrink to fit.
All displayed returns include the original wager. Before a round starts, canceling or leaving refunds reserved gold. After a round starts, blackjack stands remaining hands and roulette still settles; committed stakes are not refunded.
Multiplayer and compatibility
Install Bazaar Casino 1.10.4 on the host and every client, with BepInExPack and HookGenPatcher. Version 1.10.x uses protocol 200; versions before 1.10.0 are incompatible.
The host owns decks, turns, wagers, gold updates, and settlement. Shared snapshots synchronize the lounge, seats, visible cards, chips, wheel, slot display and results. Dealer hole cards remain hidden until settlement. The lounge does not replace Bigger Bazaar shops or its economy; Bigger Bazaar is optional.
ESC closes the active casino interface before the game processes its pause action. Native input buffers keep polling while seated/focused; a short release guard prevents a held interaction or the Exit click from reopening the activity. The world-machine cursor root contains no screen graphics. Local body render flags are restored when leaving the fixed view.
Standard single-player and networked co-op are supported by the implementation. Live multi-instance co-op, split-screen, and shared-wallet mods such as ShareSuite have not yet been validated.
Configuration
BepInEx/config/local.gakon.bazaarcasino.cfg
- MinimumBet: configured floor 10. The live table/slot minimum follows the current scaled Lunar Cache price (including Bigger Bazaar integration), capped by the configured MaximumBet. The host communicates/enforces the same minimum on clients. Chip presets and −/+ increments follow that minimum. MaximumBet: 100000 initially, or aggregate roulette stake. Split plus doubles can reserve up to 4× the initial blackjack stake.
- Selling: per-tier values and difficulty scaling.
- Gacha: Enabled, MatchBiggerBazaarUncommon, BaseGoldCost, PriceMultiplier, and common/uncommon/legendary weights. Defaults: enabled, green-price mirroring, base 50, multiplier 1, weights 70/27/3.
- Lighting.Brightness: 1.3 by default (0.3–3); lounge ambient and fill lighting.
- Audio.Enabled: true; Audio.MusicVolume: 0.4 (0–1). An original 40-second lounge jazz loop fades in inside the casino and out on exit. It follows the game music/master volume, pause, and focused-audio setting. Native Bazaar music resumes outside.
- CrabRace.MinimumCachePriceMultiplier: 10 by default; controls the high-stakes minimum relative to the current scaled Cache price.
- Dealer.Enabled: indoor item broker.
- Controls.OpenCasino: F6, closes the active interface; use E to open interactables.
- Network.MessageId: 28061; every player must use the same value. Replies use ID+1 and table snapshots ID+2.
- Automatic test warps, test gold and F8 shortcuts are removed, including old Testing.Enabled/StartInBazaar settings. Normal runs always begin normally.
Manual console and chat commands
Run these from the game's console as the host, after starting a run:
modwright_blueportal
modwright_gold 5000
You can also enter /modwright_blueportal or /modwright_gold 5000 into chat (the leading slash is optional). The mod consumes only these two shortcuts and shows local feedback instead of broadcasting them as chat messages. They remain host-only; ordinary chat is unchanged. Commands reject a run that has already ended, so start a new run after game over.
modwright_blueportal moves the run directly to the Bazaar, without adding gold. Wait for the Bazaar to load before adding test gold. modwright_gold <amount> adds 1–1,000,000 gold to your current character without warping; it never runs automatically. Existing wallet limits still apply. Client-only commands are rejected. These commands affect the current run, not account currency. No cheat toggle is required.
Scene preparation
Artwork, UI, lounge and tables are prepared on Bazaar scene load/scene population, using fixed native scene anchors instead of waiting for Newt's body. Native Hermit Crab FBX/controller/material are requested asynchronously at scene preparation, and their real mesh/animation setup completes before the warmup render. Shared artwork is decoded once, labels/canvases are generated early, and the lounge/door receive an offscreen first render. Clients warm the host's replicated layout on their initial snapshots. Logs beginning Bazaar scene preload: show completion and elapsed milliseconds. This is intended to reduce first-visit stalls; runtime frame-time profiling is still needed.
Build
Use the .NET 9 SDK and PowerShell 7. The project references public modding NuGet packages; no game DLLs are included in the repository or release.
dotnet build src/BazaarCasino/BazaarCasino.csproj -c Release
dotnet run --project tests/BazaarCasino.Tests -c Release
pwsh ./scripts/package.ps1
The package is written to dist/BazaarCasino-1.10.5.zip. GitHub Actions builds, tests and uploads the ZIP as an artifact. See PUBLISHING.md for publishing steps and CHANGELOG.md for release changes.
Gold audio
When a fixed casino camera hides the HUD, the native RoR2 money counter continues its own count-up and Play_UI_coin sound locally. Gold increases are audible while seated or focused on a cabinet, with the normal game cadence and volume settings. It does not wait until leaving the seat or add a duplicate custom sound. Visible HUDs retain their normal automatic update.
Validation and license
Release build and a local audit against the installed game's RoR2 API pass. The rules suite covers 4,281,781 assertions, including bounded console/chat shortcut parsing, shared eight-player rounds, split/double accounting, refunds, timeouts, dealer privacy, deterministic roulette replay, exactly-once table payouts, gacha odds/pool filtering, price bounds and viewport-independent case reveal, native crab run/burrow replay, lane fairness, tagged snapshot routing, interaction release guards and safe batch quotes and staggered multi-reel settlement/replay, repeated blackjack chip additions/refunds, budget/limit enforcement and restricted Cache rewards, scaled minimum/preset bounds and fixed-screen reel containment. Static native geometry checks cover the doorway, return standing area, approach route, room volume and MapZone bounds. Rendering, exit behavior, audio playback, startup frame-time improvements and two-instance co-op require live verification.
Code is Apache-2.0; see LICENSE. Card images have separate MIT/public-domain notices in Cards-LICENSE.txt. Other casino artwork is procedural. The included original synthesized soundtrack is also Apache-2.0; it contains no sampled or third-party music. Game assemblies, decompiled game code, collision dumps, user profiles and credentials are not distributed.
CHANGELOG
1.11.1
- Shorten blackjack, roulette and Hermit Derby betting to 5 seconds, with a 1-second result pause before reopening bets.
- Keep blackjack turn timers and native wheel/race animation lengths; payouts remain immediate and exactly once.
RoundTiming centralizes the five-second betting and one-second result windows. The host starts betting on the first paid wager and does not extend the deadline when more chips arrive. Each state transition still broadcasts immediately, and payments are consumed before the result state can reset. The one-second result window keeps a short readable outcome; it adds no separate cooldown after reopening bets. Native spin/race simulation and blackjack's 25-second per-hand timeout are unchanged. Visible countdown hints and language/en.json match the new timing.
Changelog
1.11.0
- Preserve player gold by finishing only the money-to-XP collector bound to a Bazaar destination, before its first burst. Ordinary stage exits retain native conversion; Bigger Bazaar remains optional and its wallet transfer is not duplicated. Host setting: Economy.KeepGoldOnBazaarEntry.
- Add custom whole-number wager entry to blackjack, roulette, slots and Hermit Derby. Blackjack edits the total; roulette selects a chip amount. Add explicit All In with host validation of the entire available bankroll, including that activity's refundable stake. All In alone can fall below the minimum; maximum limits remain in force. Lunar Cache prices stay fixed.
- Bump request protocol to 203 for the All In flag. Host and every client must use 1.11.0.
- Add language/en.json and a documented JSON localization loader. Local language follows RoR2 or Localization.Language; missing/invalid translations fall back to English. Translate screen/world labels and interaction prompts without changing wire messages or item localization.
- Add a short, newest-first README history and a prepend-only release-note script. Packaging checks the latest README entry against the manifest.
1.10.10
- Remove all developer command registration and chat execution from Casino. Modular stage/player/gold/restart tools now live in Quality of RoR2 1.1.0, with owner-account/host authorization and restricted legacy aliases.
- Keep gameplay and seat protocol 202 unchanged. Casino works without QoR for ordinary gameplay.
- Release build and 4,281,832 remaining rules/seat assertions pass; no owner-only command path remains in this DLL.
1.10.9
- Assign one immutable seat root position/yaw on the host and send it to every peer. Correct body, physics and detached visual pose in fixed update, late update and before camera rendering.
- Keep the authorized seat when a custom motor or old movement packet displaces its character. Remove distance-based auto-leave and post-join wager rejection; release on Exit, death, disconnect, body replacement or scene cleanup.
- Suspend additional native IPhysMotor components and non-trigger colliders while seated; restore original enabled/collision flags. Block foreign native teleports and MapZone respawns only during the live seat lock.
- Use the explicit root/rotation teleport overload for entry/return, avoiding MotorAPI spawn-height offsets. Restore user controls immediately when the seat closes.
- Bump request protocol to 202 for host-assigned anchor snapshots. Host and all clients must use 1.10.9.
- Release build, 4,281,855 assertions and native API/HookGen audits pass. Regression cases cover displaced/OOB/non-finite movement samples and lease release conditions. Live co-op with modded survivors still needs verification.
1.10.8
- Fix a missing seating path for flying Rigidbody survivors such as HEL-P: pausing only the motor leaves the entity's flight state and RigidbodyDirection running. HEL-P also uses E/interact to descend.
- Pause native managed state updates only for living seated bodies; retain the current state without forcing exit/re-entry. Restore normal updates on stand-up, death or scene exit. Clear input while the table is waiting for host approval too.
- Hold the motor's actual Rigidbody during fixed simulation as well as rendering. Capture and restore gravity, constraints, interpolation, kinematic status and both movement/direction enabled flags. Roll back a failed seat setup.
- Expand local seat diagnostics with survivor type, movement components, camera overrides and release reason. Protocol remains 201; use matching 1.10.8 builds on host and clients for this fix.
- Release build, 4,281,837 rule assertions and native RoR2/Physics/Core/HookGen visibility audits pass. Live two-machine HEL-P seating still needs verification.
1.10.7
- Remove the persistent CASINO / E to interact HUD text, avoiding overlap with survivor-specific fuel bars. Keep nearby native interaction prompts.
- Apply shared-table seat entry on the owning client instead of relying on a host teleport that the owner ignores. Capture/restore body-root coordinates and clear native interpolation when entering a chair.
- Keep Rigidbody survivors such as Tank above the floor using collider clearance and synchronize the physics pose while seated. Validate the exact network body, chair index and finite return coordinates before applying snapshots.
- Bump the casino request protocol to 201 because seat return coordinates changed. Host and every client must use 1.10.7; older requests are rejected before moving a character.
- Release build, 4,281,832 rules assertions and native API audits pass. Remote Tank/humanoid seating still needs a live co-op check.
1.10.6
- Fix remote clients seeing the lounge door's E prompt without moving. Native TeleportHelper skips the owning client when a host sends a teleport; send a host-approved travel reply and apply the destination on that owner as well. Fix both entrance and exit; the host path still teleports once.
- Preserve host checks for a living player, the sender connection, door proximity and seated state. Bind approval to the exact request, body and scene; ignore stale, duplicate, cancelled and non-finite travel replies.
- Route lounge replies separately from table replies and show rejected/timed-out travel in local chat instead of an inactive panel. Add per-travel host authorization/client acknowledgement logs. Require matching 1.10.6 versions for this fix; do not add automatic warp or gold.
- Release build, 4,281,807 assertions and native API/HookGen audits pass. Live two-machine co-op door travel remains to be verified in-game. Protocol 200 is unchanged; the JSON travel reply is additive.
1.10.5
- Accept the existing host-only modwright_blueportal and modwright_gold shortcuts from local chat as well as console, with or without a leading slash. Reuse one typed execution path, validate amounts/arguments, show local feedback, and leave ordinary chat untouched. No arbitrary chat is forwarded to console and remote chat cannot operate the host.
- Reject an already-ended run with a clear message instead of attempting a Bazaar transition during game over. No automatic warp or test gold is reintroduced.
- Keep the native MoneyText count-up running while casino focus hides its HUD. Use RoR2's own coin cadence, sound and game volume preferences while seated; visible HUDs update normally and no second custom coin event is emitted.
- Release builds, 4,281,781 rule/parser assertions, native member and installed HookGen visibility audits pass. Live console/chat dispatch, native audio timing and co-op verification remain manual. Protocol 200 is unchanged.
1.10.4
- Remove Testing.Enabled/StartInBazaar/test-gold configuration, automatic start-of-run Bazaar warps and F8 warp/gold shortcuts. Existing legacy values no longer activate testing behavior.
- Add explicitly invoked host-only native console commands: modwright_blueportal moves the run to Bazaar without gold; modwright_gold <amount> adds 1–1,000,000 gold to the current character without warping.
- Reject commands before a hosted run; do not start a second scene transition or re-warp from Bazaar. Opt the assembly into native searchable command registration.
- Release build, native API/HookGen audits and both console-command metadata registration checks pass. Live game console/transition testing remains manual. Retain protocol 200.
1.10.3
- Initialize casino screen buttons at their actual color and animate the image tint directly, avoiding native ColorTint white flashes when controls are rebuilt after clicks/host replies. Reuse this styling for broker and Derby camera buttons; preserve selected broker-item highlighting.
- Scale blackjack/roulette/slot minimum gold to the current Lunar Cache price, respecting the configured minimum floor and maximum cap. Communicate limits on all host replies, including table/race responses. Scale gold-chip presets and −/+ steps; preserve the higher Derby price multiplier.
- Fix Lunar Cache geometry, display, collider and camera to a single ten-reel capacity. Changing 1×/5×/10× only changes centered reel rows inside the screen.
- Show only the numeric amount on blackjack chips, with auto-sizing/no-wrap fit. Apply the same overflow protection to roulette chip amounts.
- Release build, installed-game API visibility audit and 4,281,758 rule/regression assertions pass, including scaled minimum/preset bounds and fixed-screen reel containment. In-game visual flash, camera, chip readability and live host/client checks remain manual.
- Retain protocol 200; matching 1.10.3 versions are recommended for the new UI and economy on every player.
1.10.2
- Build Cache rewards from the current run's normal tier drop lists, excluding WorldUnique/IgnoreForDropList/scrap/hidden items and Belmont-only relics. Respect CommandArtifactBlacklist while Command is enabled; prevent Crissaegrim being sold as an unusable generic prize.
- Replace blackjack's absolute Ready wager with incremental Add gold and a clickable own PLACE BET spot. Add chips repeatedly until betting closes, right-click to remove, or Refund all. Send absolute host totals for safe reconciliation and debit/refund only the difference; preserve the original countdown.
- Use the same Gold on table summary and chip denominations for blackjack/roulette. Replace ×10/÷10 with 10/50/100/500 presets plus −/+.
- Add rounded button artwork, clear hover/focus colors, white hover outlines, subtle press feedback, accented primary actions and visible disabled states. Show a white hover outline on betting spots.
- Release build, native API audit and 4,281,710 rule/regression assertions pass, including restricted prizes, repeated chip additions, refunds, budget and maximum-stake checks. Live rendering and host/client interaction checks remain manual.
- Retain protocol 200; matching 1.10.2 versions are recommended for the new interface and reward pool on every player.
1.10.1
- Give every purchased Cache case its own clipped horizontal reel: five rows for 5× and ten for 10×. Stagger starts/stops by 0.06 seconds, settle all rows by the existing 5.2-second host dispense time, and keep each prize at its own rarity marker.
- Expand the physical cabinet/display and adjust its fixed camera for the selected batch; retain world-space controls and native/Command pickup drops. Avoid rebuilding identical idle previews on repeated state updates.
- Add persistent Derby Back to bets, Track view, Top view and Exit controls plus readable race status; the physical desk remains reachable during a race.
- Show the actual gold wager on the Derby BET button and explain the separate 4× return including stake and net profit. Show committed ticket gold in the receipt.
- Add blackjack wager amounts next to physical chips and a prominent paid-gold total in betting/playing views, updated after Double/Split.
- Release build, native RoR2 API audit and 4,281,690 automated rule/regression assertions pass. Live camera/control/reel rendering and multiplayer verification remain manual.
- Retain protocol 200. Matching 1.10.1 versions are recommended for the new UI on every player.
1.10.0
- Route shared updates by explicit table/slot/race tags. Ignore default nested race objects from unrelated Unity JSON snapshots, preventing Derby stake/bet values alternating between 0 and the real minimum.
- Keep native player input buffers polling while seated/focused, clear gameplay input, and require release after closing. Apply the guard to tables, slots, Cache, Derby and broker so Exit does not immediately reopen the activity.
- Add camera-scoped ambient probes and warm/cool shadow-free directional fill for the off-map lounge; expose Lighting.Brightness (default 1.3).
- Enlarge the Lunar Cache cabinet 1.65× and add 1×/5×/10× batches with scaled total-price verification, independently rolled prizes, an on-cabinet reward grid, native/Command drops, and per-case failed-drop refunds.
- Bundle an original 40-second synthesized lounge jazz loop, preloaded during scene preparation. Fade on lounge entry/exit, honor game music/master volume, pause and focused-audio preferences; expose Audio.Enabled and MusicVolume.
- Release build, native RoR2 API visibility audit and 4,276,754 automated rule/regression assertions pass. Live rendering, interaction, audio and host/client checks remain manual.
- Protocol 200 requires Bazaar Casino 1.10.0 on host and every client.
1.9.0
- Load the original Hermit Crab imported model, avatar, material and animator clips directly from native Addressables. Stop cloning unloaded body skin placeholders, deleting dependent CharacterModel components, replacing meshes with procedural crabs, and overriding leg bones manually.
- Replay the original RunForward, BurrowIn, Burrowed, BurrowOut and idle clips through a visual-only PlayableGraph with short blends; retain the host's authoritative running/burrowing timeline and payouts.
- Expand the lounge from 30×24×10 to 60×60×16 and the race from eight to 28 units. Use four full-size racers, broad spectator aisles, a finish gate/scoreboard, and pack-following / V-overhead views.
- Separate the front gaming wing, side-wall slots, entry-wall broker/cache and rear arena. Add warm chandeliers, taller pillars and side seating; preserve the external dark-alcove door position.
- Preload native racing assets during scene preparation and include native models in the early render. Disable race wagering while models are unavailable.
- Release build, installed native asset/clip checks, native API audit, automated rule/layout tests, and full expanded-room collider/map-zone checks pass. In-game rendering and live host/client verification remain manual.
- Protocol 190 requires Bazaar Casino 1.9.0 on host and every client.
1.8.0
- Remove wall Blackjack/Roulette labels, rotate both tables lengthwise and move the broker/cache to the entrance wall. Keep walking space around the new central track.
- Eject Cache rewards through native networked pickup droplets after the case reveal, including Artifact of Command conversion. Refund a pending undispensed case on stage exit.
- Add the shared high-stakes Hermit Derby with four native visual Hermit Crabs, running/burrowing pauses, fixed track view and physical betting controls.
- Scale the minimum race stake against Cache/uncommon pricing, open a visible 15-second countdown, allow pre-race wager changes/refunds, and return 4x stake to winning tickets exactly once.
- Replay the host's race timeline for spectators and late clients; retain committed tickets after exiting the view and settle/refund appropriately on stage exit.
- Use network protocol 180; install Bazaar Casino 1.8.0 on host and every client.
- Release build, native API audit and automated rule/layout tests pass. In-game placement, model/animation, Command pickup and host/client verification remain manual.
1.7.1
- Render slot wager, wallet and exit controls on the physical cabinet under the reels; remove screen wager/title/status controls.
- Use the native white RoR2 outline on the lever and suppress whole-cabinet highlighting while focused.
- Move Lunar Cache cards, marker, price, odds, wallet and Open/Exit controls onto the physical machine. Its reel can finish after the player exits.
- Consume one casino ESC/cancel frame before the native pause action, independent of component update order.
- Hide local body/child effect renderers while viewing a machine and restore their prior rendering flags on exit.
- Keep existing economy, requests and multiplayer protocol 170.
1.7.0
- Start slots by clicking the actual 3D lever; highlight it on hover and remove the separate pull button.
- Release slot input/server locks when the reels settle, while celebration effects continue independently.
- Add the Lunar Cache machine with a case-opening item carousel, normalized 70/27/3 common/uncommon/legendary odds, run-available permanent rewards and authoritative gold/item transactions.
- Mirror the live Bigger Bazaar uncommon gold price, including its tier multiplier and previous/next-stage difficulty setting; use configurable difficulty scaling when unavailable.
- Validate quoted prices, retain/replay the last case receipt and prevent duplicate request rewards.
- Multiplayer protocol 170 requires Bazaar Casino 1.7.0 on every player.
1.6.1
- Slot machines use the actual 3D cabinet with transparent screen controls and a fixed camera, without a modal backdrop or duplicate 2D machine.
- Shared world snapshots remain the single source of reel animations/results.
- Local avatar rendering and input resume on exit; casino focus is released immediately and after the closing click.
- Slot overlay is constructed during the existing Bazaar preload, before first interaction.
1.6.0
- Broker and slot machine interfaces are dedicated to their respective interactions; remove the private blackjack/roulette tab menu and unrelated wager controls on item selling.
- Broker and world billboards use the gameplay camera rather than a potentially unrelated MainCamera.
- Prepare the lounge on Bazaar scene load/population without waiting for Newt/Seer body positions.
- Cache/preload all 61 images, generate label/canvas geometry early and warm initial rendering offscreen; add startup timing logs.
- Require slot-machine interaction and broker proximity; reject legacy private blackjack/roulette requests. Multiplayer protocol is now 160.
- Preserve the deeper corner entrance, shared tables, fixed/top views and two-hand blackjack split.
- Add source structure, reproducible packaging and GitHub CI. Testing shortcuts are disabled by default in public installations.
1.5.2
- Move the entrance deeper into the cave corner and verify return standing clearance.
1.5.0
- Direct 3D roulette betting/countdown, fixed/top camera views and integrated blackjack cards with split.