Dice Expressions
MapTool's chat window and macro system supports several of the most common dice expressions based on the formats XdY and dY.
In the tables below, the variable Y is described as the "number of sides" on the dice being rolled; in reality the dice roller is picking a random number between 1 and Y. The end result is the same.
Additionally, in the expressions, capital letters signify an argument you must provide, while the lower-case letters are a fixed part of the dice expression. For example, in the expression XdYsS, you replace X, Y, and S with numbers to indicate the number of dice, how many sides the dice have, and what number indicates a success, respectively. The lower case "d" and "s" are left alone. Also, only one expression may be used at a time. For example, you could not combine the expressions of dropping low dice and keeping high dice.
Finally, note that when entering a dice roll directly in chat, you need to use the /roll Chat Commands to execute the roll. In a macro, you would enclose the roll expression in square brackets. For example, if you wanted to roll one twenty sided die, one six sided die, and add 8 to the result:
Directly in chat:
/roll 1d20+1d6+8
In a macro:
[1d20+1d6+8]
You may also access these dice expressions directly using macro functions, see Category:Dice Function.
General Dice Expressions
Expression | Operation | Description | Example | Macro Function |
---|---|---|---|---|
XdY | Roll X dice with Y sides each. If X is not included, roll 1 die with Y sides and present the sum of all rolls in chat | /roll 1d20 rolls one twenty-sided die and presents the total roll in chat | roll() | |
XdYdN | drop | Roll X dice with Y sides each, and drop the lowest N dice afterwards | /roll 4d6d1 rolls four six-sided dice, drops the lowest roll, and presents the total in the chat window | drop() |
XdYkN | keep | Roll X dice with Y sides each, and keep the highest N dice afterwards | /roll 4d6k3 rolls four six-sided dice, keeps the highest 3 rolls, and presents the total in the chat window | keep() |
XdYrL | reroll | Roll X dice with Y sides each, repeatedly rerolling any results lower than L | /roll 3d8r2 rolls three eight-sided dice, repeatedly rerolls any dice that are lower than 2 until all dice rolls are higher than or equal to 2, and then sums and presents the total in chat | reroll() |
XdYrkL | reroll once & keep | Roll X dice with Y sides each, rerolling any results lower than L and keeping the new values | /roll 2d6rk3 rolls two six-sided dice, rerolling (once) any dice that are lower than 3, and presents the total in chat | rerollOnce() |
XdYrcL | reroll once & choose | Roll X dice with Y sides each, rerolling any results lower than L and choosing the higher values | /roll 2d6rc3 rolls two six-sided dice, rerolling (once) any dice that are lower than 3 but choosing the higher of the two results, and presents the total in chat | rerollOnce() |
XdYsT | success | Roll X dice with Y sides each, and count any rolls that meet or exceed T (the "target number") | /roll 4d6s4 rolls four six-sided dice, and counts any individual roll that exceeds four, presenting the number of "successes" in chat | success() |
XdYeL | explode | Roll X dice with Y sides each, and reroll any dice that roll Y, add the new roll to the total. Each Die will roll a maximum of L times if L provided. | /roll 2d6e rolls two six-sided dice, and if either rolls a 6, it is rerolled and added to the total (this continues until neither die rolls a 6). | explode() |
XdYeLsT | exploding success | As success rolls, above, but the individual dice can "explode" (i.e., they are rerolled if they roll their maximum value). Each Die will roll a maximum of L times if L provided. | /roll 4d6es8 will roll 4 six-sided dice, explode any that roll their maximum, and then total the rolls that exceed 8. | explodingSuccess() |
XdYoL | open | Roll X dice with Y sides each, and explode any dice that roll Y, then return the value of all rolls, as well as the highest roll. Each Die will roll a maximum of L times if L provided. | /roll 5d6o rolls 5 six-sided dice, and explodes any that roll 6. | openTest() |
XdYdhZ | drop high | Roll X dice of Y sides, and drop the Z highest | /roll 5d10dh2 rolls five ten-sided dice, drops the two highest, and presents the total in the chat window | dropHighest() |
XdYklZ | keep low | Roll X dice of Y sides, and keep the Z lowest | /roll 5d6kl3 rolls five six-sided dice, keeping the three lowest, and presents the total in the chat window | keepLowest() |
XdYuZ | upper bound | Roll X dice of Y sides, with an upper bound of Z for each roll. | /roll 5d6u4 rolls five six-sided dice, replacing any results higher than 4 with 4, and presents the total in the chat window | rollWithUpper() |
XdYlZ | lower bound | Roll X dice of Y sides, with a lower bound of Z for each roll. | /roll 5d6l2 rolls five six-sided dice, replacing any results lower than 2 with 2, and presents the total in the chat window | rollWithLower() |
XdYaZuW | add, upper bound | Roll X dice of Y sides, add Z to each roll. Apply an upper bound of W to each result. | /roll 5d6a1u6 rolls five six-sided dice, adding 1 to each, replacing intermediate results higher than 6 with 6, and presents the total in the chat window | rollAddWithUpper() |
XdYaZlW | add, lower bound | Roll X dice of Y sides, add Z to each roll. Apply a lower bound of W to each result. | /roll 5d6a1l3 rolls five six-sided dice, adding 1 to each, replacing intermediate results lower than 3 with 3, and presents the total in the chat window | rollAddWithLower() |
XdYsZuW | subtract, upper bound | Roll X dice of Y sides, subtract Z from each roll. Apply an upper bound of W to each result. | /roll 5d6s1u4 rolls five six-sided dice, subtracting 1 from each, replacing intermediate results higher than 4 with 4, and presents the total in the chat window | rollSubWithUpper() |
XdYsZlW | subtract, lower bound | Roll X dice of Y sides, subtract Z from each roll. Apply a lower bound of W to each result. | /roll 5d6s1l2 rolls five six-sided dice, subtracting 1 from each, replacing intermediate results lower than 2 with 2, and presents the total in the chat window | rollSubWithLower() |
Game-Specific Dice Expressions
Expression | Game System | Operation | Description | Macro Function |
---|---|---|---|---|
asX | Ars Magica | Stress Dice | Rolls X dice. Returns result as string. | arsMagicaStress() |
asXb#+Z | Ars Magica | Stress Dice | Rolls X dice, adding Z to result. Returns result as string. | arsMagicaStress() |
asXb#-Z | Ars Magica | Stress Dice | Rolls X dice, subtracting Z from result. Returns result as string. | arsMagicaStress() |
asX | Ars Magica | Stress Dice | Rolls X dice. Returns result as number. | arsMagicaStressNum() |
asXb#+Z | Ars Magica | Stress Dice | Rolls X dice, adding Z to result. Returns result as number. | arsMagicaStressNum() |
asXb#-Z | Ars Magica | Stress Dice | Rolls X dice, subtracting Z from result. Returns result as number. | arsMagicaStressNum() |
XdYh | Hero | Stun Dice | Rolls X dice with Y sides each, keeping track of the results for hero rolls for body damage. Where a roll of 1 = 0 body damage, a roll of Y = 2 body damage and a roll in between these two values = 1 body damage. | hero() |
XdYb | Hero | Body Dice | Returns the body damage from the last XdYb Hero Stun Dice roll as long as X and Y matches the Stun Dice roll | herobody() |
XdYhk | Hero | Killing Dice | Rolls X dice with Y sides each | killing() |
XdYhk+Z | Hero | Killing Dice | Rolls X dice with Y sides each, adding Z | killing() |
XdYhk-Z | Hero | Killing Dice | Rolls X dice with Y sides each, subtracting Z | killing() |
XdYhk | Hero | Killing Dice | Rolls X dice with Y sides each | herokilling2() |
XdYhk+Z | Hero | Killing Dice | Rolls X dice with Y sides each, adding Z | herokilling2() |
XdYhk-Z | Hero | Killing Dice | Rolls X dice with Y sides each, subtracting Z | herokilling2() |
XdYhkm | Hero | Killing Multiplier Dice | Rolls X dice with Y sides each | multiplier() |
XdYhkm+Z | Hero | Killing Multiplier Dice | Rolls X dice with Y sides each, adding Z | multiplier() |
XdYhkm-Z | Hero | Killing Multiplier Dice | Rolls X dice with Y sides each, subtracting Z | multiplier() |
Xdf | Fudge | Fudge Dice | Rolls X Fudge dice (which return -1, 0, or 1), summing the dice and returning the sum | fudge() |
Xdu | Ubiquity | Ubiquity Dice | Rolls X Ubiquity dice, which return 0 or 1, summing the result and returning that value to chat | ubiquity() |
Xsr4 | Shadowrun 4th Ed. | Shadowrun Basic Roll | Roll X number of 6 sided dice. Output the number of Hits (Rolls 5 or above) and the numbers of Ones rolled. If the number of Ones is half or more of X, display Glitch. If the number of Ones is half or more of X and there are no Hits, display Critical Glitch. | sr4() |
Xsr4gT | Shadowrun 4th Ed. | Shadowrun Gremlin Roll | Roll X number of 6 sided dice. Output the number of Hits (Rolls 5 or above) and the numbers of Ones rolled. If the number of Ones is half or more of X minus T, display Glitch. If the number of Ones is half or more of X minus Y and there are no Hits, display Critical Glitch. | sr4() |
Xsr4e | Shadowrun 4th Ed. | Shadowrun Exploding Roll | Roll X number of 6 sided dice. Output the number of Hits (Rolls 5 or above) and the numbers of Ones rolled. Reroll any 6 adding it to the pool. If the number of Ones is half or more of X, display Glitch. If the number of Ones is half or more of X and there are no Hits, display Critical Glitch. | sr4e() |
Xsr4egT | Shadowrun 4th Ed. | Shadowrun Exploding Gremlin Roll | Roll X number of 6 sided dice. Output the number of Hits (Rolls 5 or above) and the numbers of Ones rolled. Reroll any 6 adding it to the pool. If the number of Ones is half or more of X minus T, display Glitch. If the number of Ones is half or more of X minus T and there are no Hits, display Critical Glitch. | sr4e() |
Xsr5 | Shadowrun 5th Ed. | Shadowrun Basic Roll | Roll X number of 6 sided dice. Output the number of Hits (Rolls 5 or above) and the numbers of Ones rolled. If the number of Ones is half or more of X, display Glitch. If the number of Ones is half or more of X and there are no Hits, display Critical Glitch. | sr5() |
Xsr5gT | Shadowrun 5th Ed. | Shadowrun Gremlin Roll | Roll X number of 6 sided dice. Output the number of Hits (Rolls 5 or above) and the numbers of Ones rolled. If the number of Ones is half or more of X minus T, display Glitch. If the number of Ones is half or more of X minus Y and there are no Hits, display Critical Glitch. | sr5() |
Xsr5e | Shadowrun 5th Ed. | Shadowrun Exploding Roll | Roll X number of 6 sided dice. Output the number of Hits (Rolls 5 or above) and the numbers of Ones rolled. Reroll any 6 adding it to the pool. If the number of Ones is half or more of X, display Glitch. If the number of Ones is half or more of X and there are no Hits, display Critical Glitch. | sr5e() |
Xsr5egT | Shadowrun 5th Ed. | Shadowrun Exploding Gremlin Roll | Roll X number of 6 sided dice. Output the number of Hits (Rolls 5 or above) and the numbers of Ones rolled. Reroll any 6 adding it to the pool. If the number of Ones is half or more of X minus T, display Glitch. If the number of Ones is half or more of X minus T and there are no Hits, display Critical Glitch. | sr5e() |
XdYq#+Z | DragonQuest | - | Rolls X dice of Y sides, adding Z to each die, summing the result and returning that value to chat | rollAddWithLower() |
XdYq#-Z | DragonQuest | - | Rolls X dice of Y sides, subtracting Z from each die with a minimum of 1, summing the result and returning that value to chat | rollSubWithLower() |