Module:DropRateCalc: Difference between revisions
Jump to navigation
Jump to search
ThroatPDiddy (talk | contribs) No edit summary |
ThroatPDiddy (talk | contribs) (vote boost toggle handling) |
||
| (4 intermediate revisions by the same user not shown) | |||
| Line 2: | Line 2: | ||
local buffs = { | local buffs = { | ||
{label = "Base", | {label = "Base", reduction = 0}, | ||
{label = "Donator", | {label = "Donator", reduction = 0.15}, | ||
{label = "Super donator", | {label = "Super donator", reduction = 0.25}, | ||
{label = "Extreme donator", | {label = "Extreme donator", reduction = 0.30}, | ||
{label = "Legendary donator", | {label = "Legendary donator", reduction = 0.35}, | ||
{label = "Royal donator", | {label = "Royal donator", reduction = 0.40}, | ||
{label = "Divine donator", | {label = "Divine donator", reduction = 0.45}, | ||
} | } | ||
-- somewhat matches osrs wiki | |||
local function getColor(rate) | local function getColor(rate) | ||
if rate == 1 then | if rate == 1 then | ||
return "#0b5884" | return "#0b5884" -- always | ||
elseif rate <= | elseif rate <= 16 then | ||
return "#3c780a" | return "#3c780a" -- common | ||
elseif rate <= | elseif rate <= 64 then | ||
return "#a48900" | return "#a48900" -- uncommon | ||
elseif rate <= 256 then | |||
return "#b55e0c" -- rare | |||
elseif rate <= 999 then | elseif rate <= 999 then | ||
return "# | return "#9f261e" -- very rare | ||
else | else | ||
return "# | return "#5c1a1a" -- extremely rare | ||
end | end | ||
end | end | ||
| Line 28: | Line 30: | ||
local base = tonumber(frame.args[1]) | local base = tonumber(frame.args[1]) | ||
if not base then return "Invalid base rate" end | if not base then return "Invalid base rate" end | ||
local noboost = frame.args[2] == "noboost" | |||
local cells = {} | local cells = {} | ||
for _, tier in ipairs(buffs) do | for _, tier in ipairs(buffs) do | ||
local rate = math.floor(base * (1 - | local reduction | ||
if noboost then | |||
reduction = 0 | |||
else | |||
reduction = tier.reduction | |||
end | |||
local rate = math.floor(base * (1 - reduction)) | |||
local color = getColor(rate) | local color = getColor(rate) | ||
table.insert(cells, '<td style="background-color:' .. color .. '; color:#ffffff; text-align:center;">1/' .. rate .. '</td>') | 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 | end | ||
return table.concat(cells, "") | return table.concat(cells, "") | ||
end | end | ||
return p | return p | ||
Latest revision as of 21:23, 18 July 2026
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