Skip to content

Rules Reference: Resources

Resource rules give an item (or the character) a pool to spend: charges, dice, or combat-only mana. Pools can be consumed by item activations and refilled on rests or other events.

Shared fields

Every rule also has a Label, Identifier, Condition, Priority, a Disabled toggle, and a Suppress activation card setting. Those are explained once in Rules Builder Basics.

Charge Consumer

Spend charges from an item or actor pool when this rule’s owner is activated.

FieldWhat it doesOptionsDefault
poolIdentifierCharge pool pickerCharge pool pickerNone
poolScopeTextitem, actoritem
costNumber or formulaNumber or formula1

Charge Pool

Define a refillable pool of charges (per item or actor) with one or more recovery triggers.

FieldWhat it doesOptionsDefault
ScopeWhere the pool lives. "Item" pools live on this item; "Actor" pools live on the actor and can be shared by features that reference the same identifier.item, actoritem
Max chargesCapacity formula. Flat (3), formula (@key), or actor data (@strength).Number or formula1
Die sizeOptional. Set when charges are spent by rolling a die (e.g. Combat Dice). Leave blank for plain counters.d4, d6, d8, d10, d12, d20None
InitialWhether the pool starts full or empty when first granted.max, zeromax
Recoveries → TriggerEvent that drives this recovery (rest type, encounter event, hit, etc.).safeRest, fieldRest, onHit, onCriticalHit, encounterStart, encounterEnd, onWound, onTurnStart, onTurnEnd, onKill, onBloodied, onInitiativeRolledsafeRest
Recoveries → ModeHow the value applies: "add" (gain N), "set" (set to N), or "refresh" (fill to max).add, set, refreshadd
Recoveries → ValueAmount used by the mode. Flat or formula. Ignored when mode is "refresh".Number or formula1

Example: Wand of Scorching Rays. A wand with 3 charges that refills on a safe rest.

  • LabelWand Charges
  • Scopeitem
  • Max charges3
  • Initialmax
  • Recoveries → one entry: TriggersafeRest, Moderefresh

