FeatDef
feats/<id>.srd.ron — one feat per file; stem == id. A feat is the OTHER branch of the ability-score-improvement choice: at an ASI level a soul may take a feat INSTEAD of the deterministic +2 (crate::feats). The SRD 5.1 prints exactly ONE feat — Grappler — so the shipped catalog is one file and the rest is a MOD surface (see ATTRIBUTION.md).
A feat carries its SUBSTRATE, never a faked mechanic (the ledger-don't-fake rule): its live content is the ability PREREQUISITE (gated at the taking-up) and the optional ASI COMPONENT (a half-feat's +1, applied when the chosen slot lands). A feat whose whole mechanic is ledgered (Grappler's grapple riders wait on the grapple slice) ships prereq-only; a feat that gates nothing AND grants nothing has no substrate and is refused by the validator. Passive feat mechanics (the modifier hooks) are the named next rung — ledgered until a feat needs them.
| Field | Type | Required | Description |
|---|---|---|---|
| ability_prereq | any[][] | optional | The SRD ability-score prerequisite — EVERY entry required (Grappler's Strength 13). Checked at the taking-up ( |
| asi | any[][] | optional | The feat's ASI component (a half-feat's "+1 to one score") — applied, capped at 20, when the chosen ASI slot lands. Absent = no score bump (Grappler grants none). |
| id | string | required | |
| name | string | required | |
| source | Source | required |
Nested shapes
Every shape FeatDef 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].
StrDexConIntWisChaSource
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.