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.
Terminal that can kill
The terminal glitches: mines detonate and turrets go berserk instead of disabling, and closing ship & security doors crush anyone in the doorway.
| Date uploaded | 4 days ago |
| Version | 1.5.0 |
| Download link | Solon-Terminal_that_can_kill-1.5.0.zip |
| Downloads | 95 |
| Dependency string | Solon-Terminal_that_can_kill-1.5.0 |
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.2100README
TERMINAL THAT CAN KILL
Language / Язык: English · Русский
TERMINAL THAT CAN KILL
Author: Solo00n
The ship and facility doors slam shut on anyone in the doorway, and the terminal stops disabling traps — it detonates mines and drives turrets berserk instead.
WHAT IT DOES
- Deadly ship door — the hangar door crushes any player or monster standing in the opening when it closes (on the surface only).
- Deadly facility doors — the big terminal-code security doors crush whoever is in the opening when they slam shut.
- Remote mine detonation — entering a mine code blows it up instead of disabling it; a critical error chain-detonates nearby mines.
- Turret rampage — entering a turret code sends it berserk (spins and fires at everyone); a critical error extends the rampage.
- Hijacked traps — a trap can flip to your side: an allied turret behaves like a normal turret but cannot see players, and hunts monsters instead, and an allied mine can no longer be set off by the team and waits for a monster instead.
- Turret head flip — after leaving berserk a turret smoothly turns its head 180° and rests facing the opposite way.
- Barber-style death — door kills reuse the Barber (Clay Surgeon) death: the body is launched up and ragdolls.
- Fully configurable — every mechanic can be tuned or turned off.
HOW IT WORKS
- The kill zone is a thin oriented slab sitting in the doorway plane, not a proximity sphere — only someone standing in the opening is caught.
- Ship door: detected via
doorPower < 1plus theShipDoorCloseanimator state; the doorway is at a fixed world position (the ship never moves). - Facility doors: detected on the
SetDoorOpenopen→closed transition and processed frame by frame. - Traps use the vanilla synced RPCs (
ExplodeMineServerRpc,EnterBerserkModeServerRpc) — no custom network objects. - Trap power is never forced, so power mods such as DefendFacility stay in charge of whether a trap is on; this mod only changes who it targets. Its mini turret is treated as the crew's own and is allied from the start.
MULTIPLAYER (HOST-AUTHORITATIVE)
Both the host and all clients must install the mod. It changes shared game rules, not one player's private state.
Players: each client only kills its own local player;KillPlayersyncs that death to everyone, so exactly one authoritative kill happens.
Monsters: only the host iterates and kills enemies (the host owns enemy AI), which syncs to clients.
Traps: mine and turret effects fire through the game's own server RPCs, so all clients see the same result.
Hijacks: the client that typed the code decides, then announces it on a vanilla RPC carrying a marker only this mod sends; everyone else obeys that marker and never rolls again, so no one can disagree — still no custom networking.
REQUIREMENTS
- BepInEx 5.4.21+ (
BepInEx-BepInExPack-5.4.2100) - Lethal Company V81
INSTALLATION
- Mod manager (r2modman / Thunderstore Mod Manager): search for the mod and click Install.
- Manual: install the BepInEx pack, then drop
Solon.TerminalThatCanKill.dllintoBepInEx/plugins/.
CONFIGURATION
File: BepInEx/config/Solon.TerminalThatCanKill.cfg (created on first launch).
| Key | Default | Description |
|---|---|---|
Enabled | true | Master switch for the deadly-doors mechanic. |
KillPlayers | true | Kill players caught in a closing doorway. |
KillMonsters | false | Kill ship-capable monsters caught in a closing doorway. |
AffectedDoors | Both | ShipDoor / TerminalDoors / Both. |
SafeZoneSeconds | 5 | Grace period after landing during which doors do not kill. |
DamageMode | InstantKill | InstantKill or DamageOverTime. |
EnableRemoteControl | true | Detonate/rampage traps instead of disabling them. |
MineErrorChance | 0.15 | Chance a mine command detonates the mine instead of disarming it. |
TurretErrorChance | 0.15 | Chance a turret command sends it berserk instead of disabling it. |
TurretFlipOnBerserkExit | true | Turret head turns 180° after leaving berserk. |
EnableAlliedTraps | true | Allow a trap command to hijack the trap to your side. |
AlliedChance | 0.25 | Chance a trap command hijacks the trap instead. Rolled per command. |
AlliedDuration | 0 | Seconds a hijacked trap stays allied. 0 = permanent. |
MiniTurretAlwaysAllied | true | DefendFacility's mini turret is allied from the start and never needs hacking. |
VerboseLogging | false | Per-event diagnostics in the log, including the offset used to tune the kill zone. |
Advanced tuning (zone sizeDoorwayThickness/Width/Height, close timings,PlayerDeathAnimationId, chain radius, rampage duration) lives in theDoors.AdvancedandRemoteControl.Advancedsections; hijack tuning lives inAlliedTraps.
COMPATIBILITY
- Works on vanilla and modded moons (LethalLevelLoader) — doors are found dynamically, no hard-coded scenes.
- Fair AI replaces the turret AI; the mod detects it and hands the turrets over, enforcing the hijack inside Fair AI's own pipeline so an allied turret never targets or damages players.
- No custom network objects; relies on vanilla RPCs — low conflict risk with other terminal mods.
- If another mod also patches the terminal code function, set
EnableRemoteControl = falseto avoid overlap.
BUILD
dotnet build LethalDoors.csproj -c Release
Output: bin/Release/Solon.TerminalThatCanKill.dll. 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.
- Inspiration: Lethal Doors by saint_kendrick (ship-door approach), RemoteMineDetonation by jacksonb-cs (terminal detonation idea) and AlliedDefenses by Remilulz91 (the idea of turning traps against the monsters). Implementation here is written from the game's own code, not taken from those mods.
- Licensed under MIT.
TERMINAL THAT CAN KILL
Автор: Solo00n
Двери корабля и комплекса захлопываются насмерть на том, кто стоит в проёме, а терминал больше не отключает ловушки — вместо этого он детонирует мины и сводит турели с ума.
ЧТО ДЕЛАЕТ МОД
- Смертельная дверь корабля — рампа раздавливает игрока или монстра в проёме при закрытии (только на поверхности).
- Смертельные двери комплекса — большие двери с кодом раздавливают того, кто стоит в проёме при захлопывании.
- Удалённая детонация мин — ввод кода мины взрывает её вместо отключения; при критической ошибке детонируют соседние мины.
- Бешенство турели — ввод кода турели вводит её в берсерк (крутится и стреляет по всем); ошибка продлевает раж.
- Захваченные ловушки — с некоторым шансом ловушка переходит на вашу сторону: союзная турель работает как обычная, но не видит игроков — и охотится на монстров, а союзная мина больше не срабатывает на команду и ждёт монстра.
- Разворот головы турели — после берсерка турель плавно поворачивает голову на 180° и остаётся смотреть в другую сторону.
- Смерть как у Barber — смерть от двери повторяет смерть от Barber (Clay Surgeon): тело подбрасывает вверх.
- Полная настройка — любую механику можно подстроить или выключить.
КАК ЭТО РАБОТАЕТ
- Зона поражения — тонкая ориентированная «плита» в плоскости проёма, а не сфера: убивает только того, кто стоит в проёме.
- Дверь корабля: определяется по
doorPower < 1плюс состоянию аниматораShipDoorClose; проём в фиксированной точке мира (корабль не двигается). - Двери комплекса: ловятся на переходе
SetDoorOpenоткрыта→закрыта и обрабатываются покадрово. - Ловушки используют ванильные синхронизированные RPC (
ExplodeMineServerRpc,EnterBerserkModeServerRpc) — без своих сетевых объектов. - Питание ловушек мод не трогает, поэтому моды питания вроде DefendFacility остаются главными в вопросе «включена ли ловушка»; этот мод меняет только цель. Её мини-турель считается своей и союзна с самого начала.
МУЛЬТИПЛЕЕР (HOST-AUTHORITATIVE)
Мод должен стоять и у хоста, и у всех клиентов. Он меняет общие правила игры, а не приватное состояние одного игрока.
Игроки: каждый клиент убивает только своего локального игрока;KillPlayerсинхронизирует смерть на всех — ровно одно авторитетное убийство.
Монстры: перебирает и убивает врагов только хост (владеет ИИ), что синхронизируется клиентам.
Ловушки: эффекты мин и турелей идут через серверные RPC самой игры, поэтому итог одинаков у всех.
Захват: решает клиент, который ввёл код, и объявляет об этом ванильным RPC с меткой, которую шлёт только этот мод; остальные подчиняются метке и не перебрасывают — разойтись невозможно, и своей сети по-прежнему не нужно.
ЗАВИСИМОСТИ
- BepInEx 5.4.21+ (
BepInEx-BepInExPack-5.4.2100) - Lethal Company V81
УСТАНОВКА
- Через менеджер (r2modman / Thunderstore Mod Manager): найти мод и нажать Install.
- Вручную: установить BepInEx-пак, затем положить
Solon.TerminalThatCanKill.dllвBepInEx/plugins/.
НАСТРОЙКА
Файл: BepInEx/config/Solon.TerminalThatCanKill.cfg (создаётся при первом запуске).
| Ключ | По умолчанию | Описание |
|---|---|---|
Enabled | true | Главный выключатель механики смертельных дверей. |
KillPlayers | true | Убивать игроков в закрывающемся проёме. |
KillMonsters | false | Убивать монстров (способных войти в корабль) в проёме. |
AffectedDoors | Both | ShipDoor / TerminalDoors / Both. |
SafeZoneSeconds | 5 | Безопасный период после посадки, пока двери не убивают. |
DamageMode | InstantKill | InstantKill или DamageOverTime. |
EnableRemoteControl | true | Детонация/раж ловушек вместо отключения. |
MineErrorChance | 0.15 | Шанс, что команда подорвёт мину, а не обезвредит её. |
TurretErrorChance | 0.15 | Шанс, что команда отправит турель в берсерк, а не выключит её. |
TurretFlipOnBerserkExit | true | Разворот головы турели на 180° после берсерка. |
EnableAlliedTraps | true | Разрешить захват ловушки на свою сторону. |
AlliedChance | 0.25 | Шанс, что команда захватит ловушку. Бросается на каждую команду. |
AlliedDuration | 0 | Сколько секунд ловушка союзная. 0 = навсегда. |
MiniTurretAlwaysAllied | true | Мини-турель DefendFacility союзная сразу и не требует взлома. |
VerboseLogging | false | Подробные логи, включая смещение для настройки зоны убийства. |
Тонкая настройка (размеры зоныDoorwayThickness/Width/Height, тайминги закрытия,PlayerDeathAnimationId, радиус цепи, длительность ража) — в разделахDoors.AdvancedиRemoteControl.Advanced; настройки захвата — вAlliedTraps.
СОВМЕСТИМОСТЬ
- Работает на ванильных и модовых лунах (LethalLevelLoader) — двери находятся динамически, без хардкода сцен.
- Fair AI полностью заменяет ИИ турелей; мод определяет его и отдаёт турели ему, встраивая взлом уже внутрь его логики — союзная турель не целится в игроков и не наносит им урона.
- Не создаёт своих сетевых объектов, опирается на ванильные RPC — низкий риск конфликтов.
- Если другой мод тоже патчит функцию кода терминала — поставьте
EnableRemoteControl = false.
СБОРКА
dotnet build LethalDoors.csproj -c Release
Результат: bin/Release/Solon.TerminalThatCanKill.dll. Сборки игры подключены через NuGet-пакет LethalCompany.GameLibs.Steam только для компиляции (PrivateAssets="all") — файлы игры не распространяются.
БЛАГОДАРНОСТИ
- Solo00n — автор.
- Построено на BepInEx и HarmonyX.
- Идеи: Lethal Doors от saint_kendrick (подход к двери корабля), RemoteMineDetonation от jacksonb-cs (детонация из терминала) и AlliedDefenses от Remilulz91 (идея обращать ловушки против монстров). Реализация здесь написана по коду самой игры, а не взята из этих модов.
- Лицензия MIT.
CHANGELOG
Changelog
1.5.0
- DefendFacility's mini turret is always on your side. The crew buys it and carries it in, so
treating it as facility hardware to be hacked never made sense: it is allied from the moment it
exists, it never has to be hacked, and its friendliness does not expire whatever
AlliedDurationsays. Every client works this out on its own from the turret itself, so nothing has to be synced. Its terminal code still switches it off exactly as before — there is no hijack for the code to undo, so it is left to do its ordinary job. Turn it off with[AlliedTraps] MiniTurretAlwaysAllied = falseto treat it like any other turret. - Fixed: the Fair AI and DefendFacility integrations could silently do nothing. Both are wired up by reflection when the mod starts, which finds nothing if BepInEx has not loaded the other mod yet — and load order was left to chance. They are now declared as soft dependencies, which is what actually orders them; neither is required and nothing changes without them.
1.4.1
Performance pass. No behaviour changes — the mod does the same things, it just stops paying for them every frame.
- Turret head flip no longer costs anything until a turret goes berserk. Its hook runs on every turret on every frame, and it was looking up a dictionary keyed by a Unity object before it knew whether there was anything to do. It now answers the idle case with a single field read, only creates per-turret state at the moment a turret actually goes berserk, and drops state for turrets that have been destroyed — which matters on levels where traps are spawned and destroyed in waves.
- A shut facility door stopped being per-frame work. After the crush it stayed in the tracking list for the rest of the round, rebuilding its kill zone from the door transform every single frame. It is untracked instead; reopening re-registers it, so nothing is missed.
- The ship door stops querying its animator once it is shut. The state check hashed a string natively on every frame the door was closed, and the kill zone was rebuilt just as often even though nothing it is built from moves.
- Terminal codes scan the scene once instead of twice.
FindObjectsOfTypeover a whole modded level is not cheap, and the second scan only mattered when a trap was hidden from the vanilla lookup — which can now be ruled out without it. - What a terminal code belongs to is worked out once and remembered. Six hierarchy searches were being repeated on every code entered and on every door toggle, on every client.
- Smaller ones: no string garbage per monster when a door closes, no throwaway arrays per renderer when a trap is tinted, and shader properties resolved once instead of by name each time.
- New
[General] VerboseLogging(default off). The per-event diagnostics — most of all the door offset line used to tuneDoorwayThickness— were written to disk on every door close for every player. They now need this switch.
1.4.0
- Fair AI compatibility: a hijacked turret no longer shoots the crew. Fair AI replaces the
turret AI outright — it sweeps for targets, aims and applies damage in its own methods — so this
mod's block on
CheckForPlayersInLineOfSightnever came into play. Worse, driving the turret the vanilla way means writingtargetPlayerWithRotation, which Fair AI reads as "the target is a player": the mod was effectively handing it the very target it was trying to protect. When Fair AI is installed the turret is now left entirely to it, and the hijack is enforced inside its own pipeline instead — an allied turret finds no players when Fair AI sweeps, refuses a player target, and does not run its player damage. Fair AI already hurts monsters from turrets, so this mod stops doing so as well and the damage is no longer doubled. - The whole integration is soft-bound by reflection and does nothing at all unless Fair AI is present, so nothing changes for anyone who does not use it.
1.3.4
- Terminal codes now reach traps the game itself cannot see. Vanilla looks its targets up with
FindObjectsOfType<TerminalAccessibleObject>()— withoutincludeInactive— so a trap whose terminal component is disabled is unreachable. BrutalCompanyMinusExtraReborn disables exactly that on its grabbable turret, which is why such a turret ignored its code completely: it never berserked, never switched off, and never reached this mod. The lookup is now extended additively, so the vanilla path is untouched. - An allied turret can no longer aim at players. With no monster in sight it used to fall through to the vanilla lookup, which points the turret at a player's head — it could not hurt them, but it tracked and fired at them, which looked exactly like the turret turning on the crew.
- Re-entering a code no longer undoes a hijack. A trap that is already yours stays yours instead of being sent berserk or detonated.
- Trap commands are properly chance-based now.
TurretAlwaysBerserkand the newMineAlwaysDetonateboth default tofalse, so a code normally does the vanilla disable and only an error roll sends a turret berserk or detonates a mine. Set either totruefor the old always-on behaviour.
1.3.3
- Modded turrets respond to terminal codes again (DefendFacility's mini turret). The trap is
now identified before anything else: vanilla declares
isBigDoor = trueby default, so a trap that gains aTerminalAccessibleObjectat runtime without clearing that flag was mistaken for a door and silently ignored. - The hijack chance behaves like a chance again. It was seeded per trap, which fixed the outcome forever — a trap that rolled badly could never be hijacked no matter how many times you tried, so at the default 0.25 three traps in four were permanently un-hijackable. It is rolled fresh per command now (the hijack is broadcast explicitly, so it no longer needs to be reproducible), and the roll is logged.
- Clients no longer re-roll a hijack they were told about, so they can never disagree with the player who issued the command.
1.3.2
- Green tint now works on modded turrets (DefendFacility's mini turret and other grabbable
turrets). Colours are written through a
MaterialPropertyBlockinstead of onto the material: skin systems push their look through a property block, and a block overrides the material, so the old tint was being drawn over and never showed. This also stops the mod instantiating a material copy per renderer. - Hijacking no longer breaks on traps that are not network-spawned (a shop-item turret, for
example) — reading
NetworkObjectIdthere throws, so it now falls back safely. - The tint logs what it found (lights / beams / indicator materials) to make future skin problems easy to diagnose.
1.3.1
- Fixed turrets flipping on and off forever. The hijack was riding the turret power toggle, which the facility power system (and power mods such as DefendFacility, which re-applies trap power several times a second) also uses — so the two fought each other. The hijack now rides a sentinel value tagged onto the berserk broadcast, which nothing else in the game or in other mods ever sends.
- Compatible with power mods. The mod no longer forces
turretActiveat all. Whether a trap has power is left entirely to the game and to power mods; this mod only ever changes who a trap targets. With DefendFacility that means a blackout arms the traps, and any you have hijacked defend you while the rest hunt the crew. - A blackout can no longer be mistaken for a hack. Mine hijacks are signalled by a deliberate off-then-on blink instead of a plain shutdown, so a power cut no longer turns a quarter of the map's mines friendly.
1.3.0
- Hijacking a turret no longer sends it berserk. The hijack used the berserk broadcast as its sync carrier, so the turret really did spin out for a moment. It now travels on the turret's "powered down" broadcast instead — which every client receives, needs no custom networking, and doubles as the sound of a hack.
- Audible hack confirmation (
AlliedHackSound): the trap powers down and a beat later comes back online on your side, built from the trap's own clips. - An allied turret now does exactly the damage a normal one does. A vanilla turret kills on
a 0.21s tick in two hits; an allied turret matches that tick and scales its force to the
monster's health, so it is neither weaker nor stronger than a normal turret.
AlliedTurretDamageandAlliedTurretHitIntervalare gone — there is nothing left to tune because there is no longer any difference.
1.2.2
- Allied turrets now actually shoot. They were being forced into Berserk, which is the
malfunction spin — no muzzle flash, no firing sound. They now run the completely normal
vanilla sequence instead (scan -> warning beep -> track -> fire): the turret is simply handed
a monster as its target, via a
SetTargetToPlayerBodypatch that swapstargetTransformfor an aim marker on the monster. An allied turret behaves exactly like a normal one, it just cannot see players. - Allied turrets also respect their own firing arc when picking a monster, so they never lock onto something they cannot physically face.
- Turret damage is now applied only while the turret is genuinely in its Firing state, so hits line up with the muzzle flash and sound.
- A hijack is permanent now.
AlliedDurationdefaults to0— once a trap is yours it stays yours for the rest of the round. Set a number of seconds if you want it to wear off.
1.2.1
- Hijacked traps now look hijacked. An allied turret's laser and an allied mine's blinking
indicator turn green instead of red (
AlliedTint). Neither is a field on the script, so the lights/line renderers and the dominantly-red indicator materials are found in the prefab at runtime and restored when the hijack ends. - Allied turrets idle properly. They stay in their normal scanning state (green laser sweeping) and only switch to firing once a monster is actually in sight, instead of spinning and firing non-stop.
- Fixed the hijack not reaching other players. The terminal only runs the code on the client that typed it, so remote clients still saw a hostile trap. The hijack now travels on a vanilla synced RPC (turret berserk broadcast / mine deactivate broadcast) and every client re-derives the same deterministic roll from it.
1.2.0
- New: hijacked (allied) traps. A terminal trap command can now flip the trap to your side
instead of detonating it. An allied turret stops seeing players entirely and hunts monsters;
an allied mine can no longer be set off by the team and waits for a monster to walk up to it.
Controlled by
AlliedChance,AlliedDurationand the rest of the[AlliedTraps]section. - The hijack roll is deterministic per trap (level seed + NetworkObjectId), so every client independently computes the same result. No custom networking, and re-entering the code cannot re-roll a trap.
- Turret player-immunity is a single postfix on
Turret.CheckForPlayersInLineOfSight, which the game uses both to pick a target and as the condition for damaging the local player.
1.1.0
- Fixed the turret "error chance" behaving as if it were always on. A rampage re-issued
EnterBerserkModeServerRpcevery 1.5s; because that replays the berserk entry on remote clients, a single command looked like the turret entered berserk ~5 times. The rampage now only keeps the firing countdown alive and re-triggers solely if the turret genuinely dropped out of berserk. - Fixed rampage stretching the spin-up instead of the rampage.
berserkTimermeans the 1.3s wind-up whileenteringBerserkMode, and the firing countdown afterwards. Topping it up during the wind-up made the turret whine and spin without shooting; it is now only extended during the firing phase. - New
TurretAlwaysBerserkoption.true(default, unchanged behaviour) = every turret code sends it berserk andTurretErrorChanceonly adds an extended rampage.false= a turret code disables the turret as in vanilla and only an error roll sends it berserk, which makes the configured chance directly observable. - Mine and turret commands now log the actual roll (
roll 0.412 >= 0.150) so the chance can be verified from the BepInEx log.
1.0.9
- Renamed to "Terminal that can kill" (by Solon). New GUID
Solon.TerminalThatCanKilland DLL name; delete the old plugin/config when updating. - Config cleanup. Ship-door zone coordinates are now hard-coded (the ship is always at a
fixed world position) instead of exposed as settings. Door-zone size (
DoorwayThickness/ Width/Height) moved to the advanced section; the[LethalDoors]sections are now[Doors]. - Removed the legacy
[LethalDoors]prefix from log lines (the log source already names the mod).
1.0.8
- New: turret head flips 180° after berserk. When a turret leaves berserk it remembers
its pre-berserk facing and smoothly turns its head 180°, resting that way until the next
berserk (still turns to fire at detected players). Configurable via
TurretFlipOnBerserkExitandTurretFlipSmoothDuration. Patched as a postfix onTurret.Update, per-turret state kept in a dictionary. TerminalDoorCloseSecondsdefault set to 0.4 (field-tuned sweet spot).
1.0.7
- Door death now matches the Barber (ClaySurgeonAI). Players killed by a door use the
exact Barber death: launched up (
Vector3.up * 14), causeSnipping, ragdoll index 7 (PlayerDeathAnimationIddefault 7). - Faster facility-door trigger.
TerminalDoorCloseSecondsdefault dropped 1.2 → 0.25 so the crush fires as the door slams instead of ~1s later, and quick open/close spam can no longer out-run it.
1.0.6
- Facility doors: reworked to frame-driven detection. The previous coroutine cancelled itself whenever a door was reopened within its ~1.2s close window, so rapid toggling meant the crush (and even the diagnostic log) never ran. Closing doors are now tracked and checked every frame instead.
- Added a
Terminal door '<name>' closing — tracking for crushlog the moment a close is detected, so it's clear the hook fires.
1.0.5
- Fixed facility (terminal) doors never firing. The crush was hooked on
SetDoorLocalClient, but the vanilla terminal-code path goes throughSetDoorToggleLocalClient→SetDoorOpen. Re-hooked onSetDoorOpen(the one method every client runs on a state change) and it now detects a real open→closed transition. - The zone is built from the door's own transform (the
TerminalAccessibleObjectlives on the door GameObject). The diagnostic log prints the player's local offset so the geometry can be tuned like the ship door was.
1.0.4
- Ship door now connects. Field testing showed players stand ~0.65m off the door
plane (a doorway has depth — you can't stand inside a closing door), just outside the
old 0.5m half-thickness. Bumped the default
DoorwayThicknessto 2.0 so the slab covers the doorway depth. Orientation and centre were already correct.
1.0.3
- Precise doorway zone. Replaced the spherical
CheckRadiuswith a thin oriented slab in the doorway opening (DoorwayThickness/DoorwayWidth/DoorwayHeight). Only someone standing in the opening is crushed, not merely near the door. Applies to both the ship door and terminal (facility) doors. - Fixed the hanging corpse.
PlayerDeathAnimationIdnow defaults to0— the normal physics ragdoll that falls. Other indices point to special/animated bodies that can freeze in mid-air. - Dropped the custom crunch sound: the game already plays
playerCrushDeathforCauseOfDeath.Crushing.
1.0.2
- Fix: ship door now actually crushes. The kill zone was centred on the wrong point
(
outsideDoorPoint), so the player was never inside it. The ship sits at a fixed world position, so the doorway zone is now a world coordinate (default-5.72, 0.305, -14.1, configurable) — the same reference proven to work by other door mods. - Detection rewritten to patch
HangarShipDoor.Update, usingdoorPower < 1plus the animator's"ShipDoorClose"state (with a time fallback) to know when the door is shut.
1.0.1
- Fix: ship door now kills. Vanilla never calls
PlayDoorAnimation(true)on close, so detection now watches the authoritativeStartOfRound.hangarDoorsClosedflag (rising edge, on the surface only). - Fix: turret now goes berserk. Mirrors vanilla
Hit()exactly — a localSwitchTurretMode(3)plusEnterBerserkModeServerRpc(...)(the ClientRpc deliberately skips the triggering client, so the local call is required). - Split error chance into
MineErrorChanceandTurretErrorChancefor independent tuning. - Added a diagnostic log of the local player's distance to the door zone centre to help
tune
CheckRadius.
1.0.0
- Initial release.
- Lethal Doors: ship hangar door and big terminal-controlled facility doors kill
players and/or monsters caught in the doorway when they finish closing.
- Configurable affected doors, safe period after landing, kill radius, and InstantKill / DamageOverTime modes.
- Ghost-Girl style head-pop death animation + best-effort crunch sound.
- Monster exclusion list for enemies that cannot enter the ship.
- Remote Trap Control: terminal codes detonate mines and send turrets berserk instead of disabling them, with a configurable critical-error chance (mine chain reaction / sustained turret rampage).