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

LethalCCTV

Facility CCTV cameras, security alarms, a hackable mainframe, code-locked company stashes, and a ship CCTV terminal for Lethal Company.

Date uploaded a week ago
Version 1.2.0
Download link Y4NGZ313-LethalCCTV-1.2.0.zip
Downloads 698
Dependency string Y4NGZ313-LethalCCTV-1.2.0

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.2 icon
Y4NGZ313-Y4NGZInteractions

Shared local animation presentation, resource ownership, lifecycle, and restoration API for Lethal Company mods.

Preferred version: 1.0.2
Y4NGZ313-Y4NGZCore-1.0.6 icon
Y4NGZ313-Y4NGZCore

Shared placement and runtime core for Y4NGZ mods: interior fixture placement, authored placement tables, and common runtime services. A library - it adds no gameplay on its own.

Preferred version: 1.0.6

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 adds procedurally generated or authored CCTV cameras to fill the facility. Upon being spotted by an active camera, the alarm will go off, temporarily sealing entrances and alerting monsters to the location of the tripped alarm. CCTV camera feeds are accessible via the ship with a purchasable CCTV station upgrade. Active CCTV cameras can be disabled by hacking the mainframe that spawns inside of every interior via a hacking mini-game. A hacked mainframe also grants players the ability to, see the amount of scrap inside of an interior, speak over a facility wide intercom and access to 4 digit "stash codes" which allow access to Company Stashes spread across every interior.

Gameplay previews

LethalCCTV gameplay preview 1

LethalCCTV gameplay preview 2

LethalCCTV mainframe

Cameras and alarms

Cameras use authored placements for interiors that have them and procedural generated placements everywhere else.

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

An active security camera will emit a detection warning on a players HUD. The brighter it gets the closer it is to tripping an alarm.

The camera in the main-entrance tile is always passive: it still streams to the ship and watches the door, but it never trips the alarm, so walking in is never an instant lockdown.

Wall alarm light/siren fixtures can be disabled independently without disabling CCTV detection. Their configured light intensity applies to both generated lights and cloned vanilla fire-exit lights. Physical cameras are breakable by melee, vanilla shotguns, and supported Y4NGZ weapons; hosts can disable breaking or tune camera health. Every facility camera also has a short-range, 8-meter scan node that reports whether it is operating, offline, or broken. Alarms can close textured sliding gates over the main entrance and fire exits even when LethalCCTV is installed without Contracted; the gate halves slide out of the door frame and seat clear of the vanilla door handles.

When the vanilla apparatus exists, its room receives a guaranteed camera and can show a dedicated APPARATUS tracking box. Main-entrance, fire-exit, and apparatus boxes are independently configurable.

The mainframe

The mainframe also utilizes both authored and procedural generations. Mini-game difficulty is determined by the risk level of the moon. The higher the difficulty, the more nodes that you need to connect.

Company stashes

Company stashes can be opened up by inputting their four-digit keypad codes accessible via the mainframe. Intentionally the mainframe does not list what code is related to what stash so teamwork may be necessary to get them open depending on how many spawned. Each stash contains a guaranteed Gold bar plus configurable weighted loot rolls. The loot pool accepts any network-spawnable grabbable item, including ammunition or weapons supplied by companion mods, using name|rarity|count entries. Minimum and maximum stash counts are configurable for every moon risk tier. The stash has one locker-level scan node; its keypad does not create a second scan target.

The ship CCTV station

The CCTV station is sold in the vanilla ship-upgrade store. If the Y4NGZ terminal shop (Y4NGZTerminalUpgrades) is installed alongside Y4NGZShipSystems, it is sold there instead.

Upon purchase, the CCTV station grants access to the CCTV feed, a walkie talkie and a live radar of the interior. Operating the station allows players to ping locations, acquire targets and remotely hack the mainframe. The host can independently allow or disable radar view, camera pings, walkie-talkie transmission, target scanning and remote hacking. If OpenBodyCams is installed, every connected player receives an independent named bodycam feed at the start of the feed list. Bodycam feeds also include positional sound just like the CCTV cams.

