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 | Authored id. |
| 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 | Authored name. |
| recovery | DiseaseRecovery | required | The long-rest recovery save track. |
| source | Source | required | Authored source. |
Nested shapes
Every shape DiseaseDef closes over, so this page stands alone.
Ability
An open, validated Ability id interned from authored data.
DiseaseEffect
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 — retained nonconflicting catalogue material.
Srd52
SRD 5.2.1 — the 2024-revision System Reference Document, the same CC-BY-4.0 grant as 5.1 and the current rules chassis. Its files carry the .srd52.ron suffix so provenance reads off the path; see data/README.md for which document rules a given value.
Original
Original content authored for this game (not from the SRD).
Phb2024
Material transcribed from the 2024 Player's Handbook. This source is not redistributable by this project and belongs in a phb2024 mod.
Dmg2024
Material transcribed from the 2024 Dungeon Master's Guide. This source is not redistributable by this project and belongs in a dmg2024 mod.
Mm2024
Material transcribed from the 2024 Monster Manual. This source is not redistributable by this project and belongs in an mm2024 mod.
Tce
Material transcribed from Tasha's Cauldron of Everything. This source is not redistributable by this project and belongs in a tce mod.
Xge
Material transcribed from Xanathar's Guide to Everything. This source is not redistributable by this project and belongs in an xge mod.