Content added Content deleted
Emperor Bob (talk | contribs) m (Test 2) |
Emperor Bob (talk | contribs) m (Test name) |
||
Line 75: | Line 75: | ||
res.total = entry:total() |
res.total = entry:total() |
||
---return res[key] |
---return res[key] |
||
return |
return name |
||
end |
end |
||
Revision as of 04:35, May 18, 2024
Documentation for this module may be created at Module:Char Stat/doc
---@type Util
local util = require("Module:Util")
---@class Stat
local Stat = {}
Stat.__index = Stat
function Stat:new(action_token, trion, attack, defense, mobility, skill, range, mechanical_operation, data_analysis,
parallel_processing, tactics, command, special_tactics, position)
---@class Stat
local res = Stat
setmetatable(res, Stat)
res.action_token = tonumber(action_token) or 0
res.trion = tonumber(trion) or 0
res.attack = tonumber(attack) or 0
res.defense = tonumber(defense) or 0
res.mobility = tonumber(mobility) or 0
res.skill = tonumber(skill) or 0
res.range = tonumber(range) or 0
res.mechanical_operation = tonumber(mechanical_operation) or 0
res.data_analysis = tonumber(data_analysis) or 0
res.parallel_processing = tonumber(parallel_processing) or 0
res.tactics = tonumber(tactics) or 0
res.command = tonumber(command) or 0
res.special_tactics = tonumber(special_tactics) or 0
res.position = position
return res
end
function Stat.from_table(table)
return Stat.new(unpack(table, 1, 13))
end
function Stat.from_data()
---@type CS_Stat
local data = require("Module:Char Stat/data")
local ret = {}
for k, t in pairs(data) do
ret[k] = Stat
for ik, v in pairs(t) do
ret[k][ik] = v
end
end
return ret
end
function Stat.total(self)
local total = 0
for k, v in pairs(self) do
if type(v) == "number" then
if self.position == "Operator" and k ~= "trion" then
total = total + v
elseif self.position ~= "Operator" then
total = total + v
end
end
end
return total
end
local data = Stat.from_data()
---@param frame frame
function Stat.GetStat(frame)
local args, pargs = util.get_args_and_pargs(frame)
local name = args[1] or pargs[1] or ""
local key = args[2] or pargs[2] or "total"
local entry = data[name] or Stat
local res = {}
for k, v in pairs(entry) do
if type(v) == "number" or type(v) == "string" then
res[k] = v
end
end
res.total = entry:total()
---return res[key]
return name
end
return Stat