From 4ec04c03b36e383503642b6a83e803226532c0ad Mon Sep 17 00:00:00 2001 From: Starbeamrainbowlabs Date: Tue, 11 May 2021 21:55:44 +0100 Subject: [PATCH] worldeditadditions.parse.chance: add API function --- worldeditadditions/utils/parse/chance.lua | 13 +++++++++++++ worldeditadditions/utils/parse/init.lua | 3 ++- 2 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 worldeditadditions/utils/parse/chance.lua diff --git a/worldeditadditions/utils/parse/chance.lua b/worldeditadditions/utils/parse/chance.lua new file mode 100644 index 0000000..9b5e13e --- /dev/null +++ b/worldeditadditions/utils/parse/chance.lua @@ -0,0 +1,13 @@ + +--- Parses a chance value, and returns the 1-in-N value thereof. +-- @param str string The string to parse. +-- @returns number|nil The 1-in-N chance if parsing was successful, otherwise nil. +function worldeditadditions.parse.chance(str) + if tonumber(str) ~= nil then return tonumber(str) end + if str:sub(#str) == "%" then + local result = tonumber(str:sub(1, #str-1)) + if result == nil then return nil end + return 1 / (result / 100) -- Convert percentage to 1-in-N chance + end + return nil +end diff --git a/worldeditadditions/utils/parse/init.lua b/worldeditadditions/utils/parse/init.lua index c40d7d0..9ce52be 100644 --- a/worldeditadditions/utils/parse/init.lua +++ b/worldeditadditions/utils/parse/init.lua @@ -1,5 +1,6 @@ worldeditadditions.parse = {} -dofile(worldeditadditions.modpath.."/utils/parse/weighted_nodes.lua") +dofile(worldeditadditions.modpath.."/utils/parse/chance.lua") dofile(worldeditadditions.modpath.."/utils/parse/map.lua") dofile(worldeditadditions.modpath.."/utils/parse/seed.lua") +dofile(worldeditadditions.modpath.."/utils/parse/weighted_nodes.lua")