BadScoutWatcher
A host-side anti-cheat and player monitoring mod for PEAK.BadScoutWatcher
BadScoutWatcher is a BepInEx mod for PEAK that monitors multiplayer movement and item-drop activity, records suspicious events, and displays a per-player suspicion score. It also includes optional host enforcement and anti-fling protections.
AI disclosure: BadScoutWatcher was made with AI assistance.
Features
- Suspicion meter and evidence: Shows tracked players, threat scores, color-coded risk tiers, recent detections, and event history. Scores cap at 100 and decrease by 10 points for every 60 seconds without a new flag.
- Airborne detection (+10): Flags a remote player who remains ungrounded for 10 seconds without landing or taking injury. Climbing and recognized flight states are excluded. The event records the highest sampled position.
- Speed detection (+10): Flags remote movement averaging more than 28 m/s across a three-frame sample buffer.
- Item-flood detection (+30): Flags a player who causes 6 or more item events (spawns, drops, or inventory additions) within 0.5 seconds. Repeat flags for the same player are spaced at least 6 seconds apart. When enabled on the host, the detected spawned item is removed where possible.
- Landing / Height Damageable Fall (+5): Checks falls of at least 22 m. It waits 1.5 seconds after landing and flags only if no fall injury is detected. Lower falls do not trigger this check.
- Warp detection (+5): Flags a position change greater than 50 m over a sampling interval shorter than two seconds, unless PEAK identifies it as a recent game warp.
- Anti-Fling Guard: Temporarily disables collisions between the local player and a high-speed remote player. If a player stays airborne for five seconds, it uses PEAK’s warp routine to return them to their most recently saved grounded point and stop ragdoll velocity. As host, the recovery is sent to the other clients as well.
- RPC Shield: Rejects malformed incoming Photon RPC payloads (missing sender, invalid view ID, method index or argument list). If a sender exceeds 60 RPCs per second it only logs a warning; valid game RPCs are never dropped.
- Host controls: Manual kick is available for untrusted players. Optional Auto-Kick removes a player who reaches 100 threat. The host can also enable item removal for detected floods.
- Local mute and trust controls: Mute silences one remote player's voice for you only, using PEAK's own per-player voice mute, so other players, footsteps and game audio are unaffected. It is re-applied automatically if the game resets it (for example when a player respawns). You cannot mute yourself. Trusted players are excluded from suspicion scoring, and their Kick button is hidden.
- Lobby logs: Saves a dated log for each lobby you join to
BepInEx/BadScoutWatcherLobbyLogs/(for exampleLobby_2026-10-18_20-47-03.log). It records who was present, joins and leaves, detection flags, kicks, and mute/trust actions, each with a timestamp. Turn it off withSaveLobbyLogsin the config. - Menu and theme settings: Toggle the overlay with F2 by default, change its keybind, and customize its appearance.
Threat tiers
| Score | Tier | Color |
|---|---|---|
| 0–24 | Clean | Light gray #D9D9E6 |
| 25–49 | Low risk | Green #00FF00 |
| 50–74 | Medium risk | Orange #FFA500 |
| 75–99 | High risk | Red #FF0000 |
| 100 | Cheating | Magenta #FF00FF |
Important notes
- BadScoutWatcher uses movement packets and observed item-drop events as heuristics. A flag is evidence to review, not proof that someone is cheating; unusual gameplay or network conditions can cause false positives.
- Movement-based threat scoring inspects remote players. The local player is not movement-scored by these detectors, although the Anti-Fling Guard has a separate local recovery path.
- Kick, Auto-Kick, item removal, and broadcast recovery require the room Master Client (host). A non-host can only affect the local view of other players.
- RPC Shield is a basic payload filter and rate monitor, not a complete network security system. If an unexpected Photon/game type causes inspection to fail, it logs the error and allows that RPC through.
- Default settings: Auto-Kick is off; item deletion, RPC Shield, Anti-Fling Guard, and opening the menu on startup are on.
- Built for PEAK with BepInEx. Install the DLL through a compatible PEAK mod profile.