Both radar modes give permanent facility fixtures their own symbols: the mainframe appears as a green circuit-cross marked MF, while each Company Stash appears as a blue vault marked ST. These are distinct from ordinary contract-objective markers.

Interior support

Authored placements ship for vanilla interiors, Beaniebe interiors, SlaughterHouse, ACF, Subsystems, CIDOM Metro, The Baroness, and Generic Interiors. Other interiors use rated or generated fallback placements.

Right now procedural placements are in a very good state for CCTV cameras, I would expect that the vast majority of placements will look good in-game. Procedural cameras mount to the structural wall behind pipes, ducts and other clutter rather than onto the clutter itself. Mainframes and stashes also work fine with procedural placements, but do look and feel better with authored placements per tile.

Optional integrations

  • Y4NGZBloodFX - persistent blood remains visible when a camera pans back through a corridor.
  • General Improvements - CCTV owns the active Better Monitors surfaces, including 9- and 14-monitor layouts.
  • OpenBodyCams - independent named player feeds, single-feed rendering, positional audio, and duplicate receiver suppression. With Better Monitors, OpenBodyCams no longer blanks the radar on the large right monitor.
  • BetterArmory - firearms damage physical cameras with their native ballistics, and firearms/ammunition can populate stash loot.
  • Y4NGZTerminalUpgrades - the CCTV station moves from the vanilla store into the Y4NGZ terminal shop. YET TO BE RELEASED
  • Y4NGZUpgrades - several upgrades tie into the security system and allow players to hack YET TO BE RELEASED
  • Contracted - Stranger can destroy cameras, containment breach contract utilizes security systems, and much more YET TO BE RELEASED
  • Anomalies - Poltergeist enemy not visible on cameras. YET TO BE RELEASED

These integrations activate only when the companion package is installed and are not installed automatically.

Required dependencies

  • BepInEx-BepInExPack-5.4.2305
  • Evaisa-LethalLib-1.2.0
  • TeamXiaolan-DawnLib-0.9.25
  • Sigurd-CSync-5.0.1
  • xilophor-LethalNetworkAPI-3.4.2
  • Rune580-LethalCompany_InputUtils-0.7.13
  • Y4NGZ313-Y4NGZInteractions-1.0.2 - operator animation ownership and rig restoration
  • Y4NGZ313-Y4NGZCore-1.0.6 - shared placement and runtime services

Configuration and migration

BepInEx/config/com.y4ngz.company.lethalcctv.cfg controls camera counts, operator permissions, wall alarms, stash loot, and interior placement generation. Sections use plain names such as Ship Terminal, Camera Counts, Operator Permissions, and Company Stashes; numeric prefixes are not used. Existing numbered sections and the old ammo-labelled stash keys migrate automatically, with a one-time .pre-config-v2.bak backup beside the config. Camera minimum/maximum values are host-synced, and the maximum is a hard total that includes authored placements. Physical security adds host-synced Breakable Cameras, Camera Health, and Close Lockdown Gates During Alarms; the legacy compact breakability/health keys migrate to their spaced names. The Tracking Boxes section contains host-synced switches for the main entrance, fire exits, and apparatus. Operator permissions, camera count limits, wall-alarm fixtures/intensity, risk-tier stash limits, and the generalized stash loot pool round out the surface. The Diagnostics section is local-only and off by default; Performance Timing Logging reports how long the mod's own per-frame work takes when investigating stutter.

Performance

Camera placement and the ship-side setup that follows it are spread over several frames after the facility generates, so landing no longer stutters. Looping station and camera audio fades out instead of cutting. The 1.2.0 download is about a third smaller than 1.1.0 with the same assets.

Troubleshooting

When reporting a problem, include BepInEx/LogOutput.log, the moon and interior, whether the ship station was purchased, and whether the problem affected the facility cameras, mainframe, stash, radar, or operator session.

Source code

The plugin source is public on GitHub: https://github.com/y4ngz313/LethalCCTV

Report bugs and feedback there as well.

Assets used

CHANGELOG

LethalCCTV changelog

1.2.0 - 2026-09-05

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 - 2026-08-25

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 - 2026-08-25

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 - 2026-08-24

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.