Dice Builder

Le DiceBuilder est une API fluide pour créer des lancers de dés.

Exemples

Usage basique :

let dice = Dice.create(8).add(5);  // 8 + 5
let dice = Dice.create("3d6").add(5);  // 3d6 + 5
let dice = Dice.create("3d6").add('@dexterity');  // 3d6 + @dexterity
let dice = (new DiceBuilder("3d6")).add(5);  // 3d6 + 5
let dice = Dice.create("3d6");  // 3d6
let extra = Dice.create("2d8").minus(5);  // 2d8 - 5
let final = dice.add(extra);  // 3d6 + (2d8 - 5)

En utilisant les fonctions :

let dice = Dice.create("1d20")
    .add(5)
    .divide(2)
    .round();
    // round((1d20 + 5)/2)

Example avancé :

let dice = Dice.create("3d6")
    .compare(">", 10)
    .ternary("1d20", "1d10")
    .tag("fire", "attack")
    // (3d6 > 10 ? 1d20 : 1d10)[fire, attack]

Les instances du DiceBuilder peuvent être directement passées à la méthode Dice.roll() :

init = function(sheet) {
    sheet.get('attack').on('click', function() {
        let dice = Dice.create('2d20')  // 2d20
            .keeph() // retient le meilleur
            .tag('advantage');  // ajoute le tag "advantage"

        Dice.roll(sheet, dice, 'My attack with advantage');
    });
};

Methods

Voici les méthodes disponibles :

  • .add(value)
  • .minus(value)
  • .multiply(value)
  • .divide(value)
  • .tag(tag1, tag2, ...)
  • .compare(type, right, weights)
  • .round()
  • .ceil()
  • .floor()
  • .keeph(max)
  • .keepl(max)
  • .remh(max)
  • .reml(max)
  • .expl(explode1, explode2, ...)
  • .expladd(explode1, explode2, ...)
  • .mul(multiplier)
  • .reroll(reroll1, reroll2, ...)
  • .rerolln(reroll1, reroll2, ..., max)
  • .ternary(then, else)