Editing Module:Rates/Sandbox
From Ephinea PSO Wiki
The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.
Latest revision | Your text | ||
Line 29: | Line 29: | ||
-- @return {number} | -- @return {number} | ||
-- | -- | ||
function calcRate(dar, rdr) | |||
local mult = {} | local mult = {} | ||
mult[1] = dar | mult[1] = dar | ||
Line 61: | Line 61: | ||
local function fmtRate(rate, fmt, digits) | local function fmtRate(rate, fmt, digits) | ||
local out = "" | local out = "" | ||
-- Don't want nil comparisons or whatever | |||
if digits == nil then | |||
digits = 0 | |||
end | |||
local frac = {} | local frac = {} | ||
-- If either number is a fraction, split it up into numerator and denominator | -- If either number is a fraction, split it up into numerator and denominator | ||
Line 77: | Line 81: | ||
if fmt == "f" then | if fmt == "f" then | ||
if wholeFractions[rate] == nil then | if wholeFractions[rate] == nil then | ||
-- Set maximum number of decimal places | -- Set maximum number of decimal places | ||
if | if rate < 10 then | ||
-- Displays with two places between 1.01 ~ 9.99 | -- Displays with two places between 1.01 ~ 9.99 | ||
digits = math.max(digits, 2) | digits = math.max(digits, 2) | ||
elseif | elseif rate < 100 then | ||
-- Displays with one place between 10.1 ~ 99.9 | -- Displays with one place between 10.1 ~ 99.9 | ||
digits = math.max(digits, 1) | digits = math.max(digits, 1) | ||
else | |||
-- Otherwise just displays the whole number at 100+ | |||
digits = math.max(digits, 0) | |||
end | end | ||
-- Even if we're displaying one or more decimal places, cut zeroes off | -- Even if we're displaying one or more decimal places, cut zeroes off | ||
Line 113: | Line 117: | ||
local rate = {} | local rate = {} | ||
rate[1] = frame.args[2] | rate[1] = frame.args[2] | ||
rate[2] = frame.args[3] | |||
local out = "" | local out = "" | ||
if fmt == "f" then | if fmt == "f" then | ||
-- Fraction | -- Fraction | ||
out = out .. fmtRate(rate[1], "f") | out = out .. fmtRate(rate[1], "f", 2) | ||
elseif fmt == "p" then | elseif fmt == "p" then | ||
-- Percentage | -- Percentage | ||
Line 133: | Line 130: | ||
span | span | ||
:addClass("more_info") | :addClass("more_info") | ||
:attr("title", string.format("Drop Rate: %s (%s) | :attr("title", string.format("Drop Rate: %s (%s)
Rare Rate: %s (%s)", fmtRate(rate[1], "f", 2), fmtRate(rate[1], "p"), fmtRate(rate[2], "f", 2), fmtRate(rate[2], "p"))) | ||
:css("border-bottom", "1px dotted") | :css("border-bottom", "1px dotted") | ||
:wikitext(string.format("%s", fmtRate(calcRate(rate[1], rate[2]) | :wikitext(string.format("%s", fmtRate(p.calcRate(rate[1], rate[2])))) | ||
--out = out .. fmtRate(rate, "f", 2) .. " (" .. fmtRate(rate, "p") .. ")" | --out = out .. fmtRate(rate, "f", 2) .. " (" .. fmtRate(rate, "p") .. ")" | ||
return span:allDone() | return span:allDone() |