Dice Formulas
Dice Formulas produce a Dice Pool — a set of dice your character can roll, like 2d6 + d10 or d8 + 4.
They are used wherever you need to define or compute a Dice Pool dynamically, such as Hit Dice, Weapon Damage, or Spell Damage.
Info
This is different from Dice Operators, which extract a number from a Dice Pool. Dice Formulas produce a Dice Pool.
Basics
Dice are written in the standard NdS format, where N is the number of dice and S is the number of sides:
2d6— two six-sided dice
d10— one ten-sided die
2d6 + d10— two d6s and a d10
d8 + 4— one d8, plus a fixed bonus of 4
You can combine multiple Dice Pools by referencing them directly in a formula:
{Weapon Damage} + {Bonus Damage}— adds two dice pools together
Dynamic Dice with Macros
Often, you want a dice expression where the number of dice or the dice size depends on an attribute.
You can't write Strength * d10 — that would try to evaluate everything as a number.
Instead, use a Macro: wrap a formula in [ ] to evaluate it to a number first, and then use it as part of the dice expression.
Number of dice from an attribute
[Strength]d10
Evaluates Strength to a number (e.g. 4), producing 4d10.
Dice size from an attribute
d[lookup({Constitution}: 4, 4, 6, 8, 10, 12, 20)]
Uses a lookup to convert Constitution into a dice size.
For Constitution 0 or 1 → d4, for 2 → d6, for 3 → d8, and so on.
Both at once
[Strength]d[lookup({Constitution}: 4, 6, 8, 10, 12)]
Strength determines how many dice, Constitution determines their size.
Info
Inside the [ ] brackets, you write a regular Formula — references, operators, functions, and lookups all work.
Conditional Dice
You can use the conditional operator to choose between different Dice Pools:
{Tired} > 0 ? {Exhausted Die} : {Rested Die}
If the character's Tired attribute is above 0, use their Exhausted Die pool; otherwise use the Rested Die pool.
This works because when a formula references a Dice Pool, the result is itself a Dice Pool.
Default Values for Dice Pools
You can use a formula to set the default value of a Dice Pool.
A common use case is initializing current dice from a maximum:
Default Value for Hit Dice:
{Max Hit Dice}
This ensures a character's Hit Dice start equal to their Max Hit Dice.
Tip
For further assistance with writing dice formulas for your games, contact us and we'll help you out!