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

De Wiki Gla
Ir para navegação Ir para pesquisar
m
m (bannerzin)
 
(39 revisões intermediárias por 2 usuários não estão sendo mostradas)
Linha 1: Linha 1:
-- Módulo:Chopper — dados do personagem
local p = {}
local M = {
    tier = "Diamante",
    tags = { "Suporte", "Lutador", "Chapeu de Palha", "Akuma no Mi" },


    order = { "Torino Flask", "Change Form", "Hiluluk Sakura Medicine", "Guard Point", "Doctorine Medicine", "Kaku Hou Elf", "Monster Point", "Walk Point" },
-- 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


    skills = {
function p.main(frame)
        ["Torino Flask"] = {
    local args = frame:getParent().args
            desc = {
    local cards = {}
                pt =
                "Chopper joga uma substância nociva no corpo do oponente."
            }
        },
        ["Change Form"] = {
            desc = {
                pt =
                "Chopper aprimorou completamente todas as suas transformações, tornando-se capaz de se transformar livremente nas formas Kung Fu Point, Heavy Point e Brain Point. Ao utilizar o Kung Fu Point, Chopper torna-se proficiente em Kung Fu, sendo capaz de realizar movimentos versáteis e utilizar novas habilidades, além de ganhar {{ms:40}} de velocidade de movimento bônus."
            },
            suborder = { "Brain Point", "Kung Fu Point", "Heavy Point" },
            subs = {
                ["Brain Point"] = {
                    desc = {
                        pt =
                        "Forma base do Chopper, focada em habilidades médicas e suporte."
                    }
                },
                ["Kung Fu Point"] = {
                    desc = {
                        pt =
                        "Chopper torna-se proficiente em Kung Fu, sendo capaz de realizar movimentos versáteis e utilizar novas habilidades, além de ganhar {{ms:40}} de velocidade de movimento bônus."
                    },
                    suborder = { "Kung Fu Crane Kick", "Kung Fu Spin Kick", "Kung Fu Acrobacy" },
                    subs = {
                        ["Kung Fu Crane Kick"] = {
                            desc = {
                                pt =
                                "Chopper dá um chute poderoso no oponente."
                            }
                        },
                        ["Kung Fu Spin Kick"] = {
                            desc = {
                                pt =
                                "Chopper dá um pequeno salto para frente e, enquanto está no ar, gira as pernas, chutando o oponente e empurrando inimigos jogadores."
                            }
                        },
                        ["Kung Fu Acrobacy"] = {
                            desc = {
                                pt =
                                "Com um movimento versátil, Chopper pula para frente para evitar ataques ou perseguir seu oponente."
                            }
                        }
                    }
                },
                ["Heavy Point"] = {
                    desc = {
                        pt =
                        "Chopper pode mudar livremente para a transformação Heavy Point. Nesta forma, Chopper perde praticamente todas as características de uma rena. Essa forma também lhe confere {{ms:20}} de velocidade de movimento bônus e {{def:84%}} de defesa bônus, atributos muito úteis em uma batalha."
                    },
                    suborder = { "Heavy Punch", "Heavy Gong", "Mega Gong" },
                    subs = {
                        ["Heavy Punch"] = {
                            desc = {
                                pt =
                                "Chopper dá um soco básico no rosto do oponente."
                            }
                        },
                        ["Heavy Gong"] = {
                            desc = {
                                pt =
                                "Chopper dá um poderoso soco em área frontal."
                            }
                        },
                        ["Mega Gong"] = {
                            desc = {
                                pt =
                                "Chopper junta as mãos e esmaga o chão, causando dano em uma área frontal e reduzindo a velocidade dos inimigos em {{debuff:100}} por {{sec:4 segundos}}."
                            }
                        }
                    }
                }
            }
        },
        ["Hiluluk Sakura Medicine"] = {
            desc = {
                pt =
                "Chopper realiza um procedimento medicinal, curando instantaneamente todos os aliados ao seu redor."
            }
        },
        ["Guard Point"] = {
            desc = {
                pt =
                "Os pelos do Chopper crescem e cobrem seu corpo inteiro, deixando apenas a cabeça e as pernas visíveis. Com isso, Chopper é capaz de resistir a ataques externos como se possuísse um escudo impenetrável e ainda protege os aliados, deixando-os invulneráveis por {{sec:3 segundos}}."
            }
        },
        ["Doctorine Medicine"] = {
            desc = {
                pt =
                "Chopper usa seu remédio especial, curando todos os aliados em volta dele 28 vezes durante {{sec:15 segundos}}. Esta técnica também concede bônus de {{atk:25%}} de ataque para o Chopper e seus aliados por {{sec:15 segundos}}."
            }
        },
        ["Kaku Hou Elf"] = {
            desc = {
                pt =
                "Chopper se lança para fora do chão (após cavar abaixo da superfície) e voa com os chifres em direção à área selecionada, causando dano, reduzindo a velocidade dos inimigos em {{debuff:80}} por {{sec:4 segundos}} e também reduzindo seu ataque em {{atk:15%}} por {{sec:8 segundos}}. Essa técnica deixa túneis no chão por {{sec:12 segundos}}, que podem ser usados por Chopper e seus aliados. Os túneis podem ser desativados ao pressionar a habilidade novamente."
            }
        },
        ["Monster Point"] = {
            desc = {
                pt =
                "Monster Point agora é a única forma que Chopper precisa de uma Rumble Ball para ativar e, ao consumir uma, ele pode permanecer transformado por {{sec:25 segundos}}. Essa transformação concede a Chopper um grande aumento em seus atributos físicos. Seu corpo se torna incrivelmente denso e resistente, recebendo {{def:40%}} de redução de dano e também um bônus de {{ms:40}} de velocidade. Após voltar ao normal, Chopper fica exausto e incapaz de se mover, e quando está próximo de um boss, recebe {{def:95%}} de redução de dano. A duração da exaustão é de {{sec:4 segundos}} em instâncias PvE e {{sec:10 segundos}} em instâncias PvP."
            }
        },
        ["Walk Point"] = {
            desc = {
                pt =
                "Esta é uma forma em que o Chopper se transforma em uma rena comum, útil para fazer viagens a pé. Nesta forma, ele ganha {{ms:140}} de velocidade de movimento bônus. Esta forma não pode ser utilizada em batalha."
            }
        },
    }
}


return M
    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

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