From c4bb3c904f47bc3b6b2e5dd9332f49a4e9279893 Mon Sep 17 00:00:00 2001 From: copperwater Date: Fri, 28 Feb 2020 21:19:50 -0500 Subject: [PATCH] Implement dice and percent as global lua functions 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. --- dat/nhlib.lua | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/dat/nhlib.lua b/dat/nhlib.lua index fb35acd1c..983542b5b 100644 --- a/dat/nhlib.lua +++ b/dat/nhlib.lua @@ -21,3 +21,23 @@ 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