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

De Wiki Gla
Ir para navegação Ir para pesquisar
m
m (bannerzin)
 
(12 revisões intermediárias por 2 usuários não estão sendo mostradas)
Linha 1: Linha 1:
-- Módulo:Baby 5
local p = {}
local M = {
    name = "Baby 5",
    tier = "Ouro",
    tags = {
        "DPS",
        "Atiradora",
        "Cortante",
        "Fruta do Diabo"
    },
    avatar = "Baby 5 Avatar.png",
    background = "Baby 5 Background.png",


    order = {
-- Parseia bau no formato "2 comum, 8 ouro" ou "8 ouro, 2 comum". Retorna comum, ouro (números) ou nil,nil se for só tipo (comum/ouro).
        "Kamaitachi Cut",
local function parseBau(s)
        "Cross Kamaitachi Cut",
    if not s or s == '' then return nil, nil end
        "Dash",
    s          = mw.text.trim(s)
        "Bukimorphose: Hammer Arms",
    local comum = tonumber(s:match('(%d+)%s*[Cc]omum')) or 0
         "Bukimorphose: Espada Girl",
    local ouro  = tonumber(s:match('(%d+)%s*[Oo]uro')) or 0
        "Bukimorphose: Gun Girl"
    if comum > 0 or ouro > 0 then
     },
         return comum, ouro
    end
     return nil, nil
end


    skills = {
function p.main(frame)
        ["Kamaitachi Cut"] = {
    local args = frame:getParent().args
            icon = "Kamaitachi Cut-Icon.png",
    local cards = {}
            level = "",
            cooldown = 2,
            energy = 10,
            powerpve = 15,
            powerpvp = 10,
            video = "Kamaitachi Cut-Video.mp4",
            desc = {
                pt = "Baby 5 usa seus braços transformados em Kamaitachis para cortar seu alvo.",
                en = "",
                es = "",
                pl = ""
            }
        },
        ["Cross Kamaitachi Cut"] = {
            icon = "Cross Kamaitachi Cut-Icon.png",
            level = "",
            cooldown = 10,
            energy = 20,
            powerpve = 28,
            powerpvp = 22,
            video = "Cross Kamaitachi Cut-Video.mp4",
            desc = {
                pt = "Baby 5 corre em direção ao seu oponente em alta velocidade e desfere um corte cruzado incrivelmente rápido, causando dano.",
                en = "",
                es = "",
                pl = ""
            }
        },
        ["Dash"] = {
            icon = "Dash-Icon.png",
            level = "",
            cooldown = 12,
            video = "Dash-Video.mp4",
            desc = {
                pt = "Graças à sua incrível agilidade, Baby 5 é capaz de correr rapidamente para frente, desaparecendo da vista em um piscar de olhos e reaparecendo do outro lado logo em seguida.",
                en = "",
                es = "",
                pl = ""
            }
        },
        ["Bukimorphose: Hammer Arms"] = {
            icon = "Bukimorphose - Hammer Arms-Icon.png",
            level = "",
            cooldown = 25,
            energy = 25,
            powerpve = 40,
            powerpvp = 30,
            video = "Bukimorphose - Hammer Arms-Video.mp4",
            desc = {
                pt = "Baby 5 golpeia o chão à sua frente com seus braços transformados em um grande martelo, causando dano e reduzindo a velocidade de movimento dos inimigos atingidos em [debuff:80] por [sec:4 segundos].",
                en = "",
                es = "",
                pl = ""
            }
        },
        ["Bukimorphose: Espada Girl"] = {
            icon = "Bukimorphose - Espada Girl-Icon.png",
            level = "",
            cooldown = 40,
            energy = 30,
            powerpve = 30,
            powerpvp = 25,
            video = "Bukimorphose - Espada Girl-Video.mp4",
            desc = {
                pt = "Baby 5 se transforma em uma espada gigante e gira rapidamente, parecendo uma gigantesca serra circular, puxando e causando dano duas vezes em todos os inimigos próximos. Inimigos fora do alcance da lâmina também serão puxados para dentro, mas receberão apenas [atk:50%] do dano.",
                en = "",
                es = "",
                pl = ""
            }
        },
        ["Bukimorphose: Gun Girl"] = {
            icon = "Punch-Icon.png",
            level = "",
            cooldown = 1,
            video = "Bukimorphose - Gun Girl-Video.mp4",
            desc = {
                pt = "Baby 5 assume uma postura de combate com armas de fogo, alterando todas as suas habilidades para o uso de armas à distância. Enquanto estiver nessa postura, sua velocidade de movimento é reduzida em [debuff:40] e sua defesa é diminuída em [def:20%].",
                en = "",
                es = "",
                pl = ""
            }
        }
    },


     forms = {
     local i = 1
        ["Gun Girl"] = {
    while true do
            order = {
        local nome = args['nome' .. i]
                "Cannon Arm Shot",
        if not nome or mw.text.trim(nome) == '' then break end
                "Bukimorphose: Shotgun Arm",
                "Bukimorphose: Flamethrower Arm",
                "Bukimorphose: Missile Girl",
                "Gatling Girl",
                "Bukimorphose: Kamaitachi Arms"
            },
            skills = {
                ["Cannon Arm Shot"] = {
                    icon = "Cannon Arm Shot-Icon.png",
                    level = "",
                    cooldown = 3,
                    energy = -15,
                    powerpve = 22.5,
                    powerpvp = 8,
                    video = "Cannon Arm Shot-Video.mp4",
                    desc = {
                        pt = "Baby 5 transforma seu braço em um canhão e atira uma bola de canhão que explode no impacto com o alvo, causando dano em uma área pequena.",
                        en = "",
                        es = "",
                        pl = ""
                    }
                },
                ["Bukimorphose: Shotgun Arm"] = {
                    icon = "Bukimorphose - Shotgun Arm-Icon.png",
                    level = "",
                    cooldown = 15,
                    energy = -20,
                    powerpve = 32,
                    powerpvp = 26,
                    video = "Bukimorphose - Shotgun Arm-Video.mp4",
                    desc = {
                        pt = "Baby 5 transforma seu braço em uma espingarda e dispara à frente, causando dano, aplicando lentidão de [debuff:80] por [sec:3 segundos] e empurrando os inimigos enquanto se puxa para trás.",
                        en = "",
                        es = "",
                        pl = ""
                    }
                },
                ["Bukimorphose: Flamethrower Arm"] = {
                    icon = "Bukimorphose - Flamethrower Arm-Icon.png",
                    level = "",
                    cooldown = 25,
                    energy = -25,
                    powerpve = 8,
                    powerpvp = 10,
                    video = "Bukimorphose - Flamethrower Arm-Video.mp4",
                    desc = {
                        pt = "Baby 5 transforma seu braço em um lança-chamas e dispara fogo à sua frente, deixando o chão queimando por [sec:5 segundos] e causando dano a qualquer um que esteja nas chamas a cada segundo.",
                        en = "",
                        es = "",
                        pl = ""
                    }
                },
                ["Bukimorphose: Missile Girl"] = {
                    icon = "Bukimorphose - Missile Girl-Icon.png",
                    level = "",
                    cooldown = 45,
                    powerpve = 60,
                    powerpvp = 30,
                    video = "Bukimorphose - Missile Girl-Video.mp4",
                    desc = {
                        pt = "Baby 5 se transforma em um enorme míssil militar que explode em pedaços após [sec:2,2 segundos] ou pressionando o botão da habilidade novamente. Enquanto estiver na forma de míssil, ela se torna imparável, recebe [def:50% menos dano] e tem sua velocidade de movimento aumentada em [ms:400]. Após a explosão, Baby 5 se reconstrói a partir dos restos do míssil. Em instâncias não PvP, a explosão atordoa qualquer inimigo atingido por [sec:3 segundos].",
                        en = "",
                        es = "",
                        pl = ""
                    }
                },
                ["Gatling Girl"] = {
                    icon = "Gatling Girl-Icon.png",
                    level = "",
                    cooldown = 100,
                    energy = -40,
                    powerpve = 9,
                    powerpvp = 7,
                    video = "Gatling Girl-Video.mp4",
                    desc = {
                        pt = "Baby 5 pega uma enorme metralhadora e dispara em uma área selecionada, infligindo danos massivos até 14 vezes e reduzindo a velocidade de movimento de qualquer inimigo pego em seu caminho em [debuff:100] por [sec:1 segundo]. Se usado com a \"Conjuração Rápida\" ativada, Baby 5 pode mirar a arma livremente e controlar a área de disparo.",
                        en = "",
                        es = "",
                        pl = ""
                    }
                },
                ["Bukimorphose: Kamaitachi Arms"] = {
                    icon = "Bukimorphose - Kamaitachi Arms-Icon.png",
                    level = "",
                    cooldown = 1,
                    video = "Bukimorphose - Kamaitachi Arms-Video.mp4",
                    desc = {
                        pt = "Baby 5 muda sua postura de combate e retorna à sua forma original, revertendo todas as alterações de status.",
                        en = "",
                        es = "",
                        pl = ""
                    }
                }
            }
        }
    }
}


