Skip to content

justjake/dicetower

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
src
 
 
 
 
 
 
 
 
 
 
 
 
 
 

dicetower

  • rip-off of the Nearley calculator grammar with dice rolling added in
  • a hubot bot that lets you talk to the Nearley grammar
const dicetower = require('dicetower');

dicetower.report('2d6 + 2dF + 2')
// -> *13* (12 (rolled 2d6: 6+6) + -1 (rolled 2dfudge: 1+-2) + 2)

// the number of dice or sides of the dice can be computed via dice roll
dicetower.report('(1d20)d20')
// -> *86* (86 (rolled 11d20: 6+1+3+5+9+5+17+9+11+1+19))

// you can roll custom arbirary dice
dicetower.report('2d4 * 1d[2 3 5 7 9 14]')
// -> *12* (6 (rolled 2d4: 4+2) * 2 (rolled 1d[14 2 3 5 7 9]: 2))

// you can get expected value instead of actually rolling dice
dicetower.report('2d4 * 1d[2 3 5 7 9 14]', true);
// *33.333333333333336*
// (3 (expected 5: 2*2.5) * 7 (expected 6.666666666666667: 1*6.666666666666667))

ok so what's this grammar thing?

I dunno. It's cool. It parses your string and does the calculation. You can read it here. This is a Nearley grammar.

Here's a full list of supported expressions

  • parens (3 + 1d4) * 2
  • exponents 4^8
  • multiplication 4 * 4 and division 4 / 1d2
  • addition 1 + 1 and subtraction 2 - 2d4
  • a range of mathematical functions and constants sqrt(sin(5)) * pi
  • unary negative numbers -1 + 5
  • floats and stuff 0.25 * .55
  • dice
    • regular dice 2d8
    • fudge dice 4dF
    • dice with arbitrary custom faces 2d[2 4 6 8 10]
    • any value in a dice expression can be an expression (1d6)d[1 2 3 4 2d4 2d8]

how do i hubot

I think this is how:

  1. you npm install --save dicetower in your hubot dir
  2. you add 'dicetower/lib/hubot_plugin' to your external-scripts.json file

About

dice calculator and fairly advanced hubot dice bot thing

Resources

Stars

Watchers

Forks

Packages

No packages published