### 4 releases (2 breaking)

0.3.0 | Jan 8, 2024 |
---|---|

0.2.2 | Mar 13, 2023 |

0.1.1 | Mar 9, 2023 |

0.1.0 | Mar 8, 2023 |

#**813** in Game dev

**MIT/Apache**

36KB

389 lines

# DiceForge

DiceForge is a Rust library for simulating dice rolls. It provides a simple and easy-to-use API for generating random dice rolls and calculating probabilities of different outcomes.

## Features

Supports standard dice notation (e.g. 1d6, 2d10, etc.) Add, subtract, or even multiply modifiers to rolls

## Installation

To use DiceForge in your Rust project, add the following to your Cargo.toml file:

`[``dependencies``]`
`dice_forge ``=` `"`0.2.2`"`

## Usage

To roll a standard six-sided die, you can use the roll function on a compiled

object:`Equation`

`use` `dice_forge``::`Equation`;`
`let` die `=` `Equation``::`new`(``"`1d6`"``)``.``unwrap``(``)``;`
`let` roll `=` die`.``roll``(``)``.``unwrap``(``)``;`
`println!``(``"`You Rolled a `{}``"``,` roll`)``;`

You can also add modifiers to your rolls:

`use` `dice_forge``::`Equation`;`
`let` die `=` `Equation``::`new`(``"`1d6+5`"``)``.``unwrap``(``)``;`
`let` roll `=` die`.``roll``(``)``.``unwrap``(``)``;`
`println!``(``"`You Rolled a `{}` with a +5 modifier`"``,` roll`)``;`

It even takes order of operations into consideration so you could write an equation as complicated as

`use` `dice_forge``::`Equation`;`
`let` die `=` `Equation``::`new`(``"`3+1d6(4+3^2)-6/2`"``)``.``unwrap``(``)``;`
`let` roll `=` die`.``roll``(``)``.``unwrap``(``)``;`
`println!``(``"`You Rolled a `{}``"``,` roll`)``;`

If you do not want to create an

object you can directly roll the equation:`Equation`

`use` `dice_forge``::`roll`;`
`let` damage `=` `roll``::`roll`(``"`1d6`"``)``.``unwrap``(``)``;`
`println!``(``"`You do `{}` damage`"``,` damage`)``;`

You can also roll with advantage or disadvantage:

`use` `dice_forge``::`Equation`;`
`let` die `=` `Equation``::`new`(``"`d20`"``)``.``unwrap``(``)``;`
`let` `mut` roll `=` die`.``advantage``(``)``.``unwrap``(``)``;`
`println!``(``"`You rolled `{}` with advantage`"``,` roll`)``;`
roll `=` die`.``disadvantage``(``)``.``unwrap``(``)``;`
`println!``(``"`You rolled `{}` with disadvantage`"``,` roll`)``;`

You can check out the rest of the documentation at docs.rs

## Contributing

Contributions are welcome! If you find a bug or want to add a new feature, please submit a pull request on GitHub.

or if you would like you can support me:

#### Dependencies

~310KB