You are viewing a potentially older version of this package. View all versions.
DropDaDeuce-K9Patrol_Mono-1.0.0 icon

K9Patrol Mono

Police Officers now have a new helper! K9 Patrol units can smell the drugs on you, don't get too close!

Date uploaded 3 days ago
Version 1.0.0
Download link DropDaDeuce-K9Patrol_Mono-1.0.0.zip
Downloads 14
Dependency string DropDaDeuce-K9Patrol_Mono-1.0.0

This mod requires the following mods to function

LavaGang-MelonLoader-0.7.3 icon
LavaGang-MelonLoader

The World's First Universal Mod Loader for Unity Games compatible with both Il2Cpp and Mono

Preferred version: 0.7.3
ifBars-SteamNetworkLib_Mono-1.5.0 icon
ifBars-SteamNetworkLib_Mono

A streamlined, object-oriented Steam networking library designed specifically for Schedule 1 mods.

Preferred version: 1.5.0

README

K9 Patrol

Police officers now patrol with a dog, and the dog can smell what you are carrying.

If you run into any issues, please report them in the modding Discord or on GitHub.

Disclaimer

  • AI Content: out of respect for those who wish to avoid AI content, this mod was created with the assistance of AI tools. The icon was generated using ChatGPT v5.

Features

  • K9 units on patrol. Officer-and-dog pairs are put onto the game's own police foot-patrol routes, so they walk the beat like any other patrol.
  • The dog smells contraband. Carry anything illegal and a nearby K9 picks it up. The officer breaks off patrol and comes for you.
  • It ends in a real body search. The officer runs the game's own body search, with all the consequences that already come with it. It is not a custom minigame.
  • How much you are carrying decides how far away you are noticed. A single bud is almost nothing. A full stack of loose product is smelled from across the street. Packaging muffles it. Walls muffle it further. There is a whole section on this below, and every number in it is yours to change.
  • The dog behaves like a dog. It trots after its handler, sprints when it falls behind, sits down when the officer stops, wags its tail, puts its head down and sniffs while closing on a suspect, barks, and talks! Wait..
  • You can hit the dog, and the police will not like it. Punches, melee weapons and gunfire all land. The dog yelps, and the game treats it as assaulting an officer, with the same crime, pursuit level and escalation you would get for hitting the handler. The dog itself cannot actually be hurt or killed; it has no health and takes no knockback. Everyone in a multiplayer lobby hears the yelp, not just whoever swung.
  • It works in multiplayer. Tested on both game builds. See the Multiplayer section, because a couple of things about it are worth knowing before you host.
  • Both game builds. Separate Mono and IL2CPP downloads, from one codebase.

Requirements

Schedule I A legitimate copy of the game.
MelonLoader Required, always. No mod manager installs this for you.
SteamNetworkLib Multiplayer only. Mono ยท IL2CPP. Skip it if you only play single-player. Without it the mod loads normally, notes in the log that multiplayer sync is off, and plays exactly as it always has.

Installation

Step 1: work out which build of Schedule I you have

The game ships in two flavours and the mod file has to match yours. Open the folder that has Schedule I.exe in it and look:

  • GameAssembly.dll is sitting next to the exe. You want IL2CPP. This is what a standard Steam install is. If you are not sure, it is this one.
  • No GameAssembly.dll, and Schedule I_Data\Managed\ is full of .dll files instead. You want Mono. This is the alternate branch, usually opted into through Steam.

Getting it wrong is harmless. The mod simply does not load and MelonLoader says so in its console. Swap the file and you are fine. Only ever have one of the two in your Mods folder.

Step 2: install MelonLoader

Get it from the MelonLoader releases page and install it against the same copy of Schedule I you are modding. Then run the game once so it creates its folders. You should end up with a Mods folder next to the exe.

Step 3: install K9 Patrol

A mod manager does this for you. By hand, drop the .dll into Schedule I\Mods\. Install only the one matching your build from step 1.

Step 4: install SteamNetworkLib, if you play multiplayer

Skip this if you only play single-player. Otherwise, install it in the flavour matching your build. It is the same choice as step 1, and a different file for each. Everyone in the lobby needs it, not just the host.

Step 5: run the game once

The config file is created at UserData\DropDaDeuce-K9Patrol\K9Patrol.cfg, and a second file for tuning smells appears beside it at K9Scents.cfg. Both are plain text with comments explaining every line.

Usage

There is nothing to press and nothing to turn on. Once installed, police foot patrols start going out with a dog.

