joshbruce/php-dice-tower

A PHP library for rolling various dice and get various results

0.0.6 2020-11-08 22:29 UTC

This package is auto-updated.

Last update: 2024-04-07 12:23:14 UTC


README

A PHP library for "rolling" n dice, with n sides each.

Generates cryptographic random integers for unbiased results.

Installation

composer require joshbruce/php-dice-tower

Usage

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.

Details

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.

Other

See the .github directory for various details including code of conduct, contribution notes, and so on.

Contributing

See Contributing documentation for general contribution notes.

  1. Fork this repo
  2. Check out repo using GitHub Desktop or Terminal
  3. Verify Composer is installed: ~ composer --version
  4. ~ cd /path/to/repo
  5. ~ composer install
  6. Wait until complete
  7. ~ ./vendor/bin/phpunit (if you have phpunit available globally that is okay)
  8. All tests should pass

Make desired alterations and submit a PR.