Scorpio-LateJoinFix icon

LateJoinFix

Comprehensive community patch for R.E.P.O. mid-game joining. Fixes infinite black screens, missing dungeon rooms, solid wall desyncs, dead dummy models, and shop glitches.

By Scorpio
Last updated 2 hours ago
Total downloads 31
Total rating 0 
Categories Mods Server-side AI Generated
Dependency string Scorpio-LateJoinFix-1.0.0
Dependants 0 other packages depend on this package

This mod requires the following mods to function

BepInEx-BepInExPack-5.4.2100 icon
BepInEx-BepInExPack

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

Preferred version: 5.4.2100

README

LateJoinFix (v1.0.0) — Community Patch for R.E.P.O.

A comprehensive, stable, and tested community patch for mid-game joining in R.E.P.O.
Allows friends to connect directly into your active game session at any time (during levels, truck phase, or in the shop) without game-breaking bugs, crashes, or black screens!

[!NOTE] Автоматический префикс открытых комнат: [Late Join (Fix)]
(Scroll down for English version ↓)


🇷🇺 Русская версия

💡 О моде

Оригинальная система позднего подключения в игре страдала от критических багов десинхронизации: заходящие игроки застревали на вечном чёрном экране, проваливались в бездну под картой, комнаты блокировались глухими стенами, живые тиммейты превращались в мёртвых манекенов на координатах (0, 0, 0), а двери в магазине выворачивались наизнанку.

LateJoinFix — это полностью переработанный, независимый и оптимизированный патч, который устраняет все известные проблемы сетевого движка Photon и процедурной генерации комнат.


🛠️ Что исправлено в LateJoinFix

1. 🚪 Пропадающие комнаты и замурованные проходы (Стены)

  • Причина бага: Хост отсылал данные соединений комнат без сетевой буферизации до того, как клиент успевал прогрузить префабы модулей. В результате клиент их отбрасывал, все дверные проемы блокировались глухими стенами, а генерация уровня зависала навсегда.
  • Решение в LateJoinFix:
    • Реализован надёжный сетевой слепок Photon Event 173: хост гарантированно передаёт полную карту комнат новому игроку.
    • Добавлен клиентский авто-сканер (SweepAndRepairModulesClient): клиент сканирует соседние комнаты по 30-метровой сетке карты, убирает глухие перегородки, открывает дверные проёмы и запускает освещение и туман.

2. 🛡️ Вечный чёрный экран загрузки (Infinite Black Screen)

  • Причина бага: Метод игры LoadingUI.LateUpdate ждёт, пока у всех игроков в комнате флаг levelAnimationCompleted станет равен true. При заходе посреди матча у других игроков этот флаг на клиенте по умолчанию false. Из-за этого экран загрузки висел бесконечно.
  • Решение в LateJoinFix: Клиент автоматически проставляет флаг готовности для всех существующих аватаров.
  • Сторожевой таймер (Watchdog): Если экран загрузки висит дольше 3.5 секунд при готовом игроке, мод принудительно и безопасно снимает затемнение (StopLoading()).

3. 👻 Стоячие манекены на (0, 0, 0) и ложные смерти тиммейтов

  • Причина бага: Из-за некорректных фоновых проверок живые игроки ошибочно признавались мёртвыми, а тела ранее погибших игроков спавнились как стоячие манекены на спавне.
  • Решение в LateJoinFix: Проверка смерти переведена строго на системные флаги (deadSet, health <= 0 и триггер головы смерти). Фантомные тела корректно скрываются, а сетевой объект остаётся активным — погибших тиммейтов всегда можно воскресить через голову (ReviveRPC).

4. 📍 Безопасный спавн на пол (Никаких спавнов в стены и пустоту)

  • Причина бага: Слепой спавн на координатах хоста часто выбрасывал игрока за пределы карты или вглубь текстур стен.
  • Решение в LateJoinFix: Алгоритм GetSafeSpawnTransform с круговой проверкой препятствий и гарантированным рейкастом вниз в твердую геометрию пола (Physics.Raycast).

5. 🏬 Защита от скручивания стен в Магазине и на уровнях

  • Причина бага: Повторная синхронизация поворачивала стены модуля на 90°, отрезая половину магазина или создавая дыры в космос.
  • Решение в LateJoinFix: Harmony-патч сохраняет исходную ориентацию стен префаба, полностью поддерживая фазу магазина (SemiFunc.RunIsShop()).

6. 🖐️ Исправление сломанных рук, PhysGrabber и лазера тиммейтов

  • Причина бага: Проверка localCamera == null замораживала руки и анимации сетевых тиммейтов.
  • Решение в LateJoinFix: Проверка камеры ограничена локальным игроком. Руки, захват предметов и анимации сетевых друзей синхронизируются безупречно.

7. 🚪 Сохранение дверей комнат и стабильность физики

  • Убран деструктивный код, удалявший двери на петлях (Object.Destroy).
  • Убран глобальный сброс кинематики у физ-объектов, предотвращая выпадание предметов сквозь пол.

🎮 Возможности интерфейса (HUD и префикс)

  • HUD в левом нижнем углу: Отображает статус входа, тип комнаты, название лобби и количество игроков (напр. 3/6).
  • Трекер подключения: Показывает статус подключающихся друзей (Connecting / Queued / Loading / Joined).
  • Авто-префикс комнат: Автоматически добавляет [Late Join (Fix)] к названию открытого лобби.
  • Защита переходов: Блокирует вход во время смены уровня, предотвращая подключение в момент смены сцены.

🇬🇧 English Version

💡 Overview

LateJoinFix is a standalone, fully verified multiplayer patch that resolves all game-breaking desynchronization, procedural generation, and lifecycle bugs when joining active R.E.P.O. sessions mid-game.


🛠️ Key Fixes Included

  1. 🚪 Missing Rooms & Solid Wall Blockades Fixed:

    • Implemented reliable Photon Event 173 room connection snapshots from host to late joiners.
    • Autonomous dungeon healer (SweepAndRepairModulesClient) on 30m grid removes blocking walls, clears doorways, and initializes lighting and fog.
  2. 🛡️ Infinite Black Screen Watchdog:

    • Fixes the native LoadingUI.LateUpdate hang by ensuring levelAnimationCompleted == true on all players.
    • 3.5s anti-hang watchdog safely dismisses loading screen once avatar is ready.
  3. 👻 Ghost Dummies at (0, 0, 0) & False Death Fixes:

    • Eliminates false death detection on living teammates.
    • Cleans up inactive dummy models while preserving ReviveRPC delivery so deceased teammates can always be revived.
  4. 📍 Safe Raycast Ground Spawning:

    • GetSafeSpawnTransform runs radial raycasts into solid ground geometry, preventing abyss and wall spawns.
  5. 🏬 Shop & Dungeon Wall Flip Protection:

    • Prevents rotation accumulation (+90°), fully supporting the Shop phase (SemiFunc.RunIsShop()).
  6. 🖐️ Restored Remote Teammate Hands, Grabbers & Animations:

    • Fixes localCamera scoping so remote teammates' arms, beams, and grabbers never freeze.
  7. 📦 Clean Packaging & Dependencies:

    • Correctly linked to official BepInEx-BepInExPack-5.4.2100 for 100% automated installation via Thunderstore and r2modman.