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