Some mods target the Mono version of the game, which is available by opting into the Steam beta branch "alternate"
NACops MONO
NACops adds property raids, investigators and extends the configurability of the police in the Hyland Point.
| Date uploaded | 5 months ago |
| Version | 2.0.0 |
| Download link | XO_WithSauce-NACops_MONO-2.0.0.zip |
| Downloads | 443 |
| Dependency string | XO_WithSauce-NACops_MONO-2.0.0 |
README
NACops
SHA256 File Hash: 48D76F1BEA2589D9DCBCC3CB48326F25368916A5E562147B6B6A718EBB2441AF
Game version: 0.4.2f9 alternate
Requires Melon Loader
NACops adds property raids, investigators and extends the configurability of the police in the Hyland Point.
Table of Contents
Features
- Adds Property Raids and Property Heat system
- Cops will occasionally appoint a disguised Private Investigator to monitor you
- Adds configuration support for officers health, damage and movement
- Adds new Foot Patrols & Officer Sentries & Vehicle Patrols and allows for configuration of these activities
- Cops will now try to search for players smoking illegal product and also apprehend the suspect
- New customers will try to snitch on you resulting in Car Dispatches and Investigation
- When dealing to unlocked customers, they have a chance to be a part of a Buy Bust!
- Cops will give you more crime charges if arrested when the Corrupt Cops is enabled
- Cops difficulty can be set to extreme with Lethal Cops or impossible with Racist Cops
- Overall Cops events frequency is tied to Game Progression
- Adds console commands to manually trigger police activities and configure the mod
Installation
Important!
- "alternate" or "alternate-beta" users: Download the
NACopsV1-MONOversion. - "default" or "beta" users: Download the
NACopsV1-IL2CPPversion.
- Install Melon Loader from a trusted source like MelonWiki.
- Copy the DLL file and the
NACopsinto theModsfolder. - You are good to go!
Property Raids
Property raids are configurable events where a group of raid police enter your property, steal your illegal products, destroy your growing gear and disrupt your drug producing operations.
Property Raids Info
- Property raids can begin in the morning when the player wakes up
- Properties are only valid for a raid if there are enough items built inside
- If the property has high enough heat and it has not been raided recently, a group of 3 officers will spawn to partake in the raid
- When arriving at the property the raid officers will scare any hired employees
Raid officers can have 3 different roles based on what the property has built inside:
- Destroy Growing Gear: Take out any pots, drying racks or mushroom beds in the property
- Destroy Lab Gear: Take out any advanced mixing stations, lab ovens, chemistry stations or cauldrons
- Search Containers: Search the containers in the property for illegal products! Only safes and beds can be used to hide items from these officers.
-
By default each raid officer can destroy only 4 built items or search 4 containers.
-
After the raid officer is done with their task, they leave the property and despawn.
Property Raids Configuration
Property Raids frequency, required heat and raid officers can be configured from the raid.json file.
- Open the
Mods/NACops/raid.jsonfile - This file can be modified to change raid related logic and its contents by default are:
{
"TraverseToPropertySpeed": 0.47,
"ClearPropertySpeed": 0.38,
"MaxDestroyIters": 4,
"RaidCopsCount": 3,
"DaysUntilCanRaid": 8,
"PropertyHeatThreshold": 14
}
- TraverseToPropertySpeed:
- How fast the raid officers move while traveling to property
- Range: 0.1 - 1.0
- ClearPropertySpeed:
- How fast the officers move while performing their task at the property
- Range: 0.1 - 1.0
- MaxDestroyIters:
- Maximum amount of built items destroyed OR containers cleared
- Range: 1-10
- RaidCopsCount:
- How many raid officers get spawned to raid a property
- Range: 1-10
- DaysUntilCanRaid:
- How many days have to be waited for a raid to begin again
- Range: 1-20
- PropertyHeatThreshold:
- How high the property heat must be for a raid to begin
- Range: 1-100
Increasing the
RaidCopsCountandMaxDestroyItersvalues will require more built items in your property to be valid for a raid. The default values are just low enough to allow Bungalow and Sweatshop to be raided if fully built!
Private Investigator
The private investigator spawns randomly with increasing frequency based on your total Networth! They spawn with a random name, clothing and appearance.
During the investigation the officer follows you around and tries to maintain a line of sight or stand nearby. While doing this they list all the properties you have entered, how many times you've been spotted and how many times you've been nearby.
At the end of their 4 (ingame) hour shift, based on their investigation the property heats increase or decrease:
-
If the player spent alot of time inside a property and they are still inside that property and they have been spotted outside atleast once:
- Property heat increases by 6 to 8
-
If the player spent a bit of time inside a property and they are still inside that property and they been spotted outside atleast once:
- Property heat increases by 4 to 5
-
If the player spent a bit of time inside a property, but they are not inside right now and they have been spotted outside atleast twice and the property heat is lower than 8:
- Property heat increases by 2 to 3
-
If the investigator didnt get enough evidence on a property so that none of the above have been met and if the property heat is above 5:
- Property heat decreases by 1 to 4
Property Heat Data
Any property with property heat higher than 12 will have the heat decrease by 1 each passing day. Each time a raid occurs the property heat is reset to 0.
The Property Heat data is saved to Mods/NACops/HeatData/(organisation).json automatically when saving the game.
You can modify the content of this file and change the days passed or the current property heat. The content is by default:
{
"loadedPropertyHeats": [
{
"propertyCode": "sweatshop",
"propertyHeat": 0,
"daysSinceLastRaid": 4
},
{
"propertyCode": "bungalow",
"propertyHeat": 0,
"daysSinceLastRaid": 4
},
{
"propertyCode": "storageunit",
"propertyHeat": 0,
"daysSinceLastRaid": 4
},
{
"propertyCode": "dockswarehouse",
"propertyHeat": 0,
"daysSinceLastRaid": 4
},
{
"propertyCode": "barn",
"propertyHeat": 0,
"daysSinceLastRaid": 4
},
{
"propertyCode": "manor",
"propertyHeat": 0,
"daysSinceLastRaid": 4
}
]
}
-
propertyCode: Exact property code game uses to identify the property.
-
propertyHeat: Accumulated property heat. Must be higher than
raid.json->PropertyHeatThresholdfor a raid to begin. -
daysSinceLastRaid: Days passed since the last raid. Starts at 4 by default. Any owned properties will increase this by 1 each time player wakes up. Must be higher than
raid.json->DaysUntilCanRaidfor a raid to begin.
In-Game Console Support
The NACops mod supports using the in-game console to run events, list all of the added sentries and patrols, visualizing positions of sentries or routes of foot / vehicle patrols and building your own vehicle patrol routes, foot patrol routes or new sentries.
Use: nacops help to see all the supported commands in Melon Loader Console
Use: nacops enable logs to enable all debug logging
List
You need to specify an index when spawning or visualizing. The List command allows you to easily see and list all of the indexes.
Example usage: nacops list footpatrol
Print into the console a list with "Index: Name" structure of all the mod added foot patrols
Example usage: nacops list raid
Print into the console a list with "Index: Property Code, Days Since Last Raid, Property Heat"
Spawn
You need to specify an index when spawning a raid, foot patrol, vehicle patrol or a sentry. The private investigator does not need a spawn index.
Example usage: nacops spawn footpatrol 0
Spawn the first index (0) of the mod added foot patrols instantly.
Example usage: nacops spawn sentry 2
Spawn the third index (2) of the mod added sentries instantly.
Example usage: nacops spawn raid 1
Start a raid instantly at the second index (1) (by default Bungalow in HeatData)
Example usage: nacops spawn investigator
Spawn an investigator instantly. No index needed.
Visualize
You need to specify an index when visualizing a foot patrol, vehicle patrol or sentry. Only these can be visualized.
Example usage: nacops visualize footpatrol 0
Visualize the first index (0) of the mod added foot patrols route.
Example usage: nacops visualize sentry 2
Visualize the third index (2) of the mod added sentries standing positions.
Example usage: nacops visualize vehiclepatrol 1
Visualize the second index (1) of the mod added vehicle patrols route.
Build
You can build new foot patrol routes, vehicle patrol routes or sentries easily with a few commands. These get automatically saved to Mods/NACops/Spawn/ with a random identifier. You can find your own generated builds by scrolling to the end of the file. The random identifier is printed into the Melon Loader Console when saving.
To apply any new builds you must go back to main menu and reload the save or exit the game and re-launch.
Build a new foot patrol route:
Example usage: nacops build footpatrol start -> Walk -> nacops build footpatrol stop
Start drawing a path for a new foot patrol from your current position. Walk around to make the path. Then use the stop command to stop it. This will automatically save the path to the end of patrols.json file.
Build a new foot patrol route:
Example usage: nacops build vehiclepatrol start -> Walk -> nacops build vehiclepatrol stop
Remember to build path only on a road. Start drawing a path for a new vehicle patrol from your current position. Walk on the road to make the path. Then use the stop command to stop it. This will automatically save the path to the end of vehiclepatrols.json file.
Build a new sentry position:
Example usage: 1st position: nacops build sentry start -> 2nd position: nacops build sentry stop
Each sentry needs 2 positions. Walk into the first position then use the start command. Walk to another nearby position and then use the stop command. This sets the positions and automatically saves the sentry to the end of sentrys.json file.
Configuration
(Optional) Mod Configuration Steps:
- Open the
NACopsfolder and locate the file calledconfig.json. - The default contents of the
config.jsonfile are as follows:
{
"DebugMode": false,
"RaidsEnabled": true,
"ExtraOfficerPatrols": true,
"ExtraVehiclePatrols": true,
"ExtraOfficerSentries": true,
"NoOpenCarryWeapons": true,
"PrivateInvestigator": true,
"WeedInvestigator": true,
"CorruptCops": true,
"SnitchingSamples": true,
"BuyBusts": true,
"NearbyCrazyCops": true,
"LethalCops": false,
"RacistCops": false
}
-
DebugMode:
- true: Makes Buy busts and Snitching Samples always trigger regardless of chance
- false: Disabled
-
RaidsEnabled: true
- true: Use the
raid.jsonfile to run raids and save property heat data - false: Disabled
- true: Use the
-
ExtraOfficerPatrols:
- true: Use the
Spawn/patrols.jsonfile to create more Foot Patrols - false: Disabled
- true: Use the
-
ExtraVehiclePatrols:
- true: Use the
Spawn/vehiclepatrols.jsonfile to create more Vehicle Patrols - false: Disabled
- true: Use the
-
ExtraOfficerSentries:
- true: Use the
Spawn/sentrys.jsonfile to create more Officer Sentries - false: Disabled
- true: Use the
-
NoOpenCarryWeapons:
- true: Makes holding weapons or having them in inventory illegal
- false: Disabled
-
PrivateInvestigator:
- true: Spawns a disguised officer to monitor you and build up property heat
- false: Disabled
-
WeedInvestigator:
- true: Forces nearby cops to find you and body search when consuming any drug nearby
- false: Disabled
-
CorruptCops:
- true: Cops will give you false charges when the events run
- false: Disabled
-
SnitchingSamples:
- true: When you give Potential Customers samples they have a chance to Snitch on you -> Vehicle patrol + Investigation status
- false: Disabled
-
BuyBusts:
- true: When you deal customers product, based on the customer relationship this might trigger a Buy Bust, spawning a Cop behind you!
- false: Disabled
-
NearbyCrazyCops:
- true: Forces nearby cops to actively find you and initiate body search. If inside a vehicle this can trigger a vehicle pursuit.
- false: Disabled
-
LethalCops:
- true: Forces a nearby cop to actively target you and lethally hunt you
- false: Disabled
-
RacistCops:
- true: While playing as a black character, forces all nearby officers within 80 units to hunt you lethally on sight
- false: Disabled
(Optional) Officer Configuration Steps:
- Open the
NACopsfolder and locate the file calledofficer.json. - The default contents of the
officer.jsonfile are as follows:
{
"ModAddedVehicleCount": 3,
"ModAddedOfficersCount": 8,
"CanEnterBuildings": true,
"OverrideArresting": true,
"ArrestTime": 1.25,
"ArrestRange": 3.50,
"OverrideMovement": true,
"MovementSpeedMultiplier": 1.65,
"OverrideWeapon": true,
"WeaponMagSize": 20,
"WeaponFireRate": 0.33,
"WeaponMaxRange": 25.0,
"WeaponReloadTime": 0.5,
"WeaponRaiseTime": 0.2,
"WeaponHitChanceMax": 0.3,
"WeaponHitChanceMin": 0.8,
"OverrideMaxHealth": true,
"OfficerMaxHealth": 175.0,
"OverrideBodySearch": true,
"BodySearchDuration": 6.0,
"BodySearchChance": 1.0,
"OverrideCombatBeh": true,
"CombatGiveUpRange": 40.0,
"CombatGiveUpTime": 60.0,
"CombatSearchTime": 60.0,
"CombatMoveSpeed": 6.8,
"CombatEndAfterHits": 40
}
-
ModAddedVehicleCount:
- Increases the max cap of spawnable cars from Police Station
-
ModAddedOfficersCount:
- How many additional officers to spawn into the world.
- Range: 0 - 20
-
CanEnterBuildings:
- true: Officers can enter players properties. Player can enter their own properties while wanted.
- false: Disabled
-
OverrideArresting:
- true: Use the
ArrestTimeandArrestRangevalues to override arresting behaviour - false: Uses the game default settings on the officers or other mods settings.
- true: Use the
-
OverrideMovement:
- true: Apply the
MovementSpeedMultiplier - false: Uses the game default settings on the officers or other mods settings.
- true: Apply the
-
OverrideWeapon:
- true: Apply the
WeaponMagSize,WeaponFireRate,WeaponMaxRange,WeaponReloadTime,WeaponRaiseTime,WeaponHitChanceMaxandWeaponHitChanceMinto the default M1911 gun - false: Uses the game default settings on the officers or other mods settings.
- true: Apply the
-
OverrideMaxHealth:
- true: Apply the
OfficerMaxHealth - false: Uses the game default settings on the officers or other mods settings.
- true: Apply the
-
OverrideBodySearch:
- true: Apply the
BodySearchDurationandBodySearchChancevalues to Body Searching behaviour - false: Uses the game default settings on the officers or other mods settings.
- true: Apply the
-
OverrideCombatBeh:
- true: Apply the
CombatGiveUpRange,CombatGiveUpTime,CombatSearchTime,CombatMoveSpeedandCombatEndAfterHits - false: Uses the game default settings on the officers or other mods settings.
- true: Apply the
(Optional) Foot Patrol Configuration Steps:
- Open the
NACopsfolder and thenSpawnfolder and locate the file calledpatrols.json. - The
patrols.jsonfile contains multiple preset patrols. This file can be modified by removing, changing values or adding new patrols templates. - The ModAddedOfficerCount in officers.json file should be increased when:
- Adding new templates
- Increasing officer counts
- Activity length or weekdays
- Each added patrol contains following example config values:
{
"startTime": 730,
"endTime": 1050,
"members": 2,
"intensityRequirement": 0,
"onlyIfCurfew": false,
"name": "Northtown Canal Loop",
"days": [ "tue", "thu", "sat" ],
"waypoints": [
{
"x": -71.256,
"y": 0.0,
"z": 41.394
},
...
{
"x": -67.629,
"y": 0.0,
"z": 41.367
}
]
},
-
startTime:
- When the activity should start
- Example: 07:30 is
730
-
endTime:
- When the activity should end
- Example: 10:50 is
1050
-
members:
- How many officers partake in the activity
- Range 1-4
-
intensityRequirement
- Law intensity required for the activity to be enabled
- Range (min) 0-10 (max)
-
onlyIfCurfew:
- true: Only run the activity during curfew
- false: Run the activity before and during curfew
-
name:
- Custom name for the activity
-
days:
- Contains a list of abbreviated weekdays which indicate what weekdays use this activity
- Supported Values:
"mon","tue","wed","thu","fri","sat","sun"
-
waypoints:
- Contains a list of waypoints which the officers traverse during patrol
- Each waypoint needs X and Z values. The Y value can be
0.0
(Optional) Vehicle Patrol Configuration Steps:
- Open the
NACopsfolder and thenSpawnfolder and locate the file calledvehiclepatrols.json. - The
vehiclepatrols.jsonfile contains multiple preset patrols. This file can be modified by removing, changing values or adding new patrols templates. - The ModAddedOfficerCount in officers.json file should be increased when:
- Adding new templates
- Increasing officer counts
- Activity length or weekdays
- Each added patrol contains following example config values:
{
"startTime": 730,
"intensityRequirement": 0,
"onlyIfCurfew": false,
"name": "Full Map Loop",
"days": [ "tue", "thu", "sat" ],
"waypoints": [
{
"x": 17.76604,
"y": 1.36655593,
"z": 50.36123
},
...
{
"x": 64.61583,
"y": 1.37344146,
"z": 52.04244
}
]
},
-
startTime:
- When the activity should start
- Example: 07:30 is
730
-
intensityRequirement
- Law intensity required for the activity to be enabled
- Range (min) 0-10 (max)
-
onlyIfCurfew:
- true: Only run the activity during curfew
- false: Run the activity before and during curfew
-
name:
- Custom name for the activity
-
days:
- Contains a list of abbreviated weekdays which indicate what weekdays use this activity
- Supported Values:
"mon","tue","wed","thu","fri","sat","sun"
-
waypoints:
- Contains a list of waypoints which the officers traverse during patrol
- Each waypoint needs X and Z values. The Y value can be
0.0
(Optional) Officer Sentry Configuration Steps:
- Open the
NACopsfolder and locate the file calledsentrys.json. - The
sentrys.jsonfile contains multiple preset sentry positions. This file can be modified by removing, changing values or adding new patrols templates. - The ModAddedOfficerCount in officers.json file should be increased when:
- Adding new templates
- Increasing officer counts
- Activity length or weekdays
- Each added patrol contains following example config values:
{
"startTime": 2230,
"endTime": 330,
"members": 1,
"intensityRequirement": 0,
"onlyIfCurfew": false,
"name": "Northtown Pharmacy Sentry",
"days": [ "thu", "fri", "sat", "sun" ],
"standPosition1": {
"x": -55.705,
"y": 0.0,
"z": 122.622
},
"pos1Rotation": {
"x": 0.0,
"y": 297.0,
"z": 0.0
},
"standPosition2": {
"x": -64.092,
"y": 0.0,
"z": 119.330
},
"pos2Rotation": {
"x": 0.0,
"y": 15.0,
"z": 0.0
}
},
-
startTime:
- When the activity should start
- Example: 07:30 is
730
-
endTime:
- When the activity should end
- Example: 10:50 is
1050
-
members:
- How many officers partake in the activity
- Range 1-4
-
intensityRequirement
- Law intensity required for the activity to be enabled
- Range (min) 0-10 (max)
-
onlyIfCurfew:
- true: Only run the activity during curfew
- false: Run the activity before and during curfew
-
name:
- Custom name for the activity
-
days:
- Contains a list of abbreviated weekdays which indicate what weekdays use this activity
- Supported Values:
"mon","tue","wed","thu","fri","sat","sun"
-
standPosition (1 and 2):
- Requires stand positions with X and Z values
-
posRotation (1 and 2):
- Requires officer rotation Y value
(Optional) Progression difficulty configuration:
- Open the
NACopsfolder and locate the file calledprogression.json. - The
progression.jsonfile contains progression related thresholds and their respective random ranges. Each one is explained after the json file representation. - You can modify these or add new ones based on your liking. The default configuration increases the difficulty and frequency of mod added events with progression.
{
"LethalCopFrequency": [
{ "MinOf": 0, "Min": 30.0, "Max": 60.0 },
{ "MinOf": 5, "Min": 20.0, "Max": 60.0 },
{ "MinOf": 10, "Min": 20.0, "Max": 50.0 },
{ "MinOf": 20, "Min": 15.0, "Max": 40.0 },
{ "MinOf": 30, "Min": 10.0, "Max": 30.0 },
{ "MinOf": 40, "Min": 10.0, "Max": 20.0 },
{ "MinOf": 50, "Min": 8.0, "Max": 18.0 }
],
"LethalCopRange": [
{ "MinOf": 0, "Min": 1.0, "Max": 3.0 },
{ "MinOf": 8000, "Min": 1.0, "Max": 5.0 },
{ "MinOf": 30000, "Min": 2.0, "Max": 6.0 },
{ "MinOf": 100000, "Min": 3.0, "Max": 8.0 },
{ "MinOf": 300000, "Min": 4.0, "Max": 10.0 },
{ "MinOf": 600000, "Min": 9.0, "Max": 14.0 },
{ "MinOf": 1000000, "Min": 10.0, "Max": 15.0 }
],
"NearbyCrazyFrequency": [
{ "MinOf": 0, "Min": 120.0, "Max": 400.0 },
{ "MinOf": 5, "Min": 120.0, "Max": 350.0 },
{ "MinOf": 10, "Min": 100.0, "Max": 200.0 },
{ "MinOf": 20, "Min": 80.0, "Max": 100.0 },
{ "MinOf": 30, "Min": 60.0, "Max": 100.0 },
{ "MinOf": 40, "Min": 50.0, "Max": 80.0 },
{ "MinOf": 50, "Min": 30.0, "Max": 80.0 }
],
"NearbyCrazyRange": [
{ "MinOf": 0, "Min": 10.0, "Max": 20.0 },
{ "MinOf": 8000, "Min": 10.0, "Max": 25.0 },
{ "MinOf": 30000, "Min": 10.0, "Max": 30.0 },
{ "MinOf": 100000, "Min": 20.0, "Max": 35.0 },
{ "MinOf": 300000, "Min": 20.0, "Max": 40.0 },
{ "MinOf": 500000, "Min": 25.0, "Max": 40.0 }
],
"PIFrequency": [
{ "MinOf": 0, "Min": 600.0, "Max": 1200.0 },
{ "MinOf": 9000, "Min": 500.0, "Max": 1000.0 },
{ "MinOf": 30000, "Min": 450.0, "Max": 800.0 },
{ "MinOf": 50000, "Min": 400.0, "Max": 800.0 },
{ "MinOf": 80000, "Min": 300.0, "Max": 600.0 },
{ "MinOf": 300000, "Min": 300.0, "Max": 550.0 },
{ "MinOf": 500000, "Min": 300.0, "Max": 550.0 },
{ "MinOf": 900000, "Min": 300.0, "Max": 500.0 },
{ "MinOf": 1500000, "Min": 300.0, "Max": 500.0 },
{ "MinOf": 8000000, "Min": 300.0, "Max": 400.0 }
],
"SnitchProbability": [
{ "MinOf": 0, "Min": 0.0, "Max": 0.53 },
{ "MinOf": 5, "Min": 0.0, "Max": 0.65 },
{ "MinOf": 10, "Min": 0.0, "Max": 0.7 },
{ "MinOf": 20, "Min": 0.0, "Max": 0.75 },
{ "MinOf": 30, "Min": 0.0, "Max": 0.85 },
{ "MinOf": 40, "Min": 0.0, "Max": 0.9 },
{ "MinOf": 50, "Min": 0.05, "Max": 0.95 },
{ "MinOf": 60, "Min": 0.1, "Max": 1.0 },
{ "MinOf": 70, "Min": 0.15, "Max": 1.0 },
{ "MinOf": 80, "Min": 0.2, "Max": 1.0 },
{ "MinOf": 90, "Min": 0.25, "Max": 1.0 }
],
"BuyBustProbability": [
{ "MinOf": 0, "Min": 0.0, "Max": 1.0 },
{ "MinOf": 5, "Min": 0.0, "Max": 0.9 },
{ "MinOf": 10, "Min": 0.0, "Max": 0.8 },
{ "MinOf": 15, "Min": 0.0, "Max": 0.75 },
{ "MinOf": 20, "Min": 0.0, "Max": 0.65 },
{ "MinOf": 25, "Min": 0.0, "Max": 0.75 },
{ "MinOf": 30, "Min": 0.0, "Max": 0.6 },
{ "MinOf": 40, "Min": 0.0, "Max": 0.55 },
{ "MinOf": 50, "Min": 0.0, "Max": 0.49 }
]
}
-
MinOf value indicates the minimum required value for the observed threshold.
-
Min and Max are the random value boundaries that get selected when that threshold is met.
-
LethalCopFrequency:
- MinOf: Days played in the save
- Min & Max: Random amount of seconds that is waited before Lethal Cops can trigger
-
LethalCopRange:
- MinOf: Total Networth in the save
- Min & Max: Random range how nearby player has to be to an officer for Lethal Cops to trigger
-
NearbyCrazyFrequency:
- MinOf: Days played in the save
- Min & Max: Random amount of seconds that is waited before Nearby Crazy Cops can trigger
-
NearbyCrazyRange:
- MinOf: Total Networth in the save
- Min & Max: Random range how nearby player has to be to an officer for Nearby Crazy Cops to trigger
-
PIFrequency:
- MinOf: Total Networth in the save
- Min & Max: Random amount of seconds that is waited before an investigator can spawn again
-
SnitchProbability:
- MinOf: Days played in the save
- Min & Max: Random range of the chance to trigger Snitching Samples. When the random value goes above 0.5 the event triggers.
-
BuyBustProbability:
- MinOf: Customer Relationship (0 worst relations to 50 best relations)
- Min & Max: Random range of the chance to trigger a Buy Bust. When the random value goes above 0.5 the event triggers.
Note: The configuration files and directory structure described in this document will be created automatically in the
Mods/NACops/directory if they are missing.
Contribute, Build from Source or Verify Integrity -> GitHub
CHANGELOG
Version 2.0.2
- Ensured that mod works in the 0.4.5f2 update
- Fixed a bug in the feature Notice Open Carry weapons where brandishing state was being removed incorrectly when player was holding a weapon
- Removed redundant code from the Notice Open Carry weapons feature
Version 2.0.1
- Ensured that mod works in the 0.4.3f3 update
- Added 2 new config values to the officer.json file "WeaponPath" and "WeaponDamage", the weapon path is work in progress and will not do anything in this update.
- Changed the raid officer maximum waiting time inside the property while traveling to be 15 seconds up from 10 seconds so they will get interrupted by another search routine if they fail to path to the next object under 15 seconds.
- Changed Investigator office to change property heat using a multiplier based on the players last crime status when the investigation concludes. This means that higher crime level at the end will also decrease property heat more. Having Dead or Alive crime status at the end causes the investigation resulted heat to be multiplied by 1.75, Wanted 1.45 and Under Arrest 1.2.
- Changed Buy Bust officer to wait 8 seconds before enabling their arresting to avoid instant arrests
- Simplified Buy Bust officer code
- Fixed a bug in IL2CPP version of the mod where buy bust officer would not work due to incorrect harmony function input parameters
- Fixed a bug in the mod spawned officers where the equipped belt would be unassigned causing errors in game logs
- FIxed a bug in the Investigator and Raid Officers where they would cause excessive error messages in game logs
- Fixed a bug in the Investigator where they would stay standing after investigation concludes
- Fixed a bug in the Property Raid feature where the raiders are unable to travel to NPC Spawn Point in the Barn
- Fixed a bug in the Property Raid feature where occasionally the raiders are unable to travel to Manor after traveling to Manor NPC Spawn Point
- Fixed a bug in the Property Raid feature where rarely if 1 officer is alive and refuses to walk forward for some reason the raid would never start and officers would never despawn
- Fixed a bug in the Property Raid feature where the same container could be searched twice
- Fixed a bug where while using the CanEnterBuildings: true value in officer.json and while being under curfew the officers can arrest player inside or near their own property multiple times in a row locking them into infinite arrest loop
Version 2.0.0
-
Added Property Raids feature that allows cops to destroy your properties and steal illegal products. Raids can be configured in raid.json.
- Raids start after sleeping through the night, in the morning if investigator has built up enough property heat and property hasnt been raided recently
-
Added Property Heat system that allows the Property Raids to happen. Private Investigator builds up heat. Heat data is saved in NACops/HeatData/(organisation name).json
-
Added new Racist Cops feature where cops really just dont like black people
-
Added new No Open Carry Weapons feature that makes guns illegal to carry in hand and in containers
-
Added Configuration support for Vehicle Patrols in vehiclepatrols.json file
-
Added Configuration support for allowing Officers to enter inside buildings in the officers.json file (CanEnterBuildings : true)
- While this is enabled (by default in the mod) the player can enter their buildings while wanted
-
Added Configuration support for changing arrest speed and range in the officers.json file
-
Added Configuration support for changing the max amount of police vehicles in the game in the officers.json file
-
Added Configuration support for the Frequencies, Ranges and Probabilities of certain events (now in progression.json)
- Configuration scales difficulty against Days Played, Networth & Customer relationships (more in readme)
-
Added support for Random Avatar generation for officers.
- Now Private Investigator uses Custom random avatar, clothing and name
- Cops added by the mod config (officers.json ModAddedOfficersCount) get also custom random avatar
-
Added support for using Console commands for NACops features, spawning visuals for the police patrols and building new routes using commands
-
Added Shrooms to the WeedInvestigator feature so now cops will try to search for player consuming it
-
Refactored the Private Investigator logic to be better for its movement and location selection and also to build up property heat
-
Moved the default location of spawnable sentrys, vehicle patrols and foot patrols .json files from NACops/file.json to NACops/Spawn/file.json
-
Moved the Vehicle Pursuit related script from CrazyCops (now removed feature) to NearbyCrazyCops feature
-
Changed the LethalCops and NearbyCrazyCops to only evaluate the nearest officer always
-
Changed the default mod builds to contain all debug logging which can be enabled in runtime by using console command "nacops enable logs", console feedback is enabled by default
-
Changed the config officers.json values for WalkSpeed and RunSpeed to be a single value: MovementSpeedMultiplier
-
Changed the config system to be more robust and generate the necessary .json configuration templates to Mods/NACops/ directory if missing
-
Changed the default order of officers.json related values to be better ordered
-
Changed the mod config and startup to start loading after game indicates succesful game load state
-
Changed the base probability for customers snitching samples from 0.8 to 0.5 and changed the progression related values in progression.json to compensate
-
Changed default body search speed to be faster
-
Changed Lethal Cops to be disabled by default in the mod config
-
Fixed a bug in the Private Investigator where the warping script would crash the game
-
Fixed a bug in the Private Investigator where after exiting a save the mod state would not reset properly and never spawn again
-
Fixed a bug in the coroutines that use progression where the progression would not update frequently enough
-
Cleaned up avatar related code to prevent errors in the game logs
-
Removed random boosting logic for the bodysearch since it didnt really work
-
Removed statistics analysis related code from repo
-
Removed CrazyCops feature as it felt excessive / unnecessary
Version v1.9.1
- Compiled mod against latest default and alternate game versions to make it work
Version v1.9.0
- Added configuration support for adding custom Foot Patrols and Sentry positions for officers for weekdays independently
- Added support for changing total officers count into the officer.json file
- Moved Officer Override configuration booleans from config.json to officer.json
- Increased the Private Investigator minimum and maximum random cooldown time
- Changed Lethal Cops to use random player instead of using player.local for evaluation
- Changed Body Search random speed boosts to be less frequent
- Changed default officer.json values to be more balanced
- Changed WeedInvestigator feature to now also include Meth and Cocaine consumption to trigger it
- Changed WeedInvestigator to search for player for a shorter duration
- Removed Docks Raids feature since its not scalable and dont want to maintain that part of code
- Removed IncludeSpawned feature since its now redundant after adding Foot Patrols and Sentries config support
- Cleaned up code and tweaks to improve performance
- Fixed to support latest 0.4.0f8 source code
- Fixed bug in crazy cops, lethal cops, nearby crazy cops and drug apprehender being able to pick the same officer for simultaneous evaluation
- Fixed a bug in WeedInvestigator where it could have overlapping evaluations for selecting an officer to search for player
- Fixed bugs where Foot Patrol or Body search would not be initiated
- Debug builds now provide statistics for officer usage to help with balancing generated patrols and sentries with officer count; see DebugModule for more
Version v1.8.0
-
Increased smallest distance at which drug apprehender can be selected from nearby officers to search for player on foot.
-
Officers field-of-view is now checked after player drug consumption and if at 50 units distance. If player is in field-of-view they get immediate bodysearch. Old behaviour but added a cap of 50 units distance to prevent useless vision cone calls lagging the run.
-
Decreased the time drug apprehender needs to wait before starting to search for player to 4 seconds instead of time relative to distance
-
Drug apprehender function now evaluates officers at a slower pace to fix a bug where player encounters lag during this evaluation
-
Drug apprehender can now end foot search early if 5% chance is triggered during consecutive attempts after 6 seconds into search
-
Drug apprehender total time slightly increased to 22.5 seconds in max total search length
-
Changed drug apprehender foot search to have more consistent behaviour and attempts to traverse for full max length instead of breaking search if target location is unreachable.
-
Increased cooldown time for officers to become drug apprehenders again to 30 seconds. During cooldown officer wont respond to nearby drug consumption.
-
Body search behaviour has now randomized search speed each time between 8 and 20 seconds, and has 3% chance every frame to randomly toggle speed up during the search. This feature can be disabled by setting OverrideBodySearch to false.
-
Added defensive programming measures to prevent type cast errors from breaking a coroutine in WeedInvestigator feature in IL2Cpp version (no reprod bug)
-
Added full configuration support for the default values of NACops Officers via officer.json, this includes movement, combat, gun and health variables. See README.md or Description or wiki for info.
-
Fixed miscellanious class and variable namings to match the latest available patch
-
Fixed a null reference error that was caused by player dying and loading last save in singleplayer
-
Fixed a bug that caused duplicate OnLoadComplete callbacks after loading last save in singleplayer.
-
Fixed a bug that caused duplicate OnLoadComplete callbacks after quitting to main menu and reloading any save
-
Fixed a bug where quitting the game to main menu would cause coroutines to keep running
-
Removed a RemoveListener callback function from the save load completion due to being redundant after above fixes
-
known bugs:
- While changing costumes of officers during Buy Bust, Private Investigator and Docks Raids, the original object for police officer (which is cloned for the events) retains the costume that was set for the clone. A Random officer in the world has a red cap or a PI costume, but they are NOT a Buy Bust Officer or a PI.
Version v1.7.3
- Reworked the Private Investigator system to spawn its own cop instead of randomly selecting existing -> Fixes a bunch of miscellanious bugs
- Private investigator now tracks the times seen during investigation, times in proximity and times player spent in docks warehouse, evaluated every 5 sec
- Fixed Private Investigator not adding Session Heat properly after the investigation concludes
- Session Heat can now also be gained even if the player is not in the Docks Warehouse after the investigation concludes
- Private Investigator spawns less often since now the spawning and following process is more consistent and reliable
- Private Investigator eyes start glowing Yellow when halfway, Red when reaching close to triggering a Docks Raid -> Good indicator of Session Heat
- Adjusted the Game Progression values and added new caps for Private investigator spawning threshold
- Adjusted the Game Progression values and added new caps for Private investigator Curfew attention probability
- Adjusted the Game Progression values and added new caps for New Customers Snitch Probability
- Patched the Exit To Menu function to stop coroutines and clear the mod state to prevent errors when exiting the save.
- Slightly decreased the threshold at which raids are evaluated
- Docks Raids now spawns armed cops in the building and attack the player if they misbehave
- Enhanced the cinematic visuals in Docks Raids
- Fixed Bugs with Docks Raids starting and also event run
- Removed the 30% chance requirement to trigger Docks Raids
- Divided BuyBust, PI and Raid cops Avatar settings to their own functions
- Fixed miscellanious bugs that would set officer travel destinations to Vector3.zero
Version v1.7.2
- Modified WeedInvestigator function to account for the police officer vision -> Consuming in their vision will trigger bodysearch
- Private Investigator now stores FootPatrolBehaviour groups and re-assigns them after state ends
- Fixed Private Investigator Vision during curfew. Now disables Vision Cone totally (or enables it if rolls random chance)
- Added a new Config value DocksRaids
- Modified the Private Investigator to add Session Heat when the investigator sees player enter the Docks Warehouse and reduce Session Heat when the investigation ends.
- Session Heat is cleared to 0 every time save is exited.
- Added a new event that triggers a Raid in the Docks Warehouse (Triggered by Heat reaching 20 and player being in the warehouse and also having dispatch officers available)
- First the screen will show a red warning
- Police car is dispatched to the Warehouse
- Cinematic view of the police arriving will play and the event begins
- During the Event:
- 2 Cops will spawn in the warehouse next to Pots and the officers will begin destroying them.
- You must kill the cops to stop them from doing this (or if they reach max pots destroyed limit)
Version v1.7.1
- Added a new Config value Include Spawned
- Added a new coroutine to refresh currently active officers and conditionally apply the mod preferred settings (override settings)
- Changed every coroutine and patch that used to reference the officers static array to use a new point-in-time copy of either recently refreshed officers on scene or officers evaluated at scene start.
- Tied the Crazy Cops coroutine range to game progression total earnings -> More earnings larger evaluation range
- Wrapped the Investigation + Car Dispatch logic into its own coroutine and added safety checks to prevent dispatching from Police Station with 0 occupants
- Fixed IL2Cpp version JSON config loading, now using correct Newtonsoft assembly and reverted back to previous config loading logic.
- Added safety checks to prevent game objects or PoliceOfficer variables being null in evaluations
- Removed safety check in Private investigator where the officer is forced to exit vehicle -> condition will never be met since active behaviour and assigned vehicle are caught earlier
- Removed safety check in Crazy cops that would not take into evaluation cops with Vehicle behaviour -> Was previously needed but is now correctly handled by the function so removed.
- Added fast sleeps into the SetOfficers function it was causing lag when ran periodically through Include Spawned feature
- Fixed a bug in the DrugConsumed coro where the function would keep executing even if no officers nearby were picked for apprehending
Version v1.7.0
- Added Customer Buy Busts -> When dealing based on customer relation rolls a chance to spawn a cop behind you that attempts to apprehend you with taser
- Adjusted the game progression based thresholds and frequencies for Crazy cops and Nearby crazy cops to be harder
- Added more levels to check against in Lethal Cop Range -> Bigger lifetime earning results in larger lethal cop range and caps at 1mil
- IL2Cpp version has a temporary fix for json config loading until next update
Version v1.6.2
- Adjusted difficulty curve for game progression slightly to be less harder for all events
- Added a new patch for Sample consumption on new customers to call the police and snitch on you -> Dispatch a vehicle patrol to your location and start investigation.
- Snitch Probability tied to game progression
- Added checks for Lethal cops to not allow player being lethally targeted if officer is currently in a Checkpoint Behaviour.
- Added support for all coroutines and patches to be disabled / enabled accordingly from config.json
- Changed function logic that gives more crime charges to player
- PI Evaluates attention at curfew time based on game progression -> Random roll chance might enable the attention during curfew and allow it to see player.
- Adjusted Nearby Crazy Cop movement speed when traveling to player previous location from 7 -> 5
Version v1.6.1
- Caches previous behaviours and parameters accordingly to allow other mods compatibilities
- Added support for config.json settings to allow other mods compatibilities
- Added checks to prevent Vehicle Patrols from glitching
- Added fixes for other miscellanious bugs
- PI vision changed to not "notice" player during curfew time
Version v1.6.0
- PI Evaluates Crime status on player -> Undisquises and stops state
- Fixed previously broken logic with on load complete
- Added vision checks for alot of functions to make the cops more "forgiving" on pursuits
- Further tied the game into progression to increment Random Range upper and lower boundaries -> Increase evaluation range the more money player makes
- Fixed Player dying in Police Station -> Distance to Object must be atleast 25f (might be lowered on future updates)
- Added Investigating behaviour to be evaluated in Crazy cops with 30% of occuring.
Version v1.5.2
- Fixing melon loader logic and fixing bugs
Version v1.5.1
- Fixing startup logic and fixing bugs
Version v1.5.0
- Fixed Crazy cop movement not resetting after state ends
- Fixed Nearby Crazy cop not Turning towards player before evaluating player visibility
- PI Evaluation forces officer to end behaviour, exit buildings and cars -> warp random nearby mesh position on player location
- Removed the PI Eye light glowing
- Adjusted PI Threshold upper random range to be lower -> PI appointed atleast 3 times a day