You are viewing a potentially older version of this package. View all versions.
Y4NGZ313-LethalCCTV-1.3.1 icon

LethalCCTV

Security cameras, alarms, a hackable mainframe and locked stashes in the facility.

Date uploaded 2 weeks ago
Version 1.3.1
Download link Y4NGZ313-LethalCCTV-1.3.1.zip
Downloads 981
Dependency string Y4NGZ313-LethalCCTV-1.3.1

This mod requires the following mods to function

BepInEx-BepInExPack-5.4.2305 icon
BepInEx-BepInExPack

BepInEx pack for Mono Unity games. Preconfigured and ready to use.

Preferred version: 5.4.2305
Evaisa-LethalLib-1.2.0 icon
Evaisa-LethalLib

Personal modding tools for Lethal Company

Preferred version: 1.2.0
TeamXiaolan-DawnLib-0.9.25 icon
TeamXiaolan-DawnLib

A modern API for Lethal Company content and all sizes of mods [V81]

Preferred version: 0.9.25
Sigurd-CSync-5.0.1 icon
Sigurd-CSync

Configuration file syncing library for BepInEx.

Preferred version: 5.0.1
xilophor-LethalNetworkAPI-3.4.2 icon
xilophor-LethalNetworkAPI

A library/API to allow developers to easily add networking to their mods.

Preferred version: 3.4.2
Rune580-LethalCompany_InputUtils-0.7.13 icon
Rune580-LethalCompany_InputUtils

API/Library for creating Unity InputActions with in-game re-binding support. Provides an alternative UI that allows for supporting mods to have in-game re-bindable keybinds.

Preferred version: 0.7.13
Y4NGZ313-Y4NGZInteractions-1.0.3 icon
Y4NGZ313-Y4NGZInteractions

Animation library used by Y4NGZ mods. Adds nothing on its own.

Preferred version: 1.0.3
Y4NGZ313-Y4NGZCore-1.0.11 icon
Y4NGZ313-Y4NGZCore

Shared library for Y4NGZ mods. Adds nothing on its own.

Preferred version: 1.0.11

README

LethalCCTV

About Y4NGZ

I am Y4NGZ, an up and coming rapper out of NYC/Detroit. All of my mods are inspired by the music I write. If you are interested in knowing more about me, check out my SoundCloud: https://soundcloud.com/y4ngz

Generative AI usage

The entire code base of this mod was created with generative AI. Assets are free, licensed, paid for, or generated with AI tools. If you do not wish to play with AI-generated content, do not install this mod.

What LethalCCTV does

LethalCCTV fills the facility with security cameras and locked Company stashes. If an active camera spots you, the alarm goes off. The entrances seal for a while and monsters head for the tripped alarm. Hack the mainframe in each interior to shut the active cameras down.

LethalCCTV ship CCTV station

LethalCCTV facility alarm

LethalCCTV mainframe hacking

Requirements

Your mod manager installs these automatically:

  • BepInExPack
  • LethalLib
  • DawnLib
  • CSync
  • LethalNetworkAPI
  • LethalCompany InputUtils
  • Y4NGZInteractions
  • Y4NGZCore

Cameras

  • Red - passive. It sees you and does nothing.
  • Orange - active. Getting spotted trips the facility alarm.

An active camera shows a detection warning on your HUD when you are in its field of view. The brighter it gets, the closer it is to tripping the alarm.

The mainframe

A mainframe spawns inside every interior. Beat its hacking mini-game to disable the active cameras. A hacked mainframe also shows how much scrap is in the interior, lets you speak over a facility-wide intercom and lists the four-digit stash codes.

Company stashes

Company stashes open with a four-digit keypad code from the mainframe. The mainframe does not say which code belongs to which stash, so you may need teamwork to open them all. Stashes hold gold bars by default. Their spawn lists are configurable.

The ship CCTV station

