Module:RarityHandler: Difference between revisions

No edit summary
No edit summary
Line 13: Line 13:
function p.getSortValue(frame)
function p.getSortValue(frame)
     local rarity = clean(frame.args[1])
     local rarity = clean(frame.args[1])
     if not rarity then return 99 end
     if not rarity then return 999999999 end


     local lowered = string.lower(rarity)
     local lowered = string.lower(rarity)
Line 19: Line 19:
     if lowered == "1" or lowered == "always" then
     if lowered == "1" or lowered == "always" then
         return 1
         return 1
    elseif lowered:match("^1/%d+%.?%d*$") then
        return 2
     elseif lowered == "rare" then
     elseif lowered == "rare" then
         return 3
         return 999999998
     elseif lowered == "never" then
     elseif lowered == "never" then
         return 4
         return 0
    else
        return 99
     end
     end
    -- Match "1/number" including decimals
    local chance = lowered:match("^1/(%d+%.?%d*)$")
    if chance then
        return tonumber(chance) or 999999999
    end
    -- fallback
    return 999999999
end
end