The Label names the pool wherever it is shown. A pool by itself never spends charges automatically; pair it with a Charge Consumer rule (or a Pool effect on the item's activation) to spend charges when the wand is used. Max charges takes formulas too: @key + 1 scales with the character's key stat.

Combat Mana

Grant a mana resource on a combat trigger and clear it on a configurable event.

FieldWhat it doesOptionsDefault
formulaNumber or formulaNumber or formula0
resourceTextTextmana
triggerTextTextinitiativeRoll
clearOnTextTextcombatEnd

Dice Consumer

Spend or auto-apply dice from an item or actor dice pool. "Manual" mode prompts the player at activation; "Auto-bonus" adds every rolled die face to qualifying attacks without consuming the pool.

FieldWhat it doesOptionsDefault
poolIdentifierDice pool pickerDice pool pickerNone
poolScopeTextitem, actoritem
modeTextmanual, autoBonusmanual
costNumber or formulaNumber or formula1
bonusOnAttackDeliveryTextmelee, ranged, anyNone
effectFormulaNumber or formulaNumber or formulaNone
Effect typeWhat a manual spend's effect roll produces. "Generic" posts the total to chat; "Damage Reduction" also banks the total as a one-shot reduction applied to the next damage taken.generic, damageReductiongeneric
Selection outcomeWhat happens to the dice the player picks. "Consume" removes them from the pool; "Maximize" leaves them in place and raises each to the die's highest face, limited to the cost.consume, maximizeconsume

Example: That all you got?! A reaction that spends Fury Dice to soak damage.

  • LabelThat all you got?!
  • Pool identifierfury
  • Modemanual
  • Cost1
  • Effect formula(@strength + @dexterity) * @n
  • Effect typedamageReduction
  • Selection outcomeconsume

A consumer is what makes a dice pool do something. The pool stores the dice; the consumer decides how they are used.

Mode picks between the two shapes:

  • manual puts the player in charge. Activating the item opens the dice panel on their sheet with this feature already selected, they pick which dice to use, and confirming applies the result. Use this for anything the rules text describes as a choice.
  • autoBonus is passive: every face in the pool is added to qualifying attacks automatically and nothing is spent. Attack delivery narrows it to melee, ranged, or any. This is how a pool that snowballs damage works.

Several consumers can share one pool. A Berserker's Fury Dice carry an autoBonus consumer for melee damage and separate manual consumers for the features that spend them, all pointing at the same fury identifier.

Effect formula is evaluated when the player confirms, with two references filled in from their picks: @n is how many dice they chose and @sum is the total of those dice faces. Effect type decides what the result does: generic posts the total to chat and leaves the rest to the table, while damageReduction also banks the total so it is subtracted from the next damage the character takes.

Selection outcome decides what happens to the dice the player picked:

  • consume removes them from the pool. This is the normal case, and it needs an effect formula to be worth showing.
  • maximize leaves them in the pool and raises each one to the die's highest face. Use it for a feature that changes a die rather than spending it. No effect formula is needed, dice already showing their highest face are not offered, and the number of picks is limited by Cost, so a cost of 1 gives the player exactly one choice.

Dice Pool

Define a refillable pool of rolled dice (each die stores its rolled face). Used for snowballing damage pools (Fury Dice) and rolled resources (Judgment Dice).

FieldWhat it doesOptionsDefault
ScopeWhere the pool lives. "Item" pools live on this item; "Actor" pools live on the actor and can be shared by features that reference the same identifier.item, actoritem
Die sizeSize of each die stored in the pool.d4, d6, d8, d10, d12, d20d4
Max diceMaximum number of dice the pool can hold. Flat (3), formula (@key), or actor data (@strength).Number or formula1
InitialWhether the pool starts full (pre-rolled to max) or empty when first granted.max, zeromax
Refills → TriggerEvent that drives this refill (rest type, encounter event, taken damage, etc.).safeRest, fieldRest, onHit, onCriticalHit, encounterStart, encounterEnd, onWound, onTurnStart, onTurnEnd, onKill, onBloodied, onAttacked, onCritReceivedsafeRest
Refills → ModeHow the value applies: "add" (roll N new dice), "set" (rebuild pool to N), or "refresh" (fill to max).add, set, refresh, setIfEmpty, clearadd
Refills → ValueAmount used by the mode. Flat or formula. Ignored when mode is "refresh".Number or formula1
Refills → ConditionOptional condition tested when the trigger fires (e.g. self: raging). Leave empty to always apply.ConditionNone

Example: Fury Dice. The pool a Berserker builds up while Raging.

  • LabelFury Dice
  • Scopeitem
  • Die sized4
  • Max dice@key
  • Initialzero
  • Refills → one entry: TriggeronTurnStart, Modeadd, Value1, Condition{ "self": "raging" }

A dice pool holds rolled die faces, not a count: each die keeps the number it came up with, and features read those numbers. Max dice takes formulas, so @key grows the pool as the character's key stat does.

Initial decides what the pool looks like the moment the feature is granted: max pre-rolls a full pool, zero starts it empty and waits for a refill or an activation to put dice in.

Each Refill entry says when dice come back and how many:

  • Mode add rolls new dice up to the maximum, set rebuilds the pool to exactly that many, refresh tops it up to full, setIfEmpty only acts when the pool is empty, and clear empties it.
  • Value accepts formulas plus two pool-specific references: @poolMax and @poolCurrent.
  • Condition is optional and is checked at the moment the trigger fires, so state that changes mid-combat works correctly. { "self": "raging" } on an onTurnStart refill means the die only arrives on turns where the character is actually Raging.

Not every trigger in the list is wired up yet. The ones that fire today are onTurnStart, onTurnEnd, onAttacked, onCritReceived, and encounterEnd. The others are accepted but never fire, so avoid building a feature that depends on them.

A pool by itself is only storage; it never spends or grants anything. Pair it with a Dice Consumer rule to spend from it or add its faces to attacks, and use Modify Pool on a later feature to grow the die size, raise the maximum, or add more refill triggers.

Modify Consumer

Augment the effect formula of dice-spend consumers targeting a pool (by identifier). Typically attached to a feature that improves how another feature spends its dice.

FieldWhat it doesOptionsDefault
Pool identifierThe identifier of the pool whose consumers to modify (e.g. fury).Dice pool pickerNone
Pool scopeThe scope of the pool whose consumers to modify. Must match the pool: identifiers are only unique within a scope.item, actoritem
Effect type filterOnly modify consumers with this effect type. Leave blank to modify every consumer on the pool., generic, damageReductionNone
Append formulaAppended to matching consumers' effect formula as "+ (...)". Spend tokens @n (dice spent) and @sum (sum of spent faces) are available.Number or formulaNone

Example: Stone's Resilience. A subclass feature that improves how another feature spends Fury Dice.

  • LabelStone's Resilience
  • Pool identifierfury
  • Pool scopeitem
  • Effect type filterdamageReduction
  • Append formula@sum

Modify Consumer edits the effect formula of Dice Consumer rules that target a pool, without touching the feature those consumers live on. It is the consumer counterpart of Modify Pool: use it when a later feature makes an earlier spend better.

Pool scope must match the pool you are aiming at, the same way a Dice Consumer's does. Identifiers are only unique within a scope, so an item-scoped fury and an actor-scoped fury are different pools, and a modifier set to the wrong scope simply does nothing.

The append is added to the matching formula as a sum, so a consumer reducing damage by (@strength + @dexterity) * @n becomes (@strength + @dexterity) * @n + (@sum). The same references are available as in the consumer itself: @n for the number of dice spent and @sum for their total.

Effect type filter narrows which consumers are touched. Left blank it modifies every consumer on the pool; set to damageReduction it only improves spends that soak damage, leaving other features that spend from the same pool alone. That distinction matters on a shared pool, where one feature spends for damage reduction and another for movement.

If several Modify Consumer rules match, each one appends in rule Priority order. The rule's Predicate gates it in the usual way.

Modify Pool

Override or scale an existing dice or charge pool (by identifier): typically attached to a level-up feature to upgrade die size or expand max.

FieldWhat it doesOptionsDefault
Pool typeWhich subsystem to target: dice pools (rolled faces) or charge pools (counters).dice, chargedice
Pool identifierThe identifier of the pool to modify (e.g. fury, judgment, combat-dice). (The input changes with the other field values.)Dice pool pickerNone
Die size overrideReplace the target pool's die size. Leave blank to keep it unchanged.d4, d6, d8, d10, d12, d20None
Max deltaSigned amount added to the target pool's max (e.g. "+1", "-1", "+@level"). Leave blank to keep max unchanged.Number or formulaNone
Minimum faceDice rolled into the target pool below this value are raised to it. Leave blank for no floor. Ignored for charge pools.NumberNone
Additional refills → TriggerEvent that drives this refill (rest type, encounter event, taken damage, etc.).safeRest, fieldRest, onHit, onCriticalHit, encounterStart, encounterEnd, onWound, onTurnStart, onTurnEnd, onKill, onBloodied, onAttacked, onCritReceivedsafeRest
Additional refills → ModeHow the value applies: "add" (roll N new dice), "set" (rebuild pool to N), or "refresh" (fill to max).add, set, refresh, setIfEmpty, clearadd
Additional refills → ValueAmount used by the mode. Flat or formula. Ignored when mode is "refresh".Number or formula1
Additional refills → ConditionOptional condition tested when the trigger fires (e.g. self: raging). Leave empty to always apply.ConditionNone

Example: Intensifying Fury. A level-up feature that upgrades the Berserker's existing Fury Dice.

  • LabelFury Dice to d6
  • Pool typedice
  • Pool identifierfury
  • Die size overrided6
  • Predicate{ "level": { "min": 6 } }

Modify Pool changes a pool that some other feature created, matched by its identifier. This is how progression works without editing the original feature: the level 1 item defines the pool, and each later item carries a modifier that upgrades it. Put one modifier per breakpoint on the same feature, each with its own level predicate, and give the later ones a higher Priority so they win.

The fields are all optional; leave blank the ones you are not changing.

  • Die size override replaces the pool's die (d4 to d6 and so on). Dice already sitting in the pool keep the number they rolled.
  • Max delta is a signed formula added to the maximum: +1, -1, +@level.
  • Minimum face raises any die rolled into the pool that comes up below it. A value of 6 on a d12 pool means every new die is at least a 6. It applies to refills, activation rolls, and the initial fill, but not to a value typed in by hand on the sheet. When several modifiers set one, the highest wins.
  • Additional refills contributes refill entries to the target pool, in the same shape the pool's own refills use. This lets the feature that grants a new trigger carry it, instead of the original pool rule having to know about every later feature.

The rule's own Predicate gates whether the modifier applies at all, so it is the right place for level gates. A condition that flips during play (like being Raging) belongs on the refill entry's own Condition instead, because that is checked when the trigger fires rather than when the pool is built.

Released under the MIT License.