1
Furniture Vats
flan edited this page 2026-07-16 03:13:22 +00:00
This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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:

  1. It is vanilla's FermentingBarrel (the canonical case).

  2. Its thingClass is a Building_Storage — vanilla shelves, LWM/Deep Storage drawers, modded crates. A drawer has sides and seals well enough for prison chemistry.

  3. 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.