Intended to simplify many of the math.random calls currently in use, and
make them more semantic and thus more readable.
The dice function d() takes either a two-argument form which is the same
as in the C source (number of dice, faces per die) or a one-argument
form that rolls a single die.
The percent(N) function returns true N% of the time.
align = { "law", "neutral", "chaos" };
shuffle(align);
+
+-- d(2,6) = 2d6
+-- d(20) = 1d20 (single argument = implicit 1 die)
+function d(dice, faces)
+ if (faces == nil) then
+ -- 1-arg form: argument "dice" is actually the number of faces
+ return math.random(1, dice)
+ else
+ local sum = 0
+ for i=1,dice do
+ sum = sum + math.random(1, faces)
+ end
+ return sum
+ end
+end
+
+-- percent(20) returns true 20% of the time
+function percent(threshold)
+ return math.random(0,99) < threshold
+end