MonstersGordion
Configurable monster spawning inside the Company building on 71-Gordion: timers, weights, caps, floor balance. Runs BrutalCompanyMinus events on a moon it always skipped, and sends a horde in from the map edges.MONSTERS GORDION
Language / Язык: English · Русский

MONSTERS GORDION
Author: Solo00n
The Company building on 71-Gordion is no longer safe — vanilla monsters now spawn and hunt inside it, on timers, weights and caps you control.
WHAT IT DOES
- Monsters on the Company moon — enemies spawn inside the building on the interior navmesh, the one place the game never threatens you.
- Timed weighted spawning — a random interval between a min and max, then a weighted-random pick from every enemy you enabled.
- Reachability-checked points — connected-region analysis plus a path check, so nothing spawns on roofs, shelves or in pits it cannot leave.
- Floor balance — a configurable split between the ship-landing level and the basement, instead of everything piling into the larger lower floor.
- Indoor / outdoor pools — each spawn rolls which pool to draw from, so dogs, giants and Old Birds actually appear alongside interior enemies.
- Per-enemy control — every spawnable type gets
Enabled,SpawnWeight,MinSpawnCountandMaxSpawnCount. - Blacklist or whitelist — restrict the whole moon to a chosen set, optionally stripping enemies other mods spawn as well.
- Self-healing — stranded enemies are teleported back, idle ones are nudged, and any type that keeps dying instantly is auto-disabled instead of spammed.
MONSTERS
Enabled by default: every interior enemy — Bracken, Thumper, Hoarding Bug, Snare Flea, Bunker Spider, Coil-Head, Ghost Girl, Spore Lizard, Nutcracker, Jester, Masked, Hygrodere, Butler, Barber, Maneater — plus Stingray, Tulip Snake, the bee swarms, and the outdoor threats that path correctly indoors: Baboon Hawk, Eyeless Dog, Forest Keeper, Old Bird and Giant Kiwi. Nest-requiring enemies get their nest placed automatically.
Monsters that need extra work to function on this moon, made to work here and toggleable in the config:
- Feiopar — the mod grows dead trees on the interior navmesh so it can climb, perch and pounce as it does outdoors.
- Earth Leviathan — the Company floor is registered as a surface it may breach, so it erupts indoors instead of circling below forever.
- Cadaver Bloom — planted as standalone corpse traps that burst and give chase, with no dungeon required.
- Kidnapper Fox — vain shrouds are grown on the moon so it has cover and survives.
Cadaver Growths is intentionally left disabled: it hard-requires a generated dungeon, which the Company building is not. Use the Cadaver Bloom traps instead.
HOW IT WORKS
- Landing is detected by polling
StartOfRound.shipHasLandedrather than hooking the doors sequence, so other mods cannot starve the trigger. - The interior navmesh is triangulated, welded into connected regions and anchored, then every spawn point and patrol node must have a complete path to that anchor.
- The Company building has no vanilla interior AI nodes, so the mod generates its own patrol nodes tagged for both indoor and outdoor lookups.
- Spawned enemies are flagged as outdoor enemies: the game gates targeting behind
player.isInsideFactory != enemy.isOutside, and players in the Company building are not flagged as being in a factory, so without this no enemy could ever chase or kill you. - Enemies are created through
RoundManager.SpawnEnemyGameObject— the game's own spawn path, no custom network objects.
MULTIPLAYER (HOST-AUTHORITATIVE)
Only the host needs this mod. Clients receive the enemies through the game's own netcode.
Spawning: the host alone runs the spawner and owns enemy AI; every spawn goes through the vanilla server spawn call and replicates to all clients.
Clients: need NavMeshInCompanyRedux so the interior navmesh matches, but not this mod.
Cleanup: when the ship leaves, the host despawns what it created, so nothing leaks between landings.
REQUIREMENTS
- BepInEx 5.4.21+ (
BepInEx-BepInExPack-5.4.2305) - NavMeshInCompanyRedux (
TRizzle-NavMeshInCompanyRedux) — provides the interior navmesh everything spawns on - Lethal Company V81
INSTALLATION
- Mod manager (r2modman / Thunderstore Mod Manager): search for the mod and click Install; dependencies are pulled in automatically.
- Manual: install the BepInEx pack and NavMeshInCompanyRedux, then drop
MonstersGordion.dllintoBepInEx/plugins/.
CONFIGURATION
File: BepInEx/config/Timofey.MonstersGordion.cfg (created on first launch, applied on game restart).
| Key | Default | Description |
|---|---|---|
GlobalCap | 5 | Maximum enemies alive at once on the moon. |
MinSpawnInterval | 15 | Minimum delay between spawn attempts, in seconds. |
MaxSpawnInterval | 45 | Maximum delay between spawn attempts, in seconds. |
RespawnOnLoad | true | Wipe existing enemies and repopulate on every landing. |
DebugMode | false | Verbose logging of every spawn decision. |
UpperFloorSpawnShare | 70 | Percent of spawns placed at the ship-landing level. |
OutsideEnemyShare | 50 | Percent chance to draw from the outdoor enemy pool. |
OldBirdUpperFloorOnly | true | Keep the Old Bird on the upper floor, where it has room. |
AllowHarmlessCreatures | true | Master switch for the Manticoil and the Roaming Locust swarm. |
EarthLeviathanFloorEmerge | true | Let the worm breach up through the building floor. |
CoilHeadTurretChance | 25 | Percent chance a Coil-Head spawns with a ToilHead turret. |
ManticoilTurretChance | 25 | Same, for the Manticoil. |
MaskedTurretChance | 0 | Same, for the Masked. |
FeioparDeadTrees | true | Grow dead trees so Feiopar can stalk and pounce. |
CadaverBloomTraps | true | Plant standalone Cadaver Bloom traps, no dungeon needed. |
VainShroudIterations | 0 | Vain shroud density for the Kidnapper Fox; 0 is automatic. |
ExcludedEnemies | | Comma-separated list of enemy names to exclude. |
ExcludedEnemiesIsWhitelist | false | Flip that list into an allow-list instead. |
ForeignEnemies | RemoveExcluded | Apply the list to enemies other mods spawn as well. |
CountForeignEnemies | true | Other mods' enemies count toward the caps. |
TreatEnemiesAsOutside | true | Required for enemies to be able to target players. |
EnableStockEvents | false | Let curated stock BrutalCompanyMinus events run on Gordion. |
StockEventWhitelist | Nothing, Gloomy, ... | Which stock events are allowed here; empty means the built-in list. |
HazardDensityMultiplier | 1 | Scales how many turrets, landmines or trees an event places here. |
HazardMaxPerEvent | 40 | Hard ceiling on objects placed by one event. |
Horde.Enabled | true | A horde closes in from both far edges of the map on every landing. |
Horde.Enemy | Masked | Which enemy arrives, by its in-game name. |
Horde.CountPerSide | 5 | How many arrive at each of the two edges. |
Horde.DelaySeconds | 240 | Seconds after landing before they arrive. |
Horde.RepeatSeconds | 0 | 0 is one wave per landing; otherwise the gap between waves. |
Horde.Announce | true | Announce each wave in chat as it arrives. |
Every spawnable enemy also gets its own section —[Enemy.Flowerman],[Enemy.Bunker Spider]and so on — withEnabled,SpawnWeight,MinSpawnCountandMaxSpawnCount.MaxSpawnCountdefaults high, soGlobalCapis the only limit until you cap a type yourself. Further tuning (MinDistanceFromPlayers,AINodeCount,RequireIndoorPoints,MaintenanceInterval) lives in theAdvancedsection.
INTEGRATIONS AND COMPATIBILITY
- ToilHead — per-enemy turret chances for Coil-Head, Manticoil and Masked, including the Slayer variants.
- StarlancerAIFix — detected automatically; its AI fix applies to spawned enemies, and this mod's interior node assignment runs afterwards.
- BrutalCompanyMinus (ExtraReborn) — shares one enemy budget through
CountForeignEnemies, so the two never stack past your cap. It also brings its events to Gordion, which BCMER itself never does: its level hook returns early on this moon, so no config key, no per-event moon whitelist and not even theMEVENTcommand can trigger one here. WithEnableStockEventsthe mod rolls one event per landing from a curated list of events that can actually work without a dungeon, and hands it back to BCMER to run — your BCMER config still decides everything, from the per-event enable flag to the event type weights. The list was picked by reading each event's own code rather than its description, because BCMER's eligibility checks are often unrelated to what the event does:WarzoneandTreesboth refuse to run unless the moon already has a turret in its hazard table, which Gordion never does. - WeatherGordion — required for the
AllWeatherevent. That event refuses to run unless the moon has at least three weathers in its pool, and Gordion's pool is empty in vanilla; WeatherGordion is what fills it. Without it the event declines itself and says so in the log. - All integrations are resolved at runtime by reflection, so the mod runs with or without them and never hard-depends on their versions.
- Modded enemies appear in the config automatically but stay disabled until you enable them.
BUILD
dotnet build MonstersGordion.csproj -c Release
Output: bin/Release/netstandard2.1/MonstersGordion.dll. Game assemblies are referenced through the LethalCompany.GameLibs.Steam NuGet package as compile-only (PrivateAssets="all") — no game files are distributed.
CREDITS
- Solo00n — author.
- Built on BepInEx and HarmonyX.
- Requires NavMeshInCompanyRedux by T-Rizzle for the interior navmesh.
- Vain shroud technique inspired by FoxLover by ButteryStancakes.
- Licensed under MIT.
MONSTERS GORDION
Автор: Solo00n
Здание Компании на 71-Гордион больше не безопасно — внутри него теперь появляются и охотятся ванильные монстры, а таймеры, веса и лимиты полностью в ваших руках.
ЧТО ДЕЛАЕТ МОД
- Монстры на луне Компании — враги появляются внутри здания на интерьерном навмеше, в единственном месте, где игра никогда не угрожает.
- Спавн по таймеру с весами — случайный интервал между минимумом и максимумом, затем взвешенный выбор из всех включённых врагов.
- Проверка достижимости точек — анализ связных областей и проверка пути, поэтому никто не появится на крыше, полке или в яме, откуда не выбраться.
- Баланс по этажам — настраиваемое распределение между уровнем посадки корабля и подвалом, вместо скатывания всех спавнов на просторный нижний этаж.
- Пулы улицы и помещения — каждый спавн решает, из какого пула брать врага, поэтому собаки, гиганты и Old Bird появляются наравне с интерьерными.
- Настройка каждого монстра — у любого типа есть
Enabled,SpawnWeight,MinSpawnCountиMaxSpawnCount. - Чёрный или белый список — можно ограничить всю луну выбранным набором, при желании удаляя и тех, кого спавнят другие моды.
- Самовосстановление — застрявшие враги телепортируются обратно, замершие получают новую цель, а тип, который постоянно умирает мгновенно, отключается вместо бесконечного спама.
МОНСТРЫ
Включены по умолчанию: все интерьерные враги — Bracken, Thumper, Hoarding Bug, Snare Flea, Bunker Spider, Coil-Head, Ghost Girl, Spore Lizard, Nutcracker, Jester, Masked, Hygrodere, Butler, Barber, Maneater — плюс Stingray, Tulip Snake, рои пчёл и уличные угрозы, которые корректно ходят внутри: Baboon Hawk, Eyeless Dog, Forest Keeper, Old Bird и Giant Kiwi. Тем, кому нужно гнездо, мод ставит его автоматически.
Монстры, которым для работы на этой луне нужна дополнительная механика, реализованная модом и настраиваемая в конфиге:
- Feiopar — мод выращивает мёртвые деревья на интерьерном навмеше, чтобы он забирался, сидел в засаде и прыгал, как на улице.
- Earth Leviathan — пол здания регистрируется как поверхность, сквозь которую можно вынырнуть, поэтому червь атакует внутри, а не кружит под полом.
- Cadaver Bloom — высаживается как самостоятельная ловушка-труп, которая раскрывается и бросается в погоню, без всякого данжена.
- Kidnapper Fox — на луне выращиваются вайншрауды, чтобы лисе было где прятаться и она выживала.
Cadaver Growths намеренно оставлен выключенным: ему жёстко нужен сгенерированный данжен, которым здание Компании не является. Используйте ловушки Cadaver Bloom.
КАК ЭТО РАБОТАЕТ
- Посадка определяется опросом
StartOfRound.shipHasLanded, а не хуком на последовательность дверей, поэтому другие моды не могут перехватить триггер. - Интерьерный навмеш триангулируется, сшивается в связные области и получает якорь, после чего каждая точка спавна и каждая нода патруля обязаны иметь полный путь до этого якоря.
- В здании Компании нет ванильных интерьерных AI-нод, поэтому мод создаёт свои, помеченные тегами и для внутреннего, и для внешнего поиска.
- Заспавненные враги помечаются как уличные: игра разрешает выбор цели по условию
player.isInsideFactory != enemy.isOutside, а игрок в здании Компании не считается находящимся на фабрике, поэтому без этого ни один враг не смог бы преследовать и убивать. - Враги создаются через
RoundManager.SpawnEnemyGameObject— штатный путь спавна самой игры, без собственных сетевых объектов.
МУЛЬТИПЛЕЕР (HOST-AUTHORITATIVE)
Мод нужен только хосту. Клиенты получают врагов через штатный неткод игры.
Спавн: спавнер работает только у хоста, он же владеет ИИ врагов; каждый спавн идёт через ванильный серверный вызов и реплицируется всем клиентам.
Клиенты: им нужен NavMeshInCompanyRedux, чтобы навмеш совпадал, но сам этот мод не нужен.
Очистка: при отлёте корабля хост удаляет созданных им врагов, поэтому между вылетами ничего не накапливается.
ЗАВИСИМОСТИ
- BepInEx 5.4.21+ (
BepInEx-BepInExPack-5.4.2305) - NavMeshInCompanyRedux (
TRizzle-NavMeshInCompanyRedux) — даёт интерьерный навмеш, на котором всё спавнится - Lethal Company V81
УСТАНОВКА
- Через менеджер (r2modman / Thunderstore Mod Manager): найти мод и нажать Install, зависимости подтянутся сами.
- Вручную: установить BepInEx-пак и NavMeshInCompanyRedux, затем положить
MonstersGordion.dllвBepInEx/plugins/.
НАСТРОЙКА
Файл: BepInEx/config/Timofey.MonstersGordion.cfg (создаётся при первом запуске, применяется после перезапуска игры).
| Ключ | По умолчанию | Описание |
|---|---|---|
GlobalCap | 5 | Максимум одновременно живых врагов на луне. |
MinSpawnInterval | 15 | Минимальная задержка между попытками спавна, в секундах. |
MaxSpawnInterval | 45 | Максимальная задержка между попытками спавна, в секундах. |
RespawnOnLoad | true | Очищать врагов и заселять луну заново при каждой посадке. |
DebugMode | false | Подробный лог каждого решения спавнера. |
UpperFloorSpawnShare | 70 | Процент спавнов на уровне посадки корабля. |
OutsideEnemyShare | 50 | Процент шанса взять врага из уличного пула. |
OldBirdUpperFloorOnly | true | Держать Old Bird на верхнем этаже, где ему есть где развернуться. |
AllowHarmlessCreatures | true | Общий выключатель для Manticoil и роя саранчи. |
EarthLeviathanFloorEmerge | true | Разрешить червю выныривать сквозь пол здания. |
CoilHeadTurretChance | 25 | Процент шанса, что у Coil-Head будет турель от ToilHead. |
ManticoilTurretChance | 25 | То же самое для Manticoil. |
MaskedTurretChance | 0 | То же самое для Masked. |
FeioparDeadTrees | true | Выращивать мёртвые деревья, чтобы Feiopar охотился из засады. |
CadaverBloomTraps | true | Высаживать самостоятельные ловушки Cadaver Bloom без данжена. |
VainShroudIterations | 0 | Густота вайншраудов для лисы; 0 означает автоматический режим. |
ExcludedEnemies | | Список имён врагов через запятую для исключения. |
ExcludedEnemiesIsWhitelist | false | Превратить этот список в белый список. |
ForeignEnemies | RemoveExcluded | Применять список и к врагам, которых спавнят другие моды. |
CountForeignEnemies | true | Враги других модов учитываются в лимитах. |
TreatEnemiesAsOutside | true | Обязательно, чтобы враги могли выбирать игроков целью. |
EnableStockEvents | false | Разрешить отобранным штатным ивентам BrutalCompanyMinus идти на Гордионе. |
StockEventWhitelist | Nothing, Gloomy, ... | Какие штатные ивенты здесь допущены; пусто — встроенный список. |
HazardDensityMultiplier | 1 | Множитель числа турелей, мин и деревьев, которые ставит ивент. |
HazardMaxPerEvent | 40 | Жёсткий потолок на количество объектов от одного ивента. |
Horde.Enabled | true | Орда заходит с двух дальних краёв карты на каждой высадке. |
Horde.Enemy | Masked | Кто именно приходит — внутриигровое имя врага. |
Horde.CountPerSide | 5 | Сколько появится у каждого из двух краёв. |
Horde.DelaySeconds | 240 | Через сколько секунд после посадки они приходят. |
Horde.RepeatSeconds | 0 | 0 — одна волна за высадку, иначе промежуток между волнами. |
Horde.Announce | true | Объявлять каждую волну в чате. |
У каждого спавнящегося врага есть своя секция —[Enemy.Flowerman],[Enemy.Bunker Spider]и так далее — с параметрамиEnabled,SpawnWeight,MinSpawnCountиMaxSpawnCount. ЗначениеMaxSpawnCountпо умолчанию высокое, поэтому единственным ограничением остаётсяGlobalCap, пока вы сами не ограничите конкретный тип. Тонкая настройка (MinDistanceFromPlayers,AINodeCount,RequireIndoorPoints,MaintenanceInterval) находится в разделеAdvanced.
ИНТЕГРАЦИИ И СОВМЕСТИМОСТЬ
- ToilHead — отдельные шансы турели для Coil-Head, Manticoil и Masked, включая варианты Slayer.
- StarlancerAIFix — определяется автоматически; его фикс применяется к заспавненным врагам, а назначение интерьерных нод этим модом выполняется после него.
- BrutalCompanyMinus (ExtraReborn) — делит общий лимит врагов через
CountForeignEnemies, поэтому суммарная популяция не превысит ваш кап. А ещё приводит на Гордион свои ивенты, чего сам BCMER не делает никогда: его хук уровня выходит на этой луне досрочно, поэтому здесь бессильны и настройки, и белые списки лун у ивентов, и даже командаMEVENT. ПриEnableStockEventsмод раз за высадку разыгрывает один ивент из отобранного списка тех, что работают без подземелья, и передаёт его обратно BCMER на исполнение — все решения по-прежнему за вашим конфигом BCMER, от галочки у ивента до весов типов. Список собран чтением кода каждого ивента, а не описаний: проверки пригодности в BCMER часто не связаны с самим ивентом —WarzoneиTreesоба отказываются работать, если у луны нет турели в таблице опасностей, а у Гордиона её нет никогда. - WeatherGordion — нужен для ивента
AllWeather. Тот отказывается работать, если в пуле луны меньше трёх погод, а у Гордиона он в ванили пуст; наполняет его именно WeatherGordion. Без него ивент отклоняет сам себя и пишет об этом в лог. - Все интеграции определяются в рантайме через рефлексию, поэтому мод работает и с ними, и без них, и не привязан жёстко к их версиям.
- Модовые враги появляются в конфиге автоматически, но остаются выключенными, пока вы сами их не включите.
СБОРКА
dotnet build MonstersGordion.csproj -c Release
Результат: bin/Release/netstandard2.1/MonstersGordion.dll. Сборки игры подключены через NuGet-пакет LethalCompany.GameLibs.Steam только для компиляции (PrivateAssets="all") — файлы игры не распространяются.
БЛАГОДАРНОСТИ
- Solo00n — автор.
- Построено на BepInEx и HarmonyX.
- Требуется NavMeshInCompanyRedux от T-Rizzle для интерьерного навмеша.
- Идея выращивания вайншраудов вдохновлена модом FoxLover от ButteryStancakes.
- Лицензия MIT.
