DiseaseDef
diseases/<id>.srd.ron — one disease per file; stem == id (the OPEN one-file-per-entity collection, the traps/feats/spells precedent). A disease is the SRD "Diseases" substrate: a CONTRACTION save that resists catching it, an INCUBATION delay before it takes hold, an EFFECT while afflicted (composed onto the exhaustion track / the conditions catalog / the ability-check seam), and a RECOVERY save track that throws it off — mirroring the exhaustion track's shape (a stored prop, absent-means-healthy, effects wired into existing seams, a periodic long-rest resolution).
The DCs, dice, and save cadences are the SRD's; the primitives (which ability, the effect composition) are authored. A disease that afflicts nothing is refused by the validator. The real exposure VECTORS (a diseased bite, contaminated water/filth, a trap) are DEFERRED — contraction enters via a disease::contract/try_contract call, so worldgen infects no one and the season soak is byte-identical (sim-neutral by construction).
| Field | Type | Required | Description |
|---|---|---|---|
| contraction | DiseaseSave | required | The save that RESISTS contracting it (usually Con) — a success shrugs off exposure, a failure catches the disease. |
| effect | DiseaseEffect | required | The disease's effect while afflicted. |
| id | string | required | |
| incubation_days | uint32 | required | Days between exposure and the disease taking hold — its effects and its recovery saves begin only after incubation elapses ( |
| name | string | required | |
| recovery | DiseaseRecovery | required | The long-rest recovery save track. |
| source | Source | required |
Nested shapes
Every shape DiseaseDef closes over, so this page stands alone.
Ability
The six ability scores (SRD 5.1). The engine's own stats::Ability is the runtime type; this is the data-layer mirror, bridged by [Ability::engine].
StrDexConIntWisChaDiseaseEffect
A disease's EFFECT while afflicted — a BUNDLE of primitives, each composing with an EXISTING seam (the ledger-don't-fake rule): exhaustion levels INFLICTED at contraction (composed through the exhaustion track, so the whole penalty ladder — checks, speed, the L4 hit-point-maximum halving, death — lands for free); a condition id afflicted while diseased (the conditions catalog — the persistent OUT-OF-COMBAT condition timer's bubble consumption is LEDGERED, so disease::afflicted_condition REPORTS it, the trap-condition precedent); and a check_penalty folded into stats::ability_check (the attack-roll fold is LEDGERED — bubble-locality). A disease that afflicts NOTHING (no exhaustion, no condition, no penalty) has no consumer and is refused by the validator (the substrate-or-refuse rule). Every field serde-defaults, so a disease names only the effects it carries.
| Field | Type | Required | Description |
|---|---|---|---|
| check_penalty | int32 | default 0 | A signed modifier folded into ability checks while afflicted (Sight Rot's −1, its −1→−5 escalation LEDGERED). 0 = none. |
| condition | string | optional | A |
| exhaustion | uint8 | default 0 | Exhaustion levels inflicted at contraction — the Sewer Plague / Cackle Fever "one level of exhaustion." 0 = none. |
DiseaseRecovery
A disease's RECOVERY rule — the SRD "at the end of each long rest, a DC N Con save; a number of successes ends it" shape: successes CONSECUTIVE successful saves of ability (usually Con) vs dc throw the affliction off (disease::tick_recovery, on the long rest — the exhaustion-recovery cadence). A FAILED save resets the success streak (the "M failures worsen it" clause — the escalating-severity worsen, and the herb/magical cures Sight Rot specifically needs, are LEDGERED). dc is u32 (≥ 0 by type); successes must be ≥ 1 (0 would never cure) — both validator-checked.
| Field | Type | Required | Description |
|---|---|---|---|
| ability | Ability | required | The recovery save ability (usually Con). |
| dc | uint32 | required | The save DC (≥ 0 by type). |
| successes | uint32 | required | Consecutive successful saves that throw the disease off (≥ 1). |
DiseaseSave
A saving throw a disease demands — the CONTRACTION save that resists catching it: an ability (usually Con) vs a DC. The DC is u32, so it is ≥ 0 by type (the trap-DC precedent — the "save DCs ≥ 0" invariant). The real exposure VECTORS (a diseased bite, contaminated water, a trap) are DEFERRED — a disease::contract/try_contract call is the door tests exercise now (the exhaustion-source ledger precedent).
| Field | Type | Required | Description |
|---|---|---|---|
| ability | Ability | required | The saving-throw ability (usually Con). |
| dc | uint32 | required | The save DC (≥ 0 by type). |
Source
Every file's top-level value carries source.
Srd51
SRD 5.1 — the System Reference Document, the shipped baseline.
Original
Original content authored for this game (not from the SRD).
Personal
A player's own transcription or third-party content in a mod tree — provenance stays honest without borrowing the base tree's markers. Never used by shipped files.