roadmap: secure-zone guard frisk + age/storage potency model

- 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.
This commit is contained in:
flan
2026-07-15 03:18:13 +00:00
parent 78fe129911
commit fcfb32fff7
+14
View File
@@ -229,6 +229,10 @@ ideology-driven *decision*, not another timer.
- **Bent wardens smuggle IN.** A corrupt/bribed/romantically-entangled warden becomes a **supply - **Bent wardens smuggle IN.** A corrupt/bribed/romantically-entangled warden becomes a **supply
route** — they hand contraband TO a prisoner (the `Conceal` door already noted in Contraband as route** — they hand contraband TO a prisoner (the `Conceal` door already noted in Contraband as
"a bent warden"). This is the corruption payoff and the thing that feeds a Gang's network. "a bent warden"). This is the corruption payoff and the thing that feeds a Gang's network.
- **Secure zones are the counter-play.** A search-zone checkpoint frisks *anyone* passing through,
**guards included** — so a bent warden carrying contraband in can be caught at the door. This
wires corruption ↔ secure zones (the generalized secure-area search) ↔ the search loop: the same
`JobDriver_SearchPawn` that turns over a prisoner turns over a guard at a checkpoint.
Self-complete (reads vanilla traits/mood/relationships); no dependency. This is where the Self-complete (reads vanilla traits/mood/relationships); no dependency. This is where the
contraband loop stops being "the game vs. the player" and becomes "the player's own guards, who contraband loop stops being "the game vs. the player" and becomes "the player's own guards, who
@@ -300,6 +304,16 @@ built on the existing `SubstanceDef` (data) + `CompVessel` (delivery) + `CompFer
Staged so each ships green: **hooch → liquid-container fermentation → mixing.** The vessel data model Staged so each ships green: **hooch → liquid-container fermentation → mixing.** The vessel data model
is built mixture-capable and site-aware from the start so none of it is a later refactor. is built mixture-capable and site-aware from the start so none of it is a later refactor.
**Potency model (corrected 2026-07-15): age + storage, NOT container size.** A liquid's potency is a
function of how long it has fermented and how it is stored (a *sealed* vessel ripens and holds; an
*open* one ferments differently and loses to evaporation) — never of how big the container is. Size
already only drives fill-time and blast (VesselProfile), so `CompFerment.Potency` stays age-driven;
the correction is that **topping up dilutes age**. A shared bucket/carboy that several prisoners keep
using stays *fresh* (each fresh addition pulls the volume-weighted average age down), while a jar one
prisoner fills once and hides *ages to full potency*. So "a jar of old piss and a bucket of fresh"
both make sense — it is the usage pattern, not the vessel, that decides. Implementation: track age as
a volume-weighted average, diluted on each add; sealed/open scales the ripen rate.
## Compatibility — the non-negotiable ## Compatibility — the non-negotiable
The suite must load and run cleanly alongside the **all-time most-subscribed Workshop mods**, not The suite must load and run cleanly alongside the **all-time most-subscribed Workshop mods**, not