Módulo:Info
Ir para navegação
Ir para pesquisar
A documentação para este módulo pode ser criada em Módulo:Info/doc
-- Módulo:Info
-- Resolve metadados e skills de cada personagem
local p = {}
-- Paleta de cores pros marcadores
local COLOR = {
debuff = "#ff5252", -- vermelho
atk = "#ffcc00", -- laranja
def = "#64b5f6", -- azul (defesa)
ms = "#43a047", -- verde (move speed)
hp = "#42a5f5", -- azul claro (vida/shield/heal)
sec = "#ffcc00", -- tempo
}
-- Aplica as cores nos marcadores {{tag:valor}}
local function colorize(txt)
if not txt or txt == "" then return "" end
return (txt:gsub("{{(%a+):([^}]+)}}", function(tag, inner)
local hex = COLOR[tag]
if not hex then return "{{" .. tag .. ":" .. inner .. "}}" end
return string.format('<span style="color:%s;">%s</span>', hex, inner)
end))
end
-- Pega dados crus do módulo do personagem
local function loadCharacterModule(charName)
local ok, data = pcall(function() return require("Módulo:" .. charName) end)
if ok and type(data) == "table" then
return data
end
return {}
end
-- ====== API pública ======
-- Tier
function p.getTier(frame)
local char = frame.args[1] or frame.args.nome or (frame:getParent() and frame:getParent().args.nome) or ""
local data = loadCharacterModule(char)
return data.tier or ""
end
-- Tags / classes
function p.getTags(frame)
local char = frame.args[1] or frame.args.nome or (frame:getParent() and frame:getParent().args.nome) or ""
local data = loadCharacterModule(char)
if not data.tags then return "" end
return table.concat(data.tags, " / ")
end
-- Monta um JSON de skill (usado pela Predefinição:Skill)
function p.skill(frame)
local a = frame.args
local m = tonumber(a.M) or 0
local char = a.char or (frame:getParent() and frame:getParent().args.nome) or ""
local lang = (a.lang or (frame:getParent() and frame:getParent().args.lang) or "pt"):lower()
local data = loadCharacterModule(char)
local order = data.order or {}
local key = order[m] or ""
local sk = (data.skills or {})[key] or {}
-- resolve nome e descrição
local name = sk.name or key or ""
local desc = ""
if type(sk.desc) == "table" then
desc = sk.desc[lang] or sk.desc["pt"] or ""
else
desc = sk.desc or ""
end
desc = colorize(desc)
-- monta objeto final juntando com os números da predef
local obj = {
name = name,
icon = a.icon or "Nada.png",
level = a.level or "NIVEL",
desc = desc,
energy = a.energy ~= "" and a.energy or nil,
powerpve = a.powerpve ~= "" and a.powerpve or nil,
powerpvp = a.powerpvp ~= "" and a.powerpvp or nil,
cooldown = a.cooldown ~= "" and a.cooldown or nil,
video = a.video or "",
}
return mw.text.jsonEncode(obj)
end
return p