Module:RPG: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
No edit summary |
||
(2 intermediate revisions by the same user not shown) | |||
Line 8: | Line 8: | ||
local num, sides, modifier = string.match(diceString, "(%d+)d(%d+)([%+%-]?%d*)") | local num, sides, modifier = string.match(diceString, "(%d+)d(%d+)([%+%-]?%d*)") | ||
-- Seed the random number generator with the current time | -- Seed the random number generator with the current time | ||
math.randomseed( | math.randomseed(tonumber(mw.getCurrentFrame():preprocess('{{#time:YmdHis}}'))) | ||
--math.randomseed() | |||
num = tonumber(num) or 1 | num = tonumber(num) or 1 | ||
sides = tonumber(sides) or 6 | sides = tonumber(sides) or 6 | ||
Line 41: | Line 42: | ||
local num, sides, modifier = string.match(diceString, "(%d+)d(%d+)([%+%-]?%d*)") | local num, sides, modifier = string.match(diceString, "(%d+)d(%d+)([%+%-]?%d*)") | ||
-- Seed the random number generator with the current time | -- Seed the random number generator with the current time | ||
math.randomseed( | math.randomseed(tonumber(mw.getCurrentFrame():preprocess('{{#time:YmdHis}}'))) | ||
num = tonumber(num) or 1 | num = tonumber(num) or 1 | ||
sides = tonumber(sides) or 6 | sides = tonumber(sides) or 6 |
Latest revision as of 08:19, 29 January 2024
Rolling 3d6+3: 3, 4, 1 = 11
- Rolling 3d6: 3, 4, 1 = 8
- Rolling 2d6+2: 3, 4 = 9
- Rolling 4d6+2: 3, 4, 1, 6 = 16
- Rolling 2d4+4: 2, 3 = 9
- (3d6--2): 3, 4, 1 = 6
- (3d6--3): 3, 4, 1 = 5
- (3d6+1): 3, 4, 1 = 9
- (3d6): 3, 4, 1 = 8
-- Module for rolling RPG dice local p = {} -- Function to roll dice function p.rollDice(frame) local args = frame.args local diceString = args[1] or "" local num, sides, modifier = string.match(diceString, "(%d+)d(%d+)([%+%-]?%d*)") -- Seed the random number generator with the current time math.randomseed(tonumber(mw.getCurrentFrame():preprocess('{{#time:YmdHis}}'))) --math.randomseed() num = tonumber(num) or 1 sides = tonumber(sides) or 6 modifier = tonumber(modifier) or 0 local resultString = "Rolling " .. num .. "d" .. sides if modifier ~= 0 then if modifier>0 then resultString = resultString .. "+" .. modifier else resultString = resultString .. "-" .. modifier end end local total = modifier local individualResults = {} for i = 1, num do local roll = math.random(1, sides) total = total + roll table.insert(individualResults, roll) end resultString = resultString .. ": " .. table.concat(individualResults, ", ") .. " = " .. total return resultString end function p.rollStats(frame) local args = frame.args local diceString = args[1] or "" local num, sides, modifier = string.match(diceString, "(%d+)d(%d+)([%+%-]?%d*)") -- Seed the random number generator with the current time math.randomseed(tonumber(mw.getCurrentFrame():preprocess('{{#time:YmdHis}}'))) num = tonumber(num) or 1 sides = tonumber(sides) or 6 modifier = tonumber(modifier) or 0 local resultString = "(" .. num .. "d" .. sides if modifier ~= 0 then if modifier>0 then resultString = resultString .. "+" .. modifier else resultString = resultString .. "-" .. modifier end end resultString = resultString .. ")" local total = modifier local individualResults = {} for i = 1, num do local roll = math.random(1, sides) total = total + roll table.insert(individualResults, roll) end resultString = resultString .. ": " .. table.concat(individualResults, ", ") .. " = " .. total return resultString end return p