Module:Test
From Elwiki
Documentation for this module may be created at Module:Test/doc
require('Module:CommonFunctions')
local getArgs = require('Module:Arguments').getArgs
local p = {}
-- Main process
function p.main(frame)
local args = getArgs(frame);
function dump(o)
if type(o) == 'table' then
local s = '{ '
for k, v in pairs(o) do
if type(k) ~= 'number' then
k = '"' .. k .. '"'
end
s = s .. '[' .. k .. '] = ' .. dump(v) .. ','
end
return s .. '} '
else
return tostring(o)
end
end
-- Argument init
local traits = args[3]
if (traits == nil) then
traits = '-, -'
end
traits = split(traits);
local skill = args[2]
-- Define the class blueprint for traits.
Trait = {
name = "",
multipliers = {
mp_cost = 100,
cooldown = 100,
duration = 100
},
details = {
mp_cost = {0, 0},
cooldown = {0, 0},
duration = {0, 0}
}
}
function Trait:new(t)
t = t or {}
setmetatable(t, self)
self.__index = self
for k, v in pairs(t.values) do
for i = 1, 2, 1 do
v = v or self.values[k]
end
end
for k, v in pairs(t.details) do
for i = 1, 2, 1 do
v[i] = v[i] or {0, 0}
end
end
return t
end
function Trait:math()
for k, v in pairs(self.details) do
for i = 1, 2, 1 do
self.details[k][i] = v * (self.multipliers[k] / 100)
end
end
return self
end
-- Define the mother object of traits.
local reversed = Trait:new({
name = "Reversed",
values = {
mp_multiplier = 60,
cd_multiplier = 150,
duration_multiplier = 100
},
details = {
mp_cost = {300, 300},
cooldown = {22, 22},
duration = {0, 0}
}
})
-- Output point
-- return tostring(trait_table);
return dump(reversed:math());
end
return p