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.
80 lines
5.5 KiB
Markdown
80 lines
5.5 KiB
Markdown
# 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).
|