From 26205b92069b054287ef0c913bc6306bdef6e9dd Mon Sep 17 00:00:00 2001 From: flan Date: Wed, 15 Jul 2026 21:40:35 +0000 Subject: [PATCH] Re-package with the enforcement layer; refresh the stale ROADMAP; sync wiki --- Assemblies/Institution.dll | Bin 7168 -> 7168 bytes Assemblies/InstitutionGangs.dll | Bin 8704 -> 8704 bytes Assemblies/InstitutionJustice.dll | Bin 37888 -> 42496 bytes Assemblies/Ward.dll | Bin 22016 -> 22016 bytes Defs/HediffDefs/Hediffs_Corrections.xml | 29 ++++++++++++ Defs/JobDefs/Jobs_Corrections.xml | 7 +++ .../PrisonerInteractionModes_Justice.xml | 12 +++++ Defs/ThoughtDefs/Thoughts_Corrections.xml | 30 ++++++++++++ Defs/WorkGiverDefs/WorkGivers_Corrections.xml | 13 ++++++ ROADMAP.md | 43 +++++++++++------- Wiki/justice/Rehabilitation.md | 36 +++++++++++++-- 11 files changed, 148 insertions(+), 22 deletions(-) diff --git a/Assemblies/Institution.dll b/Assemblies/Institution.dll index 59e0e96cf2f18ce151cc1e7592324a23b96f09ac..2bccee5bead72f8742d3a4b5cf8faac8b1ca4875 100644 GIT binary patch delta 167 zcmZp$Xt0>j!4lx(dv9Y;hA_XcwTT-0l^s5-Z_moCpj;Y*5s)?pvdn;N1E5SIgC!6f0aYdf#Vr_2fpV!p^+}tZCHFD` E0GiS$aR2}S delta 167 zcmZp$Xt0>j!E%-7le29zvxqFChOw!!fuVsxYKp0G znz>1;xka*pg-M#BiIKTsYEq&}VzNb&xv_a_+GY>YHO&6T45kdm3FN@KyeEoFAb>1guw_XW(br?Vn_t?5`nT7K(;y140E7p+Gc0Ty-WZn CVJN%+ diff --git a/Assemblies/InstitutionGangs.dll b/Assemblies/InstitutionGangs.dll index 48e68707f9b9b2e05a0edcbff797f01b4f1f59f4..6d3705b76a20cda98af5858c4afd5e8112045f16 100644 GIT binary patch delta 168 zcmZp0X>gg)!BTE8d-}$nH=+V^TCX{+N+q1TJ}bv!ScyK73M&eDNr^Q$Vvr5BL<_*_418O0Jpj) AtN;K2 delta 168 zcmZp0X>gg)!J>6M;K#S&N>Zx1VNz0Rs#%IrQgT{aYSLy-DRowVO9o>GQ-&l41BPUV6b3UO znF!>iGNb`T4S*~|1`DuQGJ_>h9wcK96iWiLQi1AI7>t1IWT5&qpj^`Cdih2s0GXdH A00000 diff --git a/Assemblies/InstitutionJustice.dll b/Assemblies/InstitutionJustice.dll index c9cf8ea7847d8881910ced06a0970fc58a730569..2ec6852f7fd0e4023131d62f2df1afc9f2875f27 100644 GIT binary patch literal 42496 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 V-vN6~etG;~sQ>?0`Tw*A{%;U$P22zg literal 37888 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 J|G(D2{{w-|3)lbv diff --git a/Assemblies/Ward.dll b/Assemblies/Ward.dll index 71e801f620d32f7a621586083b388ca40bbb1e64..afc0709292fa2e8fe0809f5e0bf96670b8ae5be4 100644 GIT binary patch delta 170 zcmZoz!`QHfaY6@6&H4@NHul_c5%|}mwx(4-)_)Gi{r + + + Institution_InSolitary + + Held in solitary confinement, privileges revoked, as discipline. Isolation grates: they are closer to the edge, and they will not forget it. + HediffWithComps + (0.7, 0.5, 0.5) + false + 1.0 + true + +
  • + -0.5 +
  • +
    + +
  • + 0 + + 0.05 + +
  • +
    +
    + diff --git a/Defs/JobDefs/Jobs_Corrections.xml b/Defs/JobDefs/Jobs_Corrections.xml index 35bc74b..6272258 100644 --- a/Defs/JobDefs/Jobs_Corrections.xml +++ b/Defs/JobDefs/Jobs_Corrections.xml @@ -17,4 +17,11 @@ false + + Institution_DisciplineJob + Contraband.JobDriver_Discipline + disciplining TargetA. + false + + diff --git a/Defs/PrisonerInteractionModeDefs/PrisonerInteractionModes_Justice.xml b/Defs/PrisonerInteractionModeDefs/PrisonerInteractionModes_Justice.xml index c8b6b31..46e0640 100644 --- a/Defs/PrisonerInteractionModeDefs/PrisonerInteractionModes_Justice.xml +++ b/Defs/PrisonerInteractionModeDefs/PrisonerInteractionModes_Justice.xml @@ -27,4 +27,16 @@ true + + + Institution_Discipline + + 130 + true + false + false + true + + diff --git a/Defs/ThoughtDefs/Thoughts_Corrections.xml b/Defs/ThoughtDefs/Thoughts_Corrections.xml index d2c04ef..c1f1c4a 100644 --- a/Defs/ThoughtDefs/Thoughts_Corrections.xml +++ b/Defs/ThoughtDefs/Thoughts_Corrections.xml @@ -43,4 +43,34 @@ + + Institution_Disciplined + Thought_Memory + 3 + 3 + +
  • + + They threw me in solitary. I will not forget it. + -8 +
  • +
    +
    + + + + Institution_Unsafe + Thought_Memory + 0.5 + 2 + +
  • + + There's a dangerous one caged in here with me. I sleep with one eye open. + -5 +
  • +
    +
    + diff --git a/Defs/WorkGiverDefs/WorkGivers_Corrections.xml b/Defs/WorkGiverDefs/WorkGivers_Corrections.xml index 31163e2..6d6f2e6 100644 --- a/Defs/WorkGiverDefs/WorkGivers_Corrections.xml +++ b/Defs/WorkGiverDefs/WorkGivers_Corrections.xml @@ -33,4 +33,17 @@ + + Institution_WardenDiscipline + + Contraband.WorkGiver_Warden_Discipline + Warden + discipline + disciplining + 75 + +
  • Moving
  • +
    +
    + diff --git a/ROADMAP.md b/ROADMAP.md index 7699991..5e02dec 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -4,14 +4,20 @@ A set of RimWorld mods about **what an institution does to the people inside it* policing, and justice that put them there. Each mod is a separate install on a shared **Core**; together they form one system. -> **Status (2026-07-15): shipped as a four-mod split.** The monolith split along its seams — the -> substrate became **Institution: Core** (propensity, criminal record, secured context), the -> corrections systems became **Institution: Justice** (classification, deterrence, discipline, -> parole, regime), the gang layer became **Institution: Gangs**, and **Institution: Contraband** is -> now the physical smuggling loop. **Foul Play** stands alone and bridges in. See the -> [README](README.md) for the current mod table and dependencies. The design sections further down -> predate the split in how they *group* modules, but the mechanics and the north star are unchanged; -> a policing/cops layer (pre-arrest) is where **Justice** grows next. +> **Status (2026-07-15): shipped as a five-layer suite behind one install.** The monolith split into +> **Core** (propensity, criminal record, secured context, the shared treatment engine), **Contraband** +> (the physical smuggling loop), **Justice** (classification, deterrence, discipline, parole, regime, +> and **policing** — colony crime → a weighed arrest), **Gangs** (contraband economies), and **Ward** +> (psychiatric care), folded in from a former standalone sister mod. All five bundle into the single +> **Institution** mod with a toggle each while staying separate repos; **Foul Play** stands alone and +> bridges in. See the [README](README.md) for the current mod table. +> +> The pre-arrest loop (crime → witnesses → investigate → weighed arrest) and the post-arrest +> corrections arc (rehabilitate → parole, discipline-as-order, classification enforcement, on the +> shared treatment engine) are **wired and harness-verified**. What remains is **Regime depth** +> (schedule / needs / visitation), **ideology-flavoured** release, and — above all — real +> **playtesting** to tune the numbers, none of which are play-tested yet. The design sections below +> predate the split in how they *group* modules, but the mechanics and north star are unchanged. ## North star @@ -100,17 +106,20 @@ which PR then *enriches* when present. The test of a healthy deferral: with PR a ## Suite modules -| Mod | Scope | Status | +| Layer (repo) | Scope | Status | |---|---|---| -| **Foul Play** | throw a container of something off a body; vessels + substances + Piss Nuke flagship | built | -| **Institution: Contraband** | conceal / improvise / search / confiscate / intake / escape / secure-areas | building | -| **Institution: Ward** | involuntary psychiatric commitment — the third pawn state | built | -| **Institution: Regime** | daily schedule (vanilla Restrict) + modest needs + visitation, for every secured context | planned | -| **Institution: Justice** | the crime loop (commit → discover → investigate → attribute → arrest), policing officer, parole/discharge/manumission | planned | -| **Institution: Discipline** | security classification / segregation, punishment-as-order, corruption | planned | -| **Institution: Gangs** | prisoner & colony gangs, rivalries, contraband networks | planned | +| **Core** | propensity, criminal record, secured context, the shared treatment engine, the deterrence seam | **shipped** | +| **Contraband** | conceal / improvise / search / confiscate / intake / escape / secure-areas / corruption | **shipped** | +| **Justice** | policing (crime → witnesses → investigate → weighed arrest), classification, deterrence feedback, discipline, parole, rehabilitation, regime | **shipped** | +| **Gangs** | prisoner & colony gangs, rivalries, contraband networks | **shipped** | +| **Ward** | involuntary psychiatric care — the third pawn state, on Core's treatment engine | **shipped** (folded in) | +| **Foul Play** | throw a container of something off a body; vessels + substances + Piss Nuke flagship | **shipped** (standalone, bridges in) | -Seven mods is the ceiling. Prefer folding a slot into an existing module over minting a new one. +The seven-mod plan became **five layers over Core**: **Regime** and **Discipline** folded into +**Justice** rather than minting separate mods. Sub-features still open inside Justice/Regime: +classification **wing-routing** (the grade and a misplacement alert ship, but there is no graded-wing +assignment UI), **Regime depth** (Yard/Lockup schedule blocks, a Safety need, Visitation), and +**ideology-flavoured** parole — none of it playtested. --- diff --git a/Wiki/justice/Rehabilitation.md b/Wiki/justice/Rehabilitation.md index 0f9c761..9f68a0a 100644 --- a/Wiki/justice/Rehabilitation.md +++ b/Wiki/justice/Rehabilitation.md @@ -87,16 +87,42 @@ 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. +- A **"Dangerous prisoner unsecured" alert** fires when a Maximum/Supermax pawn is held in the open or + sharing a cell — the misplacement flag, without a wing-grading UI. It clears once they have a secure, + solo cell. +- **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. + +--- + ## Seeing it -A rehabilitated prisoner's inspect pane shows the state directly (a Harmony postfix on +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): -> *Rehabilitation: reforming (40%)* · *reformed — ready for parole* · *— neglected (3d)* +> *Security grade: Maximum* · *In solitary* · *Rehabilitation: reforming (40%) — neglected (3d)* · +> *reformed — ready for parole* -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*. +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*. ---