ROUNDS
Install with App

Details

Latest version
1.1.7
Last Updated
First Uploaded
Downloads
470
Likes
0
Size
128KB
Dependants

Categories

ROUNDS Patchwork Plus

ROUNDS Mod Version Tested

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.7 (Map Physics, Rarity & Log Stabilization)

  • 🗺️ StickFightMaps & MapsExtended 1.4.2 Compatibility (MissingMethodException Fix):
    • Resolved 130+ repeated MissingMethodException: void MapsExt.MapsExtended.OnPhotonMapObjectInstantiate errors when spawning custom physics map objects (boxes, hinges, chains). MapsExtended 1.4.2 replaced this with AddPhotonInstantiateListener. PatchworkPlus dynamically bridges the call, restoring full box scaling, hinge rotations, and chain physics without console spam.
  • 📋 DeckCustomization NewGUI NullReferenceException Guard:
    • Prevents UI crash in DeckCustomization.NewGUI when menu GameObjects are disposed before or during UnboundLib text rendering.
  • 🃏 ASK (Aidan Scyye Keyanlux) RarityException Elimination:
    • Suppresses premature RarityException in Awake and seamlessly binds CodRarity during Start, ensuring all Call of Duty custom cards receive their registered rarity safely.
  • 💥 Inactive Bullet Coroutine Guard (Bullet_Base(Clone)):
    • Guards ProjectileHit.AddPlayerToHeld against starting coroutines on inactive/destroyed bullet GameObjects during simultaneous blocks or deflections.
  • 🔇 WillsWackyManagers 200 KB Curse Log Flood Silenced:
    • Cleanly overrides CurseManager.CanDrawCursesCondition and deactivates hardcoded extremeDebugging, saving hundreds of KB of log disk writes and eliminating draft-phase stutter.

⚡ Highlights from v1.1.6 (Lobby Ready & Bot NRE Storm Elimination)

  • 🤖 Lobby Bot Readiness & Face Button Unstacking (CharacterSelectionInstance):
    • Fixed a severe issue where adding bots in modpacks without AALUND13-RoundWithBots threw an unhandled NullReferenceException every single frame in CharacterSelectionInstance_Patch_Update.Prefix (currentPlayer.data.playerActions.Device.CommandWasPressed).
    • Intercepts bot lobby processing before RWF, sanitizes dummy input devices, hides overlapping/stacked face button portraits, and provides manual [R] / [B] toggle readying as well as an automatic 0.5s auto-ready timer.
    • Leaves human players completely untouched for responsive vanilla and RWF input handling.
  • 🛡️ Host Immunity & Vanilla Bot Identification:
    • Refined IsBotPlayer to accurately differentiate vanilla AI players from local human hosts regardless of internal player IDs.
  • 🛡️ Ceiling Spawn & Premature Round Start Fix:
    • Fixed an issue where players spawned in the ceiling/skybox taking out-of-bounds damage and triggering round 2 before round 1 could be played.
    • Preserved vanilla PlayerManager.Move landing detection and map transition curves, guaranteeing all players reach the floor safely before physics simulation begins.
  • 🛡️ Definitive Main Menu Freeze Fix:
    • Completely overrides UnboundLib.Utils.CardManager.FirstTimeStart() with a crash-proof implementation using case-insensitive HashSet category deduplication and safe dictionary indexers (dict[key] = val).
    • Fixes fatal ArgumentException: An item with the same key has already been added. Key: Root caused 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 cardMenuCanvas objects after 1.2s, guaranteeing the main menu is never blocked by invisible overlays.
  • 🗂️ Empty Category Boundary Guard:
    • Automatically filters out empty registered categories (Count == 0) in ToggleCardsCategoriesManager, preventing ArgumentOutOfRangeException crashes.
  • 🧹 Clean Initialization Dictionaries:
    • Pre-clears scrollViews and cardObjs in both ToggleCardsMenuHandler and SandboxImprovements.CardSpawnMenuHandler prior to card instantiation.

🚀 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), CPCCore crashed with NullReferenceException inside ProjectileHit.Hit.
  • This caused bullets to pass right through players without dealing damage or triggering on-death explosions.
  • ROUNDS Patchwork Plus safely intercepts null colliders and wraps ProjectileHit.Hit with 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.timeScale locked near zero.
  • The built-in watchdog monitors battle progress: if timeStop or gameOverTime stays 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 NullReferenceException errors per second inside DuringReloadTrigger.Update() when referencing uninitialized weapons.
  • Safely intercepts uninitialized GunAmmo and 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 PlayerSpotlight fade 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 RoundsWithBots weighted AI (botCardPickerAI.PickCard), respecting category blacklists (NotForBots).
  • Updates the on-screen PickBoard to READY in real time and automatically applies bot card upgrades via ModdingUtils.Utils.Cards.RPCA_AssignCard / ApplyCardStats.Pick.

🛡️ RayHitReflect, Photon RPC, & Coroutine Resilience

  • RayHitReflect / CareenMono Collision Fixes: Dynamically initializes missing MoveTransform and ProjectileHit references, eliminating 80+ frame NREs in CosmicRounds.
  • Photon RPC Network Desync Protection: Prevents ProjectileHit.RPCA_DoHit crashes 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.AssignPlayerID and SetPlayerSpriteLayer.Start when players disconnect mid-round.
  • Twitch Shutdown Freeze Fix (RoundsWithViewers): Silences NREs and eliminates the forced 500ms synchronous main-thread sleep in RWV.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

  1. Install via r2modman or Thunderstore Mod Manager.
  2. Alternatively, place RoundsPatchworkPlus.dll, manifest.json, and icon.png into your BepInEx plugins folder: BepInEx/plugins/naccel_inc-RoundsPatchworkPlus/
Thunderstore development is made possible with ads. Please consider making an exception to your adblock.