Mudanças entre as edições de "Módulo:Guild"

De Wiki Gla
Ir para navegação Ir para pesquisar
m
m
Linha 1: Linha 1:
--[[
--[[
Module:Guild – Dados dos componentes da base de guild.
Module:Guild – Dados dos componentes da base de guild.
Uso: {{#invoke:Guild|main|n=Ferreiro}}
Uso via predefinição: {{Guild|n=Cozinha|desc=texto livre aqui}}
Predefinição: {{Guild|n=Ferreiro}}
]]
]]


Linha 35: Linha 34:
         label = "Designer",
         label = "Designer",
         levels = {
         levels = {
             { image = "Designer_lvl1.png", stats = { "1 pilar de artefato disponível", "27 símbolos disponíveis", "1 plano de fundo disponível", "6 cores disponíveis", "2% de EXP", "4% de sorte", "5% de pontos de aliança" } },
             { image = "Designer_lvl1.png" },
             { image = "Designer_lvl2.png", stats = { "2 pilares de artefato disponíveis", "9 planos de fundo disponíveis", "47 símbolos disponíveis", "12 cores disponíveis", "4% de EXP", "9% de sorte", "12% de pontos de aliança" } },
             { image = "Designer_lvl2.png" },
             { image = "Designer_lvl3.png", stats = { "2 pilares de artefato disponíveis", "34 planos de fundo disponíveis", "72 símbolos disponíveis", "30 cores disponíveis", "6% de EXP", "15% de sorte", "22% de pontos de aliança" } },
             { image = "Designer_lvl3.png" },
             { image = "Designer_lvl4.png", stats = { "3 pilares de artefato disponíveis", "34 planos de fundo disponíveis", "92 símbolos disponíveis", "30 cores disponíveis", "8% de EXP", "22% de sorte", "35% de pontos de aliança" } },
             { image = "Designer_lvl4.png" },
             { image = "Designer_lvl5.png", stats = { "4 pilares de artefato disponíveis", "34 planos de fundo disponíveis", "112 símbolos disponíveis", "30 cores disponíveis", "10% de EXP", "30% de sorte", "50% de pontos de aliança" } },
             { image = "Designer_lvl5.png" },
         },
         },
     },
     },
Linha 45: Linha 44:
         label = "Cofre",
         label = "Cofre",
         levels = {
         levels = {
             { image = "Cofre_lvl1.png", stats = { "10% de bônus pra aliança" } },
             { image = "Cofre_lvl1.png" },
             { image = "Cofre_lvl2.png", stats = { "+ 100 espaços extra no cofre", "25% de bônus pra aliança" } },
             { image = "Cofre_lvl2.png" },
             { image = "Cofre_lvl3.png", stats = { "+ 200 espaços extra no cofre", "45% de bônus pra aliança" } },
             { image = "Cofre_lvl3.png" },
             { image = "Cofre_lvl4.png", stats = { "+ 300 espaços extra no cofre", "75% de bônus pra aliança" } },
             { image = "Cofre_lvl4.png" },
             { image = "Cofre_lvl5.png", stats = { "+ 400 espaços extra no cofre", "100% de bônus pra aliança" } },
             { image = "Cofre_lvl5.png" },
         },
         },
     },
     },
Linha 55: Linha 54:
         label = "Salão Principal",
         label = "Salão Principal",
         levels = {
         levels = {
             { image = "SalaoPrincipal_lvl1.png", stats = { "Descrição do nível 1" } },
             { image = "SalaoPrincipal_lvl1.png" },
             { image = "SalaoPrincipal_lvl2.png", stats = { "Descrição do nível 2" } },
             { image = "SalaoPrincipal_lvl2.png" },
             { image = "SalaoPrincipal_lvl3.png", stats = { "Descrição do nível 3" } },
             { image = "SalaoPrincipal_lvl3.png" },
             { image = "SalaoPrincipal_lvl4.png", stats = { "Descrição do nível 4" } },
             { image = "SalaoPrincipal_lvl4.png" },
             { image = "SalaoPrincipal_lvl5.png", stats = { "Descrição do nível 5" } },
             { image = "SalaoPrincipal_lvl5.png" },
         },
         },
     },
     },
Linha 65: Linha 64:
         label = "Quartos",
         label = "Quartos",
         levels = {
         levels = {
             { image = "Quartos_lvl1.png", stats = { "Descrição do nível 1" } },
             { image = "Quartos_lvl1.png" },
             { image = "Quartos_lvl2.png", stats = { "Descrição do nível 2" } },
             { image = "Quartos_lvl2.png" },
             { image = "Quartos_lvl3.png", stats = { "Descrição do nível 3" } },
             { image = "Quartos_lvl3.png" },
             { image = "Quartos_lvl4.png", stats = { "Descrição do nível 4" } },
             { image = "Quartos_lvl4.png" },
             { image = "Quartos_lvl5.png", stats = { "Descrição do nível 5" } },
             { image = "Quartos_lvl5.png" },
         },
         },
     },
     },
