From 25eb3a77db6fc3d83355a135651a1013b515b9bf Mon Sep 17 00:00:00 2001 From: flan Date: Wed, 15 Jul 2026 20:27:57 +0000 Subject: [PATCH] Fix: bundle Ward's Patches into the aggregate (Rim Disorders integration) The re-package vendored Ward's Defs and Textures but not its Patches/ dir, so the disorder-treatable marking never applied -- psychiatric treatment silently did nothing to the illness a patient was committed for. package.sh now vendors Ward's Patches too. The folded-suite compat harness confirms it: integration.disorderMarkedTreatable now passes with Ward bundled in the aggregate. Add the suite-overview wiki (Wiki/Home.md). --- Assemblies/Institution.dll | Bin 7168 -> 7168 bytes Assemblies/Ward.dll | Bin 22016 -> 22016 bytes Patches/Ward_DisorderIntegration.xml | 72 ++++++++++++++++++++ Tools/package.sh | 10 ++- Wiki/Home.md | 97 +++++++++++++++++++++++++++ 5 files changed, 177 insertions(+), 2 deletions(-) create mode 100644 Patches/Ward_DisorderIntegration.xml create mode 100644 Wiki/Home.md diff --git a/Assemblies/Institution.dll b/Assemblies/Institution.dll index e2692b8d9b5cbc215478169f7f50240fa79772d2..f20060c258095d5da79be496c4135b2f96bdf7d2 100644 GIT binary patch delta 168 zcmZp$Xt0>j!6IC3-Mq0ULs($`=9Z>9Rd0{YkBiwbPcn=5km@t34<9!8bc}&8!}ij z7%> delta 168 zcmZp$Xt0>j!Ln11^~}be3}Jy_tBuEe<89rxJTkqgTlRg*W)=|{MvbHtOS5F7WK%;k zGh<6*^TgCdqf}$VNEpxP85X$)3n$dI(zS#mEE08DNv A8~^|S diff --git a/Assemblies/Ward.dll b/Assemblies/Ward.dll index 2e8b9648570e6676804ace51baaecde71cbf69b3..9ceb73516dd0f66b947b219d609e06aab4f75229 100644 GIT binary patch delta 170 zcmZoz!`QHfaY6@+Y|rd}8+-1!2;_0B&z15ia^5^ydi`&u+-sXFTyxkp42>;KlPye= zO-+p~jLa;}EtAcR(u~p)6O+3d5lBr;eWRW-$9JB<`zNLjg`S%$TyxkpEK(AalG7}b z(~^>nEiBB_l1cOY D2^}le diff --git a/Patches/Ward_DisorderIntegration.xml b/Patches/Ward_DisorderIntegration.xml new file mode 100644 index 0000000..b520455 --- /dev/null +++ b/Patches/Ward_DisorderIntegration.xml @@ -0,0 +1,72 @@ + + + + + + /Defs/HediffDef[defName="MajorDepression"] + + /Defs/HediffDef[defName="MajorDepression"] + + +
  • + 0.10 +
  • +
    +
    +
    +
    + + + /Defs/HediffDef[defName="GeneralizedAnxiety"] + + /Defs/HediffDef[defName="GeneralizedAnxiety"] + + +
  • + 0.12 +
  • +
    +
    +
    +
    + + + /Defs/HediffDef[defName="PTSD"] + + /Defs/HediffDef[defName="PTSD"] + + +
  • + 0.08 +
  • +
    +
    +
    +
    + + + /Defs/HediffDef[defName="COCD"] + + /Defs/HediffDef[defName="COCD"] + + +
  • + 0.10 +
  • +
    +
    +
    +
    + +
    diff --git a/Tools/package.sh b/Tools/package.sh index b444817..5acf4fc 100755 --- a/Tools/package.sh +++ b/Tools/package.sh @@ -50,8 +50,10 @@ if [[ -e "$JUST/Defs" ]]; then mkdir -p "$HERE/Defs" cp -r "$JUST/Defs/." "$HERE/Defs/" fi -# Ward ships defs (interaction mode, hediffs, treatment station, room role) and its own textures. -# All its files are *_Ward.xml or under a Ward/ texture subdir, so nothing collides with the others. +# Ward ships defs (interaction mode, hediffs, treatment station, room role), its own textures, AND a +# Patches/ dir -- the Rim Disorders integration that marks disorders treatable (conditional, so it +# no-ops without that mod). Miss the Patches/ and treatment silently does nothing to the illness. All +# its files are *_Ward*.xml or under a Ward/ texture subdir, so nothing collides with the others. if [[ -e "$WARD/Defs" ]]; then mkdir -p "$HERE/Defs" cp -r "$WARD/Defs/." "$HERE/Defs/" @@ -60,6 +62,10 @@ if [[ -e "$WARD/Textures" ]]; then mkdir -p "$HERE/Textures" cp -r "$WARD/Textures/." "$HERE/Textures/" fi +if [[ -e "$WARD/Patches" ]]; then + mkdir -p "$HERE/Patches" + cp -r "$WARD/Patches/." "$HERE/Patches/" +fi echo "==> done. Assemblies:" ls -1 "$HERE/Assemblies/" | sed 's/^/ /' diff --git a/Wiki/Home.md b/Wiki/Home.md new file mode 100644 index 0000000..a00d9cf --- /dev/null +++ b/Wiki/Home.md @@ -0,0 +1,97 @@ +# Institution — Wiki + +*Prison Architect in RimWorld. One install, five toggleable layers, over one shared engine.* + +> **Every pawn has a criminal propensity on a spectrum — nature (traits) × nurture (mood, +> mistreatment, treatment) — and the colony can police it.** + +That one sentence is the whole suite. Colonists, prisoners, and slaves drift toward crime on a +continuous spectrum; a policing-and-justice machine discovers, catches, weighs, punishes, reforms, +treats, and releases them — and catching one pawn changes the disposition of the rest. + +**Institution** is the single mod that ships all of it. It bundles the suite's layers into one +install with a **checkbox per layer** (all on by default), owning no gameplay code itself — it is a +thin settings shim over the same separate, still-splittable feature DLLs. Pull it apart into its +layers again and nothing is lost. + +--- + +## The gameplay loop + +The suite is a closed loop, and each turn of it lives in a different layer: + +1. **Disposition** *(Core)* — every pawn carries a seeded propensity: *would this one do it?* +2. **Crime** *(Justice · Policing)* — free colonists offend on that spectrum (rare in a small, tight, + well-deterred colony), with visible consequences — theft, vandalism, assault — that fray + relationships. +3. **Detection** *(Justice · Policing)* — witnesses and a **constable** work an open case until the + culprit is named. +4. **The weighed arrest** *(Justice · Policing)* — an arrest is made only when the crime is grave + enough to justify losing the pawn and the colony can afford to hold a prisoner; the disposed + **resist**, and a subdued resister is taken in. +5. **Contraband** *(Contraband)* — once held, a pawn conceals and improvises: shivs, brews, tunnels + 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. +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. + +Steps 7 and 8 close the loop back onto step 1: catching, punishing, reforming, or treating one pawn +moves the colony's climate of order, which bends the disposition of everyone still deciding whether +crime pays here. + +--- + +## The five layers + +Each is a separate repo and DLL, bundled here behind a toggle. Every layer defaults **on**; turning +one off disables its systems in place without uninstalling anything. + +| Layer | Toggle | What it adds | Wiki | +|---|---|---|---| +| **Core** | *(always on — the engine)* | propensity, the criminal record, secured context, the shared **treatment engine**, the deterrence seam | [Core](https://git.onetick.ninja/flan/rimworld-core/wiki) | +| **Contraband** | Contraband | concealment & intake, improvised shivs, Prison-Architect tunnels, warden search, warden corruption | [Contraband](https://git.onetick.ninja/flan/rimworld-contraband/wiki) | +| **Justice** | Justice | classification, deterrence feedback, discipline & reform, parole, regime (prisoner recreation) | [Justice](https://git.onetick.ninja/flan/rimworld-justice/wiki) | +| **Justice · Policing** | Policing | colony crime on the spectrum, witnesses, a constable, the weighed arrest, prison riots, recidivism alerts | [Policing](https://git.onetick.ninja/flan/rimworld-justice/wiki/Policing) | +| **Gangs** | Gangs | gangs as contraband economies — joining, smuggling networks, rivalry, fights-as-crime | [Gangs](https://git.onetick.ninja/flan/rimworld-gangs/wiki) | +| **Ward** | Ward | psychiatric care — treatment, recovery, discharge, ward neglect, sedation | [Ward](https://git.onetick.ninja/flan/rimworld-ward/wiki) | + +**Policing** has its own toggle inside Justice because colony crime is a large behavioural change — a +player can run the rest of the corrections layer without their own colonists committing crimes. + +--- + +## Why one Core, many layers + +The suite runs on a small **Core** that owns exactly what every layer must agree on — *is this pawn +dangerous?*, *what have they actually done?*, *what hold are they under?* — plus two shared services: +the **treatment engine** (Ward's psychiatric care and Justice's rehabilitation point the same loop at +different states) and the **deterrence seam** (a neutral hook Justice fills so the order-climate +feedback runs *through* Core without Core ever depending on Justice). + +Everything else builds up from there: Contraband and Justice on Core; Gangs on Core + Contraband + +Justice; Ward on Core. Cross-layer integrations that aren't hard dependencies stay soft — a feature +lights up if its sibling is present and the loop still closes without it. That is what keeps the +suite genuinely modular: this aggregate is a convenience, not a merge. + +--- + +## Requirements & install + +- **RimWorld 1.6.** +- **[Harmony](https://steamcommunity.com/sharedfiles/filedetails/?id=2009463077)** — required (the + suite's Harmony-using code is Justice's prisoner-recreation patch and Ward's). +- Install **Institution**, enable Harmony, and load Institution after it. That is the whole suite in + one mod; open the settings to toggle any layer. + +The standalone **[Foul Play](https://git.onetick.ninja/flan/rimworld-foulplay)** framework is a +separate install that bridges into the suite when both are present. + +--- + +*The **Institution** suite for RimWorld 1.6: Core · Contraband · Justice · Gangs · Ward. Designed and +built with substantial assistance from Claude (Anthropic).*