diff --git a/public/scripts/variables.js b/public/scripts/variables.js index 1eecb3b77..8ec5abe4b 100644 --- a/public/scripts/variables.js +++ b/public/scripts/variables.js @@ -637,9 +637,19 @@ function lenValuesCallback(value) { return parsedValue.length; } -function randValuesCallback(from, to) { +function randValuesCallback(from, to, args) { const range = to - from; - return from + Math.random() * range; + const value = from + Math.random() * range; + if (args.round == 'round') { + return Math.round(value); + } + if (args.round == 'ceil') { + return Math.ceil(value); + } + if (args.round == 'floor') { + return Math.floor(value); + } + return value; } export function registerVariableCommands() { @@ -673,5 +683,5 @@ export function registerVariableCommands() { registerSlashCommand('sqrt', (_, value) => sqrtValuesCallback(value), [], '(a) – performs a square root operation of a value and passes the result down the pipe, can use variable names, e.g. /sqrt i', true, true); registerSlashCommand('round', (_, value) => roundValuesCallback(value), [], '(a) – rounds a value and passes the result down the pipe, can use variable names, e.g. /round i', true, true); registerSlashCommand('len', (_, value) => lenValuesCallback(value), [], '(a) – gets the length of a value and passes the result down the pipe, can use variable names, e.g. /len i', true, true); - registerSlashCommand('rand', (args, value) => randValuesCallback(Number(args.from ?? 0), Number(args.to ?? (value.length ? value : 1))), [], '(from=number=0 to=number=1) – returns a random number between from and to, e.g. /rand or /rand 10 or /rand from=5 to=10', true, true); + registerSlashCommand('rand', (args, value) => randValuesCallback(Number(args.from ?? 0), Number(args.to ?? (value.length ? value : 1)), args), [], '(from=number=0 to=number=1 round=round|ceil|floor) – returns a random number between from and to, e.g. /rand or /rand 10 or /rand from=5 to=10', true, true); }