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!