# DiseaseDef

> Kinbarrow modding reference — content tree `b2f73c2ab65ff925`, version `0.2.0+main.a22009f4c`.

`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).

**Note on syntax:** these files are RON, not JSON. The shapes below are exact,
but punctuation follows RON — read a real `data/*.ron` file alongside.

## Fields

| 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 (`disease::incubated`). |
| `name` | `string` | required | Authored name. |
| `recovery` | `DiseaseRecovery` | required | The long-rest recovery save track. |
| `source` | `Source` | required | Authored source. |

## Nested shapes

<a id="ability"></a>

### Ability

An open, validated Ability id interned from authored data.

<a id="disease-effect"></a>

### 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 `conditions/` id afflicted while diseased — Sight Rot's blindness. Reported by `disease::afflicted_condition`; the durable bubble read is LEDGERED (the trap-condition precedent). Absent = none. |
| `exhaustion` | `uint8` | default `0` | Exhaustion levels inflicted at contraction — the Sewer Plague / Cackle Fever "one level of exhaustion." 0 = none. |

<a id="disease-recovery"></a>

### 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). |

<a id="disease-save"></a>

### 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). |

<a id="source"></a>

### Source

Every file's top-level value carries `source`.

<a id="source--srd51"></a>

#### Source::Srd51

SRD 5.1 — retained nonconflicting catalogue material.

<a id="source--srd52"></a>

#### Source::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.

<a id="source--original"></a>

#### Source::Original

Original content authored for this game (not from the SRD).

<a id="source--phb2024"></a>

#### Source::Phb2024

Material transcribed from the 2024 Player's Handbook. This source is not redistributable by this project and belongs in a `phb2024` mod.

<a id="source--dmg2024"></a>

#### Source::Dmg2024

Material transcribed from the 2024 Dungeon Master's Guide. This source is not redistributable by this project and belongs in a `dmg2024` mod.

<a id="source--mm2024"></a>

#### Source::Mm2024

Material transcribed from the 2024 Monster Manual. This source is not redistributable by this project and belongs in an `mm2024` mod.

<a id="source--tce"></a>

#### Source::Tce

Material transcribed from Tasha's Cauldron of Everything. This source is not redistributable by this project and belongs in a `tce` mod.

<a id="source--xge"></a>

#### Source::Xge

Material transcribed from Xanathar's Guide to Everything. This source is not redistributable by this project and belongs in an `xge` mod.


