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.
| Last updated | 13 hours ago |
| Total downloads | 14 |
| Total rating | 0 |
| Categories | Mods BepInEx AI Generated |
| Dependency string | orbitalteam-CommanderRadarZoom-1.0.0 |
| Dependants | 0 other packages depend on this package |
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.2305README
CommanderRadarZoom
CommanderRadarZoom is a client-side-only Lethal Company mod that changes the visible range of the ship monitor radar. It only adjusts the local radar camera's orthographicSize; it does not discover new entities, request additional position data, or change gameplay state.
Built for Lethal Company v81, Unity 2022.3.62f2, BepInEx 5, and BepInExPack 5.4.2305.
Features
- Zoom the ship monitor radar in or out during play.
- Configure the default, minimum, maximum, and step values.
- Configure zoom-in, zoom-out, and reset keys.
- Preserve the current zoom in the BepInEx configuration file between launches.
- Log every user-selected zoom value.
- Optionally show a short, local
OnGUInotification. - Recover the canonical ship radar camera after scene and round changes.
- Avoid continuous camera writes and per-frame reflection.
- Ignore zoom input while chat, the terminal, the quick menu, or another special menu is active when the game exposes that state.
ZoomIn decreases orthographicSize, showing a smaller area at greater visual magnification. ZoomOut increases it, showing a wider area.
Client-side guarantee
Only the installing player's canonical ship radar camera (StartOfRound.Instance.mapScreen.mapCamera) is modified. The plugin does not contain or register:
- custom RPCs,
ServerRpc, orClientRpc; NetworkVariablevalues or custom Netcode messages;- connection approval, lobby handshake, or version-check logic;
- gameplay-state, player-position, or monster-position changes;
- a requirement for the host or any other player to install the mod.
Unity.Netcode.Runtime.dll is a compile-time reference needed to resolve game types inherited from Netcode classes. CommanderRadarZoom does not call Netcode APIs.
Lethal Company v81 modded-label caveat
Lethal Company v81 can itself detect Doorstop/BepInEx and mark a hosted lobby as modded. Client-side-only here means that CommanderRadarZoom adds no networking, handshake, dependency enforcement, or compatibility restriction; it cannot promise that the base game's lobby label remains vanilla. The plugin deliberately does not bypass or alter the game's BepInEx detection, dmods state, lobby metadata, or connection rules.
Configuration
The configuration is generated at:
BepInEx/config/com.commanderradarzoom.client.cfg
[General]
Enabled = true
[Radar]
DefaultZoom = 25
MinimumZoom = 10
MaximumZoom = 60
ZoomStep = 2
[Keybinds]
ZoomIn = Equals
ZoomOut = Minus
ResetZoom = Backspace
[Display]
ShowZoomNotification = true
[State]
CurrentZoom = 25
| Section / key | Default | Purpose |
|---|---|---|
General.Enabled |
true |
Enables local zoom handling. Disabling it restores the captured camera value only if this mod still owns the last-applied value. |
Radar.DefaultZoom |
25 |
Value applied by the reset key. It is not overwritten when the current zoom changes. |
Radar.MinimumZoom |
10 |
Lowest allowed orthographicSize, and therefore the closest zoom. |
Radar.MaximumZoom |
60 |
Highest allowed orthographicSize, and therefore the widest view. |
Radar.ZoomStep |
2 |
Amount added or subtracted for each key press. |
Keybinds.ZoomIn |
Equals |
Decreases the zoom value. Uses Unity KeyCode names. |
Keybinds.ZoomOut |
Minus |
Increases the zoom value. Uses Unity KeyCode names. |
Keybinds.ResetZoom |
Backspace |
Restores DefaultZoom. |
Display.ShowZoomNotification |
true |
Shows a brief local-only notification after a user zoom action. |
State.CurrentZoom |
25 |
Last selected value, saved immediately and reused on the next launch. |
Invalid non-finite or non-positive numeric settings are corrected to safe defaults. Reversed minimum and maximum values are swapped; the default and current values are clamped into the corrected range. Key collisions are logged and handled deterministically in this order: reset, zoom in, zoom out.
Installation
- Install Lethal Company and BepInExPack
5.4.2305. - Place
CommanderRadarZoom.dllinLethal Company/BepInEx/plugins/CommanderRadarZoom/. - Start the game once to generate the configuration file.
- Edit the configuration while the game is closed, then restart the game.
Only the player who wants the local zoom controls installs the DLL. Do not install this plugin on a server, and do not add it as a required lobby mod.
Building from source
Requirements:
- a .NET SDK capable of building
netstandard2.1; - a local Lethal Company v81 installation;
- BepInEx 5 / BepInExPack
5.4.2305installed for the reference assemblies.
From the project directory, override the paths if they differ from the project defaults:
dotnet restore .\CommanderRadarZoom.csproj
dotnet build .\CommanderRadarZoom.csproj -c Release `
-p:LethalCompanyDir="C:\Program Files (x86)\Steam\steamapps\common\Lethal Company" `
-p:BepInExCoreDir="C:\Program Files (x86)\Steam\steamapps\common\Lethal Company\BepInEx\core"
The plugin DLL is produced under bin/Release/netstandard2.1/. Game, BepInEx, Harmony, and Netcode reference DLLs must not be redistributed with the mod.
Thunderstore package
The archive root must contain exactly the distributable files, without an extra parent folder:
CommanderRadarZoom.dll
manifest.json
README.md
CHANGELOG.md
icon.png
Example packaging command after copying those five files into dist/package:
Compress-Archive -Path .\dist\package\* -DestinationPath .\dist\CommanderRadarZoom-1.0.0.zip -Force
The sole Thunderstore dependency is BepInEx-BepInExPack-5.4.2305.
Manual test procedure
The following five multiplayer scenarios are the release acceptance tests. Check the installing player's BepInEx log and compare the ship monitor on every participating machine.
Test 1 — Join a vanilla host
- Start a completely unmodded host.
- Install CommanderRadarZoom on one joining client only.
- Join the lobby, start a round, and use all three zoom keys at the ship monitor.
- Confirm that joining and starting succeed, no other player receives an error, and only the modded client sees the changed radar range.
Expected: no handshake or version prompt occurs; the selected zoom is logged locally.
Test 2 — Unmodded clients remain unchanged
- Run a lobby where at least one host or client does not have CommanderRadarZoom.
- Change zoom repeatedly on the modded player.
- Observe the same ship radar on an unmodded player's screen.
Expected: the unmodded radar retains the game's normal range, and connection and synchronization continue normally.
Test 3 — Mod user is the host
- Install CommanderRadarZoom on the host only.
- Join from one or more vanilla clients and start the game.
- Change zoom on the host and compare every screen.
Expected: vanilla clients connect normally and only the host's local rendering changes. The game may apply its own v81 modded label because the host uses BepInEx; CommanderRadarZoom adds no such rule.
Test 4 — Late join
- Start and progress a vanilla-hosted game.
- Join in progress from a client with CommanderRadarZoom installed.
- Wait for the ship radar camera to be created, then use the zoom keys.
Expected: joining requires no plugin handshake, and the saved local zoom is applied once the canonical camera becomes available.
Test 5 — Round and scene transitions
With CommanderRadarZoom active, move through all of the following states: company building, moon landing, ship takeoff, death and spectating, and a new round.
Expected: transitions complete without errors; stale camera references are discarded; the canonical ship radar is reacquired and the saved zoom is applied when a valid orthographic camera exists.
Local functional checks
- Zoom and clamp: Press each zoom key at both limits. Values must move in the documented direction, never pass the range, and appear in the BepInEx log.
- Input guards: Open chat, use the terminal, open the quick menu, and enter any available special menu. The configured keys must not change zoom until input focus returns to gameplay.
- Reset: Change zoom, press
ResetZoom, and confirm the value becomes the clampedDefaultZoom. - Persistence: Change zoom, close the game normally, relaunch, and confirm
State.CurrentZoomand the applied camera value match the last selection. - Configuration validation: Test zero/negative/non-finite numbers, reversed limits, an out-of-range current value, and duplicate keys. Confirm correction or clamping and a clear log message without a crash.
- Notification: Toggle
ShowZoomNotification; confirm that the notice appears only when enabled and never appears on another player's screen. - Disable/restore: Set
Enabled=false. Confirm that the original value is restored only when no other mod has changed the camera after CommanderRadarZoom's last write.
Compatibility and conflict behavior
CommanderRadarZoom writes only when a valid canonical radar camera is discovered, after a scene/round recovery, or after user input. A low-frequency check observes reference changes and conflicts but does not continuously overwrite orthographicSize.
| Mod / category | Expected behavior and response |
|---|---|
EnhancedRadarBooster (MrHydralisk.EnhancedRadarBooster) |
MapRangeRBEnabled or MapRangeRBSync can continuously control the same value. When either conflicting option is active, CommanderRadarZoom disables its camera writes and logs instructions to turn both options off before using this mod's zoom. If those values are synchronized, the controlling host's EnhancedRadarBooster configuration must be changed before reconnecting. |
| GeneralImprovements | Detected installations are reported at info level. CommanderRadarZoom continues, touches only the canonical radar camera, and never changes that mod's state. If both edit the same camera later, the external value is respected. |
| OpenBodyCams | Detected installations are reported at info level. Body-cam cameras are ignored; only the exact mapScreen.mapCamera reference is eligible. |
| TwoRadarMaps | Additional renderers and cameras are ignored. Only the canonical ship mapScreen and its mapCamera are cached. If the canonical value is persistently replaced, local zoom is disabled for that camera and a warning is logged. |
| Minimap | Minimap cameras are not modified. A replacement of the canonical camera is handled as a reference change; an incompatible or non-orthographic replacement disables only zoom functionality. |
| ShipWindows | Window cameras and render textures are not modified. Scene-object changes are handled through safe cache invalidation and low-frequency reacquisition. |
| Other radar mods | External value changes are observed rather than overwritten every frame. If another mod immediately overwrites a user-requested value, CommanderRadarZoom stops writing to that camera and logs one clear conflict warning instead of destabilizing the game. |
Harmony patches use an explicitly late postfix. A missing patch target, null object, invalid/non-orthographic camera, or unexpected exception disables only the affected zoom feature and is logged; it must not stop the game.
Perfect compatibility cannot be guaranteed when two mods intentionally own the same camera property. Prefer configuring exactly one mod to control radar range.
Client-side code audit
The following results are from source/configuration/assembly-design inspection. PASS means CommanderRadarZoom contains no mechanism that violates the criterion; it is separate from empirical multiplayer runtime certification.
| Requirement | Result |
|---|---|
| No custom RPC | PASS |
No ServerRpc |
PASS |
No ClientRpc |
PASS |
No NetworkVariable |
PASS |
| No custom network message | PASS |
| No host installation requirement | PASS |
| No other-client installation requirement | PASS |
| No mod-version handshake | PASS |
| No forced lobby compatibility check | PASS |
| No game-state modification | PASS |
| No player or monster position modification | PASS |
| Only a local camera/rendering value is modified | PASS |
| Can connect to a vanilla host by design | PASS |
| Can play alongside vanilla clients by design | PASS |
| Does not affect an unmodded user's screen | PASS |
The final three compatibility claims must also be confirmed in an actual Lethal Company session using Multiplayer Tests 1–4 above. A static PASS is not a substitute for that release-time runtime test. Test 5 and the local functional checks validate lifecycle safety, input suppression, and persistence.
Support logs
When reporting a problem, include the Lethal Company version, BepInEx version, BepInEx/LogOutput.log, the generated CommanderRadarZoom configuration, and a list of other camera/radar mods. Never upload private lobby credentials or unrelated personal data.