dice_notation.md 2.3 KB

Dice Notation

Dice notation is nearly fully understood by pydice.

Dice

Following patterns can be passed to the Dice.parse() class method, and will then return the corresponding Dice object.

See Wikipedia for a complete definition.

Bases

Die rolls are given in the form AdX. A (amount) and X (sides) are variables, separated by the letter "d", which stands for die or dice.

  • A is the number of dice to be rolled (1 if omitted).
  • X is the number of faces of each die.

If the final number is omitted, it is assumed to be a twenty. (This can be changed trough the class property Dice.DEFAULT_SIDES)

For example, if a game would call for a roll of d4 or 1d4 this would mean, "roll one 4-sided die." 3d6 would mean, "roll three six-sided dice"

Note: the D% notation is read as D100

Selective results

This pattern can be followed by Ln and/or Hn expressions. 'L' and 'H' respectively stand for lowest and highest.

In this case, the lowest/highest n scores will be discard when the dice will be rolled.

3D6L1 will roll three 6-sided dice, and drop the lowest, while 3D6H1 will roll three 6-sided dice, and drop the highest.

If no number follow the 'L' or 'H', it is assumed to be a 1. 'L' and 'H' can be combined inside a single pattern.

Patterns

Following patterns can be passed to the Pattern.parse() class method.

Bases

AdX notations can be integrated in complex expressions.

Any mathematical expression is allowed:

>> 1d10+1d5+1
>> 1d20-6
>> 1d6*2
>> 2d20//4
>> 1d6*(1d4**2)

Builtin python functions

Currently, the following python functions are allowed: abs, max, min

Repeat pattern

The Rn(AdX) notation can be used to repat n times the AdX command.

For example, the pattern R3(2d6+2) will roll 2d6+2 three times.

Examples

1d6 > Roll a 6-sided die 1d6+3 > Roll a 6-sided die, then add 3 2*(1d6+3) > Roll a 6-sided die, add 3, then multiply by 2 3d6L2 > Roll three 6-sided dice, and drop the two lowest. R2(1d6+3) > Similar to 1d6+3+1d6+3 1d% > Similar to 1d100 d6 > Similar to 1d6 min(1d6+10,3d6) > Keep the minimal score between 1d6+10 and 3d6