Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
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.
| Last updated | 3 hours ago |
| Total downloads | 8 |
| Total rating | 0 |
| Categories | Mods AI Generated |
| Dependency string | Solon-FirstDayCompany-1.0.0 |
| Dependants | 0 other packages depend on this package |
This mod requires the following mods to function
BepInEx-BepInExPack
BepInEx pack for Mono Unity games. Preconfigured and ready to use.
Preferred version: 5.4.2305README
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.