Dice Testing

  • Judge

    Anyone who sees this, feel free to play around and test some dice rolling.

    To make a roll, type /roll followed by supported dice notation as outlined below. Multiple rolls can be made per post, but it needs to be on a separate line.

    Such as:

    /roll 3d6
    /roll 1d20+2
    /roll d%


    The standard notation formats are accepted, such as 2d6+12, and also the use of L or H to represent the lowest or highest roll respectively. ie. 4d6-L (A roll of 4 six-sided dice, dropping the lowest result)


    You can also use multiply and divide mathematical operators; 1d6*5 or 2d10/d20.

    Percentile dice (d%)

    Although percentile dice can be rolled by using a d100, you can also use d%, which will do the same thing, returning a number between 0 and 100.

    Exploding dice

    Exploding dice roll an additional die if the maximum, on that die, is rolled. If that die is also the maximum it is rolled again, and so forth, until a roll is made that isn't the maximum.
    ie. Rolling a 6 on a d6, or a 10 on a d10.

    To explode a dice, add an exclamation mark after the die sides: 4d10!

    Each exploded die shows as a separate roll in the list, like so:

    2d6!: [4, 6!, 6!, 2] = 20

    Where the second roll exploded, so we rolled again, which also exploded. The fourth roll, however, did not, so we stop rolling.

    You can even use L and H, which will look at exploded dice, as well as normal rolls.
    i.e. 1d6!-L: [6!,6!,6!,3]-L = 18


    Don't worry about this unless you wanna play with it.


    Sometimes, you may want the exploded dice rolls to be added together under the same, original roll. In this situation, you can compound the dice by using two exclamation marks: 4d10!!

    For example (using the examples of exploding dice above):

    2d6!!: [4, 14!!] = 20 // the exploded dice rolls of [6, 6, 2] are added together
    1d6!!-L: [21!!]-L = 18 // the exploded dice rolls of [6, 6, 6, 3] are added together


    Some exploding dice system use a penetrating rule.

    Taken from the Hackmaster Basic rules:

    Should you roll the maximum value on this particular die, you may re-roll and add the result of the extra die, less one point, to the total (penetration can actually result in simply the maximum die value if a 1 is subsequently rolled, since any fool knows that 1-1=0). This process continues indefinitely as long as the die in question continues to come up maximum (but there’s always only a –1 subtracted from the extra die, even if it’s, say, the third die of penetration)

    So, if I rolled 1d6 (penetrating), and got a 6, I would roll another d6, subtracting 1 from the result. If that d6 rolled a 6 (before the -1) it would penetrate, and so on.

    The syntax for penetrating is very similar to exploding, but with a lowercase 'p' appended: 2d6!p. i.e. (Using the same example from exploding dice above):

    2d6!p: [4, 6!p, 5, 1] = 20

    Where the second roll exploded, so we rolled again, which also exploded (rolled a 6). The fourth role, however, rolled a 2, so did not penetrate, so we stop rolling.
    Remember that we subtract 1 from penetrated rolls, which is why we show '5' and '1', instead of '6', and '2'.

    You can also compound penetrating dice, like so: 2d6!!p

    Compare point

    By default, Exploding and penetrating dice do so if you roll the highest number possible on the dice (ie. a 6 on a d6, a 1 on a Fudge die). You can easily change the exploding compare point by adding a comparison after it. ie. to explode only if you roll a 4:


    Or exploding if you roll anything over a 4:


    You can also use this with penetrating and compounding dice:

    2d6!!<=4 // compound if you roll a 4 or lower
    2d6!p!=4 // penetrate if you *don't* roll a 4

    There is an obvious issue here, wherein you can't do a normal explode if you don't roll a certain number. ie:


    This will actually tell it to compound if you roll a 4. Solutions are currently being looked in to.

    Fudge dice

    Fudge notation is also supported. It allows both dF.2 and less common dF.1.

    You can also use it in conjunction with other operators.


    dF      // this is the same as `dF.2`
    4dF.2   // roll 4 standard fudge dice
    4dF.2-L // roll 4 standard fudge dice, subtracting the lowest result
    dF.1*2  // roll non-standard fudge dice, multiplying the result by 2

    Dice pools

    Some systems use dice pool, whereby the total is equal to the number of dice rolled that meet a fixed condition, rather than the total value of the rolls.

    For example, a "pool" of 10 sided dice where you count the number of dice that roll an 8 or higher as "successes". This can be achieved with:


    You can define various success conditions, by simply adding number comparisons directly after the dice roll. Because of this, you can not have a pool dice that also explodes.


    2d6=6: [4,6*] = 1               // only a roll of 6 is a success
    4d3>1: [1,3*,2*,1] = 2          // higher than a 1 is a success
    4d3<2: [1*,3,2,1*] = 2          // lower than a 2 is a success
    5d8>=5: [2,4,6*,3,8*] = 2       // higher than or equal to 5 is a success
    6d10<=4: [7,2*,10,3*,3*,4*] = 4 // less than or equal to 4 is a success

    You can mix pool dice with other dice types or equations, and it will use the number of successes as the value in the equation:

    2d6>4+3d5: [4,5*]+[3,1,1] = 6   // 1 success + the raw values of the other rolls
    2d6>4*d6!: [6*,5*]*[6!,4] = 20  // 2 successes * raw values of the other rolls
    2d6>4+2: [3,5*]+2 = 3           // 1 success + 2
    2d6>4+H: [3,5*]+H = 2           // Highest roll is 5, which is a success, so `H` has a value of 1
    2d6<4+H: [3*,5]+H = 1           // Highest roll is 5, which is a failure, so `H` has a value of 0

    The successes property on the DiceRoll object will provide the number of successes for a roll.

    However, if the roll is just dice pool, and does not contain any other operations, or dice rolls, then the value provided will be the same as the totals property.


    Parenthesis are recognized anywhere in notations to group sections and define the order of operations:

    1d6+2*3: [4]+2*3 = 10
    (1d6+2)*3: ([4]+2)*3 = 18

    You can also use an array of mathematical formulas and functions. Internally it uses Math.Js, so you should be able to use any of its built in arithmetic functions.

    Some examples:

    round(4d10/3): round([3,6,1,1]/3) = 3.7  // round the result to the nearest whole number
    floor(4d10/3): round([3,6,1,1]/3) = 3.6  // round the result down to the nearest whole number
    ceil(4d10/3): round([3,6,1,1]/3) = 3.7   // round the result up to the nearest whole number

  • 2d10/d20: [2,9]/[3] = 3.67

  • Judge

    Well, it should be replaying with @NerdBot and not @Admin so that's one issue...

    /roll 1d20+10

  • 1d20+10: [16]+10 = 26

  • Judge

    /roll d%

  • d%: [100] = 100

  • Judge


    /roll d%

  • d%: [28] = 28

  • Judge

    Let's try the new user (see if it responds):

    /roll 1d4

  • Bot

    1d4: [3] = 3

  • Judge

    Awwww yeah.

    /roll d%

  • Bot

    d%: [59] = 59

  • Judge

    Let's try 4d6 drop the lowest.

    /roll 4d6-L

  • Bot

    4d6-L: [5,1,3,2]-L = 10

  • Judge


  • Judge

    How about 4d6 EXPLODING on 6s...

    /roll 4d6!

  • Bot

    4d6!: [3,5,6!,1,6!,3] = 24

  • Judge

    How about 3d6, exploding, drop the lowest?

    /roll 1d6!-L

  • Bot

    1d6!-L: [1]-L = 0

  • Judge

    3d6 I meant...

    /roll 3d6!-L

Log in to reply

Follow Nerd Louisville!

Online Users

Top Topics