Linha 75: Linha 74:
         label = "Sala de Guerra",
         label = "Sala de Guerra",
         levels = {
         levels = {
             { image = "SalaDeGuerra_lvl1.png", stats = { "Descrição do nível 1" } },
             { image = "SalaDeGuerra_lvl1.png" },
             { image = "SalaDeGuerra_lvl2.png", stats = { "Descrição do nível 2" } },
             { image = "SalaDeGuerra_lvl2.png" },
             { image = "SalaDeGuerra_lvl3.png", stats = { "Descrição do nível 3" } },
             { image = "SalaDeGuerra_lvl3.png" },
             { image = "SalaDeGuerra_lvl4.png", stats = { "Descrição do nível 4" } },
             { image = "SalaDeGuerra_lvl4.png" },
             { image = "SalaDeGuerra_lvl5.png", stats = { "Descrição do nível 5" } },
             { image = "SalaDeGuerra_lvl5.png" },
         },
         },
     },
     },
Linha 85: Linha 84:
         label = "Treinamento",
         label = "Treinamento",
         levels = {
         levels = {
             { image = "Treinamento_lvl1.png", stats = { "Descrição do nível 1" } },
             { image = "Treinamento_lvl1.png" },
             { image = "Treinamento_lvl2.png", stats = { "Descrição do nível 2" } },
             { image = "Treinamento_lvl2.png" },
             { image = "Treinamento_lvl3.png", stats = { "Descrição do nível 3" } },
             { image = "Treinamento_lvl3.png" },
             { image = "Treinamento_lvl4.png", stats = { "Descrição do nível 4" } },
             { image = "Treinamento_lvl4.png" },
             { image = "Treinamento_lvl5.png", stats = { "Descrição do nível 5" } },
             { image = "Treinamento_lvl5.png" },
         },
         },
     },
     },
Linha 95: Linha 94:
         label = "Ferreiro",
         label = "Ferreiro",
         levels = {
         levels = {
             { image = "Ferreiro_lvl1.png", stats = { "Descrição do nível 1" } },
             { image = "Ferreiro_lvl1.png" },
             { image = "Ferreiro_lvl2.png", stats = { "Descrição do nível 2" } },
             { image = "Ferreiro_lvl2.png" },
             { image = "Ferreiro_lvl3.png", stats = { "Descrição do nível 3" } },
             { image = "Ferreiro_lvl3.png" },
             { image = "Ferreiro_lvl4.png", stats = { "Descrição do nível 4" } },
             { image = "Ferreiro_lvl4.png" },
             { image = "Ferreiro_lvl5.png", stats = { "Descrição do nível 5" } },
             { image = "Ferreiro_lvl5.png" },
         },
         },
     },
     },
Linha 105: Linha 104:
         label = "Cozinha",
         label = "Cozinha",
         levels = {
         levels = {
             { image = "Cozinha_lvl1.png", stats = { "Descrição do nível 1" } },
             { image = "Cozinha_lvl1.png" },
             { image = "Cozinha_lvl2.png", stats = { "Descrição do nível 2" } },
             { image = "Cozinha_lvl2.png" },
             { image = "Cozinha_lvl3.png", stats = { "Descrição do nível 3" } },
             { image = "Cozinha_lvl3.png" },
             { image = "Cozinha_lvl4.png", stats = { "Descrição do nível 4" } },
             { image = "Cozinha_lvl4.png" },
             { image = "Cozinhalvl5.gif",  stats = { "Descrição do nível 5" } },
             { image = "Cozinhalvl5.gif" },
         },
         },
     },
     },
Linha 123: Linha 122:
     local args = frame:getParent().args or {}
     local args = frame:getParent().args or {}
     local n = args.n or args[1] or ""
     local n = args.n or args[1] or ""
    local desc = mw.text.trim(args.desc or "")
     local comp = p.getComponent(n)
     local comp = p.getComponent(n)
     if not comp then
     if not comp then
Linha 131: Linha 131:
     local section = root:tag('div'):addClass('utab__section'):attr('data-tab', comp.label)
     local section = root:tag('div'):addClass('utab__section'):attr('data-tab', comp.label)


    -- Descrição livre (vem do template, escrita pelo editor)
    if desc ~= "" then
        section:tag('div'):addClass('utab__desc'):wikitext('\n' .. desc .. '\n')
    end
    -- Níveis (só imagens; custo é fixo no JS)
     for i, lvl in ipairs(comp.levels) do
     for i, lvl in ipairs(comp.levels) do
         local level = section:tag('div'):addClass('utab__level'):attr('data-level', tostring(i))
         local level = section:tag('div'):addClass('utab__level'):attr('data-level', tostring(i))
         local content = level:tag('div'):addClass('utab__content')
         local content = level:tag('div'):addClass('utab__content')
         content:tag('div'):addClass('utab__mediaImage'):wikitext('[[File:' .. lvl.image .. '|link=]]')
         content:tag('div'):addClass('utab__mediaImage'):wikitext('[[File:' .. lvl.image .. '|link=]]')
        local ul = content:tag('ul'):addClass('utab__statList')
        for _, stat in ipairs(lvl.stats) do
            ul:tag('li'):wikitext(stat)
        end
     end
     end



Edição das 20h03min de 7 de fevereiro de 2026

A documentação para este módulo pode ser criada em Módulo:Guild/doc

--[[
Module:Guild – Dados dos componentes da base de guild.
Uso via predefinição: {{Guild|n=Cozinha|desc=texto livre aqui}}
]]

local p = {}

local function normalize(name)
    if not name or name == "" then return nil end
    local s = mw.text.trim(name):lower()
    s = mw.ustring.gsub(s, "ó", "o")
    s = mw.ustring.gsub(s, "ã", "a")
    s = mw.ustring.gsub(s, "á", "a")
    s = mw.ustring.gsub(s, "é", "e")
    s = mw.ustring.gsub(s, " ", "")
    return s
end

local aliasMap = {
    designer = "Designer",
    cofre = "Cofre",
    salaoprincipal = "Salão Principal",
    salao = "Salão Principal",
    quartos = "Quartos",
    saladeguerra = "Sala de Guerra",
    salaguerra = "Sala de Guerra",
    treinamento = "Treinamento",
    ferreiro = "Ferreiro",
    cozinha = "Cozinha",
}

local data = {
    Designer = {
        label = "Designer",
        levels = {
            { image = "Designer_lvl1.png" },
            { image = "Designer_lvl2.png" },
            { image = "Designer_lvl3.png" },
            { image = "Designer_lvl4.png" },
            { image = "Designer_lvl5.png" },
        },
    },
    Cofre = {
        label = "Cofre",
        levels = {
            { image = "Cofre_lvl1.png" },
            { image = "Cofre_lvl2.png" },
            { image = "Cofre_lvl3.png" },
            { image = "Cofre_lvl4.png" },
            { image = "Cofre_lvl5.png" },
        },
    },
    ["Salão Principal"] = {
        label = "Salão Principal",
        levels = {
            { image = "SalaoPrincipal_lvl1.png" },
            { image = "SalaoPrincipal_lvl2.png" },
            { image = "SalaoPrincipal_lvl3.png" },
            { image = "SalaoPrincipal_lvl4.png" },
            { image = "SalaoPrincipal_lvl5.png" },
        },
    },
    Quartos = {
        label = "Quartos",
        levels = {
            { image = "Quartos_lvl1.png" },
            { image = "Quartos_lvl2.png" },
            { image = "Quartos_lvl3.png" },
            { image = "Quartos_lvl4.png" },
            { image = "Quartos_lvl5.png" },
        },
    },
    ["Sala de Guerra"] = {
        label = "Sala de Guerra",
        levels = {
            { image = "SalaDeGuerra_lvl1.png" },
            { image = "SalaDeGuerra_lvl2.png" },
            { image = "SalaDeGuerra_lvl3.png" },
            { image = "SalaDeGuerra_lvl4.png" },
            { image = "SalaDeGuerra_lvl5.png" },
        },
    },
    Treinamento = {
        label = "Treinamento",
        levels = {
            { image = "Treinamento_lvl1.png" },
            { image = "Treinamento_lvl2.png" },
            { image = "Treinamento_lvl3.png" },
            { image = "Treinamento_lvl4.png" },
            { image = "Treinamento_lvl5.png" },
        },
    },
    Ferreiro = {
        label = "Ferreiro",
        levels = {
            { image = "Ferreiro_lvl1.png" },
            { image = "Ferreiro_lvl2.png" },
            { image = "Ferreiro_lvl3.png" },
            { image = "Ferreiro_lvl4.png" },
            { image = "Ferreiro_lvl5.png" },
        },
    },
    Cozinha = {
        label = "Cozinha",
        levels = {
            { image = "Cozinha_lvl1.png" },
            { image = "Cozinha_lvl2.png" },
            { image = "Cozinha_lvl3.png" },
            { image = "Cozinha_lvl4.png" },
            { image = "Cozinhalvl5.gif" },
        },
    },
}

function p.getComponent(name)
    local key = aliasMap[normalize(name)]
    if not key then return nil end
    return data[key]
end

function p.main(frame)
    local args = frame:getParent().args or {}
    local n = args.n or args[1] or ""
    local desc = mw.text.trim(args.desc or "")
    local comp = p.getComponent(n)
    if not comp then
        return '<div class="utab">Componente não encontrado: ' .. mw.text.nowiki(n) .. '</div>'
    end

    local root = mw.html.create('div'):addClass('utab')
    local section = root:tag('div'):addClass('utab__section'):attr('data-tab', comp.label)

    -- Descrição livre (vem do template, escrita pelo editor)
    if desc ~= "" then
        section:tag('div'):addClass('utab__desc'):wikitext('\n' .. desc .. '\n')
    end

    -- Níveis (só imagens; custo é fixo no JS)
    for i, lvl in ipairs(comp.levels) do
        local level = section:tag('div'):addClass('utab__level'):attr('data-level', tostring(i))
        local content = level:tag('div'):addClass('utab__content')
        content:tag('div'):addClass('utab__mediaImage'):wikitext('[[File:' .. lvl.image .. '|link=]]')
    end

    return tostring(root)
end

return p