Justice & Incarceration

The city has laws. Every time one of your runners gets arrested on a criminal action, they land in jail — but not all crimes are equal. And not all players have the same contacts.

The justice system determines:


Crime Severity Tiers

Every criminal action in the game maps to one of four severity tiers:

Severity Base Sentence Rescue DC Bribable?
Petty 3 days 30
Moderate 7 days 45
Serious 30 days 60
Federal indefinite 85 ❌ Rescue or escape only

Action Mapping

PETTY (3-day base): Collect, Extort, Scout, Recruit, Vandalize, Patrol, Slander, Pickpocket, Burgle, Sabotage, Poach, Plant-Story

MODERATE (7-day base): Mug, Interrogate, Ambush, Drive-By, Raid, Torture

SERIOUS (30-day base): Arson, Assassinate

FEDERAL (indefinite): Bomb

Special case — Kidnap: fixed 3 days (hostage-hold mechanic, not part of justice system)

No arrest: Guard, Bodyguard, Bribe (passive or heat-reducing)


Recidivism

Each time your runner is arrested for the same severity tier, the sentence grows:

final_sentence = base × (1 + 0.5 × prior_arrests_same_tier)

Example:

Hard cap: Sentence is capped at 2× base (recidivism_final_cap_multiplier: 2.0). Example Serious: 30 base × 2 = max 60 days. Prevents permanent loss through unlimited recidivism.

Counters are per-tier, independent: 3 petty arrests don’t escalate your serious sentences.

Federal has no recidivism — it’s always indefinite.


Contact Bonuses: Judge and Mayor

Having specific NPCs on your payroll reduces sentences directly:

Contact Effect
Arbitration Tribunal HIGH (“Judge”) on Payroll −1 day sentence
District Admin HIGH (“Mayor”) on Payroll −1 day sentence
Both together −2 days (stacks)

Example: Your runner is arrested for Raid (7 days, Moderate). You have both Judge AND Mayor on payroll → final sentence = 7 − 1 − 1 = 5 days.

Floor: Sentence never drops below 1 day, regardless of bonuses.

IMPORTANT: Reductions are baked in at arrest time. If you lose your Judge mid-sentence (payroll unpaid, loyalty drops), you keep the benefit for this sentence.

FEDERAL: Reductions do NOT apply. The feds don’t negotiate.


Passive Effects via Contacts

Bribed Judge Reduces Runner Heat

If you have a bribed Judge (BRIBED state, not Payroll), EVERY arrested runner you own loses heat daily:

runner_heat × 0.95 per day

Narratively: the judge is “managing the paperwork” and making evidence disappear.

Multiple bribed judges do NOT stack — always 0.95/day.

HIGH-Rank Contacts Drain Federal Heat

For every HIGH-rank contact on Payroll (any institution), your federal heat drops each day:

HIGH contacts on payroll Drain per day
1 −0.5
2 −1.0
3+ −1.25 (cap)

Cap is high_contact_fed_heat_drain_cap: -1.25. More than 3 HIGH contacts give no further drain — better use slots for other benefits.

This replaces the old “arrest immunity” concept: HIGH contacts don’t prevent arrests directly, but they reduce the heat that triggers them.


Active heat scrubbing (player actions)

Beyond passive contact-driven drain, three actions let you actively scrub heat off your runners + the police paper trail:

Action Version What it does Cost / cooldown
CLEAN_UP v1.62.0 Physical sweep at the crime node — pulls fidelity off witness events directly, retroactive -8 hood heat. STL/TCH driven, 45 min.
DATA_WIPE v1.68.0 Hacks the police record system. -15 hood heat (the local cops forget you) at the cost of +5 federal heat (the FBI notices the intrusion). TCH/INT driven, 45 min. $1000, 48 h per-player cooldown
FALSE_ATTRIBUTION Redirects federal heat from you onto a target. Diminishing returns — reduction = base × max(min_dim, 1.0 - fheat/dim_factor). The dirty-trick option. Cost varies (Diplomacy.FalseAttribution)

These are the active counter-paths. The passive contact effects above (bribed judge / HIGH-Payroll drain) run automatically — these three are deliberate moves you slot into a plan.

Trade-off pattern (DATA_WIPE): Local heat goes down hard; federal heat goes up. Useful as a corp-clean play to dodge an audit at the cost of slow FBI escalation. Don’t spam — the 48 h per-player cooldown is a structural rate-limit, not a per-runner gate.


Rescue Missions

When your runner is in jail, you can try to pull them out. Two options:

1. Stealth Rescue (Runner Mission)

Another active runner breaks out the inmate.

Formula:

score = (rescuer.STL + rescuer.CHA) / 2 + d20
success = score ≥ DC(severity)

Cost: $2,000 prep (consumed regardless of outcome)

DCs:

Outcomes:

Result Score vs DC Consequences
Success score ≥ DC Runner freed, Loyalty +10, federal_heat +5
Partial Fail DC > score ≥ DC−20 Runner stays, federal_heat +15
Critical Fail score < DC−20 Rescuer arrested (max Serious), federal_heat +25

Note on critical fails: The rescuer gets at most a SERIOUS charge, never FEDERAL — the rescue attempt itself isn’t a state crime.

2. Bribe-Release (Cash via Judge)

You pay your Judge, they arrange the release.

Requirement: Arbitration Tribunal HIGH on Payroll

Cost (severity-tiered, fixed):

Severity Bribe-Release Cost
Petty $2,000
Moderate $8,000
Serious $20,000
Federal blocked

Outcome: 100% success, federal_heat +3

NOT available for FEDERAL — feds can’t be bribed at that level. UI greys out the bribe option.

3. Escape Attempt (existing, passive)

Each day, an inmate has a chance to escape based on their CON/STR:

escape_chance = 0.15 + CON × 0.005 + STR × 0.002, max 0.55

A CON 80 + STR 60 runner has 67% daily escape chance — your last resort for FEDERAL sentences.


Strategy Tips

Low-heat play: Stay under the arrest threshold (hood_heat < 55) and passive arrests don’t fire.

Invest in Judge/Mayor: Two HIGH contacts on payroll save 2 days per arrest. At 5 arrests per month = 10 runner-days reclaimed.

Hire elite STL+CHA runners: A rescuer with STL 80 + CHA 70 expects 75 + 10 (d20 avg) = 85 — squeaks FEDERAL DCs.

Only BOMB with a Plan B: If you use BOMB and the runner gets arrested, they’re gone indefinitely. Have an elite rescuer ready — or accept the loss.

Recidivism alert: Once a runner has 2-3 moderate arrests, the next one stretches considerably. Rotate your crime portfolio.


Arrest Lifecycle Overview

Runner commits crime (fail_roll triggered arrest)
          ↓
Server calculates sentence:
  - Severity from actions.json
  - Base days from severity tier
  - Recidivism multiplier from priorArrests[severity]
  - Judge/Mayor reduction (if on payroll)
          ↓
Runner in jail, ArrestedUntil set
          ↓
Daily:
  - Bribed judge: hood_heat × 0.95
  - HIGH contacts: federal_heat -= 0.5 × count
  - Escape roll
          ↓
Either: Auto-release (day reached) · Rescue mission · Escape
          ↓
priorArrests[severity]++ (feeds into next arrest)

References