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

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


    -- Skills fixas (sempre aparecem, independente da forma)
-- 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).
    order = { "Change Form", "Guard Point", "Kaku Hou Elf", "Monster Point", "Walk Point" },
local function parseBau(s)
   
    if not s or s == '' then return nil, nil end
    -- Skills específicas de cada forma (serão inseridas dinamicamente no order baseado na forma atual)
    s          = mw.text.trim(s)
    forms = {
    local comum = tonumber(s:match('(%d+)%s*[Cc]omum')) or 0
        ["Brain Point"] = {
    local ouro  = tonumber(s:match('(%d+)%s*[Oo]uro')) or 0
            order = { "Torino Flask", "Hiluluk Sakura Medicine", "Doctorine Medicine" },
    if comum > 0 or ouro > 0 then
            skills = {
        return comum, ouro
                -- Serão preenchidas com as informações das prints
    end
            }
    return nil, nil
        },
end
        ["Kung Fu Point"] = {
            order = { "Kung Fu Crane Kick", "Kung Fu Spin Kick", "Kung Fu Acrobacy" },
            skills = {
                ["Kung Fu Crane Kick"] = {
                    icon = "",
                    level = "",
                    cooldown = 2,
                    powerpve = 15,
                    powerpvp = 10,
                    video = "",
                    desc = {
                        pt = "Chopper dá um chute poderoso no oponente.",
                        en = "",
                        es = "",
                        pl = ""
                    }
                },
                ["Kung Fu Spin Kick"] = {
                    icon = "",
                    level = "",
                    cooldown = 12,
                    powerpve = 32,
                    powerpvp = 20,
                    video = "",
                    desc = {
                        pt = "Chopper dá um pequeno salto para frente e, enquanto está no ar, gira as pernas, chutando o oponente e empurrando inimigos jogadores.",
                        en = "",
                        es = "",
                        pl = ""
                    }
                },
                ["Kung Fu Acrobacy"] = {
                    icon = "",
                    level = "",
                    cooldown = 20,
                    video = "",
                    desc = {
                        pt = "Com um movimento versátil, Chopper pula para frente para evitar ataques ou perseguir seu oponente.",
                        en = "",
                        es = "",
                        pl = ""
                    }
                }
            }
        },
        ["Heavy Point"] = {
            order = { "Heavy Punch", "Heavy Gong", "Mega Gong" },
            skills = {
                ["Heavy Punch"] = {
                    icon = "",
                    level = "",
                    cooldown = 3,
                    powerpve = 22.5,
                    powerpvp = 12.5,
                    video = "",
                    desc = {
                        pt = "Chopper dá um soco básico no rosto do oponente.",
                        en = "",
                        es = "",
                        pl = ""
                    }
                },
                ["Heavy Gong"] = {
                    icon = "",
                    level = "",
                    cooldown = 12,
                    powerpve = 35,
                    powerpvp = 24,
                    video = "",
                    desc = {
                        pt = "Chopper dá um poderoso soco em área frontal.",
                        en = "",
                        es = "",
                        pl = ""
                    }
                },
                ["Mega Gong"] = {
                    icon = "",
                    level = "",
                    cooldown = 25,
                    powerpve = 50,
                    powerpvp = 26,
                    video = "",
                    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 **100** por **4 segundos**.",
                        en = "",
                        es = "",
                        pl = ""
                    }
                }
            }
        }
    },


    skills = {
function p.main(frame)
        ["Change Form"] = {
    local args = frame:getParent().args
            icon = "",
    local cards = {}
            level = "",
            cooldown = 1,
            form_switch = true, -- Indica que esta skill alterna entre formas (não usa back)
            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 40 de velocidade de movimento bônus. Ao utilizar o Heavy Point, Chopper perde praticamente todas as características de uma rena. Essa forma também lhe confere 20 de velocidade de movimento bônus e 84% de defesa bônus, atributos muito úteis em uma batalha.",
                en = "",
                es = "",
                pl = ""
            }
        },
       
        ["Guard Point"] = {
            icon = "",
            level = "",
            cooldown = 30,
            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 **3 segundos**.",
                en = "",
                es = "",
                pl = ""
            }
        },
       
        ["Kaku Hou Elf"] = {
            icon = "",
            level = "",
            cooldown = 40,
            powerpve = 70,
            powerpvp = 20,
            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 **80** por **4 segundos** e também reduzindo seu ataque em **15%** por **8 segundos**. Essa técnica deixa túneis no chão por **12 segundos**, que podem ser usados por Chopper e seus aliados. Os túneis podem ser desativados ao pressionar a habilidade novamente.",
                en = "",
                es = "",
                pl = ""
            }
        },
       
        ["Monster Point"] = {
            icon = "",
            level = "",
            cooldown = 200,
            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 **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 **40%** de redução de dano e também um bônus de **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 **95%** de redução de dano. A duração da exaustão é de **4 segundos** em instâncias PvE e **10 segundos** em instâncias PvP.",
                en = "",
                es = "",
                pl = ""
            },
            -- Monster Point tem subskills normais (com back no final)
            suborder = { "Koku tei Palm", "Koku tei Stomp", "Koku tei Rampage", "Monster Point" },
            subskills = {
                ["Koku tei Palm"] = {
                    icon = "",
                    level = "",
                    cooldown = 5,
                    powerpve = 32,
                    video = "",
                    desc = {
                        pt = "Monster Chopper bate com força em seus adversários com a mão estendida.",
                        en = "",
                        es = "",
                        pl = ""
                    }
                },
                ["Koku tei Stomp"] = {
                    icon = "",
                    level = "",
                    cooldown = 12,
                    powerpve = 40,
                    video = "",
                    desc = {
                        pt = "Monster Chopper pisa com força no chão, causando dano e reduzindo a velocidade dos inimigos ao seu redor em **60** por **8 segundos**. Em instâncias PvE, inimigos atingidos pelo impacto também têm sua defesa reduzida em **40%** por **8 segundos**.",
                        en = "",
                        es = "",
                        pl = ""
                    }
                },
                ["Koku tei Rampage"] = {
                    icon = "",
                    level = "",
                    cooldown = 35,
                    powerpve = 15,
                    powerpvp = 9,
                    video = "",
                    desc = {
                        pt = "Monster Chopper bate no chão com muita força por 7 vezes, causando dano em uma grande área ao redor dele. Inimigos atingidos ficam com a velocidade de movimento reduzida em **90** e sofrem redução de ataque de **20%** por **8 segundos**.",
                        en = "",
                        es = "",
                        pl = ""
                    }
                },
                ["Monster Point"] = {
                    icon = "",
                    level = "",
                    cooldown = 1,
                    back = true, -- Volta à forma anterior
                    desc = {
                        pt = "Chopper volta à forma anterior.",
                        en = "",
                        es = "",
                        pl = ""
                    }
                }
            }
        },
       
        ["Walk Point"] = {
            icon = "",
            level = "",
            cooldown = 5,
            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 140 de velocidade de movimento bônus. Esta forma não pode ser utilizada em batalha.",
                en = "",
                es = "",
                pl = ""
            }
        }
    },
   
    -- Skills específicas de Brain Point (serão movidas para forms["Brain Point"].skills)
    -- Estas serão adicionadas quando você enviar as informações completas
}


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