# ConditionDef

> Kinbarrow modding reference — content tree `45d0fe274f851548`, version `0.2.0+main.c05ef2b`.

`conditions/<id>.ron` — one condition per file; stem == id. The SRD's paralyzed ships as the proof; frightened, restrained, blinded and the rest are one file each once their components exist.

**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 |
| --- | --- | --- | --- |
| `components` | `ConditionComponent[]` | required | The engine ConditionComponent reads this condition bundles. |
| `id` | `string` | required |  |
| `name` | `string` | required |  |
| `source` | `Source` | required |  |

## Nested shapes

### ConditionComponent

One primitive combat read a condition bundles. PRIMITIVES ONLY — each variant is a real branch in the bubble, and a read without a consumer stays ledgered, never faked (the typing rule). Conditions themselves are DATA (`conditions/<id>.ron`): named bundles of these, so the SRD catalog and a mod's inventions compose without engine code — only a NEW read (speed 0, blinded sight, disadvantage out) is code. The catalog crossed the eighth read, so the compiled mask widened from u8 to u16 (`combat_bubble::component_bit`) — sixteen fit it, the seventeenth widens it again.

#### ConditionComponent::CantAct

The bearer cannot act: its turn passes (the PC gets no candidates), and taking this up breaks the bearer's own concentration.

#### ConditionComponent::NoReactions

No reactions: the bearer makes no opportunity attacks.

#### ConditionComponent::AdvAgainst

Attack rolls against the bearer have advantage.

#### ConditionComponent::AutoCritInReach

A hit on the bearer from within 5 ft is an automatic critical.

#### ConditionComponent::AutoFailStrDex

The bearer automatically fails Strength and Dexterity saving throws.

#### ConditionComponent::Speed0

The bearer's movement budget is 0 (grappled, restrained): it cannot step, and Dash buys nothing.

#### ConditionComponent::SelfAttackDisadvantage

The bearer's OWN attack rolls have disadvantage (blinded, frightened, poisoned, prone, restrained).

#### ConditionComponent::AttackerDisadvantage

Attack rolls AGAINST the bearer have disadvantage — the unseen (invisible) foe an attacker cannot find.

#### ConditionComponent::DisadvantageOnChecks

The bearer's ability checks have disadvantage (poisoned, frightened) — read where a check resolves (the bubble's Medicine/Stabilize check).

#### ConditionComponent::ProneTarget

The prone bearer's positional against-read: an attacker within 5 ft has advantage, one beyond has disadvantage.

#### ConditionComponent::ResistAllDamage

The bearer takes half of EVERY kind of damage (petrified's resistance to all damage) — the `apply_damage` seam with an all-kinds flag.

#### ConditionComponent::CantAttackSource

The bearer cannot attack the SOURCE of this condition, nor target it with a harmful ability (charmed's combat clause) — read SOURCE-AWARE off the Ongoing's `source` at the attack gate, since the compiled mask alone carries no source. The charmer's social-check advantage has no bubble consumer (ledgered), and the "harmful magic" half beyond a weapon strike waits on casters-in-sim (ledgered).

### Source

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

#### Source::Srd51

SRD 5.1 — the System Reference Document, the shipped baseline.

#### Source::Original

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

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

