The suite's classes all lived in namespace Contraband -- a historical artifact from the original
Contraband monolith, which read oddly for a class in Corrections or Policing. Renamed to namespace
Institution across every layer (46 .cs, the XML Class= refs, RootNamespace, the aggregate shim). The
Contraband MODULE, its Contraband.dll assembly, and the Contraband-named classes (CompContraband,
MapComponent_Contraband, ContrabandUtility, ...) are unchanged. Harness-verified 45/0.
Also adds a CC-BY-NC-SA 4.0 LICENSE file.
Aggregate: the settings shim now writes Institution.InstitutionSettings; Assemblies re-vendored with
the renamed DLLs; ROADMAP status refreshed to the six-layer suite at 0.1.0.
Per the updated project policy, AI/Claude attribution lives in exactly one NOTICE file per repo and
nowhere else -- removed it from the About description, README, wiki, and roadmap.
sync-wiki.sh mirrors policing + corrections instead of justice; the aggregate Wiki index and the
per-layer folders reflect the six-layer suite (Core - Contraband - Policing - Corrections - Gangs -
Ward) and the reserved Judiciary seam. Assemblies re-vendored with the fresh module DLLs.
package.sh builds and vendors InstitutionPolicing + InstitutionCorrections (Policing first) instead
of InstitutionJustice, and merges both modules' Defs. The settings shim's 'Justice' checkbox becomes
'Corrections'; deterrence and riots move under the Policing toggle.
Vendors the Contraband build that wires Corruption.Smuggle (visitors and bent
wardens deliver contraband). TUNING.md records the measured per-day rates from
the full-stack harness against their pre-registered target bands -- all in band:
ordinary colonists ~never offend, a mistreated psychopath ~1 crime/day, reform is
a 0.7-2 day investment. No constant was changed; the run validated the pacing.
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.
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).
Fold Ward into the single Institution install as its psychiatric-care
layer. package.sh now builds Ward clean and vendors Ward.dll plus its
defs and textures alongside the other layers, and the settings shim
gains a Ward (psychiatric care) checkbox that writes the shared
InstitutionSettings.ward flag.
Re-assembling also carries in Justice's now-shipping policing defs (the
constable work type and crime thoughts), so the aggregate finally
bundles colony crime and the weighed arrest as well. README updated to
five layers over one Core with policing shipped and Ward folded in;
adds the changelog, the Workshop preview, and the preview generator.
A fourth checkbox (Policing, default on) drives colony crime independently, and
the re-vendored drop-in carries the flipped-on Core flag, the enrichments, and
prison riots.
package.sh now merges Justice's Defs (the crime relationship thoughts) into the
aggregate's Defs tree alongside Contraband's, so the shipped one-mod Institution
carries them. Re-vendors the Justice DLL with the consequences/relationship code.
This repo is now the single player-facing mod. It bundles the whole engine and
all three feature layers into one folder -- Core, Contraband, Justice, and Gangs
DLLs plus Contraband's Defs -- with one About.xml and a settings shim that turns
each layer on or off from a checkbox (all on by default). A player installs one
mod (this) and Harmony; no separate Core dependency.
- Source/Institution: the only new code, a settings shim (InstitutionMod +
InstitutionModSettings) that writes the player's choices into Core's shared
InstitutionSettings. It owns no gameplay.
- Tools/package.sh: rebuilds the sibling DLLs clean and vendors them + Contraband's
content in here, so the repo stays a complete drop-in.
- Assemblies/, Defs/, Textures/, Languages/: the vendored, assembled mod.
Still fully modular and splittable: the feature code stays in its own repos and
DLLs (their About.xml files remain), so breaking this back into separate mods is
just shipping them individually -- no code change.
Adds a status callout establishing the shipped Core/Contraband/Justice/Gangs
topology and pointing at the README, so the older design sections (which group
modules the pre-split way) don't mislead. The north star and secured-context
principle are unchanged.
Core / Contraband / Justice / Gangs replace the old monolith-plus-planned
layout: adds Institution: Core, slims Contraband to the physical smuggling
loop, and promotes Justice (with Regime/Discipline folded in) and Gangs from
planned to shipping. Updates the dependency notes and the standalone-vs-Core
principle to match the real topology.
- Universality principle: filling/fermenting/throwing/drinking/addicting are any
pawn's behaviours, gated by disposition, not prisoner status. Contraband is the
held-pawn CONCEALMENT lens on top. Prisoner gate lives only on the conceal path.
- Drink-any-fluid stage now includes blood as a substance and per-fluid addiction
rarity modified by mental health + circumstances.
Hooch reframed per user directive: not a bespoke item but FP_Hooch the substance,
in generic vessels whose contents are runtime state -- fill, ferment, pour, drink,
mix. Staged: runtime substance -> drink-any-fluid -> contraband content tag ->
pour+mix -> ferment-model overhaul (age+dilution+sealed/open+temperature+spoil,
mirroring CompRottable). Any fluid drinkable with different consequences; blood is
a substance; any drink can breed addiction at a per-fluid rarity, modified by
mental health + circumstances.
- Secure-zone checkpoints frisk guards too -> the counter-play to a bent warden
smuggling contraband in. Wires corruption <-> secure zones <-> the search loop.
- Potency = age + storage (sealed/open), never container size. Topping up dilutes
age (volume-weighted), so a shared bucket stays fresh while a hidden jar ages to
full potency -- "a jar of old piss and a bucket of fresh" both make sense.
Foul Play "finish substances" grew into a substance-cocktail system, staged so
each ships green:
- Hooch: fermentable, incendiary flame-splash firebomb (no splash-code change --
just a flame damageDef through the existing GenExplosion path), also drinkable.
- Ferment in ANY liquid-holding furniture (toilet, barrel, tub, sink, vat),
capability-detected by recognizable identity + known vanilla defs, no DBH
dependency. Hooch requires a site; piss can use one but still brews from body.
- Mixing: a vessel's contents become a runtime blend of SubstanceDefs and the
splash applies all effects together; defaults to the single substance unmixed.
Contraband warden-personality/corruption (queued under Discipline): search
intensity by trait + circumstance, per-warden item forgiveness, and bent wardens
who smuggle contraband IN -- the corruption supply route that feeds a gang.
Corrected an over-correction. In a suite named Institution these are the
namesake, and our substrate builds them on an axis Prisoner Realism has no engine
for, so it is complementary, not a rebuild:
- Institutionalization -> prisonization, and NOT a new system: the existing
Propensity.Nurture reads the existing CriminalRecord.reform field (signed:
harsh regime prisonizes, rehabilitative reforms). One field, additive. When PR
is present we soft-read its hediff as one more input -- no patch, no dependency.
- Recidivism -> we own the reintegrated who STAY and reoffend inside the colony
(wiring gap D); PR owns the departed who return as raiders. Different
population, no overlap.
Also records the governing constraint "defer the depth, never the payoff": the
propensity -> contraband -> detection spine is fully ours and self-complete; only
the response side (Discipline, Parole) needs its own minimal effect so nothing
dangles when PR is absent.
Mapped Prisoner Realism (11.3k subs, good) feature-by-feature. It owns 20
prisoner-behavior systems, several of which were on our build list. Under the
standing "keep good incumbents" rule:
- DELETE our reintegration+recidivism module. PR's Recidivism is complete and
good. Parole keeps only the ideology-driven release decision (self-complete);
PR supplies the return outcome when present.
- RE-SCOPE Classification to a pure router (reads record + propensity, assigns a
tier). PR's Solitary owns the isolation toll.
- RE-SCOPE Gangs to contraband economies. PR's Ringleader owns mood contagion.
- NARROW the escape tool to the wall-cut path for ward patients and low-skill
pawns PR's break/lockpick system never moves.
Sharpens Institution's uncontested core: hidden-contraband + search, propensity
across all pawns, Ward, Foul Play, classification-as-router, and policing free
colonists (the crime loop turned on your own colony).
A full-lifecycle audit found the gaps are missing CONNECTIONS, not features.
Without them the suite is a linear pipeline; with them it is a cycle. The shared
substrate (propensity stat + SecuredContextOf + CriminalRecord) must be built
first -- everything reads it.
The suite-level home: the thesis (crime spectrum, nature x nurture, policeable),
the secured-context principle (prisoner/ward/slave/secure-area), all seven module
slots, the full crime loop, build order, prior-art verdicts, and the standing
rules -- self-complete and dependency-free, coexist-don't-duplicate judged by
quality not sub count, extend by capability not list.