UNPKG

@seroh/roll

Version:

An RPG dice-rolling library with a variety of built-in roll mechanics.

41 lines 1.52 kB
import { AdvantageMechanic } from "../mechanic/AdvantageMechanic"; import { DisadvantageMechanic } from "../mechanic/DisadvantageMechanic"; import { Mechanic } from "../mechanic/Mechanic"; import { SingleRollMechanic } from "../mechanic/SingleRollMechanic"; import { SimpleRandomizer } from "../randomizer/SimpleRandomizer"; export class Roll { min; max; randomizer; mechanic; constructor(min, max, defaults = {}) { this.min = min; this.max = max; this.randomizer = defaults.randomizer || new SimpleRandomizer(); this.mechanic = defaults.mechanic instanceof Mechanic ? defaults.mechanic : new SingleRollMechanic(); } roll(modifier = 0, overrideDefaults = {}) { const mechanic = overrideDefaults.mechanic || this.mechanic; const randomizer = overrideDefaults.randomizer || this.randomizer; const { result: natural, rolls } = mechanic.do(this.min, this.max, randomizer); const modified = natural + (modifier || 0); return { natural, modified, rolls, }; } rollAdvantage(modifier, overrideDefaults = {}) { return this.roll(modifier, { ...overrideDefaults, mechanic: new AdvantageMechanic(), }); } rollDisadvantage(modifier, overrideDefaults = {}) { return this.roll(modifier, { ...overrideDefaults, mechanic: new DisadvantageMechanic(), }); } } //# sourceMappingURL=Roll.js.map