Give it a few minutes of in-game time near a patrolled area. Units are put onto real patrol routes, so they do not appear instantly and they are not everywhere. Carry something illegal near a K9 and the officer will come to you and run a body search.

The config is read once, at startup. Editing it mid-game does nothing; restart the game to pick up a change.

Multiplayer

It works, and it has been tested on both builds: a host and a second player, on Mono and again on IL2CPP. It is newer than the rest of the mod, so if something looks off, please report it.

Everyone in the lobby needs both K9 Patrol and SteamNetworkLib, in the flavour matching their own game. There is deliberately no half-installed mode. A player without them simply never gets detected by a police dog, and the host's log names them.

Everyone in the lobby is expected to be on the same build of Schedule I, all Mono or all IL2CPP. That is normally just how it works out, since you all play the same branch of the game. A mixed lobby is not supported, and that is a decision rather than a gap waiting to be closed. You would have to go out of your way to create one.

How it divides up, because it changes what your settings do:

  • The host spawns the officer-and-dog pairs and decides who gets chased and searched.
  • Your own game is the only thing that can see your inventory, so it is what tells the host whether you are carrying. That is sent only to the host, not to the other players.
  • Every machine draws the dogs itself, following officers the game already keeps in sync.

So some of your settings only matter if you are hosting. The rule: if a setting changes where the dog is, the host's copy wins for everybody; if it changes how the dog looks or sounds, yours is used. The table below marks each one, and so does the config file itself.

If something looks wrong in a lobby, turn on DebugLogging on every machine and send every log. One side alone almost never shows the problem.

Configuration

UserData\DropDaDeuce-K9Patrol\K9Patrol.cfg, created on first run and read once at startup. Every setting carries a plain-language explanation in the file itself; this table is the same information in one place.

Detection and pursuit

Setting Default What it does
UnitCount 2 HOST How many officer-and-dog pairs are out at once. More of them means you run into one more often, not that they hunt harder.
SniffRadius 10 HOST Metres. How far a dog can smell contraband, as a starting point rather than a fixed distance. What you are carrying stretches or shrinks it; see the note below the table.
ScentFullRadiusScore 20 HOST How much contraband counts as "a normal amount". Carry that much and you are smelled at the full SniffRadius. Lower it to make the dogs sharper; raise it to carry more before you are noticed.
ScentMaxRadiusMultiplier 1.5 HOST A hard ceiling, as a multiple of SniffRadius. 1.5 means no stash, however big, is ever smelled from beyond 15 m.
RecheckInterval 0.2 HOST Seconds between a dog's checks for anyone carrying. Lower reacts faster and costs a little more performance.
BodySearchStartDistance 1.25 HOST Metres. How close the officer has to actually get before the search itself begins. Raise it and you are searched from further away; lower it and the officer has to walk right onto you.
SearchCooldown 30 HOST Seconds of peace after a search before any K9 starts on the same person again. Shared between all the dogs, so being cleared by one officer does not hand you straight to the next.
PursuitSpeedMultiplier 1.25 HOST How much faster an officer moves while chasing, compared to their patrol speed. 1 is no faster at all.

How far the dog can actually smell you. SniffRadius is a reference distance, not a fixed one. The dog scores what you are carrying and the score decides the range.

What you are holding Effect on the score
More of it Proportionally more scent. Ten buds shout louder than one.
Loose / unpackaged All of the smell gets out
A baggie 60% of it gets out
A brick 60% gets out
A jar 40% gets out
A wall, floor or door in the way Whatever is left is cut to about a third

Every drug smells the same by default. One unit of any finished drug scores 1, and raw materials score 0.5, so the only things that change the answer are how much you have and what it is in. If you want meth to be louder than mushrooms, that is a number you choose rather than one the mod chose for you.

Packing up is a trade, not a free win. A container hides each unit better and holds several of them, and every unit still counts, so a full jar is not automatically quieter than a couple of loose buds.

At the defaults a full stack of loose product is smelled at the full 10 m, ten of it at about 5 m, a single bud at half a metre, and it takes half as much again to reach the hard ceiling of 15 m. Carry a little and you really are quiet. Carry a lot and you really are loud.

Every one of those numbers is editable. The mod writes UserData\DropDaDeuce-K9Patrol\K9Scents.cfg, and it is a short file on purpose: one line per kind of drug, not per item.

[smell]
Cocaine = 1
Ingredient = 0.5
Meth = 1
Product = 0.5
Shrooms = 1
Weed = 1

[packaging]
(none) = 1
baggie = 0.6
brick = 0.6
jar = 0.4

