Wiki: player-facing rewrite of every layer + add a scenario FAQ, linked from Home
This commit is contained in:
+31
-50
@@ -16,66 +16,48 @@ as though nothing happened. Mental breaks are episodic and amnesiac — nothing
|
||||
Ward adds the missing state, and the room to put it in. A colonist you arrest can be set to
|
||||
**psychiatric care**. Wardens counsel them at a **treatment station**. A room with prisoner beds
|
||||
and a treatment station is a **psychiatric ward**, not a prison cell. Treatment lowers the patient's
|
||||
mental-break threshold while it lasts — and it decays, so it has to be *sustained*. A ward you don't
|
||||
mental-break threshold while it lasts — and it fades, so it has to be *sustained*. A ward you don't
|
||||
staff is worse than no ward at all.
|
||||
|
||||
---
|
||||
|
||||
## The third state, without a fourth enum slot
|
||||
## The third state RimWorld doesn't have
|
||||
|
||||
The reason "commit a colonist" isn't a stock feature is a single compiled fact. `RimWorld.GuestStatus`
|
||||
is a three-value enum:
|
||||
The reason "commit a colonist" isn't a stock button is simple: vanilla only knows two kinds of held
|
||||
person — a free colonist and a prisoner. There's no built-in slot for someone who is neither free nor
|
||||
guilty, which is why other mods that keep a not-quite-colonist around (like *Hospitality* and its
|
||||
guests) have to work so hard to maintain them.
|
||||
|
||||
```
|
||||
Guest = 0
|
||||
Prisoner = 1
|
||||
Slave = 2
|
||||
```
|
||||
**Ward takes the cheap road.** A committed pawn *is* a prisoner — arresting your own colonist already
|
||||
does that. Ward just adds a new **way to handle** that prisoner: a "psychiatric care" mode you toggle
|
||||
on, sitting alongside vanilla's recruit / convert / release options. Nothing exotic — it's the same
|
||||
kind of custom prisoner mode other prison mods already add.
|
||||
|
||||
A mod **cannot add a fourth value** to a compiled enum. That one constraint drives every design
|
||||
decision in Ward — and in the rest of the ecosystem. It is why *Hospitality* carries dozens of
|
||||
Harmony patches to maintain a pawn who is in your colony but is not your colonist: the enum has no
|
||||
slot for one, so it runs a shadow guest system and defends it by patching bed validity, allowed
|
||||
areas, the work JobGiver and the mental-state handler.
|
||||
So committing someone is entirely ordinary from the game's point of view:
|
||||
|
||||
**Ward doesn't pay that tax.** A committed pawn *is* a prisoner, in vanilla's own sense of the word —
|
||||
arresting your own colonist already performs the colonist→prisoner transition. Ward only adds a new
|
||||
**mode** to hold them under, and `PrisonerInteractionModeDef` is a **Def, not an enum**. Adding one
|
||||
is XML plus, at most, a worker class. This is not a trick; it is the established pattern. *Prison
|
||||
Labor* already ships seven custom interaction modes of its own.
|
||||
- **psychiatric care** — a new prisoner interaction mode you switch on
|
||||
- **the psychiatric ward** — a new room role a cell earns once it holds a treatment station
|
||||
- **counselling** — a new warden job, handled like any other warden work
|
||||
- the **treatment station**, the **recovery**, the **neglect** — new content layered on top
|
||||
|
||||
So the *state itself* costs **zero patches** — it is all defs:
|
||||
|
||||
| Extension point | What Ward adds | Patches needed |
|
||||
|---|---|---|
|
||||
| `PrisonerInteractionModeDef` | `Ward_PsychiatricCare` (non-exclusive) | 0 |
|
||||
| `RoomRoleDef` (`workerClass` is public) | `Ward_PsychWard` | 0 |
|
||||
| `WorkGiverDef` (`giverClass`) | `Ward_WardenPsychiatricCare` | 0 |
|
||||
| `JobDef`, `HediffDef`, `ThoughtDef`, `ThingDef` | treatment, recovery, neglect, the station | 0 |
|
||||
|
||||
Ward *does* use Harmony where a patch is the cleaner tool (a patient's inspect line, and more), so it
|
||||
is not a zero-patch mod. Its compatibility is about **which** methods it avoids: it touches none of
|
||||
the contested methods the popular psych/prison mods fight over, and never prefixes
|
||||
`MentalStateHandler.TryStartMentalState`. The full argument — which mods it was verified against and
|
||||
why it can't collide with them — is on **The Compat Harness** page.
|
||||
Because Ward *adds* things rather than rewriting how vanilla prisoners behave, it sits quietly next to
|
||||
the popular psych and prison mods instead of fighting them. Which mods, and why, is on the
|
||||
**Compatibility** page.
|
||||
|
||||
---
|
||||
|
||||
## Riding the prisoner rail (why the suite cares)
|
||||
|
||||
The design choice that makes Ward *cheap* also makes it *interesting* inside the wider Institution
|
||||
suite. A committed patient is a genuine vanilla prisoner. That means they are a **secure context** in
|
||||
exactly the sense the rest of the suite understands: a pawn who is held, searchable, and capable of
|
||||
concealing and improvising contraband. A patient in a psych ward can hoard a shiv or brew something
|
||||
foul in a smuggled vessel for **free**, because the contraband, search, corruption and gang systems
|
||||
were written against "held pawn," and a ward patient satisfies that predicate without Ward writing a
|
||||
line of integration code.
|
||||
The choice that makes Ward *cheap* also makes it *interesting* inside the wider Institution suite. A
|
||||
committed patient is a genuine vanilla prisoner. That means they're a **held pawn** in exactly the
|
||||
sense the rest of the suite understands: someone who can be searched, and who can conceal and
|
||||
improvise contraband. A patient in a psych ward can hoard a shiv or brew something foul in a smuggled
|
||||
vessel, because the contraband, search, corruption and gang systems already work on any held
|
||||
prisoner — and a ward patient is one, for free.
|
||||
|
||||
The ward is a prison cell that happens to also be a ward. `Room.isPrisonCell` is a cached field
|
||||
written only when the room's shape changes — it is **not** derived from the room's role — so
|
||||
re-labelling a cell as a ward cannot break containment, food delivery, or prison breaks. The compat
|
||||
harness asserts exactly this: a built ward is both `roleIsWard = True` **and** `stillPrisonCellAsWard
|
||||
= True`. The two claims pull against each other, and both have to hold.
|
||||
**And re-labelling a cell as a ward never lets anyone out.** A ward is a prison cell that also happens
|
||||
to be a ward — the two roles coexist. Containment, food delivery, and prison breaks all keep working
|
||||
exactly as they did before you built the station.
|
||||
|
||||
---
|
||||
|
||||
@@ -84,8 +66,8 @@ harness asserts exactly this: a built ward is both `roleIsWard = True` **and** `
|
||||
| Page | What's on it |
|
||||
|---|---|
|
||||
| **Home** (this page) | What Ward is, the third-state problem, the suite |
|
||||
| **Commitment** | How commitment works in play: the mode, station, room role, work giver, job, hediff, thoughts, neglect, and how it stacks with recruitment — with every real def name and number |
|
||||
| **The Compat Harness** | The in-game test tool this repo carries: booting real headless RimWorld with the whole suite + the most-subscribed Workshop mods (~24 active), the dependency-ordered build, the `WARDTEST` / `PNTEST` / `CBTEST` / `FPBRIDGE` assertion families, and how to run it |
|
||||
| **Commitment** | How commitment works in play: the care mode, the station, the ward room, the warden's job, treatment, recovery, neglect, and how it stacks with recruitment — with the real numbers |
|
||||
| **Compatibility** | Which popular psych and prison mods Ward plays nicely with, and why it doesn't fight them |
|
||||
|
||||
---
|
||||
|
||||
@@ -99,14 +81,13 @@ conceal and improvise contraband exactly as a prisoner can, because they ride th
|
||||
|
||||
| Mod | What it is |
|
||||
|---|---|
|
||||
| **Institution: Ward** (this) | Involuntary psychiatric commitment — the third pawn state, neither free nor guilty. Also carries the suite's in-game compat harness. |
|
||||
| **Institution: Ward** (this) | Involuntary psychiatric commitment — the third pawn state, neither free nor guilty. |
|
||||
| **Institution: Core** | The shared engine — propensity (nature × nurture), the criminal record, secured context. |
|
||||
| **Institution: Contraband** | The physical smuggling loop — conceal, improvise shivs, dig Prison-Architect tunnels, warden search, warden corruption. |
|
||||
| **Institution: Justice** | Corrections & policing — classification, deterrence, discipline, parole, regime. |
|
||||
| **Institution: Gangs** | Gangs as contraband economies — joining, smuggling networks, rivalry, fights-as-crime. Also the home of the suite's cross-module `CBTEST` integration test. |
|
||||
| **Institution: Gangs** | Gangs as contraband economies — joining, smuggling networks, rivalry, fights-as-crime. |
|
||||
| **Foul Play** | The vessel + substance + throw framework, and the "Piss Nuke" flagship; bridges to Core + Contraband when both are present. |
|
||||
|
||||
Reference sibling mods by name — the mods are separate repositories and cross-repo links break.
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user