Files
nethack/dat/nhlib.lua

44 lines
989 B
Lua

-- compatibility shim
math.random = function(...)
local arg = {...};
if (#arg == 1) then
return 1 + nh.rn2(arg[1]);
elseif (#arg == 2) then
return nh.random(arg[1], arg[2] + 1 - arg[1]);
else
-- we don't support reals
error("NetHack math.random requires at least one parameter");
end
end
function shuffle(list)
for i = #list, 2, -1 do
local j = math.random(i)
list[i], list[j] = list[j], list[i]
end
end
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