@alvarocastro/roll

Library to parse and roll dices from an AdX dice notation string.

Usage no npm install needed!

<script type="module">
  import alvarocastroRoll from 'https://cdn.skypack.dev/@alvarocastro/roll';
</script>

README

Roll

NPM Build Maintainability Coverage Status Bundle Size XO code style semantic-release

Library to parse and roll dices from a string as an AdX dice notation roll, like 1d6, supporting simple transforms like 2d10+5, or more complex like 1d8-1d6/2.

Install

npm install -g @alvarocastro/roll

Usage

const roll = require('@alvarocastro/roll');

roll('1d6');
// => 3

roll('2d8');
// => 11

roll('1d3+1d6');
// => 7

roll('4+3d10/1d6');
// => 6.33333

roll(rollString[, rollCallback])

Returns the result of the parsed and rolled rollString.

rollString

Type: String

Rolls to make in the form of AdX supporting basic mathematical expressions.

rollCallback

Type: Function

Function called for every sub roll made, it receives the sub roll string as first parameter and an array of roll results as second parameter.

roll('2d6+1d8', (roll, results) => {
    console.log(roll, results);
});
// => "2d6", [3, 4]
// => "1d8", [7]

Roll details

To get a detailed output of the roll being made, to check for duplicate rolls, "critical" rolls, etc. roll.detailed() is provided.

const roll = require('@alvarocastro/roll');

roll.detailed('2d10+4');
// => {
//   result: 17,
//   rolls: [
//     {
//       roll: '2d10',
//       result: [
//         7,
//         6
//       ]
//     }
//   ]
// }

Contributing

Contributions are always welcome! Please run npm test beforehand to ensure everything is ok.

Support

If you use this package please consider starring it :)

Related