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.