Documentation for this module may be created at Module:Infobox/doc
local p = {}
function roundToDec(baseDMG)
local n = 10^(0)
baseDMG = baseDMG * n
if baseDMG >= 0 then x = math.floor(baseDMG + 0.5) else baseDMG = math.ceil(baseDMG - 0.5) end
return baseDMG / n
end
function round(baseDMG)
return baseDMG>=0 and math.floor(baseDMG + 0.5) or math.ceil(baseDMG - 0.5)
end
function p.damage(frame)
level = tonumber(frame.args["level"])
modifier = tonumber(frame.args["modifier"])
if pcall(tonumber(frame.args["dmgMultiplier"]), false) ~= false then
multiplier = tonumber(frame.args["dmgMultiplier"])
else
multiplier = 0
end
if level ~= nil and modifier ~= nil then
if level <9 then
baseDMG = modifier*10/1
else if level < 19 then
baseDMG = modifier*10/2
else if level < 40 then
baseDMG = modifier*10/2.9
else
baseDMG = modifier*10/3
end
end
end
modifier1 = roundToDec(baseDMG*0.1)
modifier2 = roundToDec(baseDMG*0.2)
modifier3 = roundToDec(baseDMG*0.29)
modifier4 = roundToDec(baseDMG*0.3)
if multiplier <= 0 then
baseDMG = round(baseDMG)
maxDMG = round(baseDMG+modifier1*8+modifier2*10+modifier3*11+modifier4*5)
result = (baseDMG .. "→" .. maxDMG)
else
baseDMG = round(baseDMG)
maxDMG = round(baseDMG+modifier1*8+modifier2*10+modifier3*11+modifier4*5)
result = (baseDMG .. " (x" .. multiplier .. ")" .. "→" .. maxDMG .. " (x" .. multiplier .. ")")
end
else
result = ''
end
return result
end
function p.dps(frame)
rate = tonumber(frame.args["rate"])
level = tonumber(frame.args["level"])
modifier = tonumber(frame.args["modifier"])
multiplier = tonumber(frame.args["dmgMultiplier"])
--Temporary for shotguns
damageMax = tonumber(frame.args["damageMax"])
if rate ~= nil and level ~= nil and modifier ~= nil and multiplier ~= nil then
if level <9 then
baseDMG = modifier*10/1
else if level < 19 then
baseDMG = modifier*10/2
else if level < 40 then
baseDMG = modifier*10/2.9
else
baseDMG = modifier*10/3
end
end
end
modifier1 = roundToDec(baseDMG*0.1)
modifier2 = roundToDec(baseDMG*0.2)
modifier3 = roundToDec(baseDMG*0.29)
modifier4 = roundToDec(baseDMG*0.3)
baseDMG = round(baseDMG)
maxDMG = round(baseDMG+modifier1*8+modifier2*10+modifier3*11+modifier4*5)
--baseROF = round(baseDMG * rate)
--maxROF = round(maxDMG * rate)
if multiplier <= 0 then
baseROF = round(round(baseDMG) * rate)
maxROF = round(round(maxDMG) * rate)
result = (baseROF .. "→" .. maxROF)
else
baseROF = round(round(baseDMG) * rate)
maxROF = round(round(maxDMG) * rate)
result = (baseROF .. " (x" .. multiplier .. ")" .. "→" .. maxROF .. " (x" .. multiplier .. ")")
end
end
return result
end
function p.rate(frame)
string = string.lower(frame.args[1])
string = mw.text.trim(string, "\n")
if string == "1-handed" or string == "2-handed" then
result = "Swing rate"
else
result = "Rate of fire"
end
return result
end
return p