Map Exploration Sync (Integrated from MapSyncFix):
Host automatically synchronizes all explored RoomVolume positions to mid-level joiners via Photon event code 163 (RW.MapSync).
Late joiners uncover matching rooms as soon as their map modules are ready, completely fixing covered/black maps for newcomers.
Fully cross-compatible with standalone MapSyncFix users.
Added fallback option (RevealAllRoomsWhenHostHasNoMod) to reveal the entire map if the host does not have the mod.
Resting / Frozen Enemies Fix (EnemySync):
Host informs mid-level joiners of all resting/dormant enemies using vanilla DespawnRPC.
Fixes the classic bug where mid-level joiners saw enemies standing completely frozen and unresponsive in their spawn rooms. Works even for vanilla clients joining a host with this mod.
Guarded Module.ModuleConnectionSetRPC with a prefix to prevent running Setup() on already initialized pieces (which flipped wall and floor switches to the wrong side).
Client automatically repairs and connects any unset level modules based on the 15-meter grid layout, rebuilding missing floor bridges, pit covers, and walls.
Configuration & Optimization:
Added full bilingual configuration options for MapSync, RevealAllRoomsWhenHostHasNoMod, LevelRepair, and EnemySync.
Добавлено / Исправлено (RU)
Синхронизация исследованной карты (интеграция MapSyncFix):
Хост автоматически передаёт координаты всех исследованных комнат зашедшему посреди раунда игроку (Photon event 163, RW.MapSync).
У новичка корректно открываются все исследованные командой зоны, устраняя проблему полностью закрытой чёрной карты.
Полная совместимость с игроками с отдельным модом MapSyncFix.
Добавлена опция RevealAllRoomsWhenHostHasNoMod для открытия всей карты, если у хоста нет мода.
Исправление застывших монстров (EnemySync):
Хост отправляет новичку стандартный DespawnRPC для спящих/отсутствующих на карте врагов.
Полностью исправлен баг, когда зашедший игрок видел спящих монстров неподвижно застывшими в комнате спавна. Работает даже для игроков без модов, подключающихся к хосту.
Исправление невидимых дыр и фантомных стен (LevelRepair):
Добавлен хук на Module.ModuleConnectionSetRPC, защищающий от повторной настройки блоков (из-за чего мосты и стены выворачивались не в ту сторону).
Клиент спустя 6 секунд после генерации проверяет и автоматически восстанавливает соединения непривязанных модулей уровня по 15-метровой сетке, устраняя провалы в пустоту и невидимые преграды.
Настройки и оптимизация:
Добавлены переключатели в конфиг для всех новых функций с поддержкой русского и английского языков.
[1.2.9] - 2026-10-02
Fixed (EN)
Item Disappearing When Equipped By Late Joiner: Complete fix for items vanishing into the void when late-joining players put an item into an inventory slot (1, 2, 3).
Fixed EnsureInventoryReady out-of-bounds error that prevented inventory spot initialization.
Eliminated the RPC drop and retry coroutine stall, ensuring seamless client-host synchronization.
Added robust slot state sanitization and fallback recovery to guarantee items are placed into the UI slot and never destroyed.
Fixed unequip security check (SemiFuncOwnerOnlyRPC) for late joiners.
Исправления (RU)
Исчезновение предметов при экипировке новичком: Полное исправление бага с исчезновением вещей при взятии в слот инвентаря (1, 2, 3) зашедшим игроком.
Исправлен вылет IndexOutOfRangeException в EnsureInventoryReady, блокировавший привязку слотов.
Убрана задержка сетевого RPC, вызывавшая рассинхронизацию с хостом и деактивацию вещи.
Добавлена очистка слота и гарантированное восстановление предмета в UI инвентаря.
Исправлена проверка прав на вытаскивание предметов из слотов (RPC_CompleteUnequip).
[1.2.8] - 2026-10-02
Fixed (EN)
Item Disappearing When Putting Into Inventory Slot: Fixed the critical bug where items completely disappeared into thin air when a late-joining newcomer attempted to put them into an inventory slot (1, 2, or 3).
Proactive Inventory Initialization: Resolved the issue where Inventory.instance.inventorySpots was left uninitialized ([null, null, null]) with spotsFeched = false because InventorySpot.LateStart() ran during menu scenes. Implemented EnsureInventoryReady() which actively scans the scene and links InventorySpot elements to Inventory.instance immediately on join, level transition, and input attempt.
Eliminated RPC Drop / Deadlock: Fixed ItemEquippableUpdateItemStatePrefix so it immediately ensures inventory readiness instead of intercepting RPC_UpdateItemState into a fragile coroutine that timed out and dropped the equip event while the host teleported the item to the void.
Postfix Safety Net: Added ItemEquippableUpdateItemStatePostfix to ensure that if equippedSpot fails to bind during vanilla execution, it is immediately recovered, assigned, and registered with the HUD slot, releasing any lingering physics grabs.
Late Join Inventory State Sync: Added state synchronization for equipped items in SendStateSyncStreamed, ensuring late joiners receive exact equipped item states for all players.
PhysGrabber Remote & Level Guards: Fixed PhysGrabberUpdatePrefix which previously disabled PhysGrabber.Update() for remote players and during scene transitions. Remote players now update grab physics, beams, and visuals seamlessly.
InventoryUI NullReferenceException Fix: Patched InventoryUI.Update() to prevent NRE crashes when LevelGenerator.Instance is not yet available or generated.
Исправления (RU)
Исчезновение вещей при помещении в слот инвентаря: Полностью устранён критический баг, из-за которого взятый предмет бесследно пропадал при попытке положить его в слот инвентаря (клавиши 1, 2 или 3) у зашедшего посреди игры игрока.
Гарантированная инициализация слотов инвентаря: Исправлена ошибка, из-за которой массив Inventory.instance.inventorySpots оставался пустым ([null, null, null]), так как метод InventorySpot.LateStart() выполнялся ещё в главном меню. Создан метод EnsureInventoryReady(), который активно находит объекты слотов в сцене и мгновенно регистрирует их в инвентаре при входе, смене фаз и нажатии клавиш.
Устранение блокировки и дропа сетевых RPC: Исправлен префикс ItemEquippableUpdateItemStatePrefix, который ранее перехватывал сетевой RPC RPC_UpdateItemState в 2-секундную корутину. Из-за отсутствия слотов корутина завершалась без выполнения, пока хост уже сжимал предмет и телепортировал его в небо.
Страховочный Postfix для экипировки: Добавлен постфикс ItemEquippableUpdateItemStatePostfix, который страхует вызов: если слот не привязался в стандартном коде игры, он мгновенно восстанавливает equippedSpot, отображает иконку в интерфейсе и корректно освобождает захват руки.
Синхронизация экипированных предметов хостом: Добавлена передача состояний всех надетых предметов в SendStateSyncStreamed при позднем подключении, чтобы у новичка и хоста состояния инвентаря были на 100% согласованы.
Исправление работы PhysGrabber у тиммейтов: Исправлен PhysGrabberUpdatePrefix, который ошибочно блокировал PhysGrabber.Update() для всех других игроков и в фазах без генератора уровня.
Защита интерфейса InventoryUI от NRE: Добавлен патч на InventoryUI.Update(), предотвращающий падение интерфейса из-за отсутствия LevelGenerator.Instance.
[1.2.7] - 2026-10-02
Fixed (EN)
Missing Closed Doors & Empty Doorways: Fixed the bug where closed doors were missing for late-joining players, leaving empty doorways opening into the dark/void.
Eliminated the destructive Object.Destroy call in TryForceSpawnSingle(PhysGrabObject) on objects with hinges (PhysGrabHinge). Previously, doors were mistakenly destroyed when forced to spawn on client join.
Fixed map screen door icons: preserving the door GameObject ensures DirtFinderMapDoor remains active, restoring door markers on the map screen.
Preserved door kinematics: doors on non-master clients rely on PhotonTransformView kinematic synchronization (since non-master clients destroy the joint in PhysGrabHinge.Awake). Prevented isKinematic from being forced to false, preventing door panels from falling through floors or de-syncing.
English Mod Logs: Translated all BepInEx log messages (LogInfo, LogWarning, LogError, Verbose) across all source files to English for better diagnostics and readability.
Исправления (RU)
Исчезновение закрытых дверей и пустые проёмы в темноту: Устранён баг, из-за которого у зашедшего игрока отсутствовали закрытые двери, оставляя пустые дверные проёмы в темноту.
Полностью удалён деструктивный вызов Object.Destroy в TryForceSpawnSingle для объектов с петлями (PhysGrabHinge). Ранее мод ошибочно уничтожал двери при попытке форсированного спавна на клиенте.
Восстановлены значки дверей на карте: сохранение объекта двери предотвращает удаление компонента DirtFinderMapDoor, благодаря чему двери снова отображаются на экране карты/радара.
Сохранение кинематики дверей: у клиентов без прав хоста физический сустав удаляется самой игрой в PhysGrabHinge.Awake, и двери синхронизируются через PhotonTransformView как кинематические. Убран сброс isKinematic = false, из-за которого двери падали сквозь пол или рассинхронизировались.
Логи мода переведены на английский язык: Все сообщения в консоли BepInEx (LogInfo, LogWarning, LogError, Verbose) во всех файлах мода переведены на чистый английский язык для удобства отладки.
[1.2.6] - 2026-10-01
Fixed (EN)
Shop & Level Missing Walls / Voids / Floor Holes: Fixed the critical bug where late-joining players in the Shop or level experienced missing walls, gaping holes into the void, or half of the shop/rooms blocked off.
Idempotent Wall Rotation Hook: Patched ModulePropSwitch.Setup with a deterministic Harmony prefix that preserves the pristine prefab side. This eliminates the fatal in-place rotation accumulation bug where repeated synchronization calls shifted door/wall switches by +90° each time.
Shop Mode Fully Supported: Extended all module validation, repair routines (SweepAndRepairModulesClient), and object spawning to support the Shop (SemiFunc.RunIsShop()).
Generator Unlock: Ensured LevelGenerator completion signals unlock client-side lighting, fog, and room volume setups reliably in both levels and shop.
Исправления (RU)
Исчезновение стен, дыры в пустоту и пропадающий пол в Магазине и на уровнях: Полностью устранён баг, из-за которого при позднем входе в магазин или на уровень пропадали стены, пол или отрезалась половина локации.
Защита от скручивания стен (Идемпотентный ModulePropSwitch): Добавлен Harmony-патч, фиксирующий исходную сторону света стены. Устранён критический баг игры, при котором каждый повторный сетевой вызов синхронизации проворачивал стены модуля ещё на 90°, меняя дверные проёмы и глухие стены местами.
Полная поддержка Магазина: Все алгоритмы проверки и авто-починки модулей (SweepAndRepairModulesClient) и спавна предметов теперь полноценно работают в фазе магазина (SemiFunc.RunIsShop()).
Коррекция шага сетки: Исправлен базовый шаг поиска соседних комнат с 15м на 30м в соответствии с разметкой сетки REPO.
Стабильная прогрузка освещения: Гарантирован корректный выход клиента из ожидания спавна модулей для бесперебойного запуска освещения (EnvironmentDirector), тумана и объемов комнат.
[1.2.5] - 2026-10-01
Fixed (EN)
Living Players Mistakenly Marked Dead: Fixed a severe bug where living players were falsely detected as dead and had their avatars hidden due to flawed periodic background checks (pgo.centerPoint.y < 2000f and sqrMagnitude < 0.25f). Death detection is now strictly verified via deadSet, health <= 0, and playerDeathHead.triggered.
Preserved Network RPC Delivery (ReviveRPC): Root PlayerAvatar GameObject is no longer deactivated when hiding dead player dummies, ensuring PUN 2 delivers incoming RPCs so players can always be successfully revived.
Physical Doors No Longer Deleted: Removed destructive legacy code that deleted hinge doors (Object.Destroy(val.gameObject)), restoring normal room doors and interactions.
Teammate Skin/Color Clones Fixed: Removed logic that clobbered remote players' cosmetics with local player cosmetics, restoring authentic player appearance.
Physics Stability: Removed global isKinematic = false override on physics objects, preventing held items, shop displays, and truck items from falling through floors or exploding.
Исправления (RU)
Устранено ложное признание живых игроков мёртвыми: Исправлен критический баг, из-за которого живые игроки внезапно признавались погибшими и исчезали из-за некорректных эвристик в фоновом цикле (y < 2000 и sqrMagnitude < 0.25). Теперь смерть проверяется строго по deadSet, health <= 0 и триггеру головы смерти.
Сохранение приёма сетевых RPC (Воскрешение): Объект аватара больше не выключается целиком, скрывается только визуальная модель. Благодаря этому Photon продолжает доставлять сетевые вызовы (ReviveRPC), и погибших игроков всегда можно воскресить.
Двери комнат больше не удаляются: Полностью вырезан деструктивный код, удалявший двери на петлях (Object.Destroy) при спавне на клиенте.
Исправлено клонирование скинов: Убран код, затиравший скины и цвета тиммейтов скинами локального игрока.
Стабильность физики предметов: Убран сброс isKinematic у физ-объектов, из-за которого предметы выпадали из рук, витрин и грузовика или проваливались сквозь пол.
[1.2.4] - 2026-10-01
Fixed (EN)
Missing Rooms / Blocked Walls on Late Join: Fixed a critical network bug where late joiners experienced missing rooms or doorways blocked by solid walls (ModulePropSwitch).
Added Client Autonomous Self-Healing (SweepAndRepairModulesClient): Client continuously audits room modules; if unconfigured, it utilizes reliable host snapshot data or geometric 15m grid neighbor detection to automatically configure room connections, remove blocking walls, and open doorways.
Fixed client coroutine hang in LevelGenerator.Generate() (ModulesSpawned < ModuleAmount), ensuring environment lighting, fog, and farClipPlane initialize cleanly.
Исправления (RU)
Исправление пропавших комнат и заблокированных проходов (стен): Устранён баг, из-за которого при заходе посреди игры у игрока пропадали комнаты или проходы оказывались замурованы сплошными стенами (ModulePropSwitch).
Реализован Photon Event 173: Хост надёжно отправляет полный слепок соединений всех комнат (ConnectingTop/Bottom/Right/Left/First) новому игроку в обход сбрасываемых сетевых RPC.
Добавлено Клиентское авто-восстановление комнат (SweepAndRepairModulesClient): Клиент автоматически проверяет все модули карты. Если комната не настроена, мод применяет полученные данные или вычисляет соседние комнаты по 15-метровой сетке карты, моментально убирает глухие стены и открывает проходы в комнаты.
Устранено зависание клиента в цикле генерации уровня LevelGenerator.Generate(), благодаря чему корректно запускаются освещение комнат, туман и дальность прорисовки.
[1.2.3] - 2026-10-01
Fixed (EN)
Dead Player Ghost / Dummy Cleanup at (0, 0, 0): Fixed a game bug where connecting late while teammates were dead caused their frozen character models to spawn at (0, 0, 0) or spawn point. The mod now automatically synchronizes death states and cleans up inactive dummy bodies on late join while fully preserving their revival head mechanics (ReviveRPC).
Исправления (RU)
Устранение фантомных стоячих моделек мёртвых игроков на (0, 0, 0): Исправлен баг игры, когда при заходе посреди матча модельки уже погибших тиммейтов зависали в виде стоячих манекенов на координатах (0, 0, 0) или на спавне. Мод теперь синхронизирует состояние смерти и скрывает неактивные тела, полностью сохраняя возможность их воскрешения через голову (ReviveRPC).
[1.2.2] - 2026-10-01
Fixed (EN)
Critical Host Black Screen Resolved: Reverted level generation and animation completion hooks strictly to author's proven baseline to prevent permanent black screen when hosting.
Native Spawning Restored: Original host and level spawn logic preserved with zero interference on normal match start.
Исправления (RU)
Критический фикс чёрного экрана у хоста: Полностью восстановлена исходная механика анимаций загрузки и завершения генерации уровня, исключающая зависание на чёрном экране при хостинге.
Нативный спавн: Исходная логика спавна хоста и игроков сохранена в исходном виде при обычном старте матча.
[1.2.1] - 2026-10-01
Fixed (EN)
Critical Host Black Screen Fix: Fixed an issue where the host would get stuck on a permanent black loading screen when starting or loading into a level.
Native Spawning Restored: Fixed PlayerSpawn hook so local players and host avatars spawn properly with all components.
Menu Indicator: Added active version watermark in the main menu ★ LateJoinFixed v1.2.1 (fix by Scorpio) [Active].
Loading Watchdog: Improved anti-hang watchdog to ensure loading UI dismisses cleanly once the level is ready.
Исправления (RU)
Критический фикс чёрного экрана у хоста: устранён баг с зависанием на вечном чёрном экране при создании лобби и загрузке на карту.
Штатный спавн: восстановлен нативный спавн хоста и всех компонентов игрока без вмешательства мода при обычном старте.
Индикатор в меню: отображение статуса мода в главном меню игры.
Watchdog таймер: доработан механизм аварийного сброса зависшего экрана загрузки.
[1.2.0] - 2026-10-01
Fixed (EN)
Fixed infinite black screen when joining mid-game.
Implemented raycast-based safe spawn positioning to prevent spawning in walls or falling into the void.
Fixed broken arms, missing PhysGrabber item holding, and facial expressions for remote players.
Changed default public lobby prefix to [Late Join (fix by Scorpio)].
Исправления (RU)
Исправлен вечный чёрный экран при подключении посреди игры.
Исправлен спавн в стенах и падение в бездну (добавлен умный поиск безопасной точки и проверка пола рейкастом).
Исправлены сломанные руки, PhysGrabber и мимика у подключающихся игроков.
Префикс открытых лобби обновлён на [Late Join (fix by Scorpio)].
Thunderstore development is made possible with ads. Please consider making an exception to your adblock.