BetterRounds
A large BetterRounds draft pack for ROUNDS with class, neutral, wildcard, and troll cards, built-in long-match settings, and custom mechanic cards beyond raw stat trades.
CHANGELOG
Changelog
0.34.1
- Removed the hard Harmony patch against
Block.CanBlock, which older ROUNDS runtimes do not expose. BetterRounds now loads cleanly on that API shape instead of failing during startup. - Perfect-parry cards now fall back gracefully on runtimes without
CanBlocktiming support instead of taking the whole plugin down with them.
0.34.0
- Added a stronger enemy-state mechanic: exposure now raises incoming damage from the player who applied it, shows its own overhead tell, and is wired directly into the runtime damage patch instead of faking pressure through one more projectile buff.
- Added a new BetterRounds-owned room object system: witness/corner/collector posts are persistent beacon nodes that pulse marks, exposure, and disruption into the room instead of resolving into more armed-shot math.
- Spent those systems on the weaker identity lanes:
Slip Relaygives Skirmisher an early route-control post,Red Cornergives Brawler a real pressure post,Witness Dividendgives Gambler a collector-post signature, andQuiet Liennow softens targets instead of only slowing them. - Split combat-event handling out of
PlayerAbilityControllerand moved area-control spawning behind a dedicated update path so the core runtime keeps shrinking instead of staying one giant file. - Pruned another neutral generated family from the live expansion pool, leaving one neutral generated lane active in BetterRounds-only drafts instead of a wider fallback shell.
0.33.0
- Added a new BetterRounds-owned room-state mechanic: repeating wake fields now spawn from the player through the ability runtime instead of borrowing another vanilla projectile object. This gives the pack a real native hazard language instead of more disguised next-shot buffs.
- Spent that system on clearer class identity cards:
Ghost Lanefor Skirmisher,Boil Overfor Brawler, andDebt Wakefor Gambler all change the floor around the fight instead of only modifying projectile math. - Cut another neutral generated family from the live expansion pool and pushed the remaining generated Skirmisher, Trickster, Demolitionist, and Arcanist ladders down to low tiers so authored cards own the upper end.
- Tightened the upper-tier rule in code: managed-class
T4-T5cards without a unique mechanic now fail the catalog audit instead of only logging a reminder. - Added stronger readability for room-state play: wake fields emit their own spawn cue, and hazard telemetry now treats repeating wake mechanics as active hazard states.
0.32.0
- Moved draft synergy and low-tier diversity farther off inferred wording and onto authored tags plus effect-derived mechanic buckets, so card copy/search text no longer has as much hidden influence over live picks.
- Split the visual telemetry block out of
PlayerAbilityControllerinto its own partial source file and kept pushing the runtime away from one giant monolith. - Added new room/object mechanic bridges for the weaker class lanes:
Slip Cover,Ring Tax, andFloat Accountgive skirmisher, brawler, and gambler more persistent cover, zones, and helper pressure instead of one more next-shot package. - Trimmed another neutral generated family from the live expansion pool so BetterRounds-only drafts lean even harder toward authored mechanic cards.
- Improved opponent-facing readability again: orbit wards now emit clearer summon cues when they fire, and marked players can now show up to three overhead pips instead of stopping at two.
0.31.0
- Added a first BetterRounds-owned sound/readability layer for major mechanic states. Ready shots, perfect parries, summons, hazards, disruption, mark cashouts, and overheats now trigger lightweight procedural cues instead of relying only on text and status gems.
- Sharpened class identity on existing authored cards instead of only adding more volume:
Faultless Mirrornow carries a shield-charge projectile rule,Collection Agencynow spawns helper collectors on hit, andShatter Ledgernow leaves static remnants behind its reflect path. - Kept pushing room-state/object play by spending more of the new remnant/spawn/minion ports on existing upper-tier cards and keeping those mechanics visible to the draft/visual systems through stronger tags.
- Trimmed another neutral generated family from the live expansion pool so BetterRounds-only drafts lean even harder toward authored cards and class mechanics.
0.30.0
- Added the next wave of vanilla-style non-projectile/object ports to BetterRounds-owned helpers: surface shields, shield-charge shots, minion/helper shots, static remnants, and spawned damage objects now have explicit wrappers instead of staying unspent component names.
- Added more low-tier authored mechanic bridges and class-specific identity cards:
Shield Brief,Charge Docket,Clerk Imp,Ash Deed, andClaims Runnerpush bulwark, arcanist, demolitionist, and gambler starts toward real mechanics earlier. - Upgraded existing upper-tier hazard cards to spend those object-side ports too:
Wake Minenow leaves static remnants andLease Minefieldnow throws follow-up spawned objects on confirmed damage. - Trimmed another neutral generated family from the live expansion pool and tightened mechanic bucket tagging around shields, minions, remnants, and spawned objects so BetterRounds-only drafts lean harder toward authored mechanics.
- Added persistent build tells for shield-port, minion/helper-port, and spawned-object/remnant builds so these new port families read better in motion.
0.29.0
- Added more vanilla-style projectile ports and spent them on BetterRounds-owned cards instead of leaving them as raw utility:
Halo Writuses an orbit-style projectile behavior,Return Filinguses a reflect-event behavior, and existing port cards now go through explicit helper wrappers for teleport, reflect, drill, retarget, and room-bounce shots. - Added more low-tier authored bridge mechanics:
Halo WritandReturn Filinggive arcanist and trickster starts more immediate identity without waiting for upper-tier payoff cards. - Trimmed another neutral generated family from the live expansion pool so BetterRounds-only drafts surface authored mechanic cards more often.
- Added small persistent build tells for teleport, drill, reflect, and orbit port cards so those projectile-rule builds read better even when they are not sitting in an armed-shot state.
0.28.0
- Added more BetterRounds-owned vanilla-style behavior cards:
Bore Sightports a drill-style projectile bridge,Appeal Routeports bounce-retargeting into the low tier, andJury of Anglesnow uses that retarget behavior on top of its room-bounce package. - Trimmed another neutral generated family out of the live expansion pool so authored bridge/payoff cards show up more often and standalone BetterRounds drafts waste fewer slots on safe filler.
- Kept pushing BetterRounds-only coverage toward a self-sufficient pool by spending more of the new projectile graft system on class-specific authored cards instead of only wildcard/neutral support.
0.27.0
- Added a generic vanilla-style projectile graft path so BetterRounds can splice projectile behaviors in by component type instead of only hardcoding one known source card.
- Used that new graft layer on new BetterRounds-owned cards, including teleport/blink-shot and reflect-shot bridges, so the pack moves closer to covering base-game-style projectile rules without depending on default cards in the draft.
- Tightened
BetterRounds-only cardsdraft shaping so standalone rooms bias harder toward managed mechanic cards, class cards, and control bridges while cutting back neutral/foundation padding. - Added new authored standalone cards:
Skip Trace,Lintel Wisp,Lintel Key,Mirror Fuse, andShatter Ledger.
0.26.0
- Added a host-synced
BetterRounds-only cardsdraft setting so matches can run on the BetterRounds ecosystem without mixing in default unmanaged base-game cards. - Wired the draft engine to honor that setting directly: when enabled, unmanaged vanilla/base cards are excluded from the live pick pool instead of just being deprioritized.
- Kept the setting in config and the in-game menu so hosts can decide whether a room is a mixed-card environment or a full BetterRounds experience.
0.25.0
- Cut more bland generated neutral families out of the live pool and softened downside scaling across the remaining generated catalog so low-end picks stop feeling so overtaxed on HP, ammo, and reload penalties.
- Expanded early draft reservation from just hazard/summon into hazard/summon/disruption bridges so lower-tier mechanic cards surface more reliably before the pool collapses back into safe stat filler.
- Added new lower-end mechanic cards:
Seal Return,Paper Trail,Ash Lease, andChamber Wispto push real parry, disruption, hazard, and summon play into the early and mid game. - Reworked several upper-tier cards that were still too close to stat packages or paid too harshly for their gimmick:
Ghost Payload,Nova Chamber,Mouth of the Pit,Wake Mine,Cathedral Thread, andSiege Engine.
0.24.0
- Rebalanced the catalog away from neutral low-tier filler again by cutting several more bland neutral generated families out of the live expansion pool.
- Tightened draft curation against stat sludge: lower neutral budget, explicit early hazard/summon reservation, stronger foundation penalties, and a later fill order that prefers real mechanics before pure-stat leftovers.
- Refined mechanic bucket classification so generic reload-speed or control language stops inflating weapon-mode and disruption scoring as if those cards had full mechanic engines.
- Added
Spotter Moteas another low-tier summon bridge so summon-style runs are not carried almost entirely by the same one or two cards.
0.23.0
- Moved draft bucket logic closer to actual card behavior instead of leaning mostly on title/description inference by propagating mechanic buckets through effect modules, template definitions, card metadata, and live draft state.
- Trimmed several neutral foundation-heavy generated families out of the expansion build so authored bridge and payoff cards stop competing with so much low-end generic filler.
- Split the area-control and reload/ward registration block out of
PlayerAbilityControllerinto a dedicated partial source file to start breaking up the runtime god object without changing live behavior. - Added stronger enemy-facing readability: disrupted players now get a visible overhead tell, marked players now show simple overhead pips, and hazard zones finally use their supplied colors instead of reading as generic neutral clutter.
0.22.0
- Refactored draft curation around broader mechanic buckets so the pool now distinguishes hazards, summons, weapon modes, disruption, stances, precision, and economy instead of relying only on loose family/tag overlap.
- Added more low-end authored mechanic bridges so early runs stop leaning so hard on raw stats:
Sighted Chamber,Split Decision,Vacancy Notice, andPocket Witness. - Converted more bland low-tier cards into real mechanic cards by reworking
Ballastinto a grounded stance bridge andHook Lineinto a pull-plus-disruption control card. - Rebuilt weak upper-tier stat cards into actual modes and room-control payoffs:
One in the Chamber,Deadeye Rig, andSiege Enginenow change how the weapon or battlefield behaves instead of just multiplying numbers.
0.21.0
- Added real new runtime outcome systems instead of only more shot buffs: direct on-hit disruption, lingering hazard zones, reload-driven multi-shot weapon modes, and orbiting ward helpers.
- Added new controllers for live debuff state and world hazards, then wired new player-side feedback for reload modes, hazards, wards, disruption cards, and being disrupted yourself.
- Added new low-tier mechanic bridge cards:
Ward Post,Paper Breach,Quiet Lien, andHouse Sprite. - Upgraded several upper tiers so they stop resolving into the same “big next shot” pattern:
Loaded Curtainis now a true reload mode,Collection Agencynow includes orbit wards,Faultless Mirrornow leaves a hostile mirror field, andLease Minefieldnow actually leaves a kill field behind.
0.20.1
- Reworked generated card descriptions so every BetterRounds card now prepends a compact
Rules:line built from its real stat/effect rows before the softer flavor text. - Grouped repeated rule labels like
After BlockandAirborneso mechanic cards read more like actual instructions and less like vague flavor blurbs.
0.20.0
- Added new real mechanic families to the runtime instead of only more stat packages: timing-based perfect parries, grounded stance, wall stance, and rapid-fire heat/overheat weapon modes.
- Added new authored mechanic cards across the low and high end:
Blue Window,Set Anchor,Flash Coil,Wall Script,Dust Charge,Corner Doctrine,Stone Sermon,Backwall Gospel, andBoiler Room. - Reworked
Faultless Mirrorso its main shot payoff is now actually tied to perfect timing instead of every generic successful block. - Expanded live player feedback for the new states, including perfect-parry charge, grounded stance, wall stance, heat buildup, and overheat.
0.19.0
- Reworked the internal mechanic classifier so support effects like bigger bullets and bounce scaling no longer count the same as real rule-changing mechanics in draft and visual systems.
- Added a separate mechanic-depth score to template metadata, then pushed that through draft curation, card registry metadata, and player upgrade visuals.
- Early drafts now reserve a small extra lane for lower-tier bridge mechanics while pushing pure stat filler down harder after the first couple of picks.
- Tightened low-tier diversity for pure foundation cards so the pool is less likely to flood you with different names that still play the same way.
0.18.0
- Reworked early/mid draft curation so low-tier unique mechanic cards get explicit room in the managed pool instead of being drowned out by foundation stat families.
- Added stronger early preference for
T2-T3mechanic cards and softened the scoring of blandT1-T2foundations once a build is already underway. - Added new low-tier authored mechanic bridge cards across more classes:
Pocket Aegis,Slip Trigger,Chalk Mark,Fuse Bloom,Spent Case,Bad Debt, andTrip Script. - Kept the draft soft instead of forced: the pool now surfaces more interesting cards earlier, but it still preserves class, neutral, and wildcard variety.
0.17.1
- Fixed the Unity/Mono startup crash caused by
readonly structmetadata emittingSystem.Runtime.CompilerServices.IsReadOnlyAttribute, which this runtime could not resolve while scanning mod types. - Removed
readonlyfrom the relevant internal structs soBetterRoundsand other mods can reflect over the assembly without tripping aTypeLoadException.
0.17.0
- Added three new reusable shot-state runtime families: reload-complete charges, kill-confirmed follow-up shells, and miss-to-payoff follow-up shells.
- Wired those systems into the live combat/runtime layer and added new lightweight player indicators so reload, kill, and miss charges now read in motion instead of hiding entirely in text.
- Added new authored mechanic cards:
Clean Break,Mercy Window,Blackout Clause,Cold Read,Collection Notice, andRed Ledger. - Upgraded
Loaded Curtainfrom a flatter first-shot stat spike into a real reload-complete capstone-style opener so upper tiers are more visibly distinct.
0.16.0
- Added new runtime mechanic families instead of more filler: low-health stance buffs, death-to-next-round comeback buffs, and last-shell weapon-mode shots.
- Added point-end and round-start ability lifecycle hooks so comeback cards can carry real value into the next round instead of faking it with flat stats.
- Added new authored cards for parry, hazard, weapon-mode, and survival/comeback lanes:
Dividend Shield,Faultless Mirror,Break Action,Afterburn Magazine,Lease Minefield,Closed Circuit,Last Stand,Burial Clause, andWake Clause. - Expanded player-side feedback so low-health stance, comeback rush, and last-shell states now show up with lightweight in-match indicators.
0.15.0
- Added card-specific runtime feedback indicators for queued bonus drafts, chambered shots, cadence shells, mark states, empty-mag rush, and stored post-block shots so important mechanic cards now read in motion instead of only in text.
- Added new authored mechanic cards:
Cold Ledger,Proxy Lease,Black Binder, andOpen Warrant. - Expanded the chamber, hazard, wall-breach, and mark-cashout lanes with stronger bridge and capstone picks instead of more generic stat ladders.
0.14.0
- Added new reusable mechanic families instead of more stat ladders: reload/chamber shots, empty-mag rush states, cadence shots, mark/consume payoffs, and future-round draft-economy picks.
- Added runtime controllers for target marks and queued future round bonus picks, then wired them into live pick flow and combat flow.
- Added new curated mechanic cards:
Layaway,Sealed Verdict,Dead Chamber,Third Rail,Marked Prey,Collection Agency,Grand Cylinder, andSecond Salary. - Added the previously unregistered neutral
Oddjobfamily to the live generated pool, so that missing content lane now actually appears in drafts.
0.13.0
- Added live player-side upgrade feedback for BetterRounds cards so builds are more visible and readable in motion instead of only changing hidden stats.
- BetterRounds picks now trigger a small pickup burst, while stronger/high-tier/unique builds grow into persistent orbiting upgrade gems around the player.
- Added lightweight projectile tinting tied to the current BetterRounds build theme so shots inherit more of the class/mechanic identity without reintroducing the old heavy card-art problems.
- Added metadata tracking for whether a managed card actually carries a unique mechanic, so visual intensity now scales more with interesting cards instead of only raw card count.
0.12.0
- Added a live vanilla-mechanic grafting utility that can pull spawned projectile behavior from real card prefabs at runtime instead of approximating everything with raw stats.
- Used that to wire actual
TargetBouncescreen-edge bounce behavior into multiple BetterRounds bounce cards, so the bounce lane now behaves much closer to the base game. - Added a new wildcard
Super Balland a newBrawlercore cardClose Quarters, both built around stronger vanilla-style mechanics instead of another flat stat ladder. - Upgraded
Bank Shot,Cheap Trick,Ricochet Chapel,Second Geometry, andJury of Anglesso their bounce themes now have a real mechanical backbone.
0.11.0
- Added a new upper-tier projectile mechanic batch so more of the strongest cards now rewrite shot behavior instead of just scaling raw stats.
- Extended the card-effect layer with hidden gun support for wall-phasing bullets, bounce damage scaling, random and smart bounces, near-enemy proximity explosions, and falloff removal.
- Added new class capstones built around those mechanics:
Far Witness,Jury of Angles,Wake Mine, andCathedral Thread. - Added new wildcard mechanic cards that let those ideas surface outside hard class rails:
Wall Tax,Second Geometry,Proxy Saint, andLong Walk Home. - Kept the draft soft-nudge approach intact, so these stronger cards broaden interesting paths without locking players into a single forced build.
0.10.1
- Fixed the
HealthHandler.TakeDamageHarmony patch targeting soBetterRoundsno longer crashes on startup with anAmbiguousMatchExceptionon runtimes that expose multipleTakeDamageoverloads. - Switched that hook to exact reflective overload selection instead of the broad attribute form.
0.10.0
- Added a softer but smarter draft-synergy layer: managed cards now infer build tags from their family, role, title, and description, and the draft uses those tags as light nudges instead of hard rails.
- Added later-pick tier timing so
T4-T5cards show up more naturally once a build is underway, without forcing the draft into a single lane. - Softened off-class gating so strong tag matches can surface relevant payoff/signature cards even when the class pips are not perfect.
- Added a new post-block projectile mechanic,
BlockGhost, which can temporarily enlarge the next shot and make it unblockable. - Added
Mirror Verdictas a newBulwarkcapstone built around that parry/ghost-shot mechanic.
0.9.0
- Reworked the upper-tier balance model so blatantly stat-forward ladders no longer consume so many fake
T3-T5slots. - Capped the most boring generated families back into foundation
T1-T2bands, while leaving real geometry, projectile-count, pull, and other behavior-changing families eligible for upper tiers. - Rebuilt many wildcard
T3-T5cards into actual mechanic bridges with block-tempo, hit-charge, pain-rush, bigger projectile, airborne, patient-shot, ammo-on-block, lifesteal, and unblockable behavior. - Added new signature/capstone mechanic cards:
Bloodsport,Ghost Payload,Nova Chamber,Mouth of the Pit, andBlack Receipt. - Relaxed the tier audit from per-card warning spam into a single summary line so the “tiers are a guide” direction does not clutter logs.
0.8.0
- Added the first real reusable mechanic batch to
BetterRoundsinstead of more pure stat cards. - Shipped working shot-, block-, and airborne-driven abilities:
Countercharge,Final Notice,Opening Statement,Loaded Curtain,Skybreaker,Catch and Rack,Hard Reset,Held Breath, andRun the Rack. - Removed the broken damage-hook mechanics and rewired the ability runtime to use stable reflection-backed access against the live game fields.
- Broadened the curated draft pool toward neutral, wildcard, and off-class starter/core tech so class lanes are less rigid.
- Added diversity-aware managed-card selection so draft pools do not overfill with same-family stat variants.
0.7.15
- Removed the extra full-room sync wait from BetterRounds' injected second-pick path.
- Added explicit runtime logging for each extra pick so draft handoff failures are visible in
LogOutput.log. - This targets the case where the first pick succeeds but the opening draft dies before the second pick can actually open.
0.7.14
- Moved multi-pick execution from the end-of-phase
HookPickEndpath to the per-playerHookPlayerPickEndpath. - This fixes the draft-flow bug where opening drafts could show expanded offers, consume the first pick, and then stall instead of giving each player their extra pick before the round starts.
0.7.13
- Registered every template card under the exact final runtime object-name format Unbound uses, in addition to raw title keys.
- This fixes the silent case where generated cards load and display normally but fail to resolve their effect definition at pick time because the live object name does not match the raw template title.
0.7.12
- Removed the runtime-incompatible
string.TrimEnd()call from template lookup and replaced it with a manual clone-suffix trim compatible with the liveROUNDSruntime. - This unblocks template-card resolution so generated cards can finish setup and apply their stat/effect modules.
0.7.11
- Fixed generated template cards so their runtime effect definitions are resolved through a static registry keyed by card object name and title, instead of relying only on prefab-local
TemplateCardState. - This restores actual stat/effect application when the card is picked in a real match.
0.7.10
- Replaced the cloned-host emblem path with a direct
TextMeshProUGUIart object configured through runtime reflection, so the card art content now has explicit size, anchor, alignment, and position instead of relying on stripped default layout. - Kept the explicit wildcard, troll, and neutral title prefixes from
0.7.9.
0.7.9
- Replaced the broken naked-object emblem path with a clone of the template card's real
Arthost so the emblem inherits known-good card UI layout. - Added explicit
[WC],[TR], and[NT]title prefixes for wildcard, troll, and neutral cards so they no longer read like plain neutral/class cards when the emblem is small or missing. - Kept the
0.7.6prefab registration fix and the light 320-card pool intact.
0.7.8
- Fixed wildcard and troll card labels so they render as
WildcardandTrollinstead of falling back toNeutral. - Replaced the non-rendering sprite icon path with a single cheap
TextMeshProemblem per card. - Kept the
0.7.6template-prefab fix and the light registration path in place.
0.7.7
- Re-enabled only the minimal emblem-only icon path for
BetterRoundscards. - Kept the
0.7.6template-prefab fix, so cards now use tiny center glyphs without the old nested-card render path. - Left the heavy shell, rails, bands, and full custom-art path disabled.
0.7.6
- Fixed template-card registration to strip the cloned template card's visual child before registration, matching
UnboundLib's normalBuildCard()prep path. - Marked generated template cards as prefab cards during registration so they no longer run the non-prefab startup path on the stored card prefabs.
- Kept custom art disabled, so
BetterRoundscards now avoid both custom-art overhead and recursive nested-card prefab rendering.
0.7.5
- Removed custom card art entirely from
BetterRoundscards so the pack falls back to the base game card presentation. - Eliminated the remaining runtime art overhead and the nested-card visual issue by returning no custom art at all.
0.7.4
- Removed the card-like art shell entirely and replaced the runtime card art with tiny center emblems only.
- Cut the per-card art payload down to a few sprite parts so the pack no longer renders a mini-card inside every card and should be much lighter in draft scenes.
0.7.3
- Replaced the heavy multi-part runtime card-art path with a single lightweight emblem sprite per card, eliminating the framed "card inside a card" look and reducing render overhead.
- Corrected the live pool count from
330to the intended320by removing the extra neutral-family registration from the expanded catalog.
0.7.2
- Fixed template-card registration to clone the real Unbound card prefab instead of building from a blank
GameObject. - Fixed the runtime card-art reflection lookups so the art factory no longer throws
AmbiguousMatchExceptionduring startup. - Added a fail-closed fallback around
GetCardArt()so card art can drop out without taking the whole mod down.
0.7.1
- Fixed the
0.7.0startup crash caused by partial-class static initialization order in the generated card catalog. - Changed the expanded template pool to build lazily after the whole catalog type is initialized, so the generated track and rarity arrays are available before card creation starts.
0.7.0
- Expanded the live card pool from
12prototypes to a real320-card pack. - Shipped the requested split:
80class cards,200non-class cards,20wildcard cards, and20troll cards. - Added full runtime coverage for
Brawler,Arcanist, andGambler, while filling out the existing class lanes. - Added twenty large non-class families so the draft can stay interesting outside strict class rails.
- Restored procedural card art with a compile-safe runtime factory instead of the previous badge-text placeholder path.
- Updated package metadata and docs to describe the actual shipped pool instead of the old prototype target.
0.6.0
- Removed the runtime placeholder card-art system and returned custom cards to the default no-art path.
- Replaced the
12hand-written prototype card subclasses with a template-card catalog backed by reusable effect modules. - Added the first data-driven card authoring scaffold so the pool can scale without one custom class per card.
- Raised the design target in the docs from
100cards to300.
0.5.18
- Refined the runtime card emblems into a more deliberate badge layout with track/tier bands, class rails, larger crests, and stronger per-card identity.
- Kept the same runtime-only art pipeline, but made the current
12cards read more like in-game insignias than plain monograms.
0.5.17
- Added built-in runtime card icons for the current
12prototype cards. - Replaced the old
nullcard-art path with a shared procedural art factory so cards now render distinct art without needing a Unity asset-bundle pipeline.
0.5.16
- Removed the built-in
RoundsWithFriendsprivate-room bot system fromBetterRounds. - Restored the mod to its core scope: custom cards, draft logic, and host-synced match and draw settings.
- Removed the
Private room botsmenu setting and the related room-start/input hooks.
0.5.15
- Fixed
RoundsWithFriendsprivate-room detection to use the actual lobby UI state instead of a fragile boxed-bool read. - Added bot-controller runtime logs for bot count changes, solo-host countdown start, and injected match starts so the RWF bot path is visible in
LogOutput.log.
0.5.14
- Removed noisy Harmony reflection probes from the
RoundsWithFriendsbot controller soBetterRoundsno longer spamsPlayerAssigner.maxPlayerswarnings in the log. - Replaced broad
TypeByNamescans with direct assembly/type lookup for the newRWFbot integration.
0.5.13
- Removed the
readonly structmetadata from the newRoundsWithFriendsbot controller so the liveROUNDSruntime can load the mod.
0.5.12
- Added built-in host-side bots for
RoundsWithFriendsprivate rooms without bringing back the old Local-mode bot system. - Added a host-synced
Private room botssetting to theBetterRoundsMods tab. - Added
Bto add a bot andNto remove a bot while hosting anRWFprivate room. - Patched the
RWFprivate-room match-start flow so solo-host lobbies can start with injected bots and bots spawn directly into the real match on default faces.
0.5.11
- Hardened the remaining
BetterRoundsruntime hooks so unstable lobby or pick-state transitions fail closed instead of crashing the mod. - Added guards around match-setting application for handlers that are still initializing or switching under
RoundsWithFriends. - Added safe fallbacks around custom card-offer relayout, spawn scaling, extra-pick flow, and camera-dependent pick layout.
0.5.10
- Removed the entire single-player/local bot experiment from
BetterRounds. - Deleted the local menu rewrite, character-select bot patches, and bot-specific player-registration hooks.
- Removed the
Enable lobby botsandReady bots with Rsettings from the main-menuModstab. - Restored
BetterRoundsto its core scope: class cards, draft logic, and host-synced match/draw settings.
0.5.9
- Pivoted bot support away from the broken custom
BOT FIGHTmode mutation and into the standard character-select lobby flow. - Added host-synced
Enable lobby botsandReady bots with Roptions to theBetterRoundsMods tab. - Changed managed bots to keep their default face and auto-ready instead of forcing them through the character/skin selector path that was breaking selectors.
- Removed the manual selector-join/start logic for managed bots and disabled the legacy Local menu rewrite while this safer lobby path is used.
0.5.8
- Removed
BetterRounds' manual bot spawning from theBkey path; local bot joins now rely on the underlying game/mod flow instead of forcingPlayerAssigner.CreatePlayer(...)directly. - Switched bot selector detection to the same
PlayerAPI-based approach used byRoundsWithBots. - Added the missing selector-side bot preparation from the working bot mod: managed bot selectors now force a
playerActionsobject and disable pre-match simulation beforeRoundsWithFriendstouches them.
0.5.7
- Moved managed-bot character-select handling entirely ahead of
RoundsWithFriendsupdate logic, so bot selectors no longer rely on the RWFCharacterSelectionInstance.Updatepath. - Added an RWF spotlight compatibility patch so
PlayerSpotlight.AddSpotToPlayer(...)skipsBetterRoundsmanaged bots. - Changed bot spawning to fall back to a real local input device if the null-input singleton is unavailable in the live runtime.
0.5.6
- Fixed local bot spawning to stop depending on a missing
InControl.InputDevice.Nullproperty; bot creation now falls back cleanly to the base input-device type or a constructed null device. - Changed the selector repair path to call
StartPicking(...)on the brokenCharacterSelectionInstancedirectly instead of bouncing back throughCharacterSelectionMenu.PlayerJoined(...).
0.5.5
- Reworked the Local
BOT FIGHTbutton so it reuses the proper Unbound/RWF menu path instead of cloning a live button object. - When
RoundsWithFriendsis installed,BOT FIGHTnow repurposes the existing offlineDeathmatchentry instead of targeting removedArms raceUI. - Added a cleaner fallback button path for profiles that do not have
Deathmatch.
0.5.4
- Removed automatic human-player spawning from local
BOT FIGHT; the mode now relies on the normal local join flow for the first human player, which avoids the brokenPlayerAssigner.LateUpdateloop seen withRoundsWithFriends. - Gated bot spawning until a real local human player has joined.
- Changed selector repair to re-run the full
CharacterSelectionMenu.PlayerJoined(...)path instead of only retryingStartPicking(...).
0.5.3
- Added a dedicated Local
BOT FIGHTbutton by cloning the normalVersusentry instead of trying to relabel the original button in place. - Changed bot-fight player registration to use
CharacterSelectionMenu.PlayerJoined(...)soRoundsWithFriendssees the same join path it expects in offline character select. - Added a pre-
RoundsWithFriendscharacter-select safety init that re-runsStartPickingif a selector reachesUpdatewith a player assigned but no built button state.
0.5.2
- Explicitly starts character selection for newly registered local human and bot players, which should satisfy
RoundsWithFriendscharacter-select expectations in mixed profiles.
0.5.1
- Made local
BOT FIGHTauto-create one human player through the livePlayerAssigner(InputDevice, bool)path. - Re-applied the local menu relabel after Unbound UI setup frames so the full
BOT FIGHTmode is more likely to appear reliably.
0.5.0
- Folded local bot-fight support back into
BetterRoundssoRoundWithBotsis no longer required. - Added built-in local
Bto spawn bots andRto ready spawned bots using the liveROUNDSPlayerAssigner(InputDevice, bool)flow. - Kept
RoundsWithFriendsas the only intended external gameplay companion mod.
0.4.7
- Stopped invoking the
Versusbutton from inside another button click. - Made the real local
Versusbutton becomeBOT FIGHTinstead, which avoids the nested UI callback path that was still throwingNo such game mode handler: Arms race.
0.4.6
- Replaced the settings-menu slider refresh call with a compatibility fallback for
ROUNDSbuilds whereSlider.SetValueWithoutNotify(float)does not exist.
0.4.5
- Updated the published Discord link to
https://discord.gg/FactionRealmin Thunderstore metadata and in-game credits.
0.4.4
- Removed
readonly structmetadata that was causingIsReadOnlyAttributeload failures on the liveROUNDSruntime. - Changed local
BOT FIGHTto invoke the existing UnboundVersusbutton flow instead of callingSetGameMode("Arms race")directly.
0.4.3
- Removed the incompatible in-house bot patches that were crashing on the live
ROUNDSbuild. - Removed the incompatible custom
CardChoiceVisualspatch that was throwingMissingFieldExceptiononshieldGem. - Made local
BOT FIGHTuse the stableRoundWithBotsdependency instead of the broken internal bot controller path.
0.4.2
- Fixed local
BOT FIGHTlaunch flow to use the normal localVersuscharacter-select/start pipeline instead of forcing sandbox through a broken ready-up path. - Kept bot spawning and bot auto-ready behavior attached to that local bot-fight flow.
0.4.1
- Fixed the first local
BOT FIGHTpass so starting bots wait for the player assigner instead of silently missing the spawn window. - Added runtime AI replacement on spawned bot players so sandbox bot lobbies use the proper bot controller path.
- Added safer bot character-select preparation before auto-readying bots in local bot fights.
0.4.0
- Turned Local
BOT FIGHTinto a real sandbox character-select flow instead of a menu relabel. - Added configurable starting bots for local bot fights from the main-menu
Modstab. - Added in-lobby bot spawning with
Band bot ready-up support withRduring local bot fights.
0.3.0
- Renamed the package and plugin output to
BetterRounds. - Added built-in host-controlled match settings for rounds, points, cards shown, and cards selected.
- Added separate opening-draft and round-draft settings with host sync.
- Added large-offer layout support and extra-pick flow support.
- Added the first class-aware draft engine and 12 prototype cards.