One number covers every strain of weed, and one covers all the raw materials. Product is the odd row out and you can ignore it, because it covers two internal items the game never actually lets you carry. [packaging] is how much of the smell each container lets out, and (none) is loose product with nothing around it. Both columns point the same way: bigger means easier to smell. 0 in either column means the dog cannot smell that thing at all.

The mod fills the file in itself from what your game actually has, keeps your edits, and adds a line if a game update adds a new kind of drug. Drugs added by other mods are covered too. A modded strain of weed is scored as weed without you doing anything, because the mod asks the game what each item is rather than keeping a list of names.

In multiplayer, K9Scents.cfg is the odd one out: it is read on each player's own machine. Your game scores what you are carrying and tells the host the total, so your own file decides your own numbers, unlike everything in K9Patrol.cfg marked HOST. It is not a cheat (the host still decides who gets chased, and everyone gets a dog at the door eventually), but if you have retuned it, give the same file to everyone in the lobby or you will each be playing to different smells.

Want one specific item to differ? There is an [items] section at the bottom, empty apart from two commented-out examples. A line there, such as ogkush = 2, overrides that one item and leaves everything else alone.

A dog smells through walls, which is what a nose does, so being indoors is not a hiding place. It just means the dog has to get close. What it does stop is an officer marching to your door from halfway down the street having never been anywhere near you.

A dog beats packaging, and that is the point of a dog. Packaging costs you range. It never hides you outright. The side effect is deliberate and you will meet it: you can be sniffed out, chased, searched, and come up clean, because the officer then runs the game's normal body search and that search does fully respect your packaging. Neither one is misbehaving.

If you want a container to hide you from the dog completely, K9Scents.cfg is where you do it. Set that packaging to 0 under [packaging] and the dog cannot smell through it at all.

Dog movement

Setting Default What it does
DogBaseSpeed 3.0 HOST Metres per second. The dog's ordinary trot alongside its handler.
DogAcceleration 14 HOST How quickly it gets up to speed and slows down again. High looks eager, low looks like it is on ice.
DogAngularSpeed 720 HOST Degrees per second the dog can swing round while it is moving, so how tightly it corners. 720 is two full turns a second. (How fast it spins on the spot to face someone is fixed, and is not this setting.)
CatchupStartDistance 6 HOST Metres behind its handler before the dog breaks into a run to catch up.
CatchupMaxMultiplier 2.2 HOST Fastest it may go while catching up, as a multiple of DogBaseSpeed. It eases back down as it closes the gap.
HardWarpDistance 30 HOST Metres. Past this the dog gives up walking and teleports back to its officer.
HardWarpVerticalDelta 5 HOST Metres of height difference that also triggers the teleport. This is the one that fetches a dog left downstairs.
WarpCooldown 4 HOST Shortest gap between two teleports, so a stuck dog cannot strobe.

The warp settings exist because stairs, doorways and lifts strand dogs. If you see dogs blinking around, raise HardWarpDistance; if you see dogs stranded far behind, lower it.

How the dog looks and sounds

These are YOURS rather than the host's: they change nothing about where the dog is.

Setting Default What it does
DogAnimationSpeedScale 4.5 YOURS How fast the dog's legs move at full speed. Raise it if the dog looks like it is skating, lower it if its legs look like they are spinning. Scales with actual speed, so changing DogBaseSpeed does not require changing this.
AmbientBarkEnabled true YOURS K9s woof to themselves occasionally on patrol. false = silent dogs. The alert shout when a dog smells you is a different sound and is not affected by this.
AmbientBarkRadius 15 YOURS Metres. A dog only bothers woofing if somebody is close enough to hear it.
AmbientBarkMinInterval 14 YOURS Seconds. Shortest gap between two idle woofs.
AmbientBarkMaxInterval 45 YOURS Seconds. Longest gap. Each dog rolls its own gap at random between the two, so they do not bark in unison.

Diagnostics

Setting Default What it does
DebugLogging false YOURS Extra logging. Turn this on before reporting a bug. How the dog decided what it could smell, and how it decided where to walk, are both silent without it.

Compatibility

  • Works on both Schedule I builds. Install the one matching yours.
  • May conflict with other mods that patch police mechanics.
  • Binds directly to the game's police, inventory and NPC code, so a Schedule I update can break it. If it worked before an update and does not now, that is the likely cause. Please report it with DebugLogging = true and the log.

Troubleshooting

Nothing happens at all. MelonLoader is not installed, or you installed the wrong build. Re-check step 1.

