Aller au contenu

Légendes Pokémon : Z-A est là !

Le contenu du jeu est déjà disponible sur le wiki, mais beaucoup de choses restent encore à ajouter. Vous pouvez rejoindre le Discord pour en discuter.
Attention aux spoils, et bonne navigation sur Poképédia !

« Module:Ressources/infosPokemon » : différence entre les versions

De Poképédia
m correction Magearna
m Clarification
 
Ligne 10 : Ligne 10 :
}
}


-- Lorsque le nom d'affichage = nom des formes
-- Lorsque le nom d'affichage = nom des formes, pas de page dédiée
local poke_short_forms = { ["Évoli"] = true, ["Zarbi"] = true, ["Arceus"] = true,
local poke_short_forms = { ["Évoli"] = true, ["Zarbi"] = true, ["Arceus"] = true,
     ["Magearna"] = true, ["Charmilly"] = true, ["Bekaglaçon"] = true, ["Zacian"] = true,
     ["Magearna"] = true, ["Charmilly"] = true, ["Bekaglaçon"] = true, ["Zacian"] = true,
     ["Zamazenta"] = true, ["Ursaking"] = true }
     ["Zamazenta"] = true, ["Ursaking"] = true }


-- Lorsque le nom d'affichage = préfix autre que "Forme " + nom des formes
-- Lorsque le nom d'affichage = préfix autre que "Forme " + nom des formes, pas de page dédiée
local poke_prefix_forms = {
local poke_prefix_forms = {
     ["Cheniti"] = "Cape ",
     ["Cheniti"] = "Cape ",
Ligne 42 : Ligne 42 :
local other_patterns = {
local other_patterns = {
     ["Pikachu"] = function(forme)
     ["Pikachu"] = function(forme)
         if (forme == "Partenaire") then return { mw.text.trim(forme), "Pikachu Partenaire" }
         if (forme == "Partenaire") then return { forme, "Pikachu Partenaire" }
         elseif (string.match(forme, "^Casquette ")) then return { forme, "Pikachu" }
         elseif (string.match(forme, "^Casquette ")) then return { forme, "Pikachu" }
         elseif (string.match(forme, "^Halloween")) then return { "Chapeau d'Halloween", "Pikachu" }
         elseif (string.match(forme, "^Halloween")) then return { "Chapeau d'Halloween", "Pikachu" }
Ligne 62 : Ligne 62 :




-- Toutes les autres formes où le nom d'affichage n'est pas juste "Forme <forme>"
-- Toutes les autres formes où le nom d'affichage n'est pas juste "Forme <forme>" ou celles ayant une page dédiée
local other_forms = {
local other_forms = {
     ["Tauros"] = {
     ["Tauros"] = {

Dernière version du 7 octobre 2025 à 18:10

Cette fonction permet de mettre en forme les informations d'un Pokémon à partir de son nom. Il comporte un seul paramètre : le nom du Pokémon et des précisions sur celui-ci au besoin. Cinq précisions peuvent être données pour le nom d'un Pokémon (forme, sexe, nom, lien, jeu) suivis de la valeur entre parenthèses.

Attention à ne pas le modifier sans savoir précisément ce que l'on fait : il est utilisé sur des milliers de pages (toutes les pages de Pokémon, de capacités et de routes !) et toute modification impacte donc fortement le wiki.

Exemples (mode classique)[modifier]

  • Avec un Pokémon basique :

ressources.infosPokemon("Mélofée") retourne :
0035 Mélofée

  • Avec un Pokémon dont la forme est précisée :

ressources.infosPokemon("Deoxys forme(Vitesse)") retourne :
0386 Deoxys
Forme Vitesse

  • Avec une Forme d'Alola :

ressources.infosPokemon("Tadmorv forme(Alola)") retourne :
0088 Tadmorv
Forme d'Alola

  • Avec un sexe :

ressources.infosPokemon("Mistigrix sexe(f)") retourne :
0678 Mistigrix
Femelle

  • Avec un jeu :

ressources.infosPokemon("Jirachi sup(E)") retourne :
0385 JirachiE

  • Avec une forme et un jeu :

ressources.infosPokemon("Hoopa forme(Déchaîné) sup(ROSA)") retourne :
0720 HoopaROSA
Forme Déchaîné

  • Avec un Pokémon inexistant :

ressources.infosPokemon("Machinbidule") retourne :
???? Machinbidule

Exemples (mode miniature)[modifier]

  • Avec un Pokémon basique :

ressources.infosPokemon("Mélofée", "miniature") retourne : Mélofée

  • Avec un Pokémon dont la forme est précisée :

ressources.infosPokemon("Deoxys forme(Vitesse)", "miniature") retourne : Deoxys (Forme Vitesse)

  • Avec une Forme d'Alola :

ressources.infosPokemon("Tadmorv forme(Alola)", "miniature") retourne : Tadmorv (Forme d'Alola)

  • Avec un sexe :

ressources.infosPokemon("Mistigrix sexe(f)", "miniature") retourne : Mistigrix (Femelle)

  • Avec un jeu :

ressources.infosPokemon("Jirachi sup(E)", "miniature") retourne : JirachiE

  • Avec une forme et un jeu :

ressources.infosPokemon("Hoopa forme(Déchaîné) sup(ROSA)", "miniature") retourne : Hoopa (Hoopa Déchaîné)ROSA

  • Avec un Pokémon inexistant :

ressources.infosPokemon("Machinbidule", "miniature") retourne : Machinbidule


local numeros = mw.loadData("Module:Data/NumérosPokémon")

-- Dictionnaires pour largement simplifier la gestion des formes spéciales
local common_forms = {
    ["Alola"] = { "Forme d'Alola", " d'Alola" },
    ["Galar"] = { "Forme de Galar", " de Galar" },
    ["Hisui"] = { "Forme de Hisui", " de Hisui" },
    ["Paldea"] = { "Forme de Paldea", " de Paldea" },
    ["Gigamax"] = { "Gigamax", " Gigamax" }
}

-- Lorsque le nom d'affichage = nom des formes, pas de page dédiée
local poke_short_forms = { ["Évoli"] = true, ["Zarbi"] = true, ["Arceus"] = true,
    ["Magearna"] = true, ["Charmilly"] = true, ["Bekaglaçon"] = true, ["Zacian"] = true,
    ["Zamazenta"] = true, ["Ursaking"] = true }

-- Lorsque le nom d'affichage = préfix autre que "Forme " + nom des formes, pas de page dédiée
local poke_prefix_forms = {
    ["Cheniti"] = "Cape ",
    ["Cheniselle"] = "Cape ",
    ["Ceriflor"] = "Temps ",
    ["Sancoki"] = "Mer ",
    ["Tritosor"] = "Mer ",
    ["Bargantua"] = "Motif ",
    ["Keldeo"] = "Aspect ",
    ["Genesect"] = "Module ",
    ["Prismillon"] = "Motif ",
    ["Flabébé"] = "Fleur ",
    ["Floette"] = "Fleur ",
    ["Florges"] = "Fleur ",
    ["Pitrouille"] = "Taille ",
    ["Banshitrouye"] = "Taille ",
    ["Xerneas"] = "Mode ",
    ["Plumeline"] = "Style ",
    ["Silvallié"] = "Type : ",
    ["Morpeko"] = "Mode ",
    ["Famignol"] = "Famille de ",
    ["Tapatoès"] = "Plumage ",
}

-- Pokémon avec beaucoup de formes et un pattern utilisable
local other_patterns = {
    ["Pikachu"] = function(forme)
        if (forme == "Partenaire") then return { forme, "Pikachu Partenaire" }
        elseif (string.match(forme, "^Casquette ")) then return { forme, "Pikachu" }
        elseif (string.match(forme, "^Halloween")) then return { "Chapeau d'Halloween", "Pikachu" }
        elseif (string.match(forme, "^Fêtes")) then return { "Chapeau rouge", "Pikachu" }
        else return { "Pikachu " .. forme, "Pikachu " .. forme } -- Les Cosplayeurs
        end
    end,
    ["Couafarel"] = function(forme)
        if (forme == "Sauvage") then return { "Forme Sauvage", "Couafarel" }
        else return { "Coupe " .. forme, "Couafarel" }
        end
    end,
    ["Météno"] = function(forme)
        if (forme == "Météore") then return { "Forme Météore", "Météno" }
        else return { "Noyau " .. forme, "Météno" }
        end
    end
}


-- Toutes les autres formes où le nom d'affichage n'est pas juste "Forme <forme>" ou celles ayant une page dédiée
local other_forms = {
    ["Tauros"] = {
        ["Paldea Combative"] = { "Forme de Paldea<br>Race Combative", "Tauros de Paldea" },
        ["Paldea Flamboyante"] = { "Forme de Paldea<br>Race Flamboyante", "Tauros de Paldea" },
        ["Paldea Aquatique"] = { "Forme de Paldea<br>Race Aquatique", "Tauros de Paldea" }
    },
    ["Dialga"] = {
        ["Primal"] = { "Dialga Primal", "Dialga" }
    },
    ["Darumacho"] = {
        ["Transe"] = { "Mode Transe", "Darumacho" },
        ["Galar Transe"] = { "Forme de Galar<br>Mode Transe", "Darumacho de Galar" }
    },
    ["Kyurem"] = {
        ["Blanc"] = { "Kyurem Blanc", "Kyurem Blanc" },
        ["Noir"] = { "Kyurem Noir", "Kyurem Noir" }
    },
    ["Necrozma"] = {
        ["Crinière du Couchant"] = { "Crinière du Couchant", "Necrozma Crinière du Couchant" },
        ["Ailes de l'Aurore"] = { "Ailes de l'Aurore", "Necrozma Ailes de l'Aurore" },
        ["Ultra"] = { "Ultra-Necrozma", "Ultra-Necrozma" }
    },
    ["Éthernatos"] = {
        ["Infinimax"] = { "Infinimax", "Éthernatos Infinimax" }
    },
    ["Shifours"] = {
        ["Poing Final"] = { "Style Poing Final", "Shifours" },
        ["Mille Poings"] = { "Style Mille Poings", "Shifours" },
        ["Gigamax Poing Final"] = { "Gigamax<br>Style Poing Final", "Shifours Gigamax" },
        ["Gigamax Mille Poings"] = { "Gigamax<br>Style Mille Poings", "Shifours Gigamax" }
    },
    ["Sylveroy"] = {
        ["Cavalier d'Effroi"] = { "Cavalier d'Effroi", "Sylveroy, le Cavalier d'Effroi" },
        ["Cavalier du Froid"] = { "Cavalier du Froid", "Sylveroy, le Cavalier du Froid" }
    },
    ["Koraidon"] = {
        ["Finale"] = { "Forme Finale", "Koraidon" },
        ["Course"] = { "Forme de Course", "Koraidon" },
        ["Nage"] = { "Forme de Nage", "Koraidon" },
        ["Vol"] = { "Forme de Vol", "Koraidon" }
    },
    ["Miraidon"] = {
        ["Ultime"] = { "Mode Ultime", "Miraidon" },
        ["Terrestre"] = { "Mode Terrestre", "Miraidon" },
        ["Aquatique"] = { "Mode Aquatique", "Miraidon" },
        ["Aérien"] = { "Mode Aérien", "Miraidon" }
    },
    ["Ogerpon"] = {
        ["Turquoise"] = { "Masque Turquoise", "Ogerpon" },
        ["Puits"] = { "Masque du Puits", "Ogerpon" },
        ["Fourneau"] = { "Masque du Fourneau", "Ogerpon" },
        ["Pierre"] = { "Masque de la Pierre", "Ogerpon" }
    }
}

-- Dictionnaire indiquant les jeux pour lesquels il faut rediriger vers une sous-page du Pokémon
local games_with_pages = {
    ["PDMRB"] = "Pokémon Donjon Mystère",
    ["PDMTOC"] = "Pokémon Donjon Mystère",
    ["PDMPI"] = "Pokémon Donjon Mystère",
    ["PMDM"] = "Pokémon Donjon Mystère",
    ["PDMDX"] = "Pokémon Donjon Mystère"
}

return function ( poke, mode )
    local forme, sexe, nom, lien, jeu, sup
    
    -- Fonction qui récupère les détails indiqués d'un Pokémon entre parenthèses
    -- '\' fait office de caractère d'échappement en cas de parenthèse fermante
    local function get_modifier(modifier)
        local regex = modifier .. "%([^)]*[^\\]%)"
        if (string.match(poke, regex)) then
            local ret = string.sub(string.match(poke, regex), string.len(modifier)+2, -2)
            ret = string.gsub(ret, "\\", "")
            poke = string.gsub(poke, regex, "")
            return ret
        else return "" end
    end
    
    -- Récupération des données additionnelles
    forme = get_modifier("forme")
    jeu = get_modifier("jeu")
    sexe = get_modifier("sexe")
    if (sexe == "f") then sexe = "♀" 
    elseif (sexe == "m") then sexe = "♂" end
    sup = get_modifier("sup")
    if (sup ~= "") then sup = mw.getCurrentFrame():expandTemplate{ title = 'Sup', args = { sup } } end
    -- Pour pouvoir overwrite par la suite si nécessaire
    local temp_nom = get_modifier("nom")
    local temp_lien = get_modifier("lien")
    
    -- Nettoyage du nom et valeurs par défaut
    poke = mw.text.trim(poke)
    lien = poke
    nom = ""
    local num = numeros[poke] or "???"
        
    if (forme ~= "")
    then
        if common_forms[forme] then
            nom = common_forms[forme][1]
            lien = poke .. common_forms[forme][2]
            
        elseif (forme == "Méga") then
            nom = "Méga-".. poke
            lien = "Méga-" .. poke
            
        elseif (forme == "Primo") then
            nom = "Primo-" .. poke
            lien = "Primo-" .. poke
            
        
        elseif (forme == "Méga X") then
            nom = "Méga-".. poke .. " X"
            lien = "Méga-" .. poke .. " X"
            
        elseif (forme == "Méga Y") then
            nom = "Méga-".. poke .. " Y"
            lien = "Méga-" .. poke .. " Y"
            
        elseif poke_short_forms[poke] then
            nom = mw.text.trim(forme)
            
        elseif poke_prefix_forms[poke] then
            nom = poke_prefix_forms[poke] .. forme
            
        elseif (poke == "Motisma" or poke == "Hoopa") then
            nom = poke .. " " .. forme
            
        elseif other_patterns[poke] then
            local r = other_patterns[poke](forme)
            nom = r[1]
            lien = r[2]
            
        elseif (other_forms[poke] and other_forms[poke][forme]) then
            local r = other_forms[poke][forme]
            nom = r[1]
            lien = r[2]
            
        else -- Toutes les formes où le nom d'affichage est juste "Forme <forme>" sans redirection
            nom = "Forme " .. forme
            lien = poke
        end
    end
    
    -- Gestion des sous pages pour jeux spécifiques
    if (games_with_pages[jeu]) then
        lien = poke .. "/" .. games_with_pages[jeu]
    end
    
    -- Gestion des formes séxuées
    if (sexe == "♀") then nom = "Femelle" end
    if (sexe == "♂") then nom = "Mâle" end
    
    -- Si "nom" ou "lien" ont été indiqués, on overwrite les valeurs
    if (temp_nom ~= "") then nom = temp_nom end
    if (temp_lien ~= "") then lien = temp_lien end
    
    -- Ajouts d'espaces pour la valeur de retour
    if (forme ~= "") then forme = " " .. forme end
    if (sexe ~= "") then sexe = " " .. sexe end
    if (jeu ~= "") then jeu = " " .. jeu end
    
    -- Retour
    if (mode == "miniature") then
        if (nom ~= "") then nom = " (" .. nom .. ")" end
        return "[[Fichier:Miniature " .. num .. forme .. sexe .. jeu .. ".png|link=" .. lien .. "|alt=" .. poke .. nom .. "|" .. poke .. nom .. "|class=miniature" .. jeu .. "]]" .. sup
    else
        if (nom ~= "") then nom = "<br><span style='font-style: italic; font-size: 90%;'>" .. nom .. "</span>" end
        return "<span style='white-space: nowrap;' class='miniat-poke'>" .. num .. " [[Fichier:Miniature " .. num .. forme .. sexe .. jeu .. ".png|link=" .. lien .. "|alt=|class=miniature" .. jeu .. "]] [[" .. lien .. "|" .. poke .. "]]" .. sup .. "</span>" .. nom
    end
end