Files
institution/README.md
T
flan 3530100ed5 Aggregate the whole suite wiki onto the Institution page
Wiki/Home.md is the suite's front door; every layer's wiki now mirrors here
under Wiki/<layer>/ (core, contraband, justice, gangs, ward), so the whole
suite reads in one place with the index linking to the local pages. The
layer repos stay canonical -- Tools/sync-wiki.sh refreshes the aggregated
copy on demand. The README's main page points to it.
2026-07-15 20:30:38 +00:00

80 lines
5.5 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.
# The Institution suite
A set of RimWorld 1.6 mods about **what an institution does to the people inside it** — and the
crime, policing, and justice that put them there. Each mod is a separate install built on a small
shared **Core**; together they form one system.
## The thesis
> Every pawn has a criminal propensity on a spectrum — **nature** (traits) × **nurture**
> (circumstance, mood, treatment) — and the colony can **police** it.
The suite is the two halves of that: colonists commit crimes and a policing layer catches them
(pre-arrest), and prison / contraband / wards / secure areas hold and reform them (post-arrest).
Arrest is the hinge. Nothing hard-codes "prisoner" — every held-person system keys off a
**secured context**: prisoner, ward patient, slave, or secure-area occupant.
## Documentation
The **complete suite wiki lives in this repo** — [**Wiki/Home.md**](Wiki/Home.md) is the front door:
the full gameplay loop, all five layers, and per-layer deep dives, aggregated in one place under
[`Wiki/`](Wiki/) (`core/`, `contraband/`, `justice/`, `gangs/`, `ward/`). Each layer repo carries its
own copy for a standalone install; [`Tools/sync-wiki.sh`](Tools/sync-wiki.sh) refreshes the
aggregated view here.
## The mods
| Mod | What it is | Needs | Status |
|---|---|---|---|
| [Institution: Core](https://git.onetick.ninja/flan/rimworld-core) | the shared engine — **propensity** (nature × nurture), the **criminal record**, the **secured-context** predicate. Invisible on its own | — | shipping |
| [Institution: Contraband](https://git.onetick.ninja/flan/rimworld-contraband) | the physical smuggling loop — conceal / improvise shivs / Prison-Architect tunnels / warden search / corruption | Core | shipping |
| [Institution: Justice](https://git.onetick.ninja/flan/rimworld-justice) | corrections & **policing** — classification, deterrence, discipline & reform, parole, regime, and colony crime → witnesses → a weighed arrest | Core, Harmony | shipping |
| [Institution: Gangs](https://git.onetick.ninja/flan/rimworld-gangs) | gangs as **contraband economies** — joining by disposition, smuggling networks, rivalry, fights-as-crime | Core, Contraband, Justice | shipping |
| [Institution: Ward](https://git.onetick.ninja/flan/rimworld-ward) | involuntary **psychiatric care** — a prisoner committed for treatment, not punishment, on Core's shared treatment engine: counselling reduces the disorder, a recovery track leads to discharge, and neglect deteriorates. Folded into the suite as its psychiatric-care layer | Core, Harmony | shipping |
| [Foul Play](https://git.onetick.ninja/flan/rimworld-foulplay) | throw a container of something off a body; a Noita-flasks liquid framework (vessels + substances) with the **Piss Nuke** flagship; bridges to the suite | standalone | shipping |
The original monolith split along its natural seams in 2026-07: the substrate became **Core**, the
corrections/justice systems became **Justice**, and the gang layer became **Gangs**, leaving
**Contraband** as the physical smuggling loop. Regime (prisoner recreation) folded into Justice, which
now also ships **policing** (colony crime → witnesses → a weighed arrest). **Ward** — once a standalone
sister mod — is folded in as the psychiatric-care layer, consuming Core's shared treatment engine, so
the suite is now five layers over one Core, bundled into a single install with a toggle each.
## Principles
- **One shared engine, then build up.** The suite runs on a small **Core** (propensity, record,
secured context) so every mod agrees about who is dangerous instead of each guessing. Contraband
and Justice build on Core; Gangs, the capstone, needs Core + Contraband + Justice. Foul Play stands
fully alone and merely *bridges* to the suite when it is present. Cross-mod integrations that
aren't hard dependencies stay soft — features light up if a mod is present and the loop still
closes without it (e.g. Core's deterrence seam is neutral until Justice fills it).
- **Coexist, don't duplicate.** We test against the all-time most-subscribed Workshop mods and
never rebuild what a genuinely good mod already does well — judged by quality, not sub count.
- **Extend by capability, not by list.** New content registers via `IsWeapon` / `IsDrug` /
category, so modded items are covered without being named.
## The plan
The full design, module scope, build order, and prior-art verdicts are in
[ROADMAP.md](ROADMAP.md). Per-mod roadmaps live in each repo (e.g. Contraband's item build list).
## Compatibility
The in-game harness (`Tools/run-compat-test.sh` in the Ward repo) boots a real headless RimWorld
with the suite plus the popular psych/prison mods **and** the all-time most-subscribed mods loaded
at once, and fails on any error naming our code. Combat Extended gets its own dedicated pass. It
needs a licensed RimWorld + xvfb, so it is a LOCAL step, not CI.
## CI
Each code repo runs a Gitea Actions workflow (`.gitea/workflows/ci.yml`) on push: **lint def XML**
(catches malformed XML and relative-xpath silent no-ops) + **dotnet build** against the Krafs
RimWorld reference assemblies (no game install needed). Runs on the self-hosted `truenas-runner`
(host mode, label `ubuntu-latest`); .NET is provisioned per-run via `setup-dotnet`. Green across
Foul Play, Contraband, and Ward; the split-out **Core**, **Justice**, and **Gangs** build clean and
are exercised by the full-stack harness, with per-repo CI workflows still to be added.
## AI disclosure
Designed and built with substantial assistance from Claude (Anthropic).