Module:Calc: Difference between revisions
From Elwiki
(Created page with "require('Module:CommonFunctions') local getArgs = require('Module:Arguments').getArgs local p = {} function p.main(frame) local args = getArgs(frame); local divider = 258.65 + 39.35 * args.level function toPercentDef(defense) local sign = '%' if (args.sign == 'false') then sign = '' end defense = defense or args.defense local def_percentage = math.round(10000 * defense / (divider + defense)) / 100;...") |
No edit summary |
||
Line 5: | Line 5: | ||
function p.main(frame) | function p.main(frame) | ||
local args = getArgs(frame); | local args = getArgs(frame); | ||
args.level = args.level or args[3] | |||
args.defense = args.defense or args[2] | |||
local divider = 258.65 + 39.35 * args.level | local divider = 258.65 + 39.35 * args.level | ||
Line 23: | Line 25: | ||
end | end | ||
local raw_def = (-divider * args.defense / (args.defense - 100) * 100) / 100 | local raw_def = (-divider * args.defense / (args.defense - 100) * 100) / 100 | ||
return math. | return math.round(raw_def) | ||
end | end | ||
Line 39: | Line 41: | ||
local defense = math.round((args.defense * divider * multiplier / (divider - (args.defense - 1) * multiplier)) * args.mode) | local defense = math.round((args.defense * divider * multiplier / (divider - (args.defense - 1) * multiplier)) * args.mode) | ||
return args.to_percent and toPercentDef(defense) or not args.to_percent and defense | return (args.to_percent or args[4]) and toPercentDef(defense) or not (args.to_percent and args[4]) and defense | ||
end | end | ||
Revision as of 12:59, 25 September 2022
Documentation for this module may be created at Module:Calc/doc
require('Module:CommonFunctions')
local getArgs = require('Module:Arguments').getArgs
local p = {}
function p.main(frame)
local args = getArgs(frame);
args.level = args.level or args[3]
args.defense = args.defense or args[2]
local divider = 258.65 + 39.35 * args.level
function toPercentDef(defense)
local sign = '%'
if (args.sign == 'false') then
sign = ''
end
defense = defense or args.defense
local def_percentage = math.round(10000 * defense / (divider + defense)) / 100;
return def_percentage .. sign
end
function toRawDef()
if (tonumber(args.defense) >= 100) then
args.defense = 99.99
end
local raw_def = (-divider * args.defense / (args.defense - 100) * 100) / 100
return math.round(raw_def)
end
if args[1] == 'to_percent_def' then
return toPercentDef()
end
if args[1] == 'to_raw_def' then
return toRawDef()
end
if args[1] == 'get_def' then
local multiplier = 67.215 + 12.554 * args.level
args.mode = args.mode or 1
local defense = math.round((args.defense * divider * multiplier / (divider - (args.defense - 1) * multiplier)) * args.mode)
return (args.to_percent or args[4]) and toPercentDef(defense) or not (args.to_percent and args[4]) and defense
end
end
return p