Daggerheart Content Expressibility
How the Daggerheart game system’s runtime primitives map to the reference content corpus (786 entries across abilities, items, adversaries, rules, etc.).
Coverage Summary
| Status | Count | Notes |
|---|---|---|
| Covered | 774 | Expressible through existing primitives or classified as non-goal |
| Gap | 9 | Require new domain models (see Remaining Gaps below) |
| Not Applicable | 3 | Editorial/supporting content without mechanical requirements |
Expressibility Model
Each reference entry’s mechanical effects are classified against the runtime command surface. An entry is covered when every detected effect maps to an existing primitive that the GM (or automation) can invoke.
Ability Effect Primitives
Domain card and class/subclass abilities are classified by the ability effect classifier (internal/tools/daggerheartaudit/ability_effect_classifier.go).
| Effect Category | Primitive | Status |
|---|---|---|
| Damage | AdversaryDamageApply, MultiTargetDamageApply | Expressible |
| Condition | ConditionChange | Expressible |
| Roll modifier | ApplyStatModifiers (trait targets) | Expressible |
| Healing | ApplyCharacterStatePatch | Expressible |
| Resource grant | ApplyCharacterStatePatch (hope, stress, armor) | Expressible |
| Temporary buff | ApplyCharacterStatePatch, ApplyStatModifiers | Expressible |
| Stat override | ApplyStatModifiers (derived + base traits) | Expressible |
| Movement | — | Non-goal (no positioning model) |
Item / Consumable Effect Primitives
Items and consumables are classified by the item effect classifier (internal/tools/daggerheartaudit/item_effect_classifier.go).
| Effect Category | Primitive | Status |
|---|---|---|
| HP restore | ApplyCharacterStatePatch | Expressible |
| Stress reduce | ApplyCharacterStatePatch | Expressible |
| Hope grant | ApplyCharacterStatePatch | Expressible |
| Damage | AdversaryDamageApply, MultiTargetDamageApply | Expressible |
| Condition | ConditionChange | Expressible |
| Stat modifier | ApplyStatModifiers (base traits: strength, finesse, etc.) | Expressible |
| Roll modifier | ApplyStatModifiers (trait modifiers affect rolls) | Expressible |
| Movement | — | Non-goal |
| Weapon modifier | — | Missing model |
| Equipment stat | — | Missing model |
| Downtime | — | Missing model |
Adversary Expressibility
All 129 adversary entries are covered through the adversary content and session flow surfaces (spawn, attack, damage, defeat).
Remaining Gaps (9)
All remaining gaps are missing_model in the item-use-modeling epic (p3).
Downtime items (7)
These items reference crafting economy or downtime-move mechanics that have no runtime model.
| Reference ID | Item | Effect |
|---|---|---|
consumable-potion-of-stability | Potion of Stability | Choose one additional downtime move |
item-minor-health-potion-recipe | Minor Health Potion Recipe | Craft a potion during downtime |
item-minor-stamina-potion-recipe | Minor Stamina Potion Recipe | Craft a potion during downtime |
item-mythic-dust-recipe | Mythic Dust Recipe | Craft during downtime |
item-vial-of-darksmoke-recipe | Vial of Darksmoke Recipe | Craft during downtime (costs Stress) |
item-paragon-s-chain | Paragon’s Chain | Downtime meditate + once/long-rest Hope Die swap |
item-premium-bedroll | Premium Bedroll | Auto-clear 1 Stress during downtime |
Why these are gaps: The system has rest commands (short/long) but no downtime-move model — no way to declare available downtime actions, track downtime move counts, or trigger crafting outcomes.
Weapon modifier items (2)
These items attach weapon features to existing weapons.
| Reference ID | Item | Effect |
|---|---|---|
item-bloodstone | Bloodstone | Attach to weapon → Brutal feature |
item-greatstone | Greatstone | Attach to weapon → Powerful feature |
Why these are gaps: Weapons exist as read-only content. There is no runtime mutation surface for attaching or removing weapon features.
Non-Goals
- Movement/positioning: No spatial model exists and none is planned. Effects referencing teleport, fly, climb, etc. are classified as non-goal.
- Automated item-effect pipelines: Item effects are GM-interpreted, not auto-triggered.
UseConsumabledecrements quantity; the GM separately invokes the appropriate primitive (stat modifier, damage, etc.).
Audit Tool
The audit workspace is generated by internal/tools/daggerheartaudit/:
go run ./internal/tools/daggerheartaudit generate # regenerate workspace
go run ./internal/tools/daggerheartaudit check # validate against corpus
Generated artifacts live in docs/reference/daggerheart-audit/:
| File | Contents |
|---|---|
summary.json | Aggregate counts by kind, audit area, and status |
audit_matrix.json | One row per reference entry with classification |
epics.json | Remediation epics synthesized from gap rows |
inventory.json | Normalized reference corpus index |
rule_clauses.json | Clause-level breakdown for rules/glossary/playbooks |
Scenario Evidence
Key scenario tests that verify primitive consumption:
| Scenario | Verifies |
|---|---|
stat_modifier_lifecycle.lua | Add/remove/rest-clear lifecycle for stat modifiers |
stat_modifier_evasion_consumption.lua | Evasion modifiers affect adversary attack outcomes |
stat_modifier_threshold_consumption.lua | Threshold modifiers affect damage severity |
stat_modifier_action_roll_consumption.lua | Base-trait modifiers flow into action roll totals |
stat_modifier_trait_stacking.lua | Multiple trait modifiers stack and clear independently |
condition_lifecycle.lua | Condition add/remove/rest-clear lifecycle |
damage_thresholds_example.lua | Damage resolution with threshold calculation |
rest_and_downtime.lua | Rest clearing of temporary state |