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.
InsanityMod
Insanity system for Lethal Company. Sanity drains in the facility, spikes when you witness deaths, and peaks with tunnel vision, camera shake, and haunting voice playback. Includes Paranoia custom weather.
| Date uploaded | 2 weeks ago |
| Version | 1.0.9 |
| Download link | Meeee-InsanityMod-1.0.9.zip |
| Downloads | 2284 |
| Dependency string | Meeee-InsanityMod-1.0.9 |
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.2100mrov-WeatherRegistry
A mod for controlling the game's weather system: scrap multipliers, weather chances, blacklisting and more!
Preferred version: 0.8.8README
InsanityMod
A Lethal Company mod that tracks player sanity and makes high-insanity runs genuinely terrifying.
Game version: V80–81 | BepInEx: 5.4.23.5+
Dependencies
- WeatherRegistry — required for Paranoia weather
What it does
Insanity meter
Insanity (0–100%) accumulates while you're inside the facility and drains while you're outdoors during the day. The ship is a partial refuge — it drains insanity while the lights are on, and creeps it up slowly when they're off.
- Solo in the facility: ~10 minutes to 100%
- On the ship: slowly drains with lights on (−0.3/s), creeps up slowly when dark (+0.15/s)
- Outdoors (daytime): slowly decays back toward 0
- Outdoors (night / Eclipse): insanity rises instead of falling
- On the Company moon (Gordion): drains regardless of lights — the Company is a thematic refuge
- Resets each round — every new expedition starts fresh
Things that make it worse
| Trigger | Effect |
|---|---|
| Visible enemy nearby | +rate per second (scales by enemy type) |
| Watching a teammate die | instant spike |
| Paranoia weather | rate multiplier |
| Night outdoors | slow rise instead of decay |
| Eclipse weather outdoors | faster rise than night |
| Underwater | +0.4/s |
| Ship with lights off | +0.15/s (mild creep) |
Enemy threat scale (examples): Bracken / Ghost Girl = 2.0×, Jester / Coilhead = 1.5×, Forest Giant / Masked = 1.4×, Sand Worm = 1.8×, Thumper = 0.8×
Things that make it better
| Condition | Effect |
|---|---|
| Teammate within 6m | −0.15/s |
| Flashlight on / in ship | −0.1/s |
| Near a facility light | −0.1/s |
| Ship with lights on | −0.3/s (base rate) |
| TZP-Inhalant effect active | −1.0/s |
| On the Company moon (Gordion) | −0.5/s |
Being with a teammate near a light source in the facility effectively keeps insanity stable — unless the apparatus has been removed. TZP-Inhalant is a strong safety valve: one inhale (~17 s effect window) recovers ~17%. Note: TZP does not reduce insanity inside the facility after the apparatus has been removed (the apparatus-removed penalty disables all in-facility recovery).
Effects at high insanity
Things start happening as insanity climbs. Find out for yourself.
Spoilers — click to reveal
70% — Voice distortion
Nearby teammates' voices begin to sound subtly warped. The mod also captures a rolling 30-second buffer of teammate voice chat and starts playing back distorted snippets spatially in 3D — you'll hear phantom voices from positions that seem to move.
80% — Tunnel vision
A deep red vignette slowly pulses in from the edges of the screen. The pulse and color intensity increase toward 100%.
Also at 80%+: the Ghost Girl (DressGirl) slightly increases her haunt speed while targeting you.
90% — Camera shake
Perlin-noise position and rotation jitter on the camera. Starts subtle, gets pronounced at 100%.
100% — Transformation
Insanity peaks. Movement gradually slows to a halt, the screen fades to black, and a Masked enemy spawns at your position wearing your suit. You die.
The transformation can be disabled in config (EnableMaskedTransform = false).
Apparatus removal
Pulling the apparatus triggers an immediate insanity spike for everyone in the round. For the rest of the round, insanity-reduction buffs (teammate proximity, flashlight, facility lights) no longer work inside the facility — insanity can only rise in there. Outdoors is unaffected.
Paranoia weather
A custom weather event. During Paranoia, insanity accumulates faster in the facility and enemies are more active. Appears at roughly 3% chance per night (configurable).
HUD
A small ring meter in the bottom-right corner of the screen shows your current insanity percentage. Color shifts white → yellow → red as it fills.
End-of-round results
After the ship leaves, the host broadcasts each player's peak insanity for the round to all clients.
Configuration
All values are in BepInEx/config/com.insanitymod.lethalcompany.cfg.
Language note: The
Languagesetting only accepts values defined inLangs.json(AUTO,EN,KO). Setting an unsupported language code will cause UI strings to display as raw keys (e.g.hud.max_insanityinstead ofPeak Insanity).
| Key | Default | Description |
|---|---|---|
Language |
AUTO |
Display language. AUTO detects from system locale. Supported: EN, KO |
InsanityRateInFacility |
0.167 |
Insanity/s inside facility |
RateOnShipLightsOn |
-0.3 |
Insanity/s on ship while lights are ON (negative = recovery) |
RateOnShipLightsOff |
0.15 |
Insanity/s on ship while lights are OFF |
InsanityDecayOutdoor |
0.8 |
Insanity/s lost outdoors (daytime) |
NightOutdoorRate |
0.05 |
Insanity/s gained outdoors at night (0 = disabled) |
NightStartHour |
19 |
Game hour at which night begins (0–23) |
EclipseOutdoorRate |
0.1 |
Insanity/s gained outdoors during Eclipse |
ParanoiaOutdoorRate |
0.1 |
Insanity/s gained outdoors during Paranoia weather |
CompanyMoonDecayRate |
0.5 |
Insanity/s reduced while on the Company moon (71 Gordion) |
ParanoiaMultiplier |
1.2 |
Rate multiplier during Paranoia weather |
ParanoiaSpawnWeight |
20 |
Spawn weight (other weathers: 100) |
TunnelVisionThreshold |
80 |
% at which vignette begins |
TunnelVisionColor |
#180202 |
Tunnel vision overlay color (hex). Use #000000 for pure black |
HideHudAtZero |
false |
If true, hides the insanity HUD ring while at 0% |
EnableHud |
true |
Master switch for the insanity HUD ring — set false to disable entirely |
MobVisibilityScale |
1.0 |
Global multiplier for enemy-visibility rate |
MobVisibilityRange |
30 |
Max distance (m) for enemy detection |
TeammateBuffRate |
0.15 |
Rate reduction near a teammate |
TeammateBuffRange |
6 |
Range (m) for teammate buff |
LightBuffRate |
0.1 |
Rate reduction when illuminated |
LightProximityRange |
8 |
Range (m) to facility light |
UnderwaterRate |
0.4 |
Insanity/s gained while underwater |
TZPInsanityDrainRate |
1.0 |
Insanity/s reduced while a TZP-Inhalant effect is active |
DeathWitnessSpike |
25 |
Insanity spike when witnessing a death |
DeathWitnessRange |
40 |
Max distance (m) for death witness check |
GhostGirlBoostThreshold |
80 |
% above which Ghost Girl haunt speed increases |
VoiceHauntThreshold |
70 |
% at which voice distortion + haunting begins |
ApparatusSpike |
15 |
(spoiler) Instant insanity gain when apparatus is removed |
EnableMaskedTransform |
true |
(spoiler) If false, the 100% effect is skipped entirely |
MaskedTransformOnlyDuringParanoia |
true |
(spoiler) If true, the 100% Masked transformation only triggers during Paranoia rounds |
Installation
- Install BepInEx 5.4.23.5+
- Install WeatherRegistry
- Drop
InsanityMod.dllintoBepInEx/plugins/InsanityMod/
Credits
Built for Lethal Company V80–81. Uses WeatherRegistry by mrov and Dissonance Voice Chat for VOIP integration.
Special thanks to vDolo for extensive playtesting and feedback that drove most of the v1.0.1 and v1.0.2 improvements.
CHANGELOG
Changelog
v1.0.9
- Fix: Paranoia outdoors no longer dims toward a near-blackout late in the day on non-snowy moons. The mod's sun-dimming was stacking on the game's natural dusk darkening; the dim floor is raised (and the fog is less dense near the player) so the moody red look stays but the ground remains visible. Tune further with
ParanoiaOutdoorDarkness/ParanoiaFogDensity. - Fix: The insanity HUD ring now reliably hides while the pause / quick menu is open. It was stalling when opening the menu froze game time (so it never faded out); it now hides instantly.
- Change:
HideHudAtZero(on/off) is replaced byHideHudBelowThreshold(a %). Default0hides the ring only at exactly 0% (same as before); set it higher (e.g.20) to keep the ring hidden until your insanity is meaningful. OldHideHudAtZeroconfig lines are now ignored — safe to delete by hand.
v1.0.8
- Fix: Paranoia no longer suppresses the dusty light-shaft haze under interior lights. v1.0.7 forced volumetric fog off, which removed that haze on Paranoia rounds (moons whose native fog is preserved, like Titan, were unaffected). Volumetric fog is kept on now, so the haze returns — and with the red Paranoia fog it reads as ominous red dust under the lights. The haze is dialed down inside the facility, where its many lights would otherwise turn into harsh red cones; the surface and ship keep the full look.
- Fix: The insanity HUD ring now hides while the pause / quick menu is open, so it no longer overlaps menu buttons (e.g. MoreCompany's cosmetics button or the settings options).
- New:
CameraShakeIntensityconfig (default 1) — scales the high-insanity (90%+) camera shake, or set it to 0 to turn the shake off entirely. Added for motion-sickness comfort.
v1.0.7
Multiplayer / client-sync fixes, plus an in-progress rework of the Paranoia weather visuals.
⚠️ The Paranoia weather visuals are still a work in progress. On some moons the skybox can still look a little bright and the look varies per moon — further visual polish is coming in a later update. In the meantime you can tune it yourself with the
ParanoiaScreenTint,ParanoiaOutdoorDarkness, andParanoiaFogDensityconfig options.
- Fix: Insanity now starts correctly for non-host players. Round start previously ran only from
StartOfRound.StartGame, which executes server-side only — so on clients_roundActivestayed false and the HUD ring never appeared (and insanity never ticked). An idempotent round start now also runs fromRoundManager.FinishGeneratingNewLevelClientRpc, which fires on every machine. The host path is unchanged. - Fix + improvement: Ghost Girl haunt-speed boost no longer desyncs online, and now works for every player.
DressGirlAIis server-authoritative, so hertimeris only ever mutated on the host. Each client streams its live insanity to the host (throttled, ~0.4 s), and the host boosts the haunt based on the insanity of whichever player she is actually targeting — so a high-insanity client gets hunted faster too, not just the host. - Fix:
InsanityNetworkHandler.RegisterHandlersis now idempotent (unregisters before registering). Since round start can fire from two paths, this prevents a duplicate-registration warning from NGO. - Fix: 2-Story Ship railings/catwalk/upper floor are now correctly treated as inside the ship. v1.0.6 only checked
shipInnerRoomBounds, which the 2-Story mod enlarges to cover its upper floor — but the side railings and entry catwalk sit outside that inner-room box, so stepping onto them wrongly read as outdoors and triggered the Paranoia transition. Ship detection is now a union ofisInHangarShipRoom,shipInnerRoomBounds, and the larger outershipBounds(which includes the catwalk/railings and is also resized by 2-Story). Also covers Imperium teleports, which a position test catches even when the vanilla trigger is skipped. - Rework: Paranoia visuals no longer "re-render" or white-flash when crossing the ship threshold. The old approach drove
RenderSettings.ambientLight, the directional light's colour/intensity, and even snapped its rotation every frame, gated by an indoor/outdoor check — that global, instant relighting was the flash/snap. It's been replaced by a single self-contained global HDRP volume (red colour grade + mild fog) that is constant for the whole round and only fades its weight once on round start/end. No per-frame scene-lighting writes, no indoor/outdoor gating, so nothing snaps when you step in or out (jiggle-peeks included). This also restores the subtle constant filter indoors that earlier playtesting preferred, and aligns with how vanilla / WeatherRegistry weathers render (encapsulated effects rather than hijacking scene lighting). Outdoor "blood" lighting comes from a colour-only tint on the sunlight (intensity and rotation are never touched, so no shadow/sky recompute), volumetric fog is disabled for a lighter, predictable constant look, and the sun/rain setup retries briefly in case they aren't ready the frame the level finishes generating. - Fix: Voice-haunt no longer throws (logged) errors on round transitions. A
VoiceTrackcached direct references to audio filter components on a player'sVoicePlayback; when the game destroyed/recreated that object between rounds the references became Unity "fake null", andApplyLiveDistortion/ResetFiltersthrew when touching them (surfacing viaUpdatePostfix,ShipLeavePostfix, and round-start). Added a Unity-awareIsAliveguard so those methods no-op on dead tracks, andRefreshTracksnow evicts dead tracks so a fresh one re-binds to the new playback — voice distortion/haunting self-heals instead of silently stopping for that player. - Fix: The Paranoia weather name no longer renders as boxes (□□□) in the terminal under non-English languages. The vanilla terminal font is Latin-only and can't draw e.g. Korean glyphs, so the weather name is now a fixed ASCII proper noun ("Paranoia") for every language — consistent with the vanilla weather names (Eclipsed, Foggy, …).
- Tuning: Paranoia's tint is now world-space, not a flat full-screen filter, so the ship interior stays clean while the sky and the view out the windows still read red. It comes from: distance-based fog (reddens the sky/horizon, barely touches the near interior), a direct tint on the volumetric clouds (which render past the fog and otherwise stay bright), and sun dimming for surface gloom (colour + intensity only, never rotation — leaves the interior, lit by its own lights, alone). The optional full-screen colour grade now defaults OFF (it's the only layer that would tint the interior). Three config sliders expose this for live tuning (LethalConfig-friendly):
ParanoiaScreenTint(default 0),ParanoiaOutdoorDarkness,ParanoiaFogDensity.
v1.0.6
Bug-fix pass driven by vDolo's playtest report.
- Fix:
EnableHud = falsenow actually hides the HUD ring at runtime. Previously the toggle was only checked at scene load, so flipping it mid-session left the ring visible. - Fix: Paranoia visuals no longer bleed into unrelated sessions after Save & Quit. Returning to the main menu now force-resets the active flag, the per-level set, and any lingering HDRP volumes / rain.
- Fix: Paranoia weather no longer overwrites the native snow / fog cover on Rend, Dine, and Titan. The red HDRP Fog override is skipped on those moons; ColorAdjustments (red tint + darkening) still apply, so Paranoia still reads as Paranoia.
- Fix: Ship-interior detection switched from
PlayerControllerB.isInHangarShipRoomto the vanillashipInnerRoomBoundsAABB. Fixes false "in ship" readings around the second-story railing with 2-Story Ship, and fixes Imperium teleports not registering as inside the ship until the player physically lands. - Fix: Underwater insanity gain now takes priority over outdoor decay. Previously the −0.8/s decay partially cancelled the +0.4/s underwater rate, producing a net decrease in flooded weathers — now the decay branch is suppressed while submerged outdoors, so insanity climbs as intended.
v1.0.5
Playtest-driven additions on top of v1.0.4.
- Fix: Paranoia weather visuals are now strictly outdoor-only. The red sky tint and exposure cut no longer leak into the ship or facility interior. Indoor↔outdoor transitions fade fog, sky tint, ambient light, and sun together over ~0.5 s — eliminating the bright→red flash that appeared when stepping off the ship ramp.
- New:
TZPInsanityDrainRateconfig — sustained per-second insanity reduction while the local player has the TZP-Inhalant effect active (drunkness > 0.05). Default1.0/s. One inhale (~17 s effect window) recovers ~17%; stack three for ~50% — a strong safety valve, particularly useful on apparatus-removed rounds where in-facility buffs are disabled. - Change:
InsanityRateOnShipis replaced byRateOnShipLightsOn(default-0.3/s) andRateOnShipLightsOff(default+0.15/s). Ship lights become a tactical lever: lit ship is a passive recovery zone, dark ship is a mild threat (still slower than the facility). Old config files will retain the now-unreadInsanityRateOnShipline as a cosmetic orphan — BepInEx does not auto-clean it. Safe to delete by hand.
v1.0.4
Playtest-driven additions on top of the v1.0.3 stabilization release.
- New: HUD ring now fades in/out (≈0.5 s) when crossing the 0% threshold — replaces the abrupt toggle from v1.0.3.
- New:
UnderwaterRateconfig — sustained per-second insanity gain while the local player is underwater (default0.4). - New:
CompanyMoonDecayRateconfig — sustained per-second insanity reduction while on the Company building moon (71 Gordion). Default0.5. The Company is treated as a thematic refuge. - New:
MaskedTransformOnlyDuringParanoiaconfig (defaulttrue) — restricts the 100% Masked transformation to Paranoia weather rounds. Setfalseto restore the old behavior. - New:
EnableHudconfig (defaulttrue) — master switch for the insanity HUD ring. Setfalseto disable it entirely (no canvas is created).
v1.0.3
Stabilization & defensive sweep — no player-facing behavior changes.
- New:
SafePatchhelper wraps every Harmony patch, Unity callback, and event listener with deduplicated exception logging. A single throw in any patch can no longer silently disable other patches or spam the log. - Perf: Per-frame hot paths (
PlayerControllerB.Update,DressGirlAI.Update,OnAudioFilterRead) lift their early-exit guards above the wrapper to avoid closure allocation when nothing needs to run. - Perf:
BloodNightManager.GetSun()fallbackFindObjectsOfType<Light>()is throttled to once every 5 seconds when the cached reference is missing. - Fix: End-of-round insanity stats no longer get appended twice if the game's
ApplyPenaltyfires more than once per round. - Fix:
VoiceHaunthaunt-clip GameObjects (which useDontDestroyOnLoad) are tracked and cleaned up on round end so they can't pile up across long sessions. - Fix: Plugin teardown now clears the Paranoia weather level set and removes the
WeatherChangedlistener. - Fix: Network message handlers wrapped — a malformed packet can no longer break the handler registration.
- Chore: Dropped a per-level "InsanityHud overlay created" log line.
v1.0.2
Most of this release is driven by feedback from vDolo — thanks!
- New: Paranoia weather now has proper visual atmosphere — dark moody sky, dim red sun, light fog, and red color grading (HDRP volumes)
- New: Rain particles activate during Paranoia weather
- New: Custom terminal color for Paranoia weather (dark crimson)
- New:
TunnelVisionColorconfig — change overlay color via hex (default darker than before; less eye-strain) - New:
HideHudAtZeroconfig — option to hide the insanity HUD ring at 0% - Fix: Paranoia visuals now apply at the correct moment (after level finishes loading) instead of leaking into the ship-departure transition
- Fix: Ship interior no longer pitch-black during Paranoia weather (fog/heavy darkening only applied outdoors)
- Fix: Smooth fade-out of Paranoia visuals when the ship departs, instead of an abrupt pop
- Fix: Voice haunt buffer is now cleared immediately on ship departure as well as round start
- Change: End-of-round insanity stats now appended to the existing penalty breakdown text for cleaner integration with the evaluation screen
v1.0.1
- Fix: Insanity HUD no longer visible on the main menu after exiting a save
- Fix: Tunnel vision and other VFX now properly clear when returning to the main menu mid-round
- New: Insanity rises outdoors at night instead of decaying (configurable, default 0.05/s after hour 19)
- New: Eclipse weather also raises insanity outdoors at a higher rate (default 0.1/s)
- Change: Renamed "Blood Night" weather to Paranoia to avoid confusion with the existing Blood Moon event
- Change: Apparatus removal reworked — now triggers an immediate insanity spike (+15) and disables all insanity-reduction buffs inside the facility for the rest of the round (replaced the ×2.0 rate multiplier)
v1.0.0
- Initial release