No dogs ever appear. They are put onto police foot patrols, so they are not instant and not everywhere. Give it a few minutes of in-game time near a patrolled area. Still nothing? Turn on DebugLogging and look for Spawning up to N K9 officer(s) in the log.

The mod is not in the MelonLoader console at all. That usually means its asset bundle failed to load, which unloads the whole mod rather than starting it without a dog model. The log says so. Please report it.

Dogs are blinking around, or stuck far behind their officer. That is the teleport-when-stranded rule, and it is tunable. See HardWarpDistance above.

I got searched and came up clean. Expected. It is the one place the dog and the search disagree on purpose: the dog smells straight through packaging, and the game's search does not. If you would rather a container hid you from the dog too, set that packaging to 0 in K9Scents.cfg.

Something is wrong in a multiplayer lobby. Turn on DebugLogging on every machine and send every log. One side alone almost never shows the problem. Also check that everyone has both mods, in the flavour matching their own game.

The log to attach is MelonLoader\Latest.log in your Schedule I folder.

Credits

  • Bublisher, the original K9 model: Unity Asset Store
  • spec, K9 model and texture design input
  • Bars, shader help
  • ifBars, SteamNetworkLib
  • Deeej, the Mono/IL2CPP mod template
  • LavaGang, MelonLoader

Licence

GPL-3.0. The full text ships in the download as LICENSE.txt, and is on GitHub with the source.

CHANGELOG

Changelog

[1.1.0] - Check the bag - 2026-08-30

Dogs can now smell into backpacks, and the host decides every scent number.

Added

  • Added backpack support, so a dog smells contraband inside a backpack mod's bag.
  • Added a [containers] section to K9Scents.cfg for tuning how much smell escapes a bag.

Changed

  • Moved every scent setting to the host in multiplayer.

Notes

  • Editing K9Scents.cfg on someone else's game does nothing. That is intended.
  • Backpack settings do nothing without a backpack mod, because the base game has no bag.
  • K9Scents.cfg gains a [containers] section on first launch, keeping your tuned values.
  • If halving the backpack number changes nothing, the sniff radius is already at its cap.
  • Tested on both builds, single player and multiplayer.

[1.0.0] - Who let the dogs out? - 2026-08-29

First release. Police officers now patrol with a K9 dog.

Added

  • Patrols:
    • Added officer-and-dog pairs to the game's own police foot-patrol routes.
    • Added a body search at the end of a pursuit, using the game's own search.
    • Added a search cooldown shared between every dog on the map.
    • Added a speed boost for a chasing officer, given back when the chase ends.
  • Scent:
    • Added contraband detection, with the amount you are carrying deciding the range.
    • Added packaging muffling, so a baggie or brick leaks 60% of the smell and a jar 40%.
    • Added wall, floor and door muffling that cuts the range to about a third.
    • Added a ceiling of 1.5 times the sniff radius for very large stashes.
    • Added K9Scents.cfg, with an editable smell value per drug kind and container.
    • Added automatic scoring for drugs from other mods, by kind rather than by name.
    • Added an [items] section for overriding one exact item.
  • The dog:
    • Added a dog that trots, sprints, sits, wags, sniffs and growls.
    • Added a teleport that recovers a dog stranded by stairs or a doorway.
    • Added a K9 harness skinned to the dog's own rig.
    • Added idle barks on patrol and an alert shout when a dog smells you.
    • Added a hittable, indestructible dog that raises the same assault crime as its handler.
    • Added a dog yelp that everyone in the lobby hears, not just whoever swung.
  • Multiplayer:
    • Added multiplayer support, built on SteamNetworkLib.
    • Added client-side contraband reporting, sent only to the host.
    • Added host authority over spawning, pursuit and searches.
    • Added client-side dogs that follow the officers the game already syncs.
    • Added a host-or-yours split, marked on every setting in the config file.
    • Added a log line naming any player in the lobby without the mod.
  • Builds and config:
    • Added 23 settings in K9Patrol.cfg, each explained in plain language in the file.
    • Added separate Mono and IL2CPP builds from one codebase.

Notes

  • Everyone in the lobby needs K9 Patrol and SteamNetworkLib, matching their own build.
  • Mixed Mono and IL2CPP lobbies are not supported.
  • The config is read once at startup. Restart the game to pick up a change.
  • Being chased, searched and coming up clean is intended, because the search respects packaging.
  • Drugs added by other mods have not been tested.
  • A second search straight after the first is a known issue with no cause found yet.
  • Binds directly to the game's police, inventory and NPC code, so a game update can break it.