Module:MaxHit
Documentation for this module may be created at Module:MaxHit/doc
local p = {}
-- Helper: parse a stat string like "30+20 Bonus" into total numeric value (e.g., 50)
local function parseStat(statString)
local total = 0
for num in string.gmatch(statString or "", "%d+") do
total = total + tonumber(num)
end
return total
end
function p.maxhit(frame)
local args = frame.args
local parent = frame:getParent()
-- Fetch and parse all three stat types
local str = parseStat(args.Strength or parent.args.Strength)
local rng = parseStat(args.Range or parent.args.Range)
local mag = parseStat(args.Magic or parent.args.Magic)
-- Determine which is highest
local max = math.max(str, rng, mag)
-- Decide which formula to use
local maxHit
if mag == max then
maxHit = max / 8
else
maxHit = max / 7
end
return string.format('%.2f', maxHit)
end
return p