
You are viewing a potentially older version of this package. View Latest Version
RoundsPatchworkPlus
Universal stability patchwork engine for ROUNDS modpacks. Eliminates bullet passing/ghosting, reload NRE freezes, duplicate category crashes, Photon desyncs, and AI bugs.ROUNDS Patchwork Plus
ROUNDS Patchwork Plus is the all-in-one universal compatibility, crash prevention, and stability patchwork engine for ROUNDS.
It silently intercepts, resolves, and suppresses hundreds of game-breaking crashes, NullReferenceExceptions, Photon network RPC desyncs, coroutine failures, and cross-mod incompatibilities common to heavily modded ROUNDS lobbies.
⚡ What's New in v1.1.3 (Main Menu Freeze & Crash Fixes)
- 🛡️ Definitive Main Menu Freeze Fix:
- Completely overrides
UnboundLib.Utils.CardManager.FirstTimeStart()with a crash-proof implementation using case-insensitiveHashSetcategory deduplication and safe dictionary indexers (dict[key] = val). - Fixes fatal
ArgumentException: An item with the same key has already been added. Key: Rootcaused by duplicate mod category registrations (Root Core Modual, etc.). - Adds an automatic Canvas Watchdog Coroutine: if an external mod crashes during card menu initialization, the watchdog forcefully dismisses stuck fullscreen
cardMenuCanvasobjects after 1.2s, guaranteeing the main menu is never blocked by invisible overlays.
- Completely overrides
- 🗂️ Empty Category Boundary Guard:
- Automatically filters out empty registered categories (
Count == 0) inToggleCardsCategoriesManager, preventingArgumentOutOfRangeExceptioncrashes.
- Automatically filters out empty registered categories (
- 🧹 Clean Initialization Dictionaries:
- Pre-clears
scrollViewsandcardObjsin bothToggleCardsMenuHandlerandSandboxImprovements.CardSpawnMenuHandlerprior to card instantiation.
- Pre-clears
🚀 Key Stability Features & Intercepted Incompatibilities
🛡️ Bullet Ghosting & Damage Interception Fix (CPCCore + PerformanceImprovements)
- When using performance optimization mods that send synthetic raycasts with null colliders (
PerformanceImprovements),CPCCorecrashed withNullReferenceExceptioninsideProjectileHit.Hit. - This caused bullets to pass right through players without dealing damage or triggering on-death explosions.
ROUNDS Patchwork Plussafely intercepts null colliders and wrapsProjectileHit.Hitwith a safety finalizer, guaranteeing bullets always deal damage, trigger effects, and destroy properly.
⏱️ Anti-Slow-Motion Watchdog (TimeHandler.timeStop / gameOverTime)
- Exceptions during bullet hit processing or round-end coroutines frequently corrupted hitstop and slow-motion curves, leaving
Time.timeScalelocked near zero. - The built-in watchdog monitors battle progress: if
timeStoporgameOverTimestays frozen for longer than expected during an active round, the engine automatically smoothly restores normal time (timeStop = 1.0f).
🔫 Reload Trigger NRE Cascade Elimination (DuringReloadTrigger)
- Modded cards with reload triggers frequently threw hundreds of
NullReferenceExceptionerrors per second insideDuringReloadTrigger.Update()when referencing uninitialized weapons. - Safely intercepts uninitialized
GunAmmoand weapon handlers, eliminating main-thread render lag and restoring smooth 60+ FPS.
🤖 Smart Bot Navigation & Teleport / Portal Awareness (AIMovementModule)
- Prevents bot AI from freezing or breaking on custom maps with teleporters, portals, or disconnected platforms (e.g.
Root_Maps). - Bots dynamically detect teleporter entrances when opponents are separated across portals or voids and step into them.
- Adds obstacle raycasting to automatically jump over walls and pits, with an anti-stuck watchdog to un-wedge trapped bots.
⏩ Ultra-Fast Round & Point Transitions
- Eliminates the 5-second artificial lag between points and rounds: accelerates
PlayerSpotlightfade durations to 0.15s, speeds up map entrance animation curves, and bypasses player readiness stall loops.
👥 EveryonePicks + RoundsWithBots Simultaneous Bot Card Picking
- Eliminates the 25–45s screen freeze where bots took over the interactive draft loop (
IsLocalPlayer(bot) == true). - Bots pick simultaneously in the background with a realistic 1.0–1.8s delay using
RoundsWithBotsweighted AI (botCardPickerAI.PickCard), respecting category blacklists (NotForBots). - Updates the on-screen
PickBoardtoREADYin real time and automatically applies bot card upgrades viaModdingUtils.Utils.Cards.RPCA_AssignCard/ApplyCardStats.Pick.
🛡️ RayHitReflect, Photon RPC, & Coroutine Resilience
- RayHitReflect / CareenMono Collision Fixes: Dynamically initializes missing
MoveTransformandProjectileHitreferences, eliminating 80+ frame NREs inCosmicRounds. - Photon RPC Network Desync Protection: Prevents
ProjectileHit.RPCA_DoHitcrashes from invalid/orphaned Photon view IDs. - PCE SuperJumpEffect OnUpdate Protection: Stops 119+ frame NREs when dead or inactive players trigger PCE card effects.
- Explosion Missing Spawner Guard: Automatically provides fallback spawner contexts for
Explosion.DoExplosionEffects(fixes 59+ explosion NREs). - MapTransition & PlayerManager Coroutine Safety: Intercepts coroutine exceptions during round end and map transition, cleanly terminating destroyed player movements (
yield break) without stalling the match. - Leaver & Disconnect Resilience: Prevents crashes in
RWF.AssignPlayerIDandSetPlayerSpriteLayer.Startwhen players disconnect mid-round. - Twitch Shutdown Freeze Fix (
RoundsWithViewers): Silences NREs and eliminates the forced 500ms synchronous main-thread sleep inRWV.OnDestroy()when playing without an active Twitch connection.
📦 Compatibility
Works seamlessly with any mod combination:
- CosmicRounds
- Player-Customization-Extended (PCE)
- Rounds With Friends (RWF)
- EveryonePicks
- UnboundLib
- Performance_Improvements
- CPCCore / CPC Crafter
- Cards+ / CardsPlusPlugin
- DemonicPact
- ModdingUtils
- Will's Wacky Cards (WWC)
- StatRevealMod
- ModernStatsHUD
- RoundsDashLoader
- RoundsPatchFpsFix
🛠️ Installation
- Install via r2modman or Thunderstore Mod Manager.
- Alternatively, place
RoundsPatchworkPlus.dll,manifest.json, andicon.pnginto your BepInEx plugins folder:BepInEx/plugins/naccel_inc-RoundsPatchworkPlus/