Módulo:Gb

De Wiki Gla
Revisão de 20h28min de 22 de novembro de 2025 por GhoulBlack (discussão | contribs)
Ir para navegação Ir para pesquisar

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

-- Módulo:BossDisplay
local p = {}

function p.bossInfo(frame)
    local args = frame:getParent().args

    local function g(k, default)
        local v = mw.text.trim(args[k] or "")
        return v ~= "" and v or default
    end

    -- Dados gerais
    local nome1      = g("nome1", "Forma 1")
    local nome2      = g("nome2", "Forma 2")

    local img        = g("img", "Placeholder.png")
    local nome       = g("nome", "Nome do Boss")
    local frase      = g("frase", "Frase ou lema do boss.")

    local hp         = g("hp", "???")
    local exp        = g("exp", "???")
    local nivel      = g("nivel", "???")

    local necessario = g("necessario", "-")

    -- Loot (agora 3 categorias)
    local dropNormal = g("normal", "")
    local dropElite  = g("elite", "")
    local dropHard   = g("hard", "")

    -- Montagem HTML
    local html = mw.html.create("div")
    html:addClass("bossbox")
    html:wikitext([[
<style>
.bossbox {
    background:#18181b;
    border-radius:12px;
    padding:20px;
    color:#fff;
    max-width:700px;
    margin:auto;
    font-family:Verdana,sans-serif;
}
.boss-tabs {
    display:flex;
    gap:6px;
    margin-bottom:15px;
}
.boss-tab {
    padding:7px 18px;
    border-radius:7px;
    background:#232329;
    color:#ccc;
    font-weight:600;
    text-decoration:none;
}
.boss-tab.active {
    background:#19171c;
    border:2px solid #c7a047;
    color:#fff;
}
.boss-main {
    display:flex;
    gap:15px;
    flex-wrap:wrap;
}
.boss-left img {
    border-radius:8px;
}
.boss-stats-box {
    background:#222126;
    border-radius:8px;
    padding:12px 20px;
    margin-top:6px;
}
.boss-loot {
    background:#232329;
    border-radius:10px;
    padding:18px;
    margin-top:20px;
}
@media(max-width:640px){
    .boss-main{flex-direction:column;}
}
</style>
]])

    -- SISTEMA DE ABAS (sem JS)
    html:wikitext('<div class="boss-tabs">')
    html:wikitext(string.format('<a href="#form1" class="boss-tab"> %s </a>', nome1))
    html:wikitext(string.format('<a href="#form2" class="boss-tab"> %s </a>', nome2))
    html:wikitext('</div>')

    -- CONTAINER PRINCIPAL
    local main = html:tag("div"):addClass("boss-main")

    -- IMAGEM
    main:tag("div"):addClass("boss-left")
        :wikitext(string.format("[[Arquivo:%s|120px]]", img))

    -- DADOS DO BOSS
    local info = main:tag("div")

    info:tag("div")
        :css{["font-size"]="1.4em",["font-weight"]="bold",color="#e82b2b"}
        :wikitext(nome)

    info:tag("div")
        :css{["font-size"]="95%",color="#eaa85d",["font-style"]="italic"}
        :wikitext('"'..frase..'"')

    -- STATS
    local statbox = info:tag("div"):addClass("boss-stats-box")
    statbox:wikitext(string.format(
        '<span style="color:#fb3d3d;font-weight:bold;">❤️ %s</span> &nbsp;&nbsp; ' ..
        '<span style="color:#ffe568;font-weight:bold;">💰 %s</span> &nbsp;&nbsp; ' ..
        '<span style="color:#6ca8fb;font-weight:bold;">⚔️ %s</span>',
        hp, exp, nivel
    ))

    -- NECESSARIO
    info:tag("div")
        :css{["margin-top"]="8px",["font-size"]="90%",color="#cfccff"}
        :wikitext('<b>Necessário:</b> ' .. necessario)

    -- LOOT TABLE
    local loot = html:tag("div"):addClass("boss-loot")
    loot:tag("div")
        :css{["font-size"]="1.2em","margin-bottom","10px",color="#f3e8bb"}
        :wikitext("Drops")

    local function addRow(title, color, content)
        if content ~= "" then
            loot:tag("div")
                :css{color=color,["margin-top"]="6px"}
                :wikitext(string.format("<b>%s</b>: %s", title, content))
        end
    end

    addRow("Normal", "#f3e8bb", dropNormal)
    addRow("Elite",  "#aeccff", dropElite)
    addRow("Hard",   "#f9538f", dropHard)

    return tostring(html)
end

return p