LethalPhonePOV
Player POV video on LethalPhones handsets using OpenBodyCams. Starts automatically during accepted calls.
About this mod Author’s original text
LethalPhonePOV 1.0.3
Displays the connected player's point of view on your LethalPhones handset.
Accept a normal phone call and open your phone: the video replaces its display
for the duration of the call. Hanging up restores the original display.
This is a separate replacement for LethalFaceTime. It uses LethalPhones for
the existing call and OpenBodyCams for local rendering. It does not transmit
webcam footage or add network messages, prefabs, or RPCs.
For a manual installation, extract the ZIP into the profile root. The DLL
belongs at BepInEx/plugins/LethalPhonePOV/LethalPhonePOV.dll.
It is a normal plugin; do not put it in BepInEx/patchers.
Each player who wants to see video needs this add-on locally. The host does
not relay video. A phone-only peer can still use the normal audio call.
Behavior
- Shows the other player's POV, using OpenBodyCams' player targeting API.
- Starts video for an accepted call, after both ends connect.
- No separate FaceTime button or bodycam antenna purchase is required.
- Shows the full camera image with black bars where needed.
- Pauses rendering while the handset is closed; resumes when it opens.
- Restores the normal phone UI at hangup without changing its widgets.
- Retries when the remote phone, camera setup, or handset canvas arrives late.
- Recreates the overlay if the phone model is replaced.
- Releases its own camera textures and restores the vanilla interior culler
after the call. A pre-disabled culler is left disabled.
Version 1.0.1 supports player-to-player handset calls. It does not include
selfie mode, switchboard video, or creature caller video. Calls to those phone
types retain LethalPhones' normal display and audio behavior.
The default video is 384 x 288 at 24 FPS. Change Video/Width, Video/Height,
or Video/FramesPerSecond in BepInEx/config/BruhMMods.LethalPhonePOV.cfg.
OpenBodyCams still supplies its camera perspective, weather, night vision,
and model compatibility behavior.
Verification and first game test
Built against Lethal Company v81 reference assemblies, Unity 2022.3.62,
LethalPhones 1.3.23, OpenBodyCams 3.0.12, and BepInEx 5.4.23.5.
Compilation, eight call-lifecycle scenarios, and fourteen runtime/IL regression
scenarios passed. The runtime tests use engine API shims.
Unity rendering and a real multiplayer session have not been run here.
Test one call with both players looking in different directions. Each phone
should show the other person's view. Then close and reopen the handset,
hang up, and place another call in the opposite direction. Check an indoor
caller while the other player is outside.
The log gives separate progress markers:
LethalPhonePOV 1.0.1 ready; Unity frame driver armed.
Video runtime tick via Unity player loop.
Attached video overlay to the local handset PhoneCanvas.
Created independent OpenBodyCams camera, 384x288 at 24 FPS.
Connected call: showing 's POV on the local phone.
First phone video frame rendered.
The pre-canvas fallback may be the first runtime marker instead. It is a real
frame callback, not a startup-only self-test. Scene transitions also print a
runtime-alive marker. The first-frame message includes the overlay's active
state and video rectangle size.
A camera creation message alone is not proof that a frame rendered; the final
marker comes from Unity's render pipeline. If video still fails, keep both
processes' complete logs from that call. If BepInEx reports that LogOutput.log
is locked, include its alternate LogOutput log file for the second process too.
Do not mix a host log from one run with a client log from a different run.
What the new logs established
Both supplied 1.0.0 logs confirm startup and two registered Harmony hooks, but
neither contains the first video-update marker. No overlay-creation or first-frame
marker is present. The screenshot shows a connected audio call. This puts the
reported failure before video-display creation; it does not establish exactly
why the old runtime stopped or was never call
Install & use Install: BepInEx plugin
- The archive from playbuff is the mod itself — usually a BepInEx plugin (a .dll or a plugin folder once unzipped).
- Recommended: use a community mod manager (such as r2modman) — pick this game, import the mod, and the manager sets up BepInEx and its dependencies for you.
- Manual route: install the BepInEx loader in the game folder, then drop the unzipped .dll or plugin folder into BepInEx/plugins/.
- Launch the game — the BepInEx console logs every plugin it loads; seeing this mod in the log means it is installed.
Mods with listed dependencies need those installed too, or they will not load. Options are usually changed in-game or in the plugin's config file.
Install these first, or the mod will not work: