Parses dice notation and rolls dice.
You can grab a hosted version here:
<script src="https://cdn.jsdelivr.net/gh/chapelr/dice-notation@latest/dist/dice.min.js" type="text/javascript"></script>
Or include dist/dice.min.js or dice.js as appropriate in your webpage.
This will expose the global Dice API, or create a UMD module, if appropriate.
npm install dice-notation-js
Then require or import it:
const Dice = require('dice-notation-js');
Exposes three functions, Dice(), Dice.detailed() and Dice.parse().
Syntax:
Dice(notation [, randomFunction])Dice(number, type [, randomFunction])
Takes a string of dice notation, or two numbers representing the number and type of dice to roll, and optionally a randomization function (that replaces Math.random()) and returns the result of the dice roll.
Arguments:
notation(string): You can pass the funciton a string of dice notation, e.g.,3d6+2, or1d20.number(number): You can pass the function a number of dice to roll and the number of sides each die should have. This argument is the number of dice to roll.type(number): You can pass the function a number of dice to roll and the number of sides each die should have. This argument is the number of sides each die should have.randomFunction(function) optional: You may pass a function that returns a random number between 0 and 1 that will be used in place ofMath.random(), such as to use a seedable PRNG.
Examples
Basic use:
// All of the following are functionally the same:
Dice('3d6+2');
Dice('3d6') + 2;
Dice(3, 6) + 2;Using a seedable PRNG, such as seedrandom:
const Dice = require('dice-notation-js');
const prng = require('seedrandom')('hello');
Dice('3d6+2', prng);
Dice('3d6', prng) + 2;
Dice(3, 6, prng) + 2;Syntax:
Dice.detailed(notation [, randomFunction])Dice.detailed(number, type [, randomFunction])
Takes a string of dice notation, rolls it like Dice(), but returns additional details for your use.
Arguments:
notation(string): You can pass the funciton a string of dice notation, e.g.,3d6+2, or1d20.number(number): You can pass the function a number of dice to roll and the number of sides each die should have. This argument is the number of dice to roll.type(number): You can pass the function a number of dice to roll and the number of sides each die should have. This argument is the number of sides each die should have.randomFunction(function) optional: You may pass a function that returns a random number between 0 and 1 that will be used in place ofMath.random(), such as to use a seedable PRNG.
Examples
var roll = Dice.detailed('3d6+10');
console.log(roll);
// -> { number: 3, type: 6, modifier: 10, rolls: [ 2, 1, 6 ], result: 19 } Syntax: Dice.parse(notation)
Takes a string of dice notation and returns an object parsed from it. For example, the notation 6d4-1 returns the following object:
{
number : 6,
type : 4,
modifier -1
}Arguments:
notation(string): You can pass the funciton a string of dice notation, e.g.,3d6+2, or1d20.
Examples
Basic use:
Dice.parse('1d10') // -> { number : 1, type : 10, modifier : 0 }
Dice.parse('3d6+2') // -> { number : 3, type : 6, modifier : 2 }
Dice.parse('2d4-1') // -> { number : 2, type : 4, modifier : -1 }