Files
institution/Wiki/corrections/Rehabilitation.md
T

157 lines
8.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Rehabilitation — the post-arrest loop, wired
*The warden work that finally drives discipline, reform, and parole. Source in
`Source/Justice/Corrections/`.*
Classification, discipline, deterrence, and parole always had their **maths** — a grade over the
record, a reform score punishment moves, an order climate, a release decision. What they lacked was a
**trigger**: nothing in play called them. Reform never moved, so classification never re-graded and
parole never fired; the only thing that raised the colony's order was a punishment nothing invoked.
The post-arrest half of the loop was real code with no way to run it.
Rehabilitation is that trigger. It gives corrections the same treatment Ward gave psychiatric care —
a **prisoner interaction mode**, **warden jobs**, an **alert**, and an inspect readout — so a warden
actually reforms a prisoner over time and paroles them when they have turned a corner.
---
## The two modes
Both are non-exclusive prisoner interaction modes (the shape Prison Labor and Ward use), so they
stack with each other and with recruit / reduce-resistance.
| Mode | What a warden does | Result |
|---|---|---|
| **Rehabilitate** | Runs counselling sessions on the prisoner | Reform rises, the reform track fills, colony order rises |
| **Parole when reformed** | Releases the prisoner **once they are eligible** | A paroled colonist, back in the colony |
Set **Rehabilitate** alone to run the programme and parole by hand when the alert fires; set **both**
for a hands-off "reform, then release" pipeline. A prisoner flagged for parole who is *not yet*
eligible is simply not acted on — the warden waits.
---
## A rehabilitation session
A warden walks to the prisoner and counsels them for ~1250 ticks (about 20 in-game minutes), Social
being the active skill. On completion (never on interruption — the credit is a follow-on toil), one
session does three things, in `CorrectionsUtility.RunReformSession`:
1. **Corrective discipline** — `Discipline.Punish(prisoner, harsh: false)`: reform **+0.10**, and the
punishment is recorded, which raises the colony's **order** by `+0.12`. This is the deterrence-up
half that punishment alone never triggered — visible corrective justice deters everyone else.
2. **The reform track** — `TreatmentProgram.AdvanceRecovery` advances `Institution_Reforming` on
Core's shared treatment engine, by `0.34 × cell quality × skill`. It is the visible progress bar,
and it **decays** (`−0.08/day`), so rehabilitation has to be *sustained*.
3. **A memory** — the prisoner feels counselled (a small mood lift).
| Input | Range | Source |
|---|---|---|
| skill factor | `0.5 … 1.0` | warden's Social level |
| cell quality | `0.5 … 1.5` | `TreatmentProgram.FacilityQuality` (room impressiveness) |
| reform / session | `+0.10` | `Discipline.Punish` (fixed) |
| order / session | `+0.12` | `Justice.RecordPunishment` |
Reform reaches the parole bar (`≥ 0.30`) in roughly **three completed sessions**, faster than a bad
cell or a poor counsellor fills the visible track — so the "Ready for parole" alert keys off the real
gate (`Parole.CanRelease`), not the bar.
---
## Neglect — the teeth
A prisoner you flag for rehabilitation and then never attend **hardens**, exactly as a ward you don't
staff does. `MapComponent_ReformNeglect` measures the days since the last real session; past **two
days** of neglect, reform falls `−0.15/day` and they resent it (a mood hit). The hardening lowers
reform *directly*, not through `Discipline.Punish` — neglect is passive prisonization, not an act of
visible justice, so unlike a session it must **not** raise the colony's order.
Attend the prisoner and the clock resets; flag them and walk away and they slide back toward the
record that put them in. "A reform programme you don't staff is worse than none."
---
## Parole — the release that stays
When a rehabilitated prisoner clears `Parole.CanRelease` — reform `≥ 0.30`, security grade
`≤ Medium`, not already pardoned — the **Ready for parole** alert names them. A warden set to Parole
then processes the release (`CorrectionsUtility.ReleaseOnParole`):
- marks the **pardon** on the record;
- clears the prisoner hold so a former colonist is a **free colonist again** — a parolee who *stays*
in the colony carrying their record, not vanilla's release that ejects them from the map;
- a grateful memory, and a small **+0.03** to order (a lawful release is visible justice too).
The parolee keeps their `CriminalRecord`, so if they reoffend the [policing](Policing.md) loop catches
them again — recidivism, closing back onto the start.
---
## Discipline — the other lever
Rehabilitation is the carrot; **discipline** is the stick, and its opposite. Set a prisoner to
**Discipline** and a warden puts them in **solitary**: harsh discipline (`Discipline.Punish`) *hardens*
them — reform falls — yet raises the colony's order (visible harsh justice deters the rest), and it
stings: a mood hit and an on-edge *in solitary* status. It fires at most once per term (the status
gates re-discipline for about two days), so it holds order without cratering reform in a single day.
The tension is the point: lean on discipline to keep order and you make the punished harder to reform.
## Classification enforcement
Classification always computed a **security grade** (`Minimum`..`Supermax`); now it is actionable:
- **The grade shows** on every prisoner's inspect pane — the game tells you who is dangerous instead of
leaving you to guess.
- **Wing-routing.** A wall-mounted **security marker** grades the cell block it stands in
(`Minimum`..`Supermax`, set with a gizmo). One marker covers a *whole block* — a prisoner takes the
grade of the nearest marker in range, so you tag a corridor once rather than cluttering every cell. A
**"Dangerous prisoner unsecured" alert** then flags any prisoner held in a wing too weak for their
grade, and the inspect pane shows their wing and a `MISPLACED` warning — move them to a stronger
wing. An ungraded wing falls back to flagging an unsegregated Maximum/Supermax pawn.
- **Cell safety:** a prisoner caged with a dangerous one suffers a mood penalty. Segregate your
dangerous prisoners, or their cellmates pay for it — the grade made to matter on the *housing* side,
not only at parole.
## Regime — yard, lockup, and visitors
Beyond punishment and reform, the held have a **daily life**:
- **Yard / Lockup schedule.** Two timetable blocks set a held pawn's day: **Yard** allows recreation
(with the prisoner Joy need Regime enables, they head out to a rec area), **Lockup** confines them to
the cell and stews their mood. The timetable itself is **Prison Labor's** — this reads it when PL is
present and is inert without it, so PL stays compatible: read, never fought.
- **Visitors.** A prisoner or ward patient with family or a bond gets **visitors** — a friendly party
walks in under the game's own visitor AI and congregates by their cell, and the break from isolation
lifts their mood. Thematically strongest for a ward patient whose family comes to see them.
---
## Seeing it
Every colony prisoner's inspect pane now carries the corrections readout (a Harmony postfix on
`Pawn.GetInspectString`, via Justice's existing Regime patch — not a contested method):
> *Security grade: Maximum* · *In solitary* · *Rehabilitation: reforming (40%) — neglected (3d)* ·
> *reformed — ready for parole*
The **grade** shows for every held pawn (classification's information pillar); *in solitary* while a
discipline term runs; the **rehabilitation** line for a pawn set to reform. And because the colony's
**order climate** otherwise has no readout at all, the same pane surfaces it when it is far enough from
ordinary to matter — *Colony order: low (28%) — crime pays here* / *high (71%) — order holds*.
---
## What this closes
With rehabilitation wired, the whole post-arrest arc runs in play: **discipline** moves reform,
**classification** re-grades as reform rises, **deterrence** climbs on visible justice (not just
falls on crime), **parole** releases the reformed, and Core's **treatment engine** carries the reform
track the same way it carries Ward's recovery. The loop closes back onto disposition — catching,
reforming, and releasing one pawn moves the climate every other pawn is judged against.
Gated by `InstitutionSettings.justice`, like the rest of the corrections layer.
---
*Part of the **Institution** suite.*