From 18a983b7ccb4335acae489459f69f78e0430b6da Mon Sep 17 00:00:00 2001 From: flan Date: Wed, 15 Jul 2026 21:01:28 +0000 Subject: [PATCH] Re-package with the corrections layer bundled; sync the wiki (Rehabilitation page, loop update) --- Assemblies/Contraband.dll | Bin 33792 -> 33792 bytes Assemblies/Institution.dll | Bin 7168 -> 7168 bytes Assemblies/InstitutionCore.dll | Bin 13312 -> 13312 bytes Assemblies/InstitutionGangs.dll | Bin 8704 -> 8704 bytes Assemblies/InstitutionJustice.dll | Bin 27648 -> 37888 bytes Assemblies/Ward.dll | Bin 22016 -> 22016 bytes Defs/HediffDefs/Hediffs_Corrections.xml | 36 ++++++ Defs/JobDefs/Jobs_Corrections.xml | 20 +++ .../PrisonerInteractionModes_Justice.xml | 30 +++++ Defs/ThoughtDefs/Thoughts_Corrections.xml | 46 +++++++ Defs/WorkGiverDefs/WorkGivers_Corrections.xml | 36 ++++++ Wiki/Home.md | 9 +- Wiki/justice/Discipline-and-Reform.md | 3 + Wiki/justice/Home.md | 5 +- Wiki/justice/Parole.md | 4 + Wiki/justice/Rehabilitation.md | 115 ++++++++++++++++++ 16 files changed, 298 insertions(+), 6 deletions(-) create mode 100644 Defs/HediffDefs/Hediffs_Corrections.xml create mode 100644 Defs/JobDefs/Jobs_Corrections.xml create mode 100644 Defs/PrisonerInteractionModeDefs/PrisonerInteractionModes_Justice.xml create mode 100644 Defs/ThoughtDefs/Thoughts_Corrections.xml create mode 100644 Defs/WorkGiverDefs/WorkGivers_Corrections.xml create mode 100644 Wiki/justice/Rehabilitation.md diff --git a/Assemblies/Contraband.dll b/Assemblies/Contraband.dll index 2c76db3c1222eca374ed1484ec776450f8aaf234..8a819417556b7403ca6b8611cebc5abc5c858f58 100644 GIT binary patch delta 169 zcmZqZU~1@Kn$W>=g<;F5jXf!O0-rq@U-q>myRTlmU~yoDoi3UcS=hcL<_?s{oG8iyeFeEXU0--Sw zrUChB3@Jd7WT1E=5SjpKkZdv#r!rVF7y(5=AU$^V#-5Zsfv7LcrmvM2xGeeKT;10*wQo~?8LvjNrJ1p5s)1>u zNve@$N}9Q)rMYpcrMYEFs%cW1v2lulp=D~CftmT{c{O1y{>coM3}y_*45kdJ3j!E%-7le3L;GmD4}qlU4mv4Nq1L28Pr zahkbFs<}n7frUw$p^1^XVQNyMNn)}^lDV;YYT9NG(KXEe#tfzm#ta4whCpnj!6IC3-Mq0ULs($`=9Z>9Rd0{YkBiwbPcn=5km@t34<9!8bc}&8!}ij z7%> diff --git a/Assemblies/InstitutionCore.dll b/Assemblies/InstitutionCore.dll index f0577bee9ebe089ed481b86e656e7aa65e8eefe6..0448473b10c254f5cc05c3678a89cb3f0d82dc1a 100644 GIT binary patch delta 168 zcmZq3Xvmn*!7{ysVv%Z|W@(&kU}9#FVxDSjWN2!UY-*5bZkn<=O#2wCe=0*Fg9U>*LmChpFjxYy z1%n}jDT6VC36PZvmazo#l7TWN3}!$w1t^vZ6fpv;vjEDN0!0&nqNWTfo3jn4G64YB ClPf*| delta 168 zcmZq3Xvmn*!E!cwM#sjUFRB9lE5CNLZgBNq6us@|&(fM}n}%GDtE?F)>d` zHZim`Nl7tEwlFm|NKP~{voNqUH%Ur1GcYkXGcnp6rhSan--N-4!GIwNNTx8DFqi|$ zWFT$GUgg)!J>6M;K#S&N>Zx1VNz0Rs#%IrQgT{aYSLy-DRowVO9o>GQ-&l41BPUV6b3UO znF!>iGNb`T4S*~|1`DuQGJ_>h9wcK96iWiLQi1AI7>t1IWT5&qpj^`Cdih2s0GXdH A00000 delta 168 zcmZp0X>gg)!Q%X0a@WS5H=+W8;WK841z9@m3qN$&+2FbN<_@t)W{nh6%hV(zGYeA- zLo=hKRLevYGm}(<)Fc!0L<>U`Qwwtg!_?FibK}jNQtGV!DGa6zmJF#3Neo5|W(*cU zo&|#;kYxlENd?LzGME5)CP20USd|HbIZzCw#ssX^94KxGlu2bs0m>L}u9t6Q0su4r BC@KH| diff --git a/Assemblies/InstitutionJustice.dll b/Assemblies/InstitutionJustice.dll index 6af0cac1dd5ac68e030396d4f82e9e95802e82ff..c9cf8ea7847d8881910ced06a0970fc58a730569 100644 GIT binary patch literal 37888 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 J|G(D2{{w-|3)lbv literal 27648 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 + + + + + Institution_Reforming + + This prisoner is being rehabilitated — worked with toward turning a corner. Progress decays without sustained sessions. When they have reformed enough and their security grade is low enough, they can be paroled back into the colony. + HediffWithComps + (0.55, 0.85, 0.65) + false + 1.0 + false + +
  • + -0.08 +
  • +
    + +
  • + 0 + +
  • +
  • + 0.999 + +
  • +
    +
    + +
    diff --git a/Defs/JobDefs/Jobs_Corrections.xml b/Defs/JobDefs/Jobs_Corrections.xml new file mode 100644 index 0000000..35bc74b --- /dev/null +++ b/Defs/JobDefs/Jobs_Corrections.xml @@ -0,0 +1,20 @@ + + + + + + Institution_RehabilitateJob + Contraband.JobDriver_Rehabilitate + rehabilitating TargetA. + false + + + + Institution_ParoleJob + Contraband.JobDriver_Parole + paroling TargetA. + false + + + diff --git a/Defs/PrisonerInteractionModeDefs/PrisonerInteractionModes_Justice.xml b/Defs/PrisonerInteractionModeDefs/PrisonerInteractionModes_Justice.xml new file mode 100644 index 0000000..c8b6b31 --- /dev/null +++ b/Defs/PrisonerInteractionModeDefs/PrisonerInteractionModes_Justice.xml @@ -0,0 +1,30 @@ + + + + + + Institution_Rehabilitate + + 120 + true + false + false + true + + + + Institution_Parole + + 210 + true + false + false + true + + + diff --git a/Defs/ThoughtDefs/Thoughts_Corrections.xml b/Defs/ThoughtDefs/Thoughts_Corrections.xml new file mode 100644 index 0000000..d2c04ef --- /dev/null +++ b/Defs/ThoughtDefs/Thoughts_Corrections.xml @@ -0,0 +1,46 @@ + + + + + Institution_Rehabilitated + Thought_Memory + 2 + 3 + +
  • + + Someone sat with me and talked it through. Maybe I can turn this around. + 5 +
  • +
    +
    + + + Institution_Paroled + Thought_Memory + 8 + 1 + +
  • + + They gave me a second chance and let me back in. I mean to earn it. + 12 +
  • +
    +
    + + + Institution_ReformNeglected + Thought_Memory + 3 + 4 + +
  • + + They said they would help me change, then forgot I exist. Why should I bother? + -6 +
  • +
    +
    + +
    diff --git a/Defs/WorkGiverDefs/WorkGivers_Corrections.xml b/Defs/WorkGiverDefs/WorkGivers_Corrections.xml new file mode 100644 index 0000000..31163e2 --- /dev/null +++ b/Defs/WorkGiverDefs/WorkGivers_Corrections.xml @@ -0,0 +1,36 @@ + + + + + + Institution_WardenRehabilitate + + Contraband.WorkGiver_Warden_Rehabilitate + Warden + rehabilitate + rehabilitating + 65 + +
  • Talking
  • +
  • Hearing
  • +
    +
    + + + Institution_WardenParole + + Contraband.WorkGiver_Warden_Parole + Warden + parole + paroling + 85 + +
  • Talking
  • +
    +
    + +
    diff --git a/Wiki/Home.md b/Wiki/Home.md index ccf15a3..0a4e283 100644 --- a/Wiki/Home.md +++ b/Wiki/Home.md @@ -33,9 +33,10 @@ The suite is a closed loop, and each turn of it lives in a different layer: under the perimeter, all countered by warden search — and a bent warden who smuggles for them. 6. **Gangs** *(Gangs)* — held pawns organise into contraband economies: joining by disposition, smuggling networks, rivalry, fights that book as crimes. -7. **Corrections** *(Justice)* — classification grades the danger; discipline moves a **reform** - score (harden vs. rehabilitate); a **deterrence** climate rises and falls with visible justice and - feeds back into everyone's disposition; parole releases the genuinely reformed. +7. **Corrections** *(Justice · Rehabilitation)* — a warden **rehabilitates** a prisoner: counselling + sessions move a **reform** score and raise the colony's climate of **order** (classification + re-grades as reform rises), that order feeds back into everyone's disposition, and a **parole** + alert releases the genuinely reformed back into the colony. Neglect a flagged prisoner and they harden. 8. **Treatment** *(Ward)* — the other door: a prisoner committed for **psychiatric care** rather than punished. Counselling reduces the disorder that broke them and builds a recovery track toward discharge; neglect a committed patient and they deteriorate. @@ -55,7 +56,7 @@ one off disables its systems in place without uninstalling anything. |---|---|---|---| | **Core** | *(always on — the engine)* | propensity, the criminal record, secured context, the shared **treatment engine**, the deterrence seam | [Core](core/Home.md) | | **Contraband** | Contraband | concealment & intake, improvised shivs, Prison-Architect tunnels, warden search, warden corruption | [Contraband](contraband/Home.md) | -| **Justice** | Justice | classification, deterrence feedback, discipline & reform, parole, regime (prisoner recreation) | [Justice](justice/Home.md) | +| **Justice** | Justice | classification, deterrence feedback, discipline & reform, **rehabilitation** (warden reform work + parole), regime | [Justice](justice/Home.md) | | **Justice · Policing** | Policing | colony crime on the spectrum, witnesses, a constable, the weighed arrest, prison riots, recidivism alerts | [Policing](justice/Policing.md) | | **Gangs** | Gangs | gangs as contraband economies — joining, smuggling networks, rivalry, fights-as-crime | [Gangs](gangs/Home.md) | | **Ward** | Ward | psychiatric care — treatment, recovery, discharge, ward neglect, sedation | [Ward](ward/Home.md) | diff --git a/Wiki/justice/Discipline-and-Reform.md b/Wiki/justice/Discipline-and-Reform.md index 05ec249..8fffab2 100644 --- a/Wiki/justice/Discipline-and-Reform.md +++ b/Wiki/justice/Discipline-and-Reform.md @@ -2,6 +2,9 @@ *Punishment as an action, with a self-complete payoff — and the seat of institutionalization.* +> This page is the **maths** — what a disciplinary act does to reform and order. What *drives* it in +> play (a warden's rehabilitation sessions, and neglect that hardens) is [Rehabilitation](Rehabilitation.md). + Punishment in Justice does two things at once, on two different axes: 1. **It deters the colony.** Order seen to be done raises the climate of order for everyone — diff --git a/Wiki/justice/Home.md b/Wiki/justice/Home.md index d42937a..a9abbab 100644 --- a/Wiki/justice/Home.md +++ b/Wiki/justice/Home.md @@ -45,7 +45,7 @@ happened* are fed by its siblings. It grades and gates over all of them. --- -## The five modules +## The six modules | Module | What it does | Page | |---|---|---| @@ -53,9 +53,10 @@ happened* are fed by its siblings. It grades and gates over all of them. | **Deterrence** | The colony's climate of order, moved by crime and punishment, drifting to baseline, read back into propensity. | [Deterrence](Deterrence.md) | | **Discipline & Reform** | Punishment moves the reform score — harden vs. rehabilitate. The seat of institutionalization and recidivism. | [Discipline & Reform](Discipline-and-Reform.md) | | **Parole** | Release when reform, grade, and pardon status line up. | [Parole](Parole.md) | +| **Rehabilitation** | The warden work that DRIVES the corrections arc: a rehabilitate mode + counselling sessions move reform and colony order, a parole alert + release job, and neglect that hardens. | [Rehabilitation](Rehabilitation.md) | | **Regime** | Enables the prisoner recreation (Joy) need via a Harmony postfix, idempotent with Prisoner Recreation. | [Regime](Regime.md) | -Threaded through all five is one small piece of glue, **`JusticeBootstrap`**, which at load fills the +Threaded through all six is one small piece of glue, **`JusticeBootstrap`**, which at load fills the neutral deterrence seam Core leaves open — reconnecting the feedback loop across the mod boundary without Core ever depending on Justice. See [Deterrence](Deterrence.md). diff --git a/Wiki/justice/Parole.md b/Wiki/justice/Parole.md index 3684e90..e4b7971 100644 --- a/Wiki/justice/Parole.md +++ b/Wiki/justice/Parole.md @@ -2,6 +2,10 @@ *Release, driven by what the pawn has become.* +> This page is the release **decision** (`CanRelease`). The warden work that acts on it — the +> "Ready for parole" alert and the release job that frees a parolee back into the colony — is +> [Rehabilitation](Rehabilitation.md). + Parole is the end of the arc, and it is deliberately a *decision*, not a mechanic that rebuilds the game's release flow. It asks one question — **is this pawn ready?** — and answers it from two things already on the record: the reform the sentence earned (or failed to earn), and the grade the record diff --git a/Wiki/justice/Rehabilitation.md b/Wiki/justice/Rehabilitation.md new file mode 100644 index 0000000..0f9c761 --- /dev/null +++ b/Wiki/justice/Rehabilitation.md @@ -0,0 +1,115 @@ +# 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. + +--- + +## Seeing it + +A rehabilitated prisoner's inspect pane shows the state directly (a Harmony postfix on +`Pawn.GetInspectString`, via Justice's existing Regime patch — not a contested method): + +> *Rehabilitation: reforming (40%)* · *reformed — ready for parole* · *— neglected (3d)* + +And because the colony's **order climate** otherwise has no readout at all, the same line 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. AI disclosure: developed with substantial assistance from Claude (Anthropic).*