# FeatureFact

> Kinbarrow modding reference — content tree `4a103dcdb658a75a`, version `0.2.0+main.e011511f4`.

[Effects and mechanisms](https://kinbarrow.com/modding/latest/mechanisms.md)

Used by [ClassDef](https://kinbarrow.com/modding/latest/class-def.md#feature-fact), [Npc](https://kinbarrow.com/modding/latest/npc.md#feature-fact), [FeatDef](https://kinbarrow.com/modding/latest/feat-def.md#feature-fact), [RaceDef](https://kinbarrow.com/modding/latest/race-def.md#feature-fact), [SubclassDef](https://kinbarrow.com/modding/latest/subclass-def.md#feature-fact).

This is a nested shape inside a content file. The catalog explains context validation and links real RON examples.

One typed fact projected from a reached class-feature grant. `Fact` is boolean presence. `Dice` selects the last `(class level, "NdM")` step at or below the bearer’s level. `Count` is a nonzero integer in the units documented by its key, optionally replaced by its last reached level step. `Level` exposes the granting class level. An absent row means the packet receives no such fact. Level tables must be nonempty, strictly increasing, within levels 1–20, and contain legal dice.

<a id="feature-fact--fact"></a>

## FeatureFact::Fact

Boolean presence of `key`.

Carries `FeatureFactKey`.

<a id="feature-fact--dice"></a>

## FeatureFact::Dice

A dice expression selected from a class-level progression table.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `by_level` | `[uint32, string][]` | required | Strictly increasing `(class level, "NdM")` steps. |
| `key` | `FeatureFactKey` | required | The packet fact receiving the selected dice. |

<a id="feature-fact--count"></a>

## FeatureFact::Count

A nonzero authored count in the units documented by `key`.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `by_level` | `[uint32, uint32][]` | default `[]` | Optional strictly increasing `(class level, count)` replacements. |
| `count` | `uint32` | required | The nonzero count written to the packet. |
| `key` | `FeatureFactKey` | required | The packet fact receiving the count. |

<a id="feature-fact--weapon-filter"></a>

## FeatureFact::WeaponFilter

A disjunction of weapon predicates; a weapon qualifies when any member matches.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `any` | `WeaponPredicate[]` | required | Nonempty alternatives evaluated in authored order. |
| `key` | `FeatureFactKey` | required | The packet fact receiving the authored predicates. |

<a id="feature-fact--level"></a>

## FeatureFact::Level

The reached grant's owning class level.

Carries `FeatureFactKey`.

<a id="feature-fact--skill-proficiencies"></a>

## FeatureFact::SkillProficiencies

Grants the listed skill proficiencies once the feature is reached.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `skills` | `Skill[]` | required | Nonempty skills granted to the composed soul. |

<a id="feature-fact--save-advantage"></a>

## FeatureFact::SaveAdvantage

Grants saving-throw advantage in the listed scopes once the feature is reached.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `scopes` | `SaveAdvantageScope[]` | required | Nonempty scopes eligible for the advantage. |


## Supporting shapes

- [FeatureFactKey](https://kinbarrow.com/modding/latest/class-def.md#feature-fact-key)
- [SaveAdvantageScope](https://kinbarrow.com/modding/latest/class-def.md#save-advantage-scope)
- [Skill](https://kinbarrow.com/modding/latest/spell.md#skill)
- [WeaponPredicate](https://kinbarrow.com/modding/latest/class-def.md#weapon-predicate)
