More than once I've written pages where I need script to, in essence, roll a bunch of dice. Ye fellow gamer geeks will empathize. So I wrote this script and stuck it here so I'd have it handy.
It uses the substr() method, which shouldn't be a problem unless you're somehow reading this page in 1998.
/* roll(); Author: Jeff Yaus A dice roll simulator. roll(x,y) Rolls x dice, each having y sides, and returns the result. So roll(3,6) rolls 3d6 roll("xdy") Rolls x dice, each having y sides, and returns the result. Note: quotes are critical. So roll("3d6") rolls 3d6 roll(z) Rolls 1 die of z sides, and returns the result. So roll(20) rolls 1d20 */ function roll() { var numberOfDice = 0; var numberOfSides = 0; var total = 0; if (arguments.length==2) { numberOfDice = arguments[0]; numberOfSides = arguments[1]; } else if (arguments.length==1) { var arg = arguments[0] + ""; if (arg.indexOf("d") > 0) { numberOfDice = arg.substring(0,arg.indexOf("d")); numberOfSides = arg.substr(arg.indexOf("d")+1); } else { numberOfDice = 1; numberOfSides = arguments[0]; } } for (i=numberOfDice; i>0; i--) { total += Math.floor(Math.random()*numberOfSides) + 1; } return total; }
(Why does the for loop decrement instead of increment? Because this page is pasting in the script from elsewhere, and a < symbol looks like the beginning of an HTML tag to your browser. So we decrement and use > instead.)