LateJoinFixed
Polished & bug-free LateJoin for REPO (fix by Scorpio). Fixes item slot equip disappearance, inventory sync, missing rooms/doors, black screens, and dead dummies.LateJoinFixed (v1.2.7) — Fix by Scorpio
A fully overhauled, polished, and bug-free edition of LateJoinNow for R.E.P.O.
Allows friends to join your active session anytime mid-game (during levels, truck phase, or shop) without the game-breaking bugs from the original release!
[!NOTE] Автоматический префикс открытых комнат:
[Late Join (fix by Scorpio)]
Scroll down for full English description ↓
🇷🇺 Русская версия
🛠️ Что исправлено в версии 1.2.4 (Fix by Scorpio)
-
🚪 Исправление пропавших комнат и замурованных проходов (Стен):
- Причина бага в оригинале: Сетевые вызовы соединений комнат (
ModuleConnectionSetRPC) отсылались хостом без буферизации до того, как клиент успевал прогрузить префабы комнат. В результате клиент их отбрасывал, все дверные проемы комнат блокировались глухими стенами (ModulePropSwitch.NotConnectedParent), а цикл генерации уровняLevelGenerator.Generateзависал навсегда! - Решение: Реализован надёжный сетевой слепок Photon Event 173 + клиентский алгоритм авто-диагностики и восстановления комнат (
SweepAndRepairModulesClient). Если данные сети задержались, клиент автоматически определяет соседей по 15-метровой сетке карты, моментально убирает глухие стены, открывает проходы в комнаты и корректно запускает освещение и туман.
- Причина бага в оригинале: Сетевые вызовы соединений комнат (
-
🛡️ Устранён вечный чёрный экран (Infinite Black / Loading Screen):
- Причина бага в оригинале: Родная система игры
LoadingUI.LateUpdateкаждый кадр проверяет всех игроков вPlayerListи ждёт, пока у каждого игрокаlevelAnimationCompleted == true. При подключении посреди игры аватары других игроков на клиенте создаются с дефолтнымfalse. В оригинале флаг выставлялся только на хосте, из-за чего экран у вошедшего игрока оставался чёрным навсегда! - Решение: Клиент теперь автоматически помечает
levelAnimationCompleted = trueдля всех существующих игроков при спавне. - Сторожевой таймер (Watchdog): Если экран загрузки висит дольше 3.5 сек при готовом игроке, он принудительно и безопасно скрывается (
StopLoading()). - Стабильность корутины: Убран преждевременный сброс (
yield break) при задержках сетевого рукопожатия.
- Причина бага в оригинале: Родная система игры
-
📍 Безопасный спавн на пол (Никаких спавнов в пустоту, стены и воздух):
- Причина бага в оригинале: В оригинале при телепорте брался вектор
host.position + forward * 3fвслепую без рейкастов. Если хост стоял лицом к стене или у обрыва — новичок спавнился внутри стены или летел в бездну. А если точек спавна не было (array.Length == 0), мод просто прерывал спавн сreturn false, оставляя игрока висеть в небытии на координатах (0, 0, 0). - Решение: Написан алгоритм
GetSafeSpawnTransformс поиском безопасных точек вокруг тиммейта, рейкастом прямой видимости от стен и рейкастом вниз в твердую геометрию пола (Physics.Raycast). - Гарантированный спавн: При отсутствии стандартных точек спавна гарантированно спавнит на пол рядом с живым тиммейтом или навигационной точкой комнаты (
LevelPoint).
- Причина бага в оригинале: В оригинале при телепорте брался вектор
-
🖐️ Полный фикс сломанных рук, PhysGrabber и анимаций:
- Причина бага в оригинале: В оригинальном моде в префиксах
PhysGrabber.Update,PlayerAvatarVisuals.UpdateиPlayerAvatarLeftArm.Updateстояла проверка:if (playerAvatar.localCamera == null) return false;. В сетевой игреlocalCameraесть только у локального игрока, а у тиммейтов она всегдаnull! Из-за этого хук намертво блокировал руки, лазер, перетаскивание предметов и анимации для всех сетевых тиммейтов! - Решение: Проверка
localCameraограничена строго локальным игроком (isLocal). Руки, физика предметов и анимации тиммейтов теперь синхронизируются безупречно.
- Причина бага в оригинале: В оригинальном моде в префиксах
-
🌐 Полная совместимость (Coop Interoperability):
- Поддерживает совместную игру как с игроками на оригинальном LateJoinNow 1.1.0, так и на новой версии 1.2.0+.
- Автоматическая синхронизация кастомизации персонажей и голосового чата в режиме Coop.
🎮 Возможности мода
- HUD в левом нижнем углу: Отображает тип комнаты, статус входа («открыто/заблокировано»), название лобби и количество игроков в реальном времени.
- Статус подключения игроков: Отображает прогресс входящих тиммейтов (Ожидание / В очереди / Загрузка / В игре).
- Авто-префикс открытых комнат: Автоматически добавляет
[Late Join (fix by Scorpio)]к названию лобби. - Безопасный переход между уровнями: Автоматически временно блокирует вход во время смены сцены, чтобы предотвратить сбои при загрузке карты.
- Режим двойной оптимизации (Coop Mode): Если мод установлен у обоих игроков, время загрузки сокращается до 3–5 секунд, автоматически обновляются голоса и модели персонажей.
⚙️ Таблица настроек (Config)
| Группа | Настройка | По умолчанию | Описание |
|---|---|---|---|
| A. Global | Mod Enabled | Включено | Главный переключатель мода. |
| A. Global | Public Room Name Prefix | Включено | Добавляет префикс [Late Join (fix by Scorpio)] к названию открытой комнаты. |
| A. Global | Teleport To Host On Join | Выключено | Спавнит игрока рядом с хостом (с проверкой пола рейкастом). Если выключено — на точке спавна. |
| A. Global | Coop Mode | Включено | Двусторонняя оптимизация при наличии мода у обоих игроков. |
| B. Scene Whitelist | Allow Join in Truck | Включено | Разрешить вход в фазе грузовика. |
| B. Scene Whitelist | Allow Join in Shop | Включено | Разрешить вход в магазине. |
| B. Scene Whitelist | Allow Join in Level | Включено | Разрешить вход прямо во время прохождения уровня. |
| C. Room Info HUD | Enabled | Включено | Отображение инфо-блока в левом нижнем углу экрана. |
| C. Room Info HUD | Show Join Status | Включено | Отображение статуса подключающихся игроков. |
| C. Room Info HUD | Show Room Type | Включено | Отображение типа комнаты (публичная, приватная и т.д.). |
| C. Room Info HUD | Show Room Name | Включено | Отображение названия лобби. |
| C. Room Info HUD | Show Player Count | Включено | Отображение текущего и макс. числа игроков (напр. 3/6). |
| C. Room Info HUD | Font Size | 16 | Размер шрифта HUD (10–28). |
| C. Room Info HUD | Text Opacity / % | 80 | Прозрачность текста HUD (20–100%). |
| D. Debug | Verbose Log | Выключено | Подробный вывод диагностических логов в консоль. |
| D. Debug | Conflict Warning | Включено | Предупреждение при обнаружении других конфликтных модов на вход. |
🇬🇧 English Version
🛠️ What's Fixed in Version 1.2.4 (Fix by Scorpio)
-
🚪 Missing Rooms & Blocked Doorways (Solid Walls) Fixed:
- Root Cause in Original Mod: Unbuffered room connection RPCs (
ModuleConnectionSetRPC) were sent by the host before the late joiner had instantiated the room prefabs. Photon automatically dropped them, leaving all doorways blocked by solid walls (ModulePropSwitch.NotConnectedParent) and hanging the client'sLevelGenerator.Generateloop permanently. - The Solution: Implemented reliable Photon Event 173 room connection snapshots along with a client-side self-healing scanner (
SweepAndRepairModulesClient). If network data is delayed, the client automatically infers room connections based on the rigid 15m dungeon grid, removes blocking walls, opens doorways, and unhangs the level generator to initialize lighting and fog.
- Root Cause in Original Mod: Unbuffered room connection RPCs (
-
🛡️ Fixed Infinite Black Loading Screen:
- Root Cause in Original Mod: The game's native
LoadingUI.LateUpdatechecks all players inPlayerListand waits for every player to havelevelAnimationCompleted == true. When joining mid-run, remote player avatars are instantiated on the client with a defaultfalse. The original mod only set this flag on the host! Consequently, the joining client remained stuck on a permanent black loading screen. - The Solution: The client now automatically sets
levelAnimationCompleted = truefor all existing players as soon as they spawn. - Anti-Hang Watchdog: If the loading screen stays visible for longer than 3.5 seconds after the player avatar is initialized, it is safely and forcefully closed (
StopLoading()). - Coroutine Reliability: Removed premature aborts (
yield break) caused by network latency during the handshake.
- Root Cause in Original Mod: The game's native
-
📍 Safe Ground Raycast Spawning (No More Void / Wall Spawning):
- Root Cause in Original Mod: When teleporting to host, the original mod blindly calculated
host.position + forward * 3f. If the host was looking at a wall or near a ledge, the joiner spawned inside solid geometry or fell into the bottomless abyss. Furthermore, ifSpawnPoint[]was empty, the mod returnedfalsewithout spawning the avatar, leaving players stranded in limbo at (0, 0, 0). - The Solution: Developed
GetSafeSpawnTransformwith multi-candidate testing around teammates, direct line-of-sight obstruction checks against walls, and downward raycasting into solid floor geometry (Physics.Raycast). - Guaranteed Spawn Fallback: If standard spawn points are missing or inactive, players safely spawn near a living teammate or the nearest valid room navigation node (
LevelPoint).
- Root Cause in Original Mod: When teleporting to host, the original mod blindly calculated
-
🖐️ Fixed Broken Hands, PhysGrabber & Character Visuals:
- Root Cause in Original Mod: In
PhysGrabber.Update,PlayerAvatarVisuals.Update, andPlayerAvatarLeftArm.Update, the original author added:if (playerAvatar.localCamera == null) return false;. In multiplayer, only the local player possesses a localCamera — remote teammates always havelocalCamera == null! This caused the mod to permanently freeze hands, beam visualizers, item physics, and body/head animations for all remote teammates! - The Solution: Strictly scoped
localCamerachecks to local player avatars (isLocal). Remote player arms, hands, head turns, grabbers, and item interactions now synchronize smoothly.
- Root Cause in Original Mod: In
-
🌐 Full Backward & Forward Interoperability:
- Fully compatible with players running either the original LateJoinNow 1.1.0 or this updated 1.2.0+ version.
- Dual-end coop mode automatically syncs cosmetics, player colors, and proximity voice chat.
🎮 Features
- Bottom-left HUD: Displays real-time room type (with open/locked status), lobby name, and player count without background clutter.
- Late Joiner Progress: Real-time tracker for connecting friends (Connecting / Queued / Loading / Joined).
- Automatic Room Name Prefix: Automatically adds
[Late Join (fix by Scorpio)]to custom public lobbies. - Transition Lock Protection: Temporarily locks the room during scene transitions to prevent joining into half-loaded maps.
- Dual-end Coop Optimization: When both host and client have the mod, loading times are cut down to 3–5 seconds with automatic model and voice chat syncing.
⚙️ Configuration Settings
| Group | Setting | Default | Description |
|---|---|---|---|
| A. Global | Mod Enabled | On | Master toggle — turning off completely disables the mod. |
| A. Global | Public Room Name Prefix | On | Adds [Late Join (fix by Scorpio)] prefix to public lobbies. |
| A. Global | Teleport To Host On Join | Off | Spawns late joiners next to the host (with raycast ground checks). If disabled, spawns at spawn points. |
| A. Global | Coop Mode | On | Auto-engages dual-end optimization when both host and client have the mod. |
| B. Scene Whitelist | Allow Join in Truck | On | Allow joining while players are in the truck. |
| B. Scene Whitelist | Allow Join in Shop | On | Allow joining during the shop phase. |
| B. Scene Whitelist | Allow Join in Level | On | Allow joining while exploring and looting regular levels. |
| C. Room Info HUD | Enabled | On | Shows the info box in the bottom-left corner. |
| C. Room Info HUD | Show Join Status | On | Displays the connection and loading progress of late joiners. |
| C. Room Info HUD | Show Room Type | On | Displays lobby type (Public, Friends Only, etc.). |
| C. Room Info HUD | Show Room Name | On | Displays the room name. |
| C. Room Info HUD | Show Player Count | On | Displays current and max player count (e.g. 3/6). |
| C. Room Info HUD | Font Size | 16 | Font size for the HUD (10–28). |
| C. Room Info HUD | Text Opacity / % | 80 | Text opacity percentage for the HUD (20–100%). |
| D. Debug | Verbose Log | Off | Prints verbose diagnostic logs to console. |
| D. Debug | Conflict Warning | On | Shows an alert if conflicting late-join mods are detected. |
📜 Credits
- Based on original concepts by Zichen.
- Overhauled, debugged, and fixed by Scorpio.
