You are viewing a potentially older version of this package. View all versions.
AST_Studios-LateRepo_Fix-1.1.4 icon

LateRepo Fix

Compatibility patch for LateRepo 1.6.4: fixes the outdated singleplayerPool error, active-round lobby access, enemy late-join state, early client module link repair, targeted module replay, and late-join battery charge UI sync.

Date uploaded a day ago
Version 1.1.4
Download link AST_Studios-LateRepo_Fix-1.1.4.zip
Downloads 1375
Dependency string AST_Studios-LateRepo_Fix-1.1.4

This mod requires the following mods to function

BepInEx-BepInExPack-5.4.2305 icon
BepInEx-BepInExPack

BepInEx pack for Mono Unity games. Preconfigured and ready to use.

Preferred version: 5.4.2305
Chaosholz-LateRepo-1.6.4 icon
Chaosholz-LateRepo

Adds LateJoin to R.E.P.O. and includes several quality-of-life features.

Preferred version: 1.6.4

README

LateRepo Fix

Compatibility patch for LateRepo 1.6.4.

It prevents the repeated RunManager.singleplayerPool MissingFieldException that can appear when LateRepo wraps LevelGenerator.Start together with older mods that still expect that removed game field.

It also adds host-side options that keep the Steam lobby and Photon room joinable during an active round, so players can connect while the host is already inside a level instead of only joining in the shop/truck.

The Steam lobby is only unlocked when the game or LateRepo tries to lock it or when the level changes. The periodic refresh only keeps the Photon room open, so it does not spam Steam: Unlocking lobby....

The patch also synchronizes enemy player-state dictionaries for late joiners, preventing missing-key errors in EnemyOnScreen and EnemyVision when a player connects after enemies already exist.

It repairs client module connection state before room blockers and connection objects are generated, then keeps a targeted host replay as a backup after the late joiner's player avatar exists. This prevents early missed room-link RPCs from leaving connected rooms blocked by phantom walls after an active-round join or reconnect.

It sends the current vanilla ItemBattery charge state to newly joined clients and resyncs it after level item setup. It also repairs stale inventory battery counters on clients, keeping charge bars correct for Phase Bridge, staff weapons, Defibro, drones, and other battery-style items without replaying equipped item state globally.

Config

The config file is created at BepInEx/config/laterepo.fix.runtime.cfg after launching the game once.

  • General.DebugLogging: enables extra logs for this fix. Default: false.
  • Host.AllowJoiningDuringActiveRound: keeps the host lobby joinable during active runs. Default: true.
  • Host.KeepPhotonRoomOpenDuringActiveRound: keeps the Photon room open and visible while active round joining is enabled. Default: true.
  • Level.SyncModuleConnectionsForLateJoiners: repairs module connection state before client block generation and replays the host state directly to active-round late joiners. Default: true.
  • Items.SyncItemBatteryStateForLateJoiners: sends current item charge state to newly joined clients. Default: true.
  • Items.RepairInventoryBatteryUiForLateJoiners: repairs stale vanilla inventory battery UI counters on clients. Default: true.

Install

Install this alongside LateRepo.

For multiplayer, install it on the host and every client.

Support

Discord: https://discord.com/invite/rbYzZFYfUg

CHANGELOG

Changelog

1.1.4

  • Added an early client-side module connection prepass before GenerateConnectObjects and GenerateBlockObjects.
  • Fixes active-round reconnects where the client could generate phantom walls before receiving the host's room-link replay.
  • Applies incoming ModuleConnectionSetRPC idempotently on clients, preventing duplicate module-ready counts and duplicate prop-switch setup.
  • Keeps the targeted host module replay from 1.1.3 as a backup for late-loaded module PhotonViews.
  • Helps prevent late-joined or reconnected players from spawning inside disconnected room blockers after a crash.

1.1.3

  • Added targeted vanilla ItemBattery state sync for newly joined clients.
  • Fixed missing charge bars for vanilla charged items such as Phase Bridge and staff weapons after joining an active round.
  • Also resyncs item battery charge after level item setup, covering clients who joined before the round but loaded items with stale charge UI.
  • Added an inventory UI fallback that repairs stale private ItemBattery bar counters when vanilla returns an empty charge state.
  • Extended targeted late-join battery sync retries so active-round joiners can receive charge state after their item PhotonViews finish loading.
  • Sends current battery state only to the newly joined player, avoiding the old global item state replay that broke charge UI.
  • Stores module connection state on the host and replays it directly to late joiners after their player avatar is ready, avoiding early ModuleConnectionSetRPC misses that could create disconnected/phantom walls.
  • Skips direct ItemBattery RPC sync for nested batteries whose PhotonView cannot receive vanilla battery RPC methods, preventing BatteryToggleRPC / BatteryFullPercentChangeRPC console errors.
  • Added Items.SyncItemBatteryStateForLateJoiners config.
  • Added Items.RepairInventoryBatteryUiForLateJoiners config.

1.1.2

  • Removed the experimental equipped item state replay and ItemEquippable.RPC_UpdateItemState guard because they could break charge bars on battery-style items and Defibro.
  • Removed Items.RepairItemEquipStateRpc and Items.SyncEquippedItemsForLateJoiners config.
  • Replaced late module connection replay with buffered ModuleConnectionSetRPC during generation, so active-round joiners receive room links through the same Photon cache path as vanilla level state.
  • Removed late-join item battery state replay. LateRepo Fix no longer sends BatteryFullPercentChangeRPC, leaving charge bars to vanilla ItemBattery and item-specific fixes.
  • Updated Level.SyncModuleConnectionsForLateJoiners to control buffered module connection sync.

1.1.1

  • Stopped the periodic Steam lobby unlock call that caused constant Steam: Unlocking lobby... console spam.
  • Kept the periodic Photon room open/visible refresh for active-round joining.
  • Added late-join enemy state synchronization to prevent missing player dictionary keys in EnemyOnScreen and EnemyVision.
  • Keeps the host Photon room open and visible while active round joining is enabled.
  • Added Host.KeepPhotonRoomOpenDuringActiveRound config.
  • Added periodic host access refresh during active runs.

1.1.0

  • Added Host.AllowJoiningDuringActiveRound config.
  • Keeps the host Steam lobby joinable while active round joining is enabled.
  • Preserves public/private lobby visibility while allowing joins.

1.0.0

  • Added a guard around LateRepo's LevelGenerator.Start hook.
  • Added a finalizer on LevelGenerator.Start so the guard still works after runtime hooks are installed.
  • Suppressed the outdated RunManager.singleplayerPool MissingFieldException.
  • Added General.DebugLogging config.