Furniture Vats
A carryable vessel holds half a litre to a few litres. A cell, a brewery, or a bathhouse holds bulk —
and the bulk lives in furniture. Foul Play lets any liquid-holding fixture act as a large, fixed,
blended vat you cannot pick up or tip over: a place to ferment a batch too big for a jar, and a well
to dip jars out of. It is the same weighted-blend model CompVessel uses for carryables, applied to
buildings.
What counts as a vat (a capability, not a mod list)
A building has no CompVessel, so its contents live in a map component keyed by the building. Foul Play
recognises a liquid-holding fixture the same way CompVessel recognises a container — by capability, so
the feature lights up with any hygiene or brewing mod and depends on none of them. FermentSite
counts a fixture as a vat if any of these hold:
-
It is vanilla's
FermentingBarrel(the canonical case). -
Its
thingClassis aBuilding_Storage— vanilla shelves, LWM/Deep Storage drawers, modded crates. A drawer has sides and seals well enough for prison chemistry. -
Its defName or label contains a liquid-container word:
toilet · latrine · outhouse · urinal · privy · bidet · barrel · keg · cask · vat · still · carboy · fermenter · tub · bath · sink · basin · trough · cistern · tank · bucket · drawer · crate · chest · locker · cabinet · cupboard · box · container
With no such furniture anywhere, hooch simply cannot be brewed in bulk — which is the correct answer, not a crash. A bare cell with nothing that holds liquid gives a prisoner nowhere to run a batch.
Each vat holds a full blend, up to 30,000 ml (30 L) — well beyond any carryable, so a cell can keep a bulk batch of fermenting pruno and draw jars off it for a long time.
The two moves: pour in, dip out
A pawn does exactly two things with a vat, and they are not symmetric — because you cannot tip a bolted-down fixture the way you tip a jar.
| Move | Direction | Capped by | The only way to… |
|---|---|---|---|
| Pour in | carryable → vat | min(amount, carryable.TotalVolume, vat.headroom) |
empty a jar into the vat |
| Dip | vat → carryable | min(amount, vat.volume, carryable.headroom) |
get liquid out of a fixture |
Dip is the whole reason the vat is usable at all. A fixed drawer cannot be tipped, so the only way liquid leaves it is a pawn dipping a carryable in and lifting a jar's worth out. Pour-in and dip together let a cell run a bulk vat and decant it: keep 20 L of pruno fermenting in a crate, and dip a Piss Jar's worth off it whenever you want to throw one.
Both directions transfer in the vat's / carryable's current ratios, and both resolve reactions on arrival: pour water onto a vat of hooch and it douses (see Mixing and Reactions); dip from a mixed vat and your jar reacts too. When a vat is dipped dry it is forgotten entirely.
The float-menu UI
Carry a vessel and right-click a fixture: you are offered "Pour X into Y" and, for a fixture,
"Dip X from Y." Right-click another vessel on the ground and you get "Pour X into Y" only (you
dip from fixtures, not from loose jars). The job walks to the target (Touch), works for 120 ticks with
a progress bar, then does the transfer.
Amount control
The transfer functions take an explicit amount, so the quantity is the pawn's choice in both directions — any ratio the physics allows: dip a splash of one thing into a jar of another to mix, or draw exactly a jar's worth off a bulk vat. The current ordered-job UI uses the two natural extremes — pour empties the carried vessel, dip fills it to the brim — while the underlying API supports any partial measure for finer mixing.
Any pawn fills a vessel — openly
Filling is Foul Play's business, not the prison's. A disposed free pawn — a colonist, a visitor — will fill a jar from their own body, openly, and keep it. Disposition decides who bothers, not imprisonment, which is the suite's thesis at the mechanics level. Held pawns are excluded here: they conceal what they make (the Contraband route), so the prison lens owns them.
The autonomous fill is poll-based (no Harmony) and deliberately rare:
| Gate | Value | Effect |
|---|---|---|
| Check interval | every 2,500 ticks (~1 in-game hour) | when the poll runs |
| Eligibility | free, awake, up, humanlike, has an inventory | held/downed/animal pawns skip |
| Disposition gate | ≥ 0.5 | only strongly foul pawns bother at all |
| Body cooldown | shared supply component | their body must have restocked |
| Trigger | MTB = 8 × (1.2 − disposition) days |
fouler = a shorter fuse, but still now-and-then |
The jar they make is theirs; whether they ever throw it is the spree system's affair (see The Piss Nuke).
The autonomous cocktail: the foulest mix
An ordinary disposed pawn fills a plain jar of urine. The foulest do not stop there — above a disposition of 0.7, they mix, pouring a second vile substance in to make a cocktail:
SetContents(urine, capacity × 0.5) // half a jar of piss…
AddContent(feces, capacity) // …topped up with filth → a 50/50 piss-and-filth cocktail
(The second substance is feces if the pawn has any.) Note the headroom rule at work: the pawn sets the jar to half-full of one substance first, then tops it up, so the result is a controlled 50/50 blend rather than an overflow that spills the excess (see Mixing and Reactions). Only the worst bother — which is exactly why a cocktail jar, when you find one, tells you something about who made it.
Foul Play is part of the Institution suite — one install with a checkbox per layer (Core, Contraband, Policing, Corrections, Gangs, Ward) about what an institution does to the people inside it. It bridges to the Contraband layer when Institution is installed.