explode: Difference between revisions

From RPTools Wiki
Jump to navigation Jump to search
mNo edit summary
m (Limit argument and example)
 
(5 intermediate revisions by 3 users not shown)
Line 5: Line 5:


|usage=
|usage=
<source lang="mtmacro" line>
<syntaxhighlight lang="mtmacro" line>
explode(times, sides)
explode(times, sides, limit)
</source>
</syntaxhighlight>
'''Parameters'''
'''Parameters'''
{{param|times|The number of times to roll the dice.}}
{{param|times|The number of times to roll the dice.}}
{{param|sides|The number of sides the dice possess.}}
{{param|sides|The number of sides the dice possess.}}
{{param|limit|Total allowed rerolls of each die. Omit, or set to -1 for infinite rerolls.}}


|examples=
|examples=
Roll a twenty-sided dice.
Roll a twenty-sided die.
<source lang="mtmacro" line>
<syntaxhighlight lang="mtmacro" line>
[t: explode(1, 20)]
[t: explode(1, 20)]
</source>
</syntaxhighlight>
Returns a number that is usually between {{code|1}} and {{code|20}}, with the possibility of the maximum value being higher than {{code|20}}.
Returns a number that is usually between {{code|1}} and {{code|20}}, with the possibility of the maximum value being higher than {{code|20}}.
Roll a twenty-sided die.
<syntaxhighlight lang="mtmacro" line>
[t: explode(1, 20, 2)]
</syntaxhighlight>
Returns a number that is usually between {{code|1}} and {{code|20}}, with the possibility of the maximum value being {{code|40}}, as the first roll can be {{code|20}}, triggering an additional roll, but if the second roll is {{code|20}}, it won't be rerolled, as it has reached the two roll limit.


Roll five ten-sided dice, using variables.
Roll five ten-sided dice, using variables.
<source lang="mtmacro" line>
<syntaxhighlight lang="mtmacro" line>
[h: DiceTimes = 5]
[h: DiceTimes = 5]
[h: DiceSides = 10]
[h: DiceSides = 10]
[t: explode(DiceTimes, DiceSides)]
[t: explode(DiceTimes, DiceSides)]
</source>
</syntaxhighlight>
Returns a number than is usually between {{code|5}} and {{code|50}}, with the possibility of the maximum value being higher than {{code|50}}.
Returns a number than is usually between {{code|5}} and {{code|50}}, with the possibility of the maximum value being higher than {{code|50}}.


Line 31: Line 40:


}}
}}
{{change|1.15.0|Added limit argument}}
[[Category:Dice Function]]
[[Category:Dice Function]]

Latest revision as of 23:59, 10 February 2024

explode() Function

Generates random numbers to emulate dice rolls; returns the total of a dice roll where dice that are rolled at maximum value are rolled again with the new roll added to the old. There is no limit to the total that that can be returned by this function, but the odds of each individual number decreases as the total increases past the number of sides.

Usage

explode(times, sides, limit)

Parameters

  • times - The number of times to roll the dice.
  • sides - The number of sides the dice possess.
  • limit - Total allowed rerolls of each die. Omit, or set to -1 for infinite rerolls.

Examples

Roll a twenty-sided die.
[t: explode(1, 20)]

Returns a number that is usually between 1 and 20, with the possibility of the maximum value being higher than 20.


Roll a twenty-sided die.

[t: explode(1, 20, 2)]

Returns a number that is usually between 1 and 20, with the possibility of the maximum value being 40, as the first roll can be 20, triggering an additional roll, but if the second roll is 20, it won't be rerolled, as it has reached the two roll limit.


Roll five ten-sided dice, using variables.

[h: DiceTimes = 5]
[h: DiceSides = 10]
[t: explode(DiceTimes, DiceSides)]
Returns a number than is usually between 5 and 50, with the possibility of the maximum value being higher than 50.

See Also

For another method of rolling dice, see Dice Expressions.


  • 1.15.0 - Added limit argument