Table of Contents
The Piss Nuke
The Piss Nuke is Foul Play's flagship consumer — a whole weapon family built on the framework with almost no code of its own. Everything a piss nuke is comes from two data axes the framework already provides: a carboy (a 5 L sealed vessel) holding fermented urine (a caustic, disease-carrying, fermenting substance). The framework knows nothing about piss; the piss knows nothing about throwing. That separation is the entire proof-of-concept.
"A contemptible weapon. It is also the surest way to bring a raider home breathing."
The vessel family
Four containers of the same fermented urine. Everything that separates them falls out of the two vessel dials — volume and seal (see Vessels and Substances):
| Vessel | Volume | Sealed | Mass | Cooldown | Work | Cost | Character |
|---|---|---|---|---|---|---|---|
| Piss Jar | 500 ml | yes | 0.6 | 2.2 | 600 | 3 cloth | fills in ~7 h, throws far, palms easily, tight splash |
| Piss Bottle | 750 ml | yes | 0.9 | 2.6 | 900 | 5 cloth | ~10 h to fill, still throws clean |
| Piss Bucket | 8000 ml | no | 3.0 | 3.8 | 500 | 5 steel | days to fill, throws short, sloshes over the carrier, wide and thin |
| Piss Nuke | 5000 ml | yes | 2.2 | 3.2 | 3500 | 4 steel + 15 cloth | the flagship carboy — wide and dense |
All four throw as the framework's one projectile (FP_Proj_Substance), with a base verb range of 10.9
and a 1.8 s warm-up. The blast footprint each produces is derived from its two numbers, not authored:
| Blast radius | Dose density | Filth | |
|---|---|---|---|
| Jar | ~2.1 | 1.0 | 2 |
| Bottle | ~2.4 | 1.0 | 2 |
| Bucket | ~7.1 | 0.55 (open) | 5 |
| Nuke | ~4.5 | 1.0 | 4 |
The bucket lands widest but thinnest and throws shortest; the carboy is the only one that is both wide and dense — which is why it, and not the bucket, is the flagship.
What makes a carboy a nuke
A carboy is not automatically a piss nuke. Identity is emergent from runtime state, enforced by the contents-aware label (see Fermentation):
A "piss nuke" is only 100%-fermented (≥ 95% potency), undiluted, pure urine in a carboy.
Any of the following demotes it, and the label refuses to pretend otherwise:
| State | Label | Why it is not a nuke |
|---|---|---|
| Fresh / mid-ferment | piss nuke, fermenting 42% |
fresh urine is nearly sterile — potency is the weapon |
| Diluted (topped up) | lower potency | fresh liquid pulled the average age down |
| A cocktail | piss nuke (urine 60%, feces 40%) |
it is a blend, and each part splashes at its own share |
| Spoiled (> ~75 days) | piss nuke, spoiled |
it turned to inert vinegar |
Full strength is worth waiting for because the harm scales with potency at every step — the caustic damage, the infection dose, and the eye burn all read it live at the moment of impact.
Fermented urine, the substance
Urine (PN_Urine) is the harm profile the flagship attaches to its carboys — pure data on top of the
framework:
| Field | Value | Meaning |
|---|---|---|
mlPerDay |
1750 | a jar fills in ~7 h, a carboy in ~3 days |
causticDamage |
6 (via PN_Caustic) |
the splash blisters skin — little more |
disease / severity |
piss rot / 0.35 | the real payload, applied in code, filtered by headgear |
burnsEyes |
true | concentrated ammonia can blind a bare face |
ferments |
true | fresh it is nearly harmless; weeks make it caustic |
drinkHediff |
food poisoning (0.35) | swallowing it is an illness and a memory |
Fresh urine is nearly sterile. It is weeks of bacteria turning urea into ammonia that make it caustic, make it burn eyes, and make it a disease vector — which is why potency, not volume, is what you are cultivating.
Piss rot: non-lethal by design
The disease is the whole point, and it is deliberately not a killer. PN_PissRot is a real
immunizable infection built like vanilla flu, with one departure: lethalSeverity = -1, so however high
severity climbs, it cannot kill, and no stage is life-threatening.
| Stage | From severity | What it does |
|---|---|---|
| mild | 0 | Moving/Manipulation/Sight −0.08, Breathing −0.04; occasional vomiting |
| acute | 0.35 | Moving/Manipulation/Sight −0.25, Eating −0.20, Consciousness −0.10, Breathing −0.12 |
| wretched | 0.70 | Moving/Manipulation −0.50, Sight −0.45, Eating −0.35, Breathing −0.22 — the capture window |
Even at wretched, breathing is held short of lethal on purpose: drive breathing to zero and the pawn
dies, which would quietly destroy the entire point of the weapon. The afflicted vomit, shake, go
half-blind and cannot hold a rifle straight — capturable, not killable.
The immunity race is what happens afterward: severity climbs fast but immunity outruns it (full immunity in roughly three days for a healthy pawn), and tending flips severity from climbing to falling. Two consequences worth knowing:
- Tending and care genuinely matter — a treated colonist shrugs it off in a day or two; an untreated raider in the mud stays wretched for the better part of three days.
- Immunity persists (fading over ~10 days), so piss-nuking the same faction twice in one week works noticeably less well. That is emergent, and it is a feature.
Headgear is the counter
The infection route is the face (eyes, nose, mouth), so the single most effective thing a colonist can do
about any of this is put a helmet on. The dose is applied in C# precisely so it can read what a pawn
is wearing — something DamageDef.additionalHediffs cannot do:
| Worn on face | Protection |
|---|---|
| Full-head covering (sealed helmet, gas mask) | 0.90 — near-total |
| Upper-head only (simple helmet) | 0.30 |
| Bare face | 0.00 |
On top of headgear, the pawn's Toxic Resistance further cuts the dose. A sealed helmet plus a constitution of iron can shrug off a direct hit entirely.
The eye burn
Only a ripe, fermenting substance burns corneas — a property of long fermentation. It requires potency
≥ 0.75 and near-bare-face exposure (≥ 0.9); the chance scales with ripeness above that threshold
(0.22 × (potency − 0.75) / 0.25), and a hit takes 5–11 burn damage to an eye. A fresh carboy never does
it; a fully-ripe one thrown at an unhelmeted raider sometimes blinds.
Throwing
When a pawn on a spree throws a carboy (JobDriver_ThrowPissNuke), the throw is deliberately not the
weapon's normal verb — the projectile is launched directly so the pawn never has to drop what they were
holding, and the carboy is consumed by the throw (it shatters, and having to brew another paces the
spree). The throw:
- Winds up for 90 ticks.
- Reads potency off the carboy's ferment comp — a vessel filled this morning is a bad smell; one sitting since last season is a weapon.
- Hands the whole blend to the projectile with per-substance shares, so a thrown cocktail lands every constituent in its ratios (see Vessels and Substances).
- Scatters: a psychotic throw is wild — it lands within ~2.6 cells of the aim point.
- Splashes back on the thrower: you cannot heave an open-necked vessel of this without wearing some of it. Self-splash chance is 0.18 for a sealed carboy, 0.54 for an open bucket (×3), from whatever substance they mostly slopped on themselves.
On impact the projectile runs the framework splash: the caustic blast (6 × potency × doseDensity), the
filth footprint, and the per-pawn infection dose with falloff toward the edge of the radius.
Who throws it: the seeded disposition model
The mistake worth not making is treating imprisonment as the cause. It is not. Prisons hold thousands
and produce, every so often, one person notorious for this — notorious precisely because it is rare.
So the model is disposition × circumstance, multiplied, never a pile of added percentages
(PissNukeSpreeUtility.WouldFoulPeople):
- Disposition is a rare property of the person:
0.05for the disinhibited (psychopath, bloodlust, abrasive, cannibal),0.004for everyone else — effectively nobody. - Circumstance decides whether a disposed person acts: tiers, not stacking bonuses.
| Circumstance | ×factor |
|---|---|
| Free, well | 1.0 |
| Free, at the mood floor (< 0.20) | 3.0 |
| Prisoner, well kept | 2.5 |
| Prisoner, badly kept (mood < 0.35) | 6.0 |
| Prisoner, at the mood floor | 12.0 |
The resulting odds (capped at 60%):
| Pawn | Chance |
|---|---|
| Ordinary colonist | 0.4% |
| Ordinary colonist at the mood floor | 1.2% |
| Ordinary prisoner, well kept | 1.0% |
| Ordinary prisoner, badly kept | 2.4% |
| Ordinary prisoner, at the mood floor | 4.8% |
| Psychopath colonist | 5.0% |
| Psychopath prisoner, well kept | 12.5% |
| Psychopath prisoner, badly kept | 30.0% |
| Psychopath prisoner, at the mood floor | 60.0% (capped) |
It therefore takes both a rare individual and a badly run prison. A well-run prison full of ordinary captives essentially never sees this, which is exactly right.
The roll is seeded on the pawn (thingIDNumber ^ 0x5E17), so "would they?" is a fixed fact about
that person — the same pawn always answers the same way, which is what makes them a character the whole
block tells stories about rather than a dice roll re-thrown every tick.
How the spree runs
The behaviour hangs off the existing psychotic/confused mental states via a think-tree patch — no new mental break enters the roll table. A deranged pawn who would foul people:
- already carrying a carboy → find any target in line of sight within ~22 cells and throw;
- else finds one lying about within ~40 cells → fetch it (saves brewing);
- else brews one — if their body has anything left to give.
That last limit is the supply cooldown (MapComponent_PissNukeSupply). Without it a spree brews and
throws on a ~4,500-tick cycle, which over 70k–90k ticks of psychotic wandering is sixteen to twenty
carboys — several dozen litres out of one person, a physiological impossibility. The body restocks on a
25,000–35,000 tick (~half-day) cooldown, so a spree yields two or three carboys, not twenty.
Note what the cooldown deliberately does not limit: throwing carboys someone else made. A pawn who reaches a stockpile can empty it as fast as they can throw — a very good reason not to keep the piss-nuke stockpile near the people most likely to lose their minds.
Aftermath: residue and stink
The mess a carboy leaves is not just cosmetic.
The residue is a fomite. MapComponent_PissResidue spreads piss rot the way a contaminated person
really spreads it — by carrying it on themselves and leaving it on what they touch, not on the wind.
A pawn who wades through fouled ground is contaminated for ~half a day; while contaminated they have a
small chance each cycle to track fresh filth into wherever they walk (so the dining room becomes a
problem) and to infect anyone adjacent by direct contact. Nobody catches it from across the room —
but a fouled corridor walked into a mess hall is how these things move through a crowded building. Ground
residue reaches feet and hands, not eyes (kept below the eye-burn threshold on purpose).
It reeks. ThoughtWorker_PissStink gives a mood penalty for standing in or near fouled ground —
mild near a tile or two, and a distinct "it's all I can smell" penalty near six or more tiles of it
within a 4-cell radius. Cleaning up after a piss-nuke fight is not optional busywork; it is disease
control and mood management at once.
Pressure: the carboy that goes off by itself
A sealed carboy of fermenting urine builds pressure. Once overdue (25 days) it rolls to rupture on an
MTB of 6 days, and when it does, BurstWorker_Caustic fires the same caustic splash at the carboy's
current potency — with nobody throwing it. A shelf of aging piss nukes is a rack of timed bombs. Keep
confiscated ones cold (a freezer nearly halts fermentation), drained, or destroyed. See
Fermentation.
With Institution: Contraband — the prison layer
Foul Play stands alone as a craft-and-throw gross-weapon mod and patches nothing. When Institution:
Contraband is installed, a small bridge assembly (Bridge_Contraband/, loaded via LoadFolders only
when Contraband is present) turns the piss nuke into prison contraband — a prisoner brews a carboy from
their own body in a bare cell, conceals it, and gets searched for it. The bridge does three things:
-
Registers the vessels as brewable contraband, with concealability tracking size — a jar palms; a five-litre carboy does not:
Vessel Concealability Hides in Piss Jar 0.70 on body, in cell Piss Bottle 0.55 on body, in cell Piss Bucket 0.20 in cell only Piss Nuke 0.35 in cell only Whether a prisoner would brew one uses the same
WouldFoulPeoplemodel above — a rare disposition and a badly-run prison, multiplied. How you treat them decides how much of this you get. -
Merges the propensity engines. The bridge repoints Foul Play's
Disposition.Sourceat the suite's full nature × nurture engine (surfaced by Contraband, owned by Institution: Core), flattened to the 0..1 Foul Play wants:Clamp01(nature × Clamp(nurture, 0.4, 3) × 0.6). From then on, who fills a vessel and who a drink hooks read the same disposition Contraband uses for crime and policing — the two mods never disagree about the same person. Without Contraband, Foul Play keeps its own local read. -
Preserves contents through concealment. Contraband stores a blind content tag; the bridge gives it meaning by wiring it to
CompVessel.SerializeContents/DeserializeContents, so a hidden jar of hooch comes back holding hooch, not whatever the jar's def defaulted to.
The throwing framework is never chained to the prison framework — the spree brews and throws on its own, and concealment is a bonus the prison layer adds.
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.