You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
1.4.0: action/spell parent inheritance + clock-collapse for counters
Action and spell objects can inherit a library entry via `parent: <name>`:
the named entry resolves first, then the object's own fields override it.
Scalars (toHit, verb, slot, ...) replace outright; the dmg and effects
arrays replace the parent's unless they contain an "inherit" string element,
which splices the parent's array in at that position ([inherit, X] appends,
[X, inherit] prepends). The child keeps its own name and `parent` is
consumed. This covers "Roice's Glaive" (Glaive + toHit override), Sneak
Attack re-stats (full dmg replace), magic weapons ("Shortsword of Ice" =
Shortsword dmg + a cold component), and 2024-style spell upcasting
(Fireball + 2d6 at 5th).
A single resolveActionRef in library-loader does the lookup/merge and is
wired through every action-consumption site: the bar's via dropdown
(actions and spells), initActionUses, the per-turn uses reset,
applyStartEffects, and the readiness check. Resolution stays lazy so a
parent pointing at a library entry that loads after first render still
resolves. If a parent name doesn't resolve, the child is used as authored,
minus the dangling pointer.
specs/dnd-combat-schema.md documents parent/inherit (a CombatAction table
row, a dedicated subsection with examples, and the Spell note).
Counters: counter pills auto-added from an action collapse behind a single
clock-icon button (src/icons/clock-solid-full.svg), mirroring the auto-tags
pill. Collapsed by default; the pill shows the count and expands them.
Manually-added counters stay inline. Hidden auto-counters still tick on
commit; the collapse is purely visual.