Class feat injections moved to yaml
This commit is contained in:
@@ -2,20 +2,18 @@
|
||||
|
||||
## Status Snapshot
|
||||
|
||||
Current state as of 2026-05-13:
|
||||
Current state as of 2026-05-24:
|
||||
|
||||
- This document is partially stale relative to the implementation in
|
||||
`internal/topdata/native.go`.
|
||||
- Current code injects:
|
||||
- always-on menu feats: `feat:specialattacks`, `feat:throw`,
|
||||
`feat:grapple`, `feat:offensivefighting`, `feat:defensivefighting`,
|
||||
`feat:horsemenu`
|
||||
- conditional combat feats: `feat:powerattack`, `feat:combatexpertise`
|
||||
- class-skill shorthand rows for `masterfeats:skillfocus` at level `-1` and
|
||||
`masterfeats:greaterskillfocus` at level `12`
|
||||
- This contract should be treated as a parity note, not as an exact
|
||||
implementation transcript, until it is fully rewritten around the current
|
||||
behavior.
|
||||
- Current code reads class feat injection policy from
|
||||
`topdata.class_feat_injections` in `nwn-tool.yaml`.
|
||||
- `global_feats` injects concrete `feat:*` references into each
|
||||
`classes/feats/*.json` table, unless the class already authors the same feat.
|
||||
- `global_feats` supports `require_present` and `unless_present` conditions
|
||||
against other feat references already present in the class feat table.
|
||||
- `class_skill_masterfeats` expands configured `masterfeats:*` rows once for
|
||||
each class skill.
|
||||
- If a project omits `topdata.class_feat_injections`, the toolkit keeps the
|
||||
former hardcoded default injections for compatibility.
|
||||
|
||||
## Objective
|
||||
|
||||
@@ -105,12 +103,12 @@ With properties:
|
||||
|
||||
Always inject:
|
||||
|
||||
- `feat:specialattacks`
|
||||
- `feat:special_attacks`
|
||||
- `feat:throw`
|
||||
- `feat:grapple`
|
||||
- `feat:offensivefighting`
|
||||
- `feat:defensivefighting`
|
||||
- `feat:horsemenu`
|
||||
- `feat:offensive_fighting`
|
||||
- `feat:defensive_fighting`
|
||||
- `feat:horse_menu`
|
||||
|
||||
With properties:
|
||||
|
||||
@@ -128,8 +126,8 @@ With properties:
|
||||
|
||||
Inject:
|
||||
|
||||
- `feat:powerattack`
|
||||
- `feat:combatexpertise`
|
||||
- `feat:power_attack`
|
||||
- `feat:combat_expertise`
|
||||
|
||||
With properties:
|
||||
|
||||
@@ -145,9 +143,11 @@ With properties:
|
||||
|
||||
### R6 — Override precedence
|
||||
|
||||
- Overrides MUST be applied after injection.
|
||||
- Overrides MUST take precedence over injected defaults.
|
||||
- Injection MUST NOT block or replace explicit override data.
|
||||
- Explicitly authored class feat rows take precedence over injected rows.
|
||||
- Injection MUST NOT replace explicit class feat data.
|
||||
- Dataset overrides are applied before class feat injection in the native
|
||||
dataset merge pipeline; author a class feat row directly to override or
|
||||
suppress the injected equivalent for a class.
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user