A PHP library for "rolling" n dice, with n sides each.
Generates cryptographic random integers for unbiased results.
composer require joshbruce/php-dice-tower
Say you are rolling a character for an RPG using a fairly standard method (4d6, drop the lowest).
use JoshBruce\DiceTower\DicePool;
DicePool::roll4d6()->highest(3)->sum();
// step 1: [3, 5, 2, 1]
// step 2: [5, 3, 2]
// step 3: 10
You do not need to use the magic static method:
use JoshBruce\DiceTower\DicePool;
DicePool::roll(4, 6)->highest(3)->sum();
// step 1: [3, 5, 2, 1]
// step 2: [5, 3, 2]
// step 3: 10
You can also roll a single die using one of the following:
use JoshBruce\DiceTower\DicePool;
DicePool::roll();
// rolls 1d6
DicePool::roll(1, 6);
// rolls 1d6
use JoshBruce\DiceTower\Dn;
Dn::withSides();
// roll 1 die with the given number of sides
The values of the rolls are calculated at instantiation. Therefore, the various fluent methods are about manipulating the initial results or retrieving values from them.
Effectively this is a random number generator using cryptographic random integers suitable for use where unbiased results are critical (random_int
). The minimum value is always 1.
Inspired by AnyDice and driven by the desire to create an MORPG using various dice-based systems; specifically 7DSystem and the Cypher System.
See the .github directory for various details including code of conduct, contribution notes, and so on.
See Contributing documentation for general contribution notes.
- Fork this repo
- Check out repo using GitHub Desktop or Terminal
- Verify Composer is installed:
~ composer --version
~ cd /path/to/repo
~ composer install
- Wait until complete
~ ./vendor/bin/phpunit
(if you havephpunit
available globally that is okay)- All tests should pass
Make desired alterations and submit a PR.