### 5 unstable releases

Uses old Rust 2015

0.3.1 | Jun 15, 2019 |
---|---|

0.3.0 | Mar 4, 2018 |

0.2.0 | Aug 12, 2017 |

0.1.1 | Aug 11, 2017 |

0.1.0 | Aug 11, 2017 |

#**135** in Games

**CC0**license

26KB

500 lines

# rfyl - An RPG dice roller.

A dice roller accepting dice notation written in Rust. Not maintained.

Also on crates.io if you want.

## Supported input

- Basic standard dice notation:

,`d8`

.`2d12` - Addition:

.`d4``+`2d6 - Subtraction:

.`d100``-``15` - Multiplication:

.`d12``*``2` - Division:

. (Note that fractional values are rounded to the nearest integer.)`d100``/``15` - Brackets:

.`(`d100`+`d12`)``/``15` - Complex dice notation:

.`1d4``+`2d6`*`3d2`/`4d8`+``(`2d6`+`3d8`)``-``16``*``(``1``/`1d4`)` - Percentile dice shorthand:

=`d``%`

.`d100` - Boolean dice:

=`1d1`

or`0`

.`1`

## License

rfyl is Public Domain software available under the Creative Commons 0. See LICENSE and COPYING for more information.

###
`lib.rs`

:

RFYL implements the common dice notation used in many role playing game systems.

## Supported input

- Basic standard dice notation:

,`d8`

.`2d12` - Addition:

.`d4``+`2d6 - Subtraction:

.`d100``-``15` - Multiplication:

.`d12``*``2` - Division:

. (Note that fractional values are rounded to the nearest integer.)`d100``/``15` - Brackets:

.`(`d100`+`d12`)``/``15` - Complex dice notation:

.`1d4``+`2d6`*`3d2`/`4d8`+``(`2d6`+`3d8`)``-``16``*``(``1``/`1d4`)` - Percentile dice shorthand:

=`d``%`

.`d100` - Boolean dice:

=`1d1`

or`0`

.`1`

## Example

`use` `rfyl``::`roll`;`
`//` This would actually probably come from user input, or be computed in some other way.
`let` requested_roll `=` `String``::`from`(``"`(1d20 * 2) + (1d4 + 1) / 2`"``)``;`
`//` Rolling can fail, for instance if an illegal digit is supplied.
`//` Therefore, roll() returns a Result which must be unwrapped.
`let` roll `=` `roll``(`requested_roll`)``.``unwrap``(``)``;`
`//` On a successful roll, roll() returns a DiceRolls struct which can be
`//` interrogated for its formula and result.
`println!``(``"``{}`: `{}``"``,` roll`.``get_rolls_formula_string_as_infix``(``)``,` roll`.``get_result``(``)``)``;`
`//` Should print "[[1d20 * 2] + [[1d4 + 1] * 2]]: 10" (for arbitrary values of 10).

See the included command line program (src/bin.rs) for further examples of how to use the DiceRolls struct.

#### Dependencies

~1MB

~16K SLoC