return M
        local link        = mw.text.trim(args['link' .. i] or '')
        local img        = mw.text.trim(args['img' .. i] or '')
        local qtd        = mw.text.trim(args['qtd' .. i] or '0')
        local bauParam    = mw.text.trim(args['bau' .. i] or 'comum')
 
        local comum, ouro = parseBau(bauParam)
        if comum == nil and ouro == nil then
            -- Modo antigo: bau = comum ou ouro, qtd = quantidade
            local n = tonumber(qtd) or 0
            if bauParam:lower() == 'ouro' then
                comum, ouro = 0, n
            else
                comum, ouro = n, 0
            end
        end
 
        local href      = tostring(mw.uri.localUrl(link))
        local comumHtml = frame:preprocess('[[File:Chest_normal.png|link=]]')
        local ouroHtml  = frame:preprocess('[[File:Chest_gold.png|link=]]')
 
        -- Banner 380x80: fundo = img da ilha, baus canto superior esquerdo, título canto inferior esquerdo
        local banner    = mw.html.create('span')
        banner:attr('class', 'island-banner')
            :attr('data-href', href)
            :attr('data-bgimg', img)
            :attr('role', 'link')
            :attr('tabindex', '0')
 
        local chests = banner:tag('span'):attr('class', 'island-chests')
        if comum > 0 then
            chests:tag('span'):attr('class', 'island-chest-group')
                :node(mw.html.create(''):wikitext(comumHtml))
                :tag('span'):attr('class', 'island-chest-count'):wikitext(tostring(comum))
        end
        if ouro > 0 then
            chests:tag('span'):attr('class', 'island-chest-group')
                :node(mw.html.create(''):wikitext(ouroHtml))
                :tag('span'):attr('class', 'island-chest-count'):wikitext(tostring(ouro))
        end
 
        banner:tag('span'):attr('class', 'island-title'):wikitext(nome)
 
        cards[#cards + 1] = banner
        i = i + 1
    end
 
    local grid = mw.html.create('div')
    grid:attr('class', 'island-grid')
    for _, card in ipairs(cards) do
        grid:node(card)
    end
 
    return tostring(grid)
end
 
return p

Edição atual tal como às 23h47min de 12 de março de 2026

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

local p = {}

-- Parseia bau no formato "2 comum, 8 ouro" ou "8 ouro, 2 comum". Retorna comum, ouro (números) ou nil,nil se for só tipo (comum/ouro).
local function parseBau(s)
    if not s or s == '' then return nil, nil end
    s           = mw.text.trim(s)
    local comum = tonumber(s:match('(%d+)%s*[Cc]omum')) or 0
    local ouro  = tonumber(s:match('(%d+)%s*[Oo]uro')) or 0
    if comum > 0 or ouro > 0 then
        return comum, ouro
    end
    return nil, nil
end

function p.main(frame)
    local args = frame:getParent().args
    local cards = {}

    local i = 1
    while true do
        local nome = args['nome' .. i]
        if not nome or mw.text.trim(nome) == '' then break end

        local link        = mw.text.trim(args['link' .. i] or '')
        local img         = mw.text.trim(args['img' .. i] or '')
        local qtd         = mw.text.trim(args['qtd' .. i] or '0')
        local bauParam    = mw.text.trim(args['bau' .. i] or 'comum')

        local comum, ouro = parseBau(bauParam)
        if comum == nil and ouro == nil then
            -- Modo antigo: bau = comum ou ouro, qtd = quantidade
            local n = tonumber(qtd) or 0
            if bauParam:lower() == 'ouro' then
                comum, ouro = 0, n
            else
                comum, ouro = n, 0
            end
        end

        local href      = tostring(mw.uri.localUrl(link))
        local comumHtml = frame:preprocess('[[File:Chest_normal.png|link=]]')
        local ouroHtml  = frame:preprocess('[[File:Chest_gold.png|link=]]')

        -- Banner 380x80: fundo = img da ilha, baus canto superior esquerdo, título canto inferior esquerdo
        local banner    = mw.html.create('span')
        banner:attr('class', 'island-banner')
            :attr('data-href', href)
            :attr('data-bgimg', img)
            :attr('role', 'link')
            :attr('tabindex', '0')

        local chests = banner:tag('span'):attr('class', 'island-chests')
        if comum > 0 then
            chests:tag('span'):attr('class', 'island-chest-group')
                :node(mw.html.create(''):wikitext(comumHtml))
                :tag('span'):attr('class', 'island-chest-count'):wikitext(tostring(comum))
        end
        if ouro > 0 then
            chests:tag('span'):attr('class', 'island-chest-group')
                :node(mw.html.create(''):wikitext(ouroHtml))
                :tag('span'):attr('class', 'island-chest-count'):wikitext(tostring(ouro))
        end

        banner:tag('span'):attr('class', 'island-title'):wikitext(nome)

        cards[#cards + 1] = banner
        i = i + 1
    end

    local grid = mw.html.create('div')
    grid:attr('class', 'island-grid')
    for _, card in ipairs(cards) do
        grid:node(card)
    end

    return tostring(grid)
end

return p