The CCTV station is sold in the store. It gives you the camera feeds, a walkie-talkie and a live radar of the interior. From the station you can ping locations, acquire targets and hack the mainframe remotely. If OpenBodyCams is installed, every connected player gets their own named bodycam feed at the start of the feed list.

Configuration

The configuration file is BepInEx/config/com.y4ngz.company.lethalcctv.cfg. The host's settings apply in multiplayer.

  • Security Systems / Security Enabled - master switch for cameras, alarms, lockdown gates and drills.
  • Mainframe / Enabled - turn the mainframe off. Cameras and alarms still work, and breaking a camera is the only way to stop it.
  • Company Stashes - Enabled, Loot Rolls, Loot Pool and minimum/maximum stash counts per moon risk level.

Compatibility

Independent installation: LethalCCTV needs only Y4NGZCore and the libraries listed under Requirements. The other Y4NGZ packages are optional companions - install any combination and each one lights up its extra behavior.

The required Core package is Y4NGZ313-Y4NGZCore-1.0.11 or newer.

Mod What it adds
Contracted Contract camera pings, mainframe and Company Stash integration, and facility security reactions; Contracted also feeds the stash loot table.
Y4NGZ Upgrades The Chameleon upgrade, the Field Operations tablet, camera interactions and markers, and a CCTV time statistic.
Better Armory Its weapons can be made Company Stash exclusive.
OpenBodyCams Every connected player gets their own named bodycam feed at the start of the CCTV station's feed list.
GeneralImprovements Compatible with Better Monitors.

Asset credits

GitHub

Source code: https://github.com/y4ngz313/LethalCCTV

Bugs

Report bugs at https://github.com/y4ngz313/LethalCCTV/issues.

CHANGELOG

LethalCCTV changelog

1.3.1

  • While you are not seated at the CCTV station, the ship monitors now stay within the Unmanned Idle Render Hz budget, and the radar no longer rescans dungeon rooms whenever unrelated objects spawn, for fewer frame spikes during Blacksite raids (#1433).
  • The vanilla ship monitor cameras (radar map, head cam, front-door and interior cams) no longer render while none of their screens is in view, for about 2 ms more per frame away from the ship; the Vanilla Monitor Render Gate setting turns this off (#1433).
  • Interior support cameras now spread their placement search across frames, a few milliseconds each, instead of stalling one frame for 130-176 ms, and interior support placement now uses its full per-frame budget instead of one step per frame; placements are unchanged (#1433).
  • Security cameras keep detecting Y4NGZDebugTools dummies while the host's mob ignore is on (Y4NGZPerformance#48).
  • Hosting a lobby no longer stutters twice for about 100 ms: the CCTV focus HUD scan now runs in small slices over several frames, the CCTV controls note does its full search once per round instead of every quarter second, and the CCTV monitor loads its shaders on earlier frames (#1433).
  • Diagnostic logging during normal play is now off unless Performance Timing Logging is on: station pose and focus entry/exit timings, and the repeating monitor and camera-guard suppression warnings (now one Info line when suppression starts); spawn timings warn only above 20 ms (#1405, #1433).
  • Reloading a save no longer loses the ship's items when the CCTV controls note is in it (#1418).
  • After reloading a save, the CCTV controls note stays attached to the ship again instead of being left behind when the ship flies (#1418).
  • Sitting down at the CCTV station no longer trips the Interactions camera-movement safety stop, since CCTV moves the camera itself during the sit-down (#1418).
  • The sit-down camera can only pull back a short, fixed distance to frame the monitor and ignores a misread monitor position, instead of flinging the view across the ship (#1418).
  • If the operator animation is stopped by another mod or Interactions while you are at the station, you now stand up cleanly instead of being left half-seated (#1418).
  • Requires Y4NGZCore 1.0.11 (#1418).

1.3.0

  • A lockdown gate closing at the main entrance now also shuts the main-entrance door if it was open, and the door cannot be opened until the gate lifts (#1367).
  • Config now has eight plain-English sections (General, Camera Placement, Security Systems, Company Stashes, Mainframe, Radar, Ship Monitor, Diagnostics) with spaced key names and rewritten descriptions; existing settings move automatically once, with a .pre-config-v3.bak backup, and a leftover unused Interior Support entry is removed (#1367).
  • Facility cameras no longer mount on bookshelves, cabinets, panels or other surfaces standing in front of a wall, corners count only between two real walls, and wall cameras prefer the higher mount spots (#1367).
  • Added a host-controlled all-passive camera switch and separate physical mainframe and Company Stash enables, preserving old fixture-off settings (#1367).
  • The ship now starts with a free CCTV terminal for everyone; hosts can turn this off to restore store purchases at the existing price (#1367).
  • Detailed the bullet camera with recessed glass, vents, mounting hardware and worn painted-metal textures while keeping its existing mounting and aiming rig (#1367).
  • Automatic mainframes prefer dead-end rooms with a structural wall, a complete, direct doorway NavMesh route, and a clear interaction endpoint, relaxing room size before an explicitly logged unsafe last resort; authored poses are unchanged (#1313).
  • Facility cameras now mount only on flat structural walls and ceilings (about a 1.2 m patch), never on railings, pipes, beams or trim; a room without such a surface gets no camera instead of a guessed pose (#1313).
  • Replaced the facility camera's open dome with a closed, low-poly bullet camera, named yaw/pitch pivots and a socket-mounted status light (#1313).
  • Wall alarms now sit centred above doorway sockets at a consistent clearance, require a structural wall patch, and skip unsupported doorways instead of mounting beside the jamb (#1313).
  • Replaced the package icon and animated promotional logo with new camera-pan corridor footage and an OCR-A terminal wordmark, LETHAL over CCTV in cool white on dark bands (#1402).
  • Company Stashes are 15% taller with a raised keypad and matching placement clearance, and scan only within 12 metres (#1313).
  • The facility camera pass now runs inside the level-loading freeze instead of as a ~1 s hitch after generation, and reads entrance, fire-exit and apparatus positions from the dungeon's spawn markers so those cameras place on every peer; wall alarms now wait for the facility's inside doors on every landing, not only the first (#1283).
  • Facility cameras and their props are now placed in one faster pass before the ship starts to descend, instead of over the ten seconds around landing, removing the landing and door-open stutter; placements are unchanged (#1271).
  • Interior placements no longer skip tall tiles whose floor the reachability check missed, and support cameras and alarms may use the entrance room (#1271).
  • CCTV monitor renders no longer scan the whole scene for the main entrance on every repaint, the compositor's first pass waits until the monitor can be seen, a stale feed snapshot is dropped after leaving focus, and the focused-frame profiler census is removed (#1262).
  • Feed pings now overlay the image without changing its HDRP settings, with a blackout guard (#1219).
  • Manual CCTV renders share a one-per-frame budget (#1219).
  • Camera target refreshes use spawn/despawn registries (#1219).
  • The page indicator's legacy-font fallback uses Unity's supported built-in font instead of aborting monitor creation when TMP fonts are unavailable (#1219).
  • A newly bound dark feed no longer loses its healthy outline because the blackout guard compared its first frame against an unmeasured exposure default (#1219).
  • Raw feeds keep a separate display image, so HDRP cannot erase the ping outline after the camera callback when the night-vision bundle is unavailable (#1219).
  • The blackout guard no longer loses a replacement overlay's first two images while older GPU brightness reads are still pending (#1219).
  • The mainframe is no longer placed on a tile far below every facility entrance unless a complete walking route to its console is proven, so a mineshaft raid stops putting it under the elevator (#1156).
  • In Rubber Rooms, no camera, mainframe or stash is placed in the padded cells, including authored and guaranteed-coverage cameras (#874).
  • Restored the entry button press before the throttle transfer and shortened entry to 1.40 seconds (#1061).
  • Exit returns to the saved entry position (#1061).
  • Reasserted the shared hand/throttle pose at render time so all four steering directions retain their contact (#1061).
  • Moved hacking/mainframe actions to left-click (#1061).
  • Non-hackable targets receive a four-second squad outline, including on CCTV, with the Upgrades Ping style and no Upgrades dependency (#1061).
  • Fixed entry Animator evaluation overwriting the camera and causing the arrival snap (#1061).
  • Reframed the operating hands, moved shoulder ends below view, and corrected the throttle grip orientation/surface contact (#1061).
  • Replaced the unstable control-hand offset with measured console-button contact, a pointing index finger and a short hover/press/return movement (#1061).
  • Added metered automatic night vision with smooth switching, HDR highlight rolloff and shadow detail (#1061).
  • Increased the default view distance from 40 to 120 metres; old defaults migrate once with a backup and custom values survive (#1061).
  • Security cameras no longer spot, track or raise the alarm on a player the host has set to be ignored (#1159).
  • Corrected entry/control camera ownership, removed authored camera roll, widened the operating view and moved the shoulder anchor to retain control reach (#1061).
  • Synchronized local body/finger playback to the entry camera clock, calibrated contact from the live index finger, and enabled the previously unweighted API button-press layer (#1061).
  • Rebuilt both monitor headers/footers with clean terminal typography, cyan rules, separate link/zoom readouts and clearer target labels (#1061).
  • Raised the feed default to 768x576 with shadows and ambient occlusion; the old shipped resolution/shadow pair migrates once and custom combinations survive (#1061).
  • Doubled UI rasterization and matched focused compositing to 24 Hz (#1061).
  • Added automatic low-light color switching (#1061).
  • Added machine-vision brackets with crosshair proximity, short fades, item zoom identification and complete spatial Contracted objective support (#1061).
  • Added typed unlock and disable commands for coded facility doors and turrets, validated by the host, plus camera mouse-wheel zoom (#1061).
  • Smoothed the entry camera, interpolated hand motion, added surface clearance and preserved visible control presses (#1061).
  • Flattened the default feed and simplified its metadata; old default display settings migrate once while custom values remain (#1061).
  • Requires Core 1.0.10; CCTV wire protocol revision 3 (#1061).

1.2.0

Added

  • Added the local Performance Timing Logging diagnostic setting. Off by default, it only mentions a pass that costs more than a full frame; on, it reports much smaller per-frame costs as warnings for stutter investigation.
  • A camera in the main-entrance tile is never security-active. It still spawns, streams, and aims at the door, but it never trips the alarm and never counts toward the active-camera quota. This rule is unconditional and has no config entry.

Changed

  • The CCTV Terminal is now sold in the vanilla ship-upgrade store at the configured price unless the Y4NGZ terminal shop plugin (Y4NGZTerminalUpgrades) is installed alongside Ship Systems. Previously any Ship Systems install hid the vanilla store entry, so standalone players could not buy the terminal.
  • Lockdown gates now use a textured two-material shutter with a plate atlas instead of the untextured metallic material that rendered black inside facilities. The plate is seated 2 cm in front of the door assembly's front extent, so vanilla facility and mineshaft door handles no longer poke through it.
  • Lockdown door halves now emerge from the frame jambs when closing and retract behind them when opening, instead of appearing fully retracted on the wall outside the frame and sliding inward.
  • Camera placement and the follow-up station, registry, alarm-fixture, and monitor render-texture work are now spread across successive frames after dungeon generation instead of running in the frame the dungeon finishes, removing the landing stutter.
  • Looping CCTV audio (mainframe fan, monitor focus hum, camera lens hum) now fades out over a fifth of a second instead of stopping with a pop.
  • Prompts the mod writes directly to the cursor tip or HUD now show the player's bound interact key instead of a literal [LMB].
  • A camera tile whose neighbour already hosts a wall alarm light bar is now served by that fixture instead of being excluded from hostile security.
  • Config descriptions for the diagnostics, night-vision auto gain, and operator overlay settings were rewritten in plain language.
  • Reduced the download from about 39.0 MiB to about 25.1 MiB by shrinking the fixtures, station props, viewmodel animation, and ship turret bundles. Asset addresses and runtime identities are unchanged.
  • The package now depends on Y4NGZ313-Y4NGZCore-1.0.6 (previously 1.0.2) and Y4NGZ313-Y4NGZInteractions-1.0.2 (previously 1.0.1), and soft-depends on Y4NGZUI so its prompt overlay loads first when installed.

Fixed

  • Fixed procedural cameras mounting onto pipes, ducts, and other clutter standing proud of a wall. The wall probe now detects narrow protrusions and re-targets the mount onto the structural wall behind them, the support-footprint gate requires all nine samples to agree on depth, and the visual snap no longer fabricates a mid-air point when its cast fails.
  • Fixed OpenBodyCams blanking the facility radar on the General Improvements big-right monitor to the exterior camera every 0.1 seconds. OpenBodyCams' screen material is now restored only into a slot that actually holds it and never into a CCTV-owned screen. Reported publicly as y4ngz313/LethalCCTV#1.
  • Fixed HUD prompts not dimming over a focused monitor after the prompt overlay canvas moved into Y4NGZUI.
  • Fixed a possible startup failure when running next to an older Y4NGZCore build: the lockdown door clipping helper is now compiled into LethalCCTV rather than loaded from Core.

Removed

  • Removed the unused CCTV screen outline overlay; the semantic tracking boxes introduced in 1.1.0 replace it.

1.1.0

Added

  • Added the host-synced Allow Radar View, Allow Camera Pings, Allow Walkie Talkie, Allow Target Scanning, and Allow Remote Hacking permissions. Each action can now be enabled independently and defaults to enabled.
  • Added host-synced Minimum Cameras and Maximum Cameras settings. The minimum fills from eligible corridor tiles when normal selection falls short, while the maximum is a hard total that includes authored cameras; both accept 0-64 and the maximum always wins when the values conflict.
  • Added Minimum Stashes and Maximum Stashes settings for Risk D, C, B, A, S, and unknown-risk moons. Each pair accepts 0-12, defaults to 1-4, and can disable stashes for its risk tier by setting both values to zero.
  • Added Spawn Wall Alarm Fixtures, which can suppress wall-mounted alarm lights and sirens without disabling CCTV detection or the security-alarm response.
  • Added host-synced Breakable Cameras and Camera Health settings. Breaking can be disabled without removing physical cameras, health accepts 1-10, and the former BreakableCamerasEnabled and CameraHealth keys migrate automatically.
  • Added the host-synced Show Main Entrance Tracking Box, Show Fire Exit Tracking Boxes, and Show Apparatus Tracking Box settings. Each marker group can now be hidden independently from CCTV feeds.
  • Added the host-synced Close Lockdown Gates During Alarms setting. Standalone LethalCCTV now bundles and operates the Containment Breach sliding gates and metal-slam cue; when Contracted is installed, both mods continue to share Contracted's gate owner.
  • Added a guaranteed post-selection camera in the vanilla apparatus room when an apparatus exists. Its semantic aim favors the apparatus, and the apparatus receives an APPARATUS objective box when that box is enabled.
  • Added an 8-meter, line-of-sight scan node to every facility CCTV camera. The scan readout identifies the camera and reports when it is offline or broken.
  • Added dedicated radar identities for permanent facility fixtures in both radar modes: the mainframe uses a green circuit-cross icon labelled MF, while each Company Stash uses a blue vault icon labelled ST.

Changed

  • Replaced numbered config headings with the plain player-facing sections Ship Terminal, Camera Placement, Camera Counts, Ship Monitor, Performance, Display and Lighting, Physical Cameras, Operator Controls, Operator Permissions, Diagnostics, Radar, Interior Support, CCTV Security, Wall Alarms, Security Protocols, and Company Stashes.
  • Existing numbered sections, the legacy CCTV Radar and StashLoot sections, and renamed keys migrate automatically before binding. Migration preserves current-surface values over legacy duplicates and writes a one-time .pre-config-v2.bak backup.
  • Renamed Camera Budget Cap to Maximum Cameras and moved it plus Camera Budget Priority into Camera Counts.
  • Renamed Extra Ammo Rolls to Loot Rolls and Ammo Items to Loot Pool. The pool now accepts any network-spawnable grabbable item using name|rarity|count entries; missing items are removed before rolling, and the default pool still includes companion-mod ammunition and weapons.
  • AlarmLightIntensity now applies to generated wall alarms and cloned vanilla fire-exit alarm lights.
  • Improved General Improvements Better Monitors compatibility: CCTV binds to the visible replacement monitor surfaces, resolves operator-station anchors against the active 9- or 14-monitor layout, preserves monitor power/material ownership, and routes the facility radar and Space-key glance to the large-right monitor.
  • Improved OpenBodyCams compatibility: purchasing the CCTV Terminal owns bodycam entitlement and suppresses OpenBodyCams' duplicate receiver/store entry and native ship-monitor output. Every connected player receives an independent named feed before facility cameras, only the selected feed renders, switching no longer produces black/frozen output, and positional audio follows the selected player.
  • Improved BetterArmory compatibility: Y4NGZ weapon shots now use their authoritative pellet spread, range, world occlusion, and enemy-force falloff when damaging physical cameras, while preserving BetterArmory's trigger-ignoring world trace.

Fixed

  • Fixed physical cameras ignoring hits from Y4NGZ weapons because their non-blocking hitboxes are trigger colliders.
  • Fixed procedural cameras mounting half off wall edges or choosing pipes and other fixtures as support. Placement now uses structural-only fallback layers, rejects fixture-like supports, validates the full mounting-plate footprint, and keeps the reviewed support normal when snapping the visual near corners.
  • Fixed standalone CCTV alarms and lockdown drills failing to close facility entrances and fire exits when Contracted was not installed.
  • Removed the duplicate scan node from Company Stash keypads. A stash now exposes only its single locker-level scan target, including when loading a fixture prefab that still contains the legacy keypad node.

Removed

  • Retired Use Interactions API Operator Session and Enable Local Authored Operator Animations; LethalCCTV now selects the Interactions API or authored fallback automatically.
  • Retired Pitch Clamp Degrees and Yaw Clamp Degrees; the signed-off 75-degree pitch and 90-degree yaw limits are now tuned constants.
  • Removed stale entries from the retired 82 - CCTV - Camera Placement, 88 - CCTV - Exposure, and 88 - CCTV - Station Props sections during config-v2 migration.

1.0.3

Changed

  • Every connected player now receives an independent, named OpenBodyCams feed at the start of the CCTV feed list; facility cameras follow afterward.
  • Only the selected bodycam runs and renders, and facility feeds idle while a bodycam is selected to avoid paying for hidden camera work.

Fixed

  • Fixed bodycam feeds appearing black or frozen and freezing the monitor while switching past them.
  • Long player names now ellipsize inside a dedicated top-right label lane instead of overlapping the existing CCTV interface.

1.0.2

Changed

  • LethalCCTV now owns OpenBodyCams routing and entitlement. Purchasing the CCTV Terminal unlocks the bodycam feed; Y4NGZUpgrades and a separate Bodycams upgrade are not involved.
  • OpenBodyCams feeds in CCTV focus view now use positional audio from the selected player's bodycam location through LethalCCTV's existing audio-listener proxy.
  • With GeneralImprovements Better Monitors enabled, the facility radar and the Space-key glance now target the large-right physical monitor.
  • Focus-view camera steering no longer requires a hacked mainframe. Manual input pauses only the selected camera's automatic movement, which resumes after three idle seconds.
  • Refreshed the Thunderstore README.

Fixed

  • Suppressed OpenBodyCams' duplicate receiver/store entry and native ship-monitor output while LethalCCTV owns the integration.
  • Synchronized LethalCCTV's project, BepInEx plugin, and internal runtime version metadata.