Module:DropRateCalc
Jump to navigation
Jump to search
Need to test if Larran's keys are buffed, specifically for Template:CallistoDrops and the other bosses like that.
local p = {}
local buffs = {
{label = "Base", reduction = 0},
{label = "Donator", reduction = 0.15},
{label = "Super donator", reduction = 0.25},
{label = "Extreme donator", reduction = 0.30},
{label = "Legendary donator", reduction = 0.35},
{label = "Royal donator", reduction = 0.40},
{label = "Divine donator", reduction = 0.45},
}
-- somewhat matches osrs wiki
local function getColor(rate)
if rate == 1 then
return "#0b5884" -- always
elseif rate <= 16 then
return "#3c780a" -- common
elseif rate <= 64 then
return "#a48900" -- uncommon
elseif rate <= 256 then
return "#b55e0c" -- rare
elseif rate <= 999 then
return "#9f261e" -- very rare
else
return "#5c1a1a" -- extremely rare
end
end
function p.calc(frame)
local base = tonumber(frame.args[1])
if not base then return "Invalid base rate" end
local noboost = frame.args[2] == "noboost"
local cells = {}
for _, tier in ipairs(buffs) do
local reduction
if noboost then
reduction = 0
else
reduction = tier.reduction
end
local rate = math.floor(base * (1 - reduction))
local color = getColor(rate)
local attrs = ' data-baserate="' .. base .. '"'
.. ' data-reduction="' .. tier.reduction .. '"'
if noboost then
attrs = attrs .. ' data-noboost="1"'
end
table.insert(cells,
'<td' .. attrs
.. ' style="background-color:' .. color .. '; color:#ffffff; text-align:center;"'
.. '>1/' .. rate .. '</td>'
)
end
return table.concat(cells, "")
end
return p