
FirstDayCompany
Day one of a new save always departs to the Company building on 71-Gordion. Every other day is left to RandomMoonFX or the terminal. Host-authoritative, configurable target moon, works standalone.FIRST DAY COMPANY
Language / Язык: English · Русский
FIRST DAY COMPANY
Author: Solo00n
The very first departure of a new save file always lands at the Company building on 71-Gordion, and every day after that is handed straight back to whatever else picks the moon.
WHAT IT DOES
- Day one is always the Company — pull the lever on a fresh save and the ship reroutes itself to 71-Gordion, no matter where the terminal was pointed.
- The reroute is free — the crew credits are passed through unchanged, so a forced route never costs anything.
- Day two onward is untouched — the mod bows out the moment the game day counter leaves zero, and the route goes back to RandomMoonFX or the terminal.
- The last day still belongs to RandomMoonFX — if day one somehow is also the deadline day, this mod stands down and lets RandomMoonFX do its own Company routing.
- The terminal cannot get around it — routing elsewhere on day one is simply ignored at take-off; routing to Gordion by hand is honoured and the ship just leaves.
- Any moon, not only Gordion — the target is a config value and matches modded moons too.
- Works standalone — RandomMoonFX is a companion, not a requirement.
HOW IT WORKS
- The day check is the game own counter,
StartOfRound.gameStats.daysSpent == 0— the same condition vanilla uses to play the first-day ship animation. It is bumped inEndOfGamewhen the ship returns to orbit, so a second trip is never day one. - The hook is a prefix on
StartOfRound.StartGame, ordered ahead of RandomMoonFX (HarmonyBeforeplusPriority.First). That is the last moment the destination can still change — after any terminal route and after any randomizer. - On day one the ship is rerouted with
ChangeLevelServerRpcand the take-off is swallowed; a pass-through postfix onTravelToLevelEffectswaits out the arrival and starts the landing withStartGameServerRpc. - RandomMoonFX is handed its own
IsStartingflag for that take-off, so it steps aside on its own terms — its config, blacklist, visited-moons list and last-day logic are never touched. - The moon is resolved from the live moon list every departure: displayed name with the leading number ignored (
Gordionmatches71 Gordion), then scene name, then the Company shape — no day cycle and nothing spawning on it. - The whole RandomMoonFX binding is reflection-based, so a missing, older or newer version degrades to standalone instead of a load error.
MULTIPLAYER (HOST-AUTHORITATIVE)
Only the host needs the mod. It decides a shared route once and lets the game distribute it.
Route: the reroute goes out over the game ownChangeLevelRPC, so every client follows with no desync and no version check.
Take-off:StartGameonly ever runs on the server, so the decision is made in exactly one place.
Clients: installing it as a client in a lobby whose host does not have it is harmless — the hooks simply never fire.
REQUIREMENTS
- BepInEx 5.4.21+ (
BepInEx-BepInExPack-5.4.2305) - Lethal Company V81
- RandomMoonFX by Zigzag — optional companion, verified against 1.4.3
INSTALLATION
- Mod manager (r2modman / Thunderstore Mod Manager): search for the mod and click Install.
- Manual: install the BepInEx pack, then drop
Solon.FirstDayCompany.dllintoBepInEx/plugins/.
CONFIGURATION
File: BepInEx/config/Solon.FirstDayCompany.cfg (created on first launch).
| Key | Default | Description |
|---|---|---|
ForceFirstDay | true | Master switch. Off means the first day is left alone. |
FirstDayMoon | Gordion | Target moon for day one. Matched on the displayed name with the leading number ignored, then on the scene name, so modded moons work. |
TakeoffDelay | 1.5 | Seconds between arriving at the forced moon and starting the landing. |
DebugMode | false | Log every departure decision: the day, the resolved moon and who is handling the route. |
IfFirstDayMoonmatches nothing in the moon list, the mod logs a warning and leaves the departure alone rather than guessing. RaiseTakeoffDelayif a moon-visuals mod (Celestial Tint, Chameleon) uses a longer routing animation.
INTEGRATIONS / COMPATIBILITY
- RandomMoonFX (Zigzag) — the intended companion. It already forces the Company on the last day of a quota; this mod is the other bookend and keeps the first one.
- Moon loaders — LethalLevelLoader, Celestial Tint, Chameleon and any pack that adds moons: the target is resolved from the live moon list, and
FirstDayMooncan name any of them. - LethalFixes, GeneralImprovements — no shared hooks.
- Challenge moon files are never touched.
- Anything else patching
StartOfRound.StartGameis fine; priority is claimed over RandomMoonFX specifically.
BUILD
dotnet build FirstDayCompany.csproj -c Release
Output: bin/Release/netstandard2.1/Solon.FirstDayCompany.dll. Running build-package.ps1 builds Release and assembles the Thunderstore zip in dist/. Game assemblies are referenced via the LethalCompany.GameLibs.Steam NuGet package as compile-only (PrivateAssets="all") — no game files are distributed.
CREDITS
- Solo00n — author.
- Built on BepInEx and HarmonyX.
- Companion mod: RandomMoonFX by Zigzag — its last-day Company routing is what this mod mirrors for the first day.
- Licensed under MIT.
FIRST DAY COMPANY
Автор: Solo00n
Самый первый вылет на новом сохранении всегда заканчивается посадкой у здания Компании на 71-Gordion, а все последующие дни мод отдаёт обратно тому, кто выбирает луну.
ЧТО ДЕЛАЕТ МОД
- Первый день — всегда Компания — на новом сохранении корабль сам перенаправляется на 71-Gordion, куда бы ни был проложен маршрут в терминале.
- Перенаправление бесплатное — кредиты команды передаются без изменений, принудительный маршрут ничего не стоит.
- Со второго дня мод молчит — он отходит в сторону, как только счётчик дней перестаёт быть нулевым, и маршрут возвращается RandomMoonFX или терминалу.
- Последний день остаётся за RandomMoonFX — если первый день вдруг оказался днём дедлайна, мод не вмешивается и отдаёт маршрут на Компанию ему.
- Терминал не обходит мод — маршрут в другую сторону в первый день просто игнорируется при взлёте; маршрут на Гордион вручную уважается, и корабль сразу вылетает.
- Любая луна, не только Гордион — цель задаётся в конфиге и находит модовые луны тоже.
- Работает без RandomMoonFX — он спутник, а не зависимость.
КАК ЭТО РАБОТАЕТ
- Проверка дня — собственный счётчик игры
StartOfRound.gameStats.daysSpent == 0, ровно то же условие, по которому ванилла играет анимацию первого дня. Он увеличивается вEndOfGameпри возврате на орбиту, поэтому второй вылет первым днём уже не считается. - Хук — префикс на
StartOfRound.StartGame, поставленный впереди RandomMoonFX (HarmonyBeforeплюсPriority.First). Это последний момент, когда точку назначения ещё можно изменить: после любого маршрута из терминала и после любого рандомайзера. - В первый день корабль перенаправляется через
ChangeLevelServerRpc, а взлёт проглатывается; пасс-тру постфикс наTravelToLevelEffectsдожидается прилёта и запускает посадку черезStartGameServerRpc. - RandomMoonFX получает свой же флаг
IsStartingна этот взлёт и отходит в сторону по собственным правилам — его конфиг, чёрный список, список посещённых лун и логика последнего дня не тронуты. - Луна ищется в живом списке при каждом вылете: отображаемое имя без ведущего номера (
Gordionнаходит71 Gordion), затем имя сцены, затем форма Компании — без смены времени суток и без спавна. - Вся привязка к RandomMoonFX сделана рефлексией, поэтому отсутствующая, старая или новая версия означает автономную работу, а не ошибку загрузки.
МУЛЬТИПЛЕЕР (HOST-AUTHORITATIVE)
Мод нужен только хосту. Он один раз принимает общее решение о маршруте, а дальше его разносит сама игра.
Маршрут: перенаправление идёт через ванильный RPCChangeLevel, поэтому клиенты следуют за хостом без рассинхрона и без проверки версий.
Взлёт:StartGameвыполняется только на сервере, так что решение принимается ровно в одном месте.
Клиенты: мод у клиента в лобби, где его нет у хоста, безвреден — хуки просто не срабатывают.
ЗАВИСИМОСТИ
- BepInEx 5.4.21+ (
BepInEx-BepInExPack-5.4.2305) - Lethal Company V81
- RandomMoonFX от Zigzag — необязательный спутник, проверено на 1.4.3
УСТАНОВКА
- Через менеджер (r2modman / Thunderstore Mod Manager): найти мод и нажать Install.
- Вручную: установить BepInEx-пак, затем положить
Solon.FirstDayCompany.dllвBepInEx/plugins/.
НАСТРОЙКА
Файл: BepInEx/config/Solon.FirstDayCompany.cfg (создаётся при первом запуске).
| Ключ | По умолчанию | Описание |
|---|---|---|
ForceFirstDay | true | Главный выключатель. Выключено — первый день не трогается. |
FirstDayMoon | Gordion | Луна первого дня. Ищется по отображаемому имени без ведущего номера, затем по имени сцены, поэтому модовые луны тоже работают. |
TakeoffDelay | 1.5 | Секунды между прилётом на принудительную луну и началом посадки. |
DebugMode | false | Логировать каждое решение о вылете: день, найденную луну и того, кто ведёт маршрут. |
ЕслиFirstDayMoonне совпал ни с одной луной, мод пишет предупреждение в лог и оставляет вылет как есть, а не угадывает. УвеличьтеTakeoffDelay, если мод на визуал лун (Celestial Tint, Chameleon) использует более длинную анимацию маршрута.
ИНТЕГРАЦИИ И СОВМЕСТИМОСТЬ
- RandomMoonFX (Zigzag) — основной спутник. Он уже отправляет на Компанию в последний день квоты; этот мод закрывает вторую сторону и держит первый.
- Загрузчики лун — LethalLevelLoader, Celestial Tint, Chameleon и любые паки с новыми лунами: цель ищется в живом списке, и
FirstDayMoonможет указывать на любую из них. - LethalFixes, GeneralImprovements — общих хуков нет.
- Файлы испытательной луны (challenge) не трогаются никогда.
- Любые другие моды, патчащие
StartOfRound.StartGame, работают нормально — приоритет заявлен только над RandomMoonFX.
СБОРКА
dotnet build FirstDayCompany.csproj -c Release
Результат: bin/Release/netstandard2.1/Solon.FirstDayCompany.dll. Запуск build-package.ps1 собирает Release и складывает Thunderstore-архив в dist/. Сборки игры подключены через NuGet-пакет LethalCompany.GameLibs.Steam только для компиляции (PrivateAssets="all") — файлы игры не распространяются.
БЛАГОДАРНОСТИ
- Solo00n — автор.
- Построено на BepInEx и HarmonyX.
- Мод-спутник: RandomMoonFX от Zigzag — его маршрут на Компанию в последний день и есть то, что этот мод повторяет для первого.
- Лицензия MIT.