Módulo:Gb
Revisão de 20h28min de 22 de novembro de 2025 por GhoulBlack (discussão | contribs)
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> ' ..
'<span style="color:#ffe568;font-weight:bold;">💰 %s</span> ' ..
'<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