Tabletop RPG Dice roller


License
Apache-2.0
Install
pip install dicetray==2.1.1

Documentation

Dicetray

https://img.shields.io/codecov/c/github/gtmanfred/dicetray https://img.shields.io/pypi/v/dicetray https://img.shields.io/pypi/l/dicetray https://img.shields.io/pypi/dm/dicetray

Tabletop RPG Dice rolling manager for handling Standard Dice Notation

Grammer

Below is the grammer that is used by the parser generator to intepret inputs.

statement : expr
          | expr PLUS expr
          | expr MINUS expr
          | expr TIMES expr
          | expr DIVIDE expr

expr : NUMBER
     | dice
     | func

func : dice
     | dice KEEPHIGH
     | dice KEEPLOW
     | dice DROPHIGH
     | dice DROPLOW
     | dice KEEPHIGH NUMBER
     | dice KEEPLOW NUMBER
     | dice DROPHIGH NUMBER
     | dice DROPLOW NUMBER

dice : NUMBER DIE NUMBER
     | NUMBER DIE TYPE

PLUS : +
MINUS : -
TIMES : *
DIVIDE : /

NUMBER: [0-9]+
TYPE: [fF%]
DIE : d
KEEPHIGH: kh
KEEPLOW: kl
DROPHIGH: dh
DROPLOW: dl

Example

>>> from dicetray import Dicetray
>>> Dicetray('1d20 + 3').roll()
15
>>> Dicetray('4d6dl').roll()
10
>>> Dicetray('4d6kh3').roll()
12
>>> d = Dicetray('2d20kh + 1d4 + 3')
>>> d.result
>>> d.dice
set()
>>> d.roll()
18
>>> d.dice
{<Dice (d20): 14>, <Dice (d20): 14>, <Dice (d4): 1>}
>>> d.result
18