Module:Infobox Pokémon
L'aide de ce module se trouve sur cette page. Ce module étant inclus dans un nombre large de pages, il est préférable d'éditer le module de test en premier pour vérifier les modifications apportées.
But et contexte
Cette infobox permet de renseigner rapidement et simplement les principales informations concernant un Pokémon. Elle est à inclure en tête des articles détaillés concernant les Pokémon, juste après le modèle {{Ruban Pokémon}}.
Les informations accessibles uniquement via data-mining ne sont acceptées que pour les jeux antérieures aux deux dernières générations en date. Toute information liée à un jeu des deux dernières générations en date doit pouvoir être vérifiable sans outil dédié au data-mining ni logiciel de triche.
Utilisation
Syntaxe
La syntaxe à suivre pour utiliser cette infobox est :
{{#invoke:Infobox Pokémon|infobox | (paramètre 1)=(valeur 1) | (paramètre 2)=(valeur 2) (...) | (paramètre n)=(valeur n) }}
Notes :
- Les majuscules à Infobox et à Pokémon sont obligatoires.
- Les paramètres possibles sont indiqués sur la page du modèle. Les valeurs attendues sont données en indication sur la même page lorsque c'est ambigu. Attention ! Il ne faut pas mettre les parenthèses autour des noms de paramètre ou de valeur.
Paramètres
Ce modèle prend en compte les paramètres suivants :
Obligatoires
- nom : Le nom du Pokémon.
- nom-japonais : Le nom du Pokémon, en japonais.
- nom-déposé : Le nom déposé officiel du Pokémon. S'il ne correspond pas au nom japonais en caractères latins, ajouter nom-romaji (paramètre optionnel).
- légende : Légende de l'image.
- nom-anglais : Le nom du Pokémon, en anglais.
- ndex : Le numéro du Pokémon dans le Dex National.
- dex : Les numéros dans les Dex de la série principale, avec les conventions suivantes et à indiquer dans l'ordre suivant :
Paramètres de dex | |
---|---|
Entrée | Résultat |
Kanto | Kanto |
Kanto-LGPE | KantoLGPE |
Johto | JohtoOAC |
Johto-HGSS | JohtoHGSS |
Hoenn | HoennRSE |
Hoenn-ROSA | HoennROSA |
Sinnoh | Sinnoh |
Sinnoh-Pt | SinnohPt |
Unys | Unys |
Unys-NB2 | UnysN2B2 |
Kalos (Centre) | Kalos (Centre) |
Kalos (Côtes) | Kalos (Côtes) |
Kalos (Monts) | Kalos (Monts) |
Alola | Alola |
Alola-USUL | AlolaUSUL |
Galar | Galar |
Isolarmure | Isolarmure |
Couronneige | Couronneige |
Hisui | Hisui |
Paldea | Paldea |
Septentria | Septentria |
Myrtille | Myrtille |
- Les différentes instances sont à séparer par le séparateur
//
, et une instance est donnée commeRégion/Numéro
. Exemple :| dex=Kanto/016//Johto/010//Johto-HGSS/010//Hoenn/218//Kalos (Centre)/017
- Les différentes instances sont à séparer par le séparateur
- type1 : Le premier type du Pokémon. Pour renseigner plusieurs valeurs, utiliser le séparateur
/
. - espèce : La famille du Pokémon. Pour renseigner plusieurs valeurs, utiliser le séparateur
/
. - taille : La taille du Pokémon en mètres. Seul un numéro doit être renseigné, et le séparateur décimal est un point (exemple : 1.5). Pour les formes Gigamax, indiquer un
+
à la fin du nombre (exemple : 12+). Pour renseigner plusieurs valeurs, utiliser le séparateur/
. - poids : Le poids du Pokémon en kilogrammes. Seul un numéro doit être renseigné, et le séparateur décimal est un point (exemple : 20.8). Pour renseigner plusieurs valeurs, utiliser le séparateur
/
. - talents : Les talents du Pokémon. Pour un commentaire, utiliser le séparateur
/
. Pour indiquer plusieurs talents, utiliser le séparateur//
. Exemple :| talents=Brasier//Turbo/[[talent caché]]
.- Si le Pokémon a des talents qui diffèrent selon ses formes, on pourra également renseigner différentes cellules à l'aide du séparateur
///
; ensuite, chaque cellule fonctionne comme décrit précédemment. Voir la page de Lougaroc pour un exemple.
- Si le Pokémon a des talents qui diffèrent selon ses formes, on pourra également renseigner différentes cellules à l'aide du séparateur
- effortval : Les points EV rapportés par le Pokémon. Pour renseigner plusieurs valeurs, utiliser le séparateur
/
. - expval : Les points exp de base du Pokémon. Pour un commentaire, utiliser le séparateur
/
. Pour indiquer plusieurs points exp de base du Pokémon, utiliser le séparateur//
. Exemple :| expval=164/générations 2 à 4//172/depuis la génération 5
. - expvaldiff : Information particulière concernant l'exp de base (changement entre deux générations, etc.). Paramètre déprécié, à remplacer par le multi-paramètre expval.
- expmax : L'expérience du Pokémon au niveau 100.
- fmratio : Le ratio femelle/mâle du Pokémon, compris entre 0 et 1. La valeur spéciale -1 indique un Pokémon asexué. Pour renseigner plusieurs valeurs, utiliser le séparateur
/
. - forme : le numéro de la forme du Pokémon. Autre valeur possible : -. Pour renseigner plusieurs valeurs, utiliser le séparateur
/
. - couleur : La couleur du Pokémon dans le Pokédex. Autre valeur possible : -. Pour renseigner plusieurs valeurs, utiliser le séparateur
/
.
Facultatifs
- nom-romaji : Transcription en rômaji du nom japonais. Ne mettre que si le nom déposé (nom-déposé) ne correspond pas à la transcription en rômaji.
- type2 : Le deuxième type du Pokémon.
- dex-secondaires : Les numéros dans les Dex des jeux secondaires, avec les conventions suivantes et à indiquer dans l'ordre suivant :
Paramètres de dex-secondaires | |
---|---|
Entrée | Résultat |
Fiore | Fiore |
Almia | Almia |
Oblivia (Présent) | Oblivia (Présent) |
Oblivia (Passé) | Oblivia (Passé) |
Ransei | Ransei |
Ransei (Reshiram) | Ransei (DLC Reshiram) |
PokéPark | PokéPark |
PokéPark 2 | PokéPark 2 |
Google Maps | Google Maps: Pokémon Challenge |
Shuffle | Shuffle |
Picross | Picross |
Picross (Alternatif) | Picross (Alternatif) |
Lentis | Lentis |
- groupeoeuf1 : Le premier groupe d'Œuf du Pokémon. Autre valeur possible : -. La ligne est masquée si le paramètre n'est pas renseigné.
- oeufpas : Le nombre de pas avant éclosion. Pour renseigner plusieurs valeurs, utiliser le séparateur
/
. La ligne est masquée si le paramètre n'est pas renseigné. - captureval : Le taux de capture. Autre valeur possible : -. Pour renseigner plusieurs valeurs, utiliser le séparateur
/
. La ligne est masquée si le paramètre n'est pas renseigné. - groupeoeuf1diff : Ajout de détail si groupeoeuf1 a évolué entre deux jeux.
- groupeoeuf2 : Le deuxième groupe d'Œuf du Pokémon.
- groupeoeuf2diff : Ajout de détail si groupeoeuf2 a évolué entre deux jeux.
- catégories (valeur par défaut : oui) : indique si les catégories doivent prises en compte pour la page contenant l'infobox. Si la valeur est différente non, alors les catégories ne sont pas prises en compte.
- catégorisation-plusieurs-formes (valeur par défaut : oui) : si la valeur est non, permet d'enlever la catégorisation automatique dans "Pokémon à plusieurs formes" si plusieurs artworks sont renseignés.
- génération : sert à indiquer la génération d'un Pokémon. Doit seulement servir pour les formes alternatives des Pokémon, comme les Méga-Pokémon ou les formes régionales par exemple. Pour les Pokémon "normaux", la génération est calculée automatiquement à partir du numéro dans le Pokédex national.
- empreinte : sert à indiquer l'empreinte d'un Pokémon, si le fichier correspondant est différent de celui calculé automatiquement. Par défaut, l'empreinte ne sera affichée que si la génération du Pokémon est inférieure ou égale à 5. Renseigner
-
permet de forcer le fait de ne pas afficher d'empreinte. - donnée-sémantique-ndex : sert à indiquer si le numéro dans le Pokédex national soit être mis en donnée sémantique. La valeur par défaut est oui. Toute autre valeur autre que oui ou vide (absence de valeur) empêche la mise en donnée sémantique. Doit seulement servir pour les Méga-Pokémon.
- cri : si le cri d'un Pokémon est dans un fichier dont le nom n'est pas Fichier:Cri 4 d <ndex>.ogg, la valeur de cri est le nom du fichier sans le préfixe Fichier:-, ni le suffixe -.ogg, de la façon suivante : Fichier:<cri>.ogg. Pour renseigner plusieurs valeurs, utiliser le séparateur
/
. - artwork : le nom du fichier de l'artwork si différent du nom. Pour renseigner plusieurs valeurs, utiliser le séparateur
/
. - forme-principale : permet de spécifier le numéro de la forme principale si ce n'est pas la première qui est indiquée. Les couleurs de l'infobox suivront le type de la forme indiquée.
- switch-artworks : permet de rendre aléatoires les couleurs et l'artwork dominant de l'infobox d'un Pokémon à plusieurs formes à types différents dont l'une n'est pas dominante (l'aléatoire suit les types des formes), comme Plumeline mais pas Motisma. Entrer
oui
pour observer ce changement, la valeur estnon
par défaut. - conditions : pour indiquer les conditions des changements de formes de diverses catégories qui le prennent en charge. Il est également possible d'indiquer des conditions spécifiques à chaque catégorie correspondante via les paramètres respectifs conditions-type, conditions-espèce, conditions-taille, conditions-poids, conditions-talents, conditions-oeufpas, conditions-effortval, conditions-fmratio, conditions-couleur, conditions-captureval, conditions-forme et conditions-cri. Les valeurs sont à séparer avec
/
. Par défaut, les valeurs sont égales à celles du paramètre conditions.
Exemple
Le code suivant est un exemple d'utilisation du modèle :
{{#invoke:Infobox Pokémon|infobox | nom=Bulbizarre | nom-anglais=Bulbasaur | nom-japonais=フシギダネ | nom-déposé=Fushigidane | légende=Artwork de Bulbizarre pour {{Jeu|RFVF}}. | ndex=001 | dex=Kanto/001//Johto/226//Johto-HGSS/231//Hoenn/203//Kalos (Centre)/080 | dex-secondaires=Fiore/R-001//Oblivia (Présent)/R-014//Oblivia (Passé)/N-004//PokéPark/P-030//Shuffle/001//Picross/N14-08//Picross (Alternatif)/A14-09 | espèce=Graine | taille=0.7 | poids=6.9 | fmratio=.125 | oeufpas=5120 | type1=Plante | type2=Poison | expval=64 | expmax=1059860 | captureval=45 | groupeoeuf1=Monstrueux | groupeoeuf2=Végétal | talents=Engrais (talent){{!}}Engrais//Chlorophylle/[[Talent caché]] | couleur=Vert | forme=8 | cri=Cri 6 x 001 }}
Pour le résultat à droite de cette page.
Modifier ce modèle
Note : Pour des raisons de sécurité, ce modèle est partiellement protégé, seuls les contributeurs ayant un compte peuvent le modifier.
Voir aussi
local p = {} function separate_thousands(amount) local formatted = amount while true do formatted, k = string.gsub(formatted, "^(-?%d+)(%d%d%d)", '%1 %2') if (k==0) then break end end return formatted end -- remplace le point des decimales par une virgule dans une chaine, et ajoute une décimale quand il n'y en a pas function decimal_dot_to_comma(str) if string.find(str, '%.') then return string.gsub(str,'%.',',') else return str .. ',0' end end -- convertit en nombre de pieds function meters_to_feet_and_inches(str) local conversion = (tonumber(str) * 3.2808) return {feet = math.floor(conversion + 1/24), inches = math.floor((conversion - math.floor(conversion + 1/24)) * 12 + 0.5)} end -- convertit en nombre de livres function kg_to_pounds(str) return math.floor((tonumber(str) * 2.2046)*10+0.5)/10 end function nil_to_string(str) if str == nil then return '' else return str end end function association_region(frame, region) -- Jeux principaux if region == 'Kanto' then return "[[Liste des Pokémon dans l'ordre du Pokédex de Kanto|Kanto]]" elseif region == 'Kanto-LGPE' then return "[[Liste des Pokémon dans l'ordre du Pokédex de Kanto|Kanto]]" .. frame:expandTemplate{title='Sup', args={'LGPE'}} elseif region == 'Johto' then return "[[Liste des Pokémon dans l'ordre du Pokédex de Johto|Johto]]" .. frame:expandTemplate{title='Sup', args={'OAC'}} elseif region == 'Johto-HGSS' then return "[[Liste des Pokémon dans l'ordre du Pokédex de Johto (Pokémon Or HeartGold et Argent SoulSilver)|Johto]]" .. frame:expandTemplate{title='Sup', args={'HGSS'}} elseif region == 'Hoenn' then return "[[Liste des Pokémon dans l'ordre du Pokédex de Hoenn|Hoenn]]" .. frame:expandTemplate{title='Sup', args={'RSE'}} elseif region == 'Hoenn-ROSA' then return "[[Liste des Pokémon dans l'ordre du Pokédex de Hoenn (Pokémon Rubis Oméga et Saphir Alpha)|Hoenn]]" .. frame:expandTemplate{title='Sup', args={'ROSA'}} elseif region == 'Sinnoh' then return "[[Liste des Pokémon dans l'ordre du Pokédex de Sinnoh|Sinnoh]]" elseif region == 'Sinnoh-Pt' then return "[[Liste des Pokémon dans l'ordre du Pokédex de Sinnoh|Sinnoh]]" .. frame:expandTemplate{title='Sup', args={'Pt'}} elseif region == 'Unys' then return "[[Liste des Pokémon dans l'ordre du Pokédex d'Unys|Unys]]" .. frame:expandTemplate{title='Sup', args={'NB'}} elseif region == 'Unys-N2B2' then return "[[Liste des Pokémon dans l'ordre du Pokédex d'Unys (Pokémon Noir 2 et Blanc 2)|Unys]]" .. frame:expandTemplate{title='Sup', args={'N2B2'}} elseif region == 'Kalos (Centre)' then return "[[Liste des Pokémon dans l'ordre du Pokédex de Kalos|Kalos]]<br/><small><b>(Centre)</b></small>" elseif region == 'Kalos (Côtes)' then return "[[Liste des Pokémon dans l'ordre du Pokédex de Kalos|Kalos]]<br/><small><b>(Côtes)</b></small>" elseif region == 'Kalos (Monts)' then return "[[Liste des Pokémon dans l'ordre du Pokédex de Kalos|Kalos]]<br/><small><b>(Monts)</b></small>" elseif region == 'Alola' then return "[[Liste des Pokémon dans l'ordre du Pokédex d'Alola|Alola]]" .. frame:expandTemplate{title='Sup', args={'SL'}} elseif region == 'Alola-USUL' then return "[[Liste des Pokémon dans l'ordre du Pokédex d'Alola (Pokémon Ultra-Soleil et Ultra-Lune)|Alola]]" .. frame:expandTemplate{title='Sup', args={'USUL'}} elseif region == 'Galar' then return "[[Liste des Pokémon dans l'ordre du Pokédex de Galar|Galar]]" elseif region == 'Isolarmure' then return "[[Liste des Pokémon dans l'ordre du Pokédex d'Isolarmure|Isolarmure]]" elseif region == 'Couronneige' then return "[[Liste des Pokémon dans l'ordre du Pokédex de Couronneige|Couronneige]]" elseif region == 'Hisui' then return "[[Liste des Pokémon dans l'ordre du Pokédex de Hisui|Hisui]]" elseif region == 'Paldea' then return "[[Liste des Pokémon dans l'ordre du Pokédex de Paldea|Paldea]]" elseif region == 'Septentria' then return "[[Liste des Pokémon dans l'ordre du Pokédex de Septentria|Septentria]]" elseif region == 'Myrtille' then return "[[Liste des Pokémon dans l'ordre du Pokédex Myrtille|Myrtille]]" -- Jeux secondaires elseif region == 'Fiore' then return "[[Liste des Pokémon dans l'ordre du Navigateur de Fiore|Fiore]]" elseif region == 'Almia' then return "[[Liste des Pokémon dans l'ordre du Navigateur d'Almia|Almia]]" elseif region == 'Oblivia (Présent)' then return "[[Liste des Pokémon dans l'ordre du Navigateur d'Oblivia (Présent)|Oblivia]]<br/><small><b>(Présent)</b></small>" elseif region == 'Oblivia (Passé)' then return "[[Liste des Pokémon dans l'ordre du Navigateur d'Oblivia (Passé)|Oblivia]]<br/><small><b>(Passé)</b></small>" elseif region == 'Ransei' then return "[[Liste des Pokémon de la région de Ransei|Ransei]]" elseif region == 'Ransei (Reshiram)' then return "[[Liste des Pokémon de la région de Ransei|Ransei]]<br/><small><b>(DLC Reshiram)</b></small>" elseif region == 'PokéPark' then return "[[Liste des Pokémon de PokéPark Wii : La Grande Aventure de Pikachu|PokéPark]]" elseif region == 'PokéPark 2' then return "[[Liste des Pokémon de PokéPark 2 : Le Monde des Vœux|PokéPark 2]]" elseif region == 'Google Maps' then return "[[Liste des Pokémon dans l'ordre du Pokédex de Google Maps: Pokémon Challenge|Google Maps:<br/><small>Pokémon Challenge]]</small>" elseif region == 'Shuffle' then return "[[Liste des Pokémon dans l'ordre du Pokédex de Pokémon Shuffle|Shuffle]]" elseif region == 'Picross' then return "[[Liste des niveaux de Pokémon Picross|Picross]]" elseif region == 'Picross (Alternatif)' then return "[[Liste des niveaux de Pokémon Picross|Picross]]<br/><small><b>(Alternatif)</b></small>" elseif region == 'Lentis' then return "[[Liste des Pokémon dans l'ordre du Photodex|Lentis]]" else return '<i>' .. region .. '</i>' end end function Set (list) local set = {} for _, l in ipairs(list) do set[l] = true end return set end local regions_navigateur = Set {'Fiore', 'Almia', 'Oblivia (Présent)', 'Oblivia (Passé)'} function p.infobox(frame) local resultat = {} local debug_mode = frame.args['debug'] debug_mode = (debug_mode == "oui") local nom = frame.args['nom'] if nom == nil or nom == '' then nom = frame:getParent():getTitle() end local nom_anglais = frame.args['nom-anglais'] if nom_anglais == nil or nom_anglais == '' then nom_anglais = '<i>Information manquante</i>' end local nom_japonais = frame.args['nom-japonais'] local nom_romaji = frame.args['nom-romaji'] local nom_depose = frame.args['nom-déposé'] if nom_depose == nil or nom_depose == '' then if not (nom_romaji == nil or nom_romaji == '') then nom_depose = nom_romaji nom_romaji = '' end end local artwork = frame.args['artwork'] if artwork == nil or artwork == '' then artwork = nom end artwork = mw.text.split(artwork, "/") local forme_principale = frame.args['forme-principale'] local legende = frame.args['légende'] local type1 = frame.args['type1'] if type1 == nil or type1 == '' then type1 = "inconnu" end type1 = mw.text.split(type1, "/") local type2 = frame.args['type2'] if type2 == '' or type2 == '-' or type2 == nil then type2 = {} else type2 = mw.text.split(type2, "/") end --on accepte que type2 soit nil local switch_artworks = frame.args['switch-artworks'] == 'oui' local ndex = frame.args['ndex'] if ndex == nil or ndex == '' then ndex = "—" end -- Temporaire local force_ndex = frame.args['force-ndex'] force_ndex = true -- force_ndex == 'oui' local dex = frame.args['dex'] local dex_secondaires = frame.args['dex-secondaires'] local donnees = frame.args['données'] if donnees then donnees = donnees ~= 'non' else local namespace = frame:preprocess("{{NAMESPACENUMBER}}") donnees = (tonumber(namespace) == 0) end local donnee_semantique_ndex = frame.args['donnée-sémantique-ndex'] donnee_semantique_ndex = donnee_semantique_ndex ~= 'non' local categories_wiki = frame.args['catégories-wiki'] if categories_wiki then categories_wiki = categories_wiki ~= 'non' else local namespace = frame:preprocess("{{NAMESPACENUMBER}}") categories_wiki = (tonumber(namespace) == 0) end local categorisation_plusieurs_formes = frame.args['catégorisation-plusieurs-formes'] categorisation_plusieurs_formes = categorisation_plusieurs_formes ~= 'non' local generation = frame.args['génération'] generation = tonumber(generation) if generation == nil then local ndex_int = tonumber(ndex) if ndex_int then if ndex_int <= 151 then generation = 1 elseif ndex_int <= 251 then generation = 2 elseif ndex_int <= 386 then generation = 3 elseif ndex_int <= 493 then generation = 4 elseif ndex_int <= 649 then generation = 5 elseif ndex_int <= 721 then generation = 6 elseif ndex_int <= 809 then generation = 7 elseif ndex_int <= 905 then generation = 8 else generation = 9 end else generation = 9 end end -- Calcul automatique du nombre de formes et changement optionnel automatique d'artworks local nombre_formes = 1 local couleur_principale local couleur_secondaire = nil while artwork[nombre_formes + 1] do nombre_formes = nombre_formes + 1 end if nombre_formes > 1 and categories_wiki and categorisation_plusieurs_formes then table.insert(resultat, '[[Catégorie:Pokémon à plusieurs formes]]') end if tonumber(forme_principale) and nombre_formes >= tonumber(forme_principale) then forme_principale = tonumber(forme_principale) elseif nombre_formes > 1 and switch_artworks then forme_principale = (math.floor(os.time()) % nombre_formes) + 1 else forme_principale = 1 end if forme_principale > 1 then if type1[forme_principale] then couleur_principale = type1[forme_principale] else couleur_principale = type1[1] end if type2 ~= {} then if type2[forme_principale] ~= nil and type2[forme_principale] ~= '' and type2[forme_principale] ~= '-' then couleur_secondaire = type2[forme_principale] elseif type2[forme_principale] == nil then if type2[1] == '' or type2[1] == '-' then couleur_secondaire = nil else couleur_secondaire = type2[1] end else couleur_secondaire = nil end end if forme_principale > 1 then for i = forme_principale, 2, -1 do artwork[i], artwork[i-1] = artwork[i-1], artwork[i] end end else couleur_principale = type1[1] couleur_secondaire = type2[1] end if couleur_principale == "inconnu" then couleur_principale = "" end if couleur_secondaire == "inconnu" then couleur_secondaire = "" end if couleur_secondaire ~= nil then couleur_secondaire = frame:expandTemplate{title='Couleur', args={couleur_secondaire}} end -- Conditions de forme local conditions = frame.args['conditions'] if conditions == nil then conditions = '' end conditions = mw.text.split(conditions, "/") local conditions_type = frame.args['conditions-type'] if conditions_type == nil then conditions_type = '' end conditions_type = mw.text.split(conditions_type, "/") local conditions_categorie = frame.args['conditions-espèce'] -- deprecated local conditions_categorie = frame.args['conditions-catégorie'] if conditions_categorie == nil then conditions_categorie = conditions_categorie end if conditions_categorie == nil then conditions_categorie = '' end conditions_categorie = mw.text.split(conditions_categorie, "/") local conditions_taille = frame.args['conditions-taille'] if conditions_taille == nil then conditions_taille = '' end conditions_taille = mw.text.split(conditions_taille, "/") local conditions_poids = frame.args['conditions-poids'] if conditions_poids == nil then conditions_poids = '' end conditions_poids = mw.text.split(conditions_poids, "/") local conditions_talents = frame.args['conditions-talents'] if conditions_talents == nil then conditions_talents = '' end conditions_talents = mw.text.split(conditions_talents, "/") local conditions_oeufpas = frame.args['conditions-oeufpas'] if conditions_oeufpas == nil then conditions_oeufpas = '' end conditions_oeufpas = mw.text.split(conditions_oeufpas, "/") local conditions_eclosion = frame.args['conditions-éclosion'] if conditions_eclosion == nil then conditions_eclosion = '' end conditions_eclosion = mw.text.split(conditions_eclosion, "/") local conditions_effortval = frame.args['conditions-effortval'] if conditions_effortval == nil then conditions_effortval = '' end conditions_effortval = mw.text.split(conditions_effortval, "/") local conditions_fmratio = frame.args['conditions-fmratio'] if conditions_fmratio == nil then conditions_fmratio = '' end conditions_fmratio = mw.text.split(conditions_fmratio, "/") local conditions_couleur = frame.args['conditions-couleur'] if conditions_couleur == nil then conditions_couleur = '' end conditions_couleur = mw.text.split(conditions_couleur, "/") local conditions_captureval = frame.args['conditions-captureval'] if conditions_captureval == nil then conditions_captureval = '' end conditions_captureval = mw.text.split(conditions_captureval, "/") local conditions_corps = frame.args['conditions-corps'] if conditions_corps == nil then conditions_corps = '' end conditions_corps = mw.text.split(conditions_corps, "/") local conditions_cri = frame.args['conditions-cri'] if conditions_cri == nil then conditions_cri = '' end conditions_cri = mw.text.split(conditions_cri, "/") local i = 1 while conditions[i] do if conditions_categorie[i] == nil or conditions_categorie[i] == '' then conditions_categorie[i] = conditions[i] end if conditions_taille[i] == nil or conditions_taille[i] == '' then conditions_taille[i] = conditions[i] end if conditions_poids[i] == nil or conditions_poids[i] == '' then conditions_poids[i] = conditions[i] end if conditions_talents[i] == nil or conditions_talents[i] == '' then conditions_talents[i] = conditions[i] end if conditions_oeufpas[i] == nil or conditions_oeufpas[i] == '' then conditions_oeufpas[i] = conditions[i] end if conditions_eclosion[i] == nil or conditions_eclosion[i] == '' then conditions_eclosion[i] = conditions_oeufpas[i] end if conditions_effortval[i] == nil or conditions_effortval[i] == '' then conditions_effortval[i] = conditions[i] end if conditions_fmratio[i] == nil or conditions_fmratio[i] == '' then conditions_fmratio[i] = conditions[i] end if conditions_couleur[i] == nil or conditions_couleur[i] == '' then conditions_couleur[i] = conditions[i] end if conditions_captureval[i] == nil or conditions_captureval[i] == '' then conditions_captureval[i] = conditions[i] end if conditions_corps[i] == nil or conditions_corps[i] == '' then conditions_corps[i] = conditions[i] end if conditions_corps[i] == nil or conditions_corps[i] == '' then conditions_corps[i] = conditions[i] end if conditions_cri[i] == nil or conditions_cri[i] == '' then conditions_cri[i] = conditions[i] end i = i + 1 end local espece = frame.args['espèce'] -- deprecated local categorie = frame.args['catégorie'] if categorie == nil then categorie = espece end local taille = frame.args['taille'] local poids = frame.args['poids'] local talents = frame.args['talents'] local groupeoeuf1 = frame.args['groupeoeuf1'] local groupeoeuf1diff = frame.args['groupeoeuf1diff'] local groupeoeuf2 = frame.args['groupeoeuf2'] local groupeoeuf2diff = frame.args['groupeoeuf2diff'] local eclosion = frame.args['éclosion'] local oeufpas = frame.args['oeufpas'] local effortval = frame.args['effortval'] local expval = frame.args['expval'] local expvaldiff = frame.args['expvaldiff'] local expmax = frame.args['expmax'] local fmratio = frame.args['fmratio'] local couleur = frame.args['couleur'] local captureval = frame.args['captureval'] local empreinte = frame.args['empreinte'] local forme = frame.args['forme'] -- deprecated local corps = frame.args['corps'] if corps == nil then corps = forme end local cri = frame.args['cri'] -- EN-TÊTE table.insert(resultat, '<table class="tableaustandard ficheinfo ' .. mw.ustring.lower(couleur_principale) .. '"><thead><tr><th class="entêtesection"') if couleur_secondaire ~= nil then table.insert(resultat, ' style="background: ' .. couleur_secondaire .. ' !important"') end table.insert(resultat, '><big><span class="explain" title="Numérotation nationale">№ ') if tonumber(ndex) and tonumber(ndex) > 905 and not force_ndex then table.insert(resultat, "—") else if ndex ~= "—" and donnee_semantique_ndex and donnees then table.insert(resultat, '[[Numéro National::' .. ndex .. ']]') else table.insert(resultat, ndex) end end table.insert(resultat, '</span></big></th><th class="entêtesection" colspan="3">' .. nom .. '</th></thead>') -- ARTWORK table.insert(resultat, '<tbody><tr><td class="illustration" colspan="4">[[Fichier:' .. artwork[1] .. '.png|250px]]') local i = 2 while artwork[i] and artwork[i+1] and artwork[i+2] and artwork[i+3] and artwork[i+4] do table.insert(resultat, '<br/><br/>[[Fichier:' .. artwork[i] .. '.png|80px]] [[Fichier:' .. artwork[i+1] .. '.png|80px]] [[Fichier:' .. artwork[i+2] .. '.png|80px]]') i = i + 3 end if artwork[i] and artwork[i+1] and artwork[i+2] and artwork[i+3] then table.insert(resultat, '<br/><br/>[[Fichier:' .. artwork[i] .. '.png|120px]] [[Fichier:' .. artwork[i+1] .. '.png|120px]]<br/><br/>[[Fichier:' .. artwork[i+2] .. '.png|120px]] [[Fichier:' .. artwork[i+3] .. '.png|120px]]') elseif artwork[i] and artwork[i+1] and artwork[i+2] then table.insert(resultat, '<br/><br/>[[Fichier:' .. artwork[i] .. '.png|80px]] [[Fichier:' .. artwork[i+1] .. '.png|80px]] [[Fichier:' .. artwork[i+2] .. '.png|80px]]') elseif artwork[i] and artwork[i+1] then table.insert(resultat, '<br/><br/>[[Fichier:' .. artwork[i] .. '.png|120px]] [[Fichier:' .. artwork[i+1] .. '.png|120px]]') elseif artwork[i] then table.insert(resultat, '<br/><br/>[[Fichier:' .. artwork[i] .. '.png|150px]]') end if legende ~= nil then table.insert(resultat, '<br/><small>' .. legende .. '</small>') end table.insert(resultat, '</td></tr>') -- NOM JAPONAIS table.insert(resultat, '<tr><th>Nom japonais</th><td colspan="3">') if nom_japonais ~= nil then if nom_romaji ~= nil and nom_romaji ~= '' and nom_romaji ~= nom_depose then table.insert(resultat, frame:expandTemplate{title='Furigana', args={nom_japonais, nom_romaji}}) else table.insert(resultat, '<span lang="ja">' .. nom_japonais ..'</span>') end end if nom_depose ~= nil and nom_depose ~= '' then table.insert(resultat, ' <br/><span title="Nom déposé officiel"><i>' .. nom_depose .. '</i></span>') end table.insert(resultat, '</td></tr>') -- NOM ANGLAIS table.insert(resultat, '<tr><th>Nom anglais</th><td colspan="3">' .. nom_anglais .. '</td></tr>') -- NUMÉROS DE POKÉDEX table.insert(resultat, '<tr><th colspan="4" style="text-align:center">[[Liste des Pokémon dans l\'ordre du Pokédex National|Numéros de Pokédex]] régionaux</th></tr>') if dex == nil or dex == '' then table.insert(resultat, '<tr><td colspan="4" style="text-align:center"><i>Ce Pokémon n\'apparaît dans aucun Pokédex régional.</i></td></tr>') else if dex ~= nil and dex ~= '' then table.insert(resultat, '<tr><td colspan="4" style="padding:0px;"><table style="width:100%;text-align:center;background-color:white;border-radius:3px;">') -- on fait une sous-table pour les dex dex = mw.text.split(dex, "//") local i = 1 local infos_region1 = {} local infos_region2 = {} local infos_region3 = {} local infos_region4 = {} while dex[i] and dex[i+1] and dex[i+2] and dex[i+3] do -- on regroupe les régions par 4 jusqu'à ce qu'il en reste moins que 4 infos_region1 = mw.text.split(dex[i], "/") infos_region2 = mw.text.split(dex[i+1], "/") infos_region3 = mw.text.split(dex[i+2], "/") infos_region4 = mw.text.split(dex[i+3], "/") table.insert(resultat, '<tr>') table.insert(resultat, '<td style="line-height:8pt;width:25%;padding: 2px;"><em><small><strong>' .. association_region(frame, infos_region1[1]) .. '</strong></small></em></td>') table.insert(resultat, '<td style="line-height:8pt;width:25%;padding: 2px;"><em><small><strong>' .. association_region(frame, infos_region2[1]) .. '</strong></small></em></td>') table.insert(resultat, '<td style="line-height:8pt;width:25%;padding: 2px;"><em><small><strong>' .. association_region(frame, infos_region3[1]) .. '</strong></small></em></td>') table.insert(resultat, '<td style="line-height:8pt;width:25%;padding: 2px;"><em><small><strong>' .. association_region(frame, infos_region4[1]) .. '</strong></small></em></td>') table.insert(resultat, '</tr><tr>') if infos_region1[2] ~= nil then table.insert(resultat, '<td style="line-height:10pt;padding: 2px;">' .. infos_region1[2]) if infos_region1[3] ~= nil then table.insert(resultat, '<span class="explain" title="' .. infos_region1[3] .. '">*</span>') end table.insert(resultat, '</td>') else table.insert(resultat, '<td style="line-height:10pt;padding: 2px;">—</td>') end if infos_region2[2] ~= nil then table.insert(resultat, '<td style="line-height:10pt;padding: 2px;">' .. infos_region2[2]) if infos_region2[3] ~= nil then table.insert(resultat, '<span class="explain" title="' .. infos_region2[3] .. '">*</span>') end table.insert(resultat, '</td>') else table.insert(resultat, '<td style="line-height:10pt;padding: 2px;">—</td>') end if infos_region3[2] ~= nil then table.insert(resultat, '<td style="line-height:10pt;padding: 2px;">' .. infos_region3[2]) if infos_region3[3] ~= nil then table.insert(resultat, '<span class="explain" title="' .. infos_region3[3] .. '">*</span>') end table.insert(resultat, '</td>') else table.insert(resultat, '<td style="line-height:10pt;padding: 2px;">—</td>') end if infos_region4[2] ~= nil then table.insert(resultat, '<td style="line-height:10pt;padding: 2px;">' .. infos_region4[2]) if infos_region4[3] ~= nil then table.insert(resultat, '<span class="explain" title="' .. infos_region4[3] .. '">*</span>') end table.insert(resultat, '</td>') else table.insert(resultat, '<td style="line-height:10pt;padding: 2px;">—</td>') end table.insert(resultat, '</tr>') i = i + 4 end if dex[i] and dex[i+1] and dex[i+2] -- il ne reste plus que 3 régions then local infos_region1 = mw.text.split(dex[i], "/") local infos_region2 = mw.text.split(dex[i+1], "/") local infos_region3 = mw.text.split(dex[i+2], "/") table.insert(resultat, '<td style="line-height:8pt;width:25%;padding: 2px;"><em><small><strong>' .. association_region(frame, infos_region1[1]) .. '</strong></small></em></td>') table.insert(resultat, '<td colspan="2" style="line-height:8pt;width:50%;padding: 2px;"><em><small><strong>' .. association_region(frame, infos_region2[1]) .. '</strong></small></em></td>') table.insert(resultat, '<td style="line-height:8pt;width:25%;padding: 2px;"><em><small><strong>' .. association_region(frame, infos_region3[1]) .. '</strong></small></em></td>') table.insert(resultat, '</tr><tr>') if infos_region1[2] ~= nil then table.insert(resultat, '<td style="line-height:10pt;padding: 2px;">' .. infos_region1[2]) if infos_region1[3] ~= nil then table.insert(resultat, '<span class="explain" title="' .. infos_region1[3] .. '">*</span>') end table.insert(resultat, '</td>') else table.insert(resultat, '<td style="line-height:10pt;padding: 2px;">—</td>') end if infos_region2[2] ~= nil then table.insert(resultat, '<td colspan="2" style="line-height:10pt;padding: 2px;">' .. infos_region2[2]) if infos_region2[3] ~= nil then table.insert(resultat, '<span class="explain" title="' .. infos_region2[3] .. '">*</span>') end table.insert(resultat, '</td>') else table.insert(resultat, '<td colspan="2" style="line-height:10pt;padding: 2px;">—</td>') end if infos_region3[2] ~= nil then table.insert(resultat, '<td style="line-height:10pt;padding: 2px;">' .. infos_region3[2]) if infos_region3[3] ~= nil then table.insert(resultat, '<span class="explain" title="' .. infos_region3[3] .. '">*</span>') end table.insert(resultat, '</td>') else table.insert(resultat, '<td style="line-height:10pt;padding: 2px;">—</td>') end table.insert(resultat, '</tr>') elseif dex[i] and dex[i+1] -- il ne reste plus que 2 régions then local infos_region1 = mw.text.split(dex[i], "/") local infos_region2 = mw.text.split(dex[i+1], "/") table.insert(resultat, '<td colspan="2" style="line-height:8pt;width:50%;padding: 2px;"><em><small><strong>' .. association_region(frame, infos_region1[1]) .. '</strong></small></em></td>') table.insert(resultat, '<td colspan="2" style="line-height:8pt;width:50%;padding: 2px;"><em><small><strong>' .. association_region(frame, infos_region2[1]) .. '</strong></small></em></td>') table.insert(resultat, '</tr><tr>') if infos_region1[2] ~= nil then table.insert(resultat, '<td colspan="2" style="line-height:10pt;padding: 2px;">' .. infos_region1[2]) if infos_region1[3] ~= nil then table.insert(resultat, '<span class="explain" title="' .. infos_region1[3] .. '">*</span>') end table.insert(resultat, '</td>') else table.insert(resultat, '<td colspan="2" style="line-height:10pt;padding: 2px;">—</td>') end if infos_region2[2] ~= nil then table.insert(resultat, '<td colspan="2" style="line-height:10pt;padding: 2px;">' .. infos_region2[2]) if infos_region2[3] ~= nil then table.insert(resultat, '<span class="explain" title="' .. infos_region2[3] .. '">*</span>') end table.insert(resultat, '</td>') else table.insert(resultat, '<td colspan="2" style="line-height:10pt;padding: 2px;">—</td>') end table.insert(resultat, '</tr>') elseif dex[i] -- il ne reste plus qu'1 région then local infos_region1 = mw.text.split(dex[i], "/") table.insert(resultat, '<tr><td colspan="4" style="line-height:8pt;width:100%;padding: 2px;"><em><small><strong>' .. association_region(frame, infos_region1[1]) .. '</strong></small></em></td></tr><tr><td colspan="4" style="line-height:10pt;padding: 2px;">') if infos_region1[2] ~= nil then table.insert(resultat, infos_region1[2]) if infos_region1[3] ~= nil then table.insert(resultat, '<span class="explain" title="' .. infos_region1[3] .. '">*</span>') end table.insert(resultat, '</td></tr>') else table.insert(resultat, '—</td></tr>') end end table.insert(resultat, '</table></td></tr>') end dex = nil end -- meme chose pour les dex_secondaires : copier/coller en remplacant dex par dex_secondaires if dex_secondaires ~= nil and dex_secondaires ~= '' then dex_secondaires = mw.text.split(dex_secondaires, "//") table.insert(resultat, '<tr><th colspan="4" style="text-align:center">') local i = 1 local region_avec_navigateur = false local region_sans_navigateur = false while dex_secondaires[i] do local b = false infos_region = mw.text.split(dex_secondaires[i], "/") if regions_navigateur[infos_region[1]] then region_avec_navigateur = true else region_sans_navigateur = true end i = i + 1 end if region_avec_navigateur then if region_sans_navigateur then table.insert(resultat, '[[Capstick#Autres fonctions|Navigateurs]] et autres numérotations') else table.insert(resultat, '[[Capstick#Autres fonctions|Navigateurs]]') end else table.insert(resultat, 'Autres numérotations') end table.insert(resultat, '</th></tr><tr><td colspan="4" style="padding:0px;"><table style="width:100%;text-align:center;background-color:white;border-radius:3px;">') -- on fait une sous-table pour les dex_secondaires local i = 1 local infos_region1 = {} local infos_region2 = {} local infos_region3 = {} local infos_region4 = {} while dex_secondaires[i] and dex_secondaires[i+1] and dex_secondaires[i+2] and dex_secondaires[i+3] do infos_region1 = mw.text.split(dex_secondaires[i], "/") infos_region2 = mw.text.split(dex_secondaires[i+1], "/") infos_region3 = mw.text.split(dex_secondaires[i+2], "/") infos_region4 = mw.text.split(dex_secondaires[i+3], "/") table.insert(resultat, '<tr>') table.insert(resultat, '<td style="line-height:8pt;width:25%;padding: 2px;"><em><small><strong>' .. association_region(frame, infos_region1[1]) .. '</strong></small></em></td>') table.insert(resultat, '<td style="line-height:8pt;width:25%;padding: 2px;"><em><small><strong>' .. association_region(frame, infos_region2[1]) .. '</strong></small></em></td>') table.insert(resultat, '<td style="line-height:8pt;width:25%;padding: 2px;"><em><small><strong>' .. association_region(frame, infos_region3[1]) .. '</strong></small></em></td>') table.insert(resultat, '<td style="line-height:8pt;width:25%;padding: 2px;"><em><small><strong>' .. association_region(frame, infos_region4[1]) .. '</strong></small></em></td>') table.insert(resultat, '</tr><tr>') if infos_region1[2] ~= nil then table.insert(resultat, '<td style="line-height:10pt;padding: 2px;">' .. infos_region1[2]) if infos_region1[3] ~= nil then table.insert(resultat, '<span class="explain" title="' .. infos_region1[3] .. '">*</span>') end table.insert(resultat, '</td>') else table.insert(resultat, '<td style="line-height:10pt;padding: 2px;">—</td>') end if infos_region2[2] ~= nil then table.insert(resultat, '<td style="line-height:10pt;padding: 2px;">' .. infos_region2[2]) if infos_region2[3] ~= nil then table.insert(resultat, '<span class="explain" title="' .. infos_region2[3] .. '">*</span>') end table.insert(resultat, '</td>') else table.insert(resultat, '<td style="line-height:10pt;padding: 2px;">—</td>') end if infos_region3[2] ~= nil then table.insert(resultat, '<td style="line-height:10pt;padding: 2px;">' .. infos_region3[2]) if infos_region3[3] ~= nil then table.insert(resultat, '<span class="explain" title="' .. infos_region3[3] .. '">*</span>') end table.insert(resultat, '</td>') else table.insert(resultat, '<td style="line-height:10pt;padding: 2px;">—</td>') end if infos_region4[2] ~= nil then table.insert(resultat, '<td style="line-height:10pt;padding: 2px;">' .. infos_region4[2]) if infos_region4[3] ~= nil then table.insert(resultat, '<span class="explain" title="' .. infos_region4[3] .. '">*</span>') end table.insert(resultat, '</td>') else table.insert(resultat, '<td style="line-height:10pt;padding: 2px;">—</td>') end table.insert(resultat, '</tr>') i = i + 4 end if dex_secondaires[i] and dex_secondaires[i+1] and dex_secondaires[i+2] -- il ne reste plus que 3 régions then local infos_region1 = mw.text.split(dex_secondaires[i], "/") local infos_region2 = mw.text.split(dex_secondaires[i+1], "/") local infos_region3 = mw.text.split(dex_secondaires[i+2], "/") table.insert(resultat, '<td style="line-height:8pt;width:25%;padding: 2px;"><em><small><strong>' .. association_region(frame, infos_region1[1]) .. '</strong></small></em></td>') table.insert(resultat, '<td colspan="2" style="line-height:8pt;width:50%;padding: 2px;"><em><small><strong>' .. association_region(frame, infos_region2[1]) .. '</strong></small></em></td>') table.insert(resultat, '<td style="line-height:8pt;width:25%;padding: 2px;"><em><small><strong>' .. association_region(frame, infos_region3[1]) .. '</strong></small></em></td>') table.insert(resultat, '</tr><tr>') if infos_region1[2] ~= nil then table.insert(resultat, '<td style="line-height:10pt;padding: 2px;">' .. infos_region1[2]) if infos_region1[3] ~= nil then table.insert(resultat, '<span class="explain" title="' .. infos_region1[3] .. '">*</span>') end table.insert(resultat, '</td>') else table.insert(resultat, '<td style="line-height:10pt;padding: 2px;">—</td>') end if infos_region2[2] ~= nil then table.insert(resultat, '<td colspan="2" style="line-height:10pt;padding: 2px;">' .. infos_region2[2]) if infos_region2[3] ~= nil then table.insert(resultat, '<span class="explain" title="' .. infos_region2[3] .. '">*</span>') end table.insert(resultat, '</td>') else table.insert(resultat, '<td colspan="2" style="line-height:10pt;padding: 2px;">—</td>') end if infos_region3[2] ~= nil then table.insert(resultat, '<td style="line-height:10pt;padding: 2px;">' .. infos_region3[2]) if infos_region3[3] ~= nil then table.insert(resultat, '<span class="explain" title="' .. infos_region3[3] .. '">*</span>') end table.insert(resultat, '</td>') else table.insert(resultat, '<td style="line-height:10pt;padding: 2px;">—</td>') end table.insert(resultat, '</tr>') elseif dex_secondaires[i] and dex_secondaires[i+1] -- il ne reste plus que 2 régions then local infos_region1 = mw.text.split(dex_secondaires[i], "/") local infos_region2 = mw.text.split(dex_secondaires[i+1], "/") table.insert(resultat, '<td colspan="2" style="line-height:8pt;width:50%;padding: 2px;"><em><small><strong>' .. association_region(frame, infos_region1[1]) .. '</strong></small></em></td>') table.insert(resultat, '<td colspan="2" style="line-height:8pt;width:50%;padding: 2px;"><em><small><strong>' .. association_region(frame, infos_region2[1]) .. '</strong></small></em></td>') table.insert(resultat, '</tr><tr>') if infos_region1[2] ~= nil then table.insert(resultat, '<td colspan="2" style="line-height:10pt;padding: 2px;">' .. infos_region1[2]) if infos_region1[3] ~= nil then table.insert(resultat, '<span class="explain" title="' .. infos_region1[3] .. '">*</span>') end table.insert(resultat, '</td>') else table.insert(resultat, '<td colspan="2" style="line-height:10pt;padding: 2px;">—</td>') end if infos_region2[2] ~= nil then table.insert(resultat, '<td colspan="2" style="line-height:10pt;padding: 2px;">' .. infos_region2[2]) if infos_region2[3] ~= nil then table.insert(resultat, '<span class="explain" title="' .. infos_region2[3] .. '">*</span>') end table.insert(resultat, '</td>') else table.insert(resultat, '<td colspan="2" style="line-height:10pt;padding: 2px;">—</td>') end table.insert(resultat, '</tr>') elseif dex_secondaires[i] -- il ne reste plus qu'1 région then local infos_region1 = mw.text.split(dex_secondaires[i], "/") table.insert(resultat, '<tr><td colspan="4" style="line-height:8pt;width:100%;padding: 2px;"><em><small><strong>' .. association_region(frame, infos_region1[1]) .. '</strong></small></em></td></tr><tr><td colspan="4" style="line-height:10pt;padding: 2px;">') if infos_region1[2] ~= nil then table.insert(resultat, infos_region1[2]) if infos_region1[3] ~= nil then table.insert(resultat, '<span class="explain" title="' .. infos_region1[3] .. '">*</span>') end table.insert(resultat, '</td></tr>') else table.insert(resultat, '—</td></tr>') end end table.insert(resultat, '</table></td></tr>') end dex_secondaires = nil -- TYPES if not type1[2] -- Une seule forme then if type2[1] == nil then table.insert(resultat, '<tr><th>[[Type]]</th><td colspan="3">[[Fichier:Miniature Type ' .. mw.getContentLanguage():ucfirst(type1[1]) .. '.png|80px|link=' .. type1[1] .. ' (type)]]') if donnees then table.insert(resultat, '[[Premier type::' .. type1[1] .. '|]]') end if categories_wiki then table.insert(resultat, '[[Catégorie:Pokémon de type ' .. type1[1] .. ']]') end else table.insert(resultat, '<tr><th>[[Type]]s</th><td colspan="3">[[Fichier:Miniature Type ' .. mw.getContentLanguage():ucfirst(type1[1]) .. '.png|80px|link=' .. type1[1] .. ' (type)]] - [[Fichier:Miniature Type ' .. mw.getContentLanguage():ucfirst(type2[1]) .. '.png|80px|link=' .. type2[1] .. ' (type)]]') if donnees then table.insert(resultat, '[[Premier type::' .. type1[1] .. '|]][[Second type::' .. type2[1] ..'|]]') end if categories_wiki then table.insert(resultat, '[[Catégorie:Pokémon de type ' .. type1[1] .. ']][[Catégorie:Pokémon de type ' .. type2[1] .. ']]') end end if conditions_type[1] ~= '' then table.insert(resultat, '<small> <i>(' .. nil_to_string(conditions_type[1]) .. ')</i></small></td>') end table.insert(resultat, '</td></tr>') -- Plusieurs formes else local i = 1 -- initialisation ici pour pouvoir avoir une possibilité de précision même avec un seul set de types while conditions[i] do if conditions_type[i] == nil or conditions_type[i] == '' then conditions_type[i] = conditions[i] end i = i + 1 end table.insert(resultat, '<tr><th colspan="4" style="text-align:center">[[Type]]s</th></tr>') local i = 1 while type1[i] and type1[i+1] do if type2 ~= {} then if type2[i] == nil then type2[i] = type2[1] end end if type2[i] == nil or type2[i] == '' or type2[i] == '-' then table.insert(resultat, '<tr><td colspan="2" style="text-align:center;">[[Fichier:Miniature Type ' .. mw.getContentLanguage():ucfirst(type1[i]) .. '.png|80px|link=' .. type1[i] .. ' (type)]]') if donnees then table.insert(resultat, '[[Premier type::' .. type1[i] .. '|]]') end if categories_wiki then table.insert(resultat, '[[Catégorie:Pokémon de type ' .. type1[i] .. ']]') end else table.insert(resultat, '<tr><td colspan="2" style="text-align:center;">[[Fichier:Miniature Type ' .. mw.getContentLanguage():ucfirst(type1[i]) .. '.png|80px|link=' .. type1[i] .. ' (type)]] - [[Fichier:Miniature Type ' .. mw.getContentLanguage():ucfirst(type2[i]) .. '.png|80px|link=' .. type2[i] .. ' (type)]]') if donnees then table.insert(resultat, '[[Premier type::' .. type1[i] .. '|]][[Second type::' .. type2[i] ..'|]]') end if categories_wiki then table.insert(resultat, '[[Catégorie:Pokémon de type ' .. type1[i] .. ']][[Catégorie:Pokémon de type ' .. type2[i] .. ']]') end end table.insert(resultat, '<br/><small><i>(' .. nil_to_string(conditions_type[i]) .. ')</i></small></td>') if type2 ~= {} then if type2[i+1] == nil then type2[i+1] = type2[1] end end if type2[i+1] == nil or type2[i+1] == '' or type2[i+1] == '-' then table.insert(resultat, '<td colspan="2" style="text-align:center;">[[Fichier:Miniature Type ' .. mw.getContentLanguage():ucfirst(type1[i+1]) .. '.png|80px|link=' .. type1[i+1] .. ' (type)]]') if donnees then table.insert(resultat, '[[Premier type::' .. type1[i+1] .. '|]]') end if categories_wiki then table.insert(resultat, '[[Catégorie:Pokémon de type ' .. type1[i+1] .. ']]') end else table.insert(resultat, '<td colspan="2" style="text-align:center;">[[Fichier:Miniature Type ' .. mw.getContentLanguage():ucfirst(type1[i+1]) .. '.png|80px|link=' .. type1[i+1] .. ' (type)]] - [[Fichier:Miniature Type ' .. mw.getContentLanguage():ucfirst(type2[i+1]) .. '.png|80px|link=' .. type2[i+1] .. ' (type)]]') if donnees then table.insert(resultat, '[[Premier type::' .. type1[i+1] .. '|]][[Second type::' .. type2[i+1] ..'|]]') end if categories_wiki then table.insert(resultat, '[[Catégorie:Pokémon de type ' .. type1[i+1] .. ']][[Catégorie:Pokémon de type ' .. type2[i+1] .. ']]') end end table.insert(resultat, '<br/><small><i>(' .. nil_to_string(conditions_type[i+1]) .. ')</i></small></td></tr>') i = i + 2 end if type1[i] then if type2[i] == nil or type2[i] == '' or type2[i] == '-' then table.insert(resultat, '<tr><td colspan="4" style="text-align:center">[[Fichier:Miniature Type ' .. mw.getContentLanguage():ucfirst(type1[i]) .. '.png|80px|link=' .. type1[i] .. ' (type)]]') if donnees then table.insert(resultat, '[[Premier type::' .. type1[i] .. '|]]') end if categories_wiki then table.insert(resultat, '[[Catégorie:Pokémon de type ' .. type1[i] .. ']]') end else table.insert(resultat, '<tr><td colspan="4" style="text-align:center">[[Fichier:Miniature Type ' .. mw.getContentLanguage():ucfirst(type1[i]) .. '.png|80px|link=' .. type1[i] .. ' (type)]] - [[Fichier:Miniature Type ' .. mw.getContentLanguage():ucfirst(type2[i]) .. '.png|80px|link=' .. type2[i] .. ' (type)]]') if donnees then table.insert(resultat, '[[Premier type::' .. type1[i] .. '|]][[Second type::' .. type2[i] ..'|]]') end if categories_wiki then table.insert(resultat, '[[Catégorie:Pokémon de type ' .. type1[i] .. ']][[Catégorie:Pokémon de type ' .. type2[i] .. ']]') end end table.insert(resultat, '<br/><small><i>(' .. nil_to_string(conditions_type[i]) .. ')</i></small></td></tr>') end end -- CATÉGORIE if categorie == nil then categorie = {} else categorie = mw.text.split(categorie, "/") end if categorie[2] == nil then table.insert(resultat, '<tr><th>[[Catégorie]]</th><td colspan="3">') if categorie[1] == nil or categorie[1] == '' then table.insert(resultat, '—') if categories_wiki then table.insert(resultat, "[[Catégorie:Pokémon dont la catégorie est inconnue]]") end else table.insert(resultat, '[[Pokémon (créature)|Pokémon]] ') if donnees then table.insert(resultat, '[[Catégorie du Pokémon::' .. categorie[1] .. ']]') else table.insert(resultat, categorie[1]) end end table.insert(resultat, '</td></tr>') else table.insert(resultat, '<tr><th colspan="4" style="text-align:center">[[Catégorie]]s</th></tr>') local i = 1 while categorie[i] and categorie[i+1] do table.insert(resultat, '<tr><td colspan="2" style="text-align:center">[[Pokémon (créature)|Pokémon]] ') if donnees then table.insert(resultat, '[[Catégorie du Pokémon::' .. categorie[i] .. ']]') else table.insert(resultat, categorie[i]) end table.insert(resultat, '<br/><small><i>(' .. nil_to_string(conditions_categorie[i]) .. ')</i></small></td>') table.insert(resultat, '<td colspan="2" style="text-align:center">[[Pokémon (créature)|Pokémon]] ') if donnees then table.insert(resultat, '[[Catégorie du Pokémon::' .. categorie[i+1] .. ']]') else table.insert(resultat, categorie[i+1]) end table.insert(resultat, '<br/><small><i>(' .. nil_to_string(conditions_categorie[i+1]) .. ')</i></small></td></tr>') i = i + 2 end if categorie[i] then table.insert(resultat, '<tr><td colspan="4" style="text-align:center">[[Pokémon (créature)|Pokémon]] ') if donnees then table.insert(resultat, '[[Catégorie du Pokémon::' .. categorie[i] .. ']]') else table.insert(resultat, categorie[i]) end table.insert(resultat, '<br/><small><i>(' .. nil_to_string(conditions_categorie[i]) .. ')</i></small></td></tr>') end end categorie = nil -- TAILLE if taille == nil then taille = {} else taille = mw.text.split(taille, "/") end if taille[2] == nil -- Une seule forme then table.insert(resultat, '<tr><th>[[Taille]]</th><td colspan="3">') if taille[1] == nil or taille[1] == '' or taille[1] == '-' then table.insert(resultat, '???,? m') if categories_wiki and taille[1] ~= '-' then table.insert(resultat, "[[Catégorie:Pokémon dont la taille est inconnue]]") end else local taille_plus = false if string.sub(taille[1], -1, -1) == '+' then taille[1] = string.sub(taille[1], 1, -2) taille_plus = true end if tonumber(taille[1]) then if taille_plus then table.insert(resultat, 'Plus de ') end if donnees then table.insert(resultat, '[[Taille::' .. decimal_dot_to_comma(taille[1]) .. ']] m, soit ') -- on change la notation de type '0.2' en '0,2'. else table.insert(resultat, decimal_dot_to_comma(taille[1]) .. ' m, soit ') end local taille_pieds_pouces = meters_to_feet_and_inches(taille[1]) local taille_pieds = taille_pieds_pouces.feet local taille_pouces = taille_pieds_pouces.inches table.insert(resultat, taille_pieds .. ' pied') if taille_pieds > 1.0 then table.insert(resultat, 's') end table.insert(resultat, ' ' .. taille_pouces .. ' pouce') if taille_pouces > 1.0 then table.insert(resultat, 's') end else table.insert(resultat, '[[Fichier:Panneau Attention.png|x20px|Erreur dans la saisie de la taille : le format doit être de la forme « xxx.y », sans indiquer « m ».]] <i>' .. taille[1] .. '</i>[[Catégorie:Pokémon dont la taille est mal indiquée]]') end table.insert(resultat, '</td></tr>') end -- Plusieurs formes else table.insert(resultat, '<tr><th colspan="4" style="text-align:center">[[Taille|Tailles]]</th></tr>') local i = 1 local taille_pieds while taille[i] and taille[i+1] do table.insert(resultat, '<tr><td colspan="2" style="text-align:center;">') local taille_plus = false if string.sub(taille[i], -1, -1) == '+' then taille[i] = string.sub(taille[i], 1, -2) taille_plus = true end if tonumber(taille[i]) then if taille_plus then table.insert(resultat, 'Plus de ') end if donnees then table.insert(resultat, '[[Taille::' .. decimal_dot_to_comma(taille[i]) .. ']] m, soit<br/>') -- on change la notation de type '0.2' en '0,2'. else table.insert(resultat, decimal_dot_to_comma(taille[i]) .. ' m, soit<br/>') end local taille_pieds_pouces = meters_to_feet_and_inches(taille[i]) local taille_pieds = taille_pieds_pouces.feet local taille_pouces = taille_pieds_pouces.inches table.insert(resultat, taille_pieds .. ' pied') if taille_pieds > 1.0 then table.insert(resultat, 's') end table.insert(resultat, ' ' .. taille_pouces .. ' pouce') if taille_pouces > 1.0 then table.insert(resultat, 's') end elseif taille[i] == '' or taille[i] == '-' then table.insert(resultat, '???,? m') else table.insert(resultat, '[[Fichier:Panneau Attention.png|x20px|Erreur dans la saisie de la taille : le format doit être de la forme « xxx.y », sans indiquer « m ».]] <i>' .. taille[i] .. '</i>[[Catégorie:Pokémon dont la taille est mal indiquée]]') end table.insert(resultat, '<br/><small><i>(' .. nil_to_string(conditions_taille[i]) .. ')</i></small></td><td colspan="2" style="text-align:center;">') local taille_plus = false if string.sub(taille[i+1], -1, -1) == '+' then taille[i+1] = string.sub(taille[i+1], 1, -2) taille_plus = true end if tonumber(taille[i+1]) then if taille_plus then table.insert(resultat, 'Plus de ') end if donnees then table.insert(resultat, '[[Taille::' .. decimal_dot_to_comma(taille[i+1]) .. ']] m, soit<br/>') -- on change la notation de type '0.2' en '0,2'. else table.insert(resultat, decimal_dot_to_comma(taille[i+1]) .. ' m, soit<br/>') end local taille_pieds_pouces = meters_to_feet_and_inches(taille[i+1]) local taille_pieds = taille_pieds_pouces.feet local taille_pouces = taille_pieds_pouces.inches table.insert(resultat, taille_pieds .. ' pied') if taille_pieds > 1.0 then table.insert(resultat, 's') end table.insert(resultat, ' ' .. taille_pouces .. ' pouce') if taille_pouces > 1.0 then table.insert(resultat, 's') end elseif taille[i+1] == '' or taille[i+1] == '-' then table.insert(resultat, '???,? m') else table.insert(resultat, '[[Fichier:Panneau Attention.png|x20px|Erreur dans la saisie de la taille : le format doit être de la forme « xxx.y », sans indiquer « m ».]] <i>' .. taille[i+1] .. '</i>[[Catégorie:Pokémon dont la taille est mal indiquée]]') end table.insert(resultat, '<br/><small><i>(' .. nil_to_string(conditions_taille[i+1]) .. ')</i></small></td></tr>') i = i + 2 end if taille[i] then local taille_plus = false if string.sub(taille[i], -1, -1) == '+' then taille[i] = string.sub(taille[i], 1, -2) taille_plus = true end table.insert(resultat, '<tr><td colspan="4" style="text-align:center">') if tonumber(taille[i]) then if taille_plus then table.insert(resultat, 'Plus de ') end if donnees then table.insert(resultat, '[[Taille::' .. decimal_dot_to_comma(taille[i]) .. ']] m, soit ') -- on change la notation de type '0.2' en '0,2'. else table.insert(resultat, decimal_dot_to_comma(taille[i]) .. ' m, soit ') end local taille_pieds_pouces = meters_to_feet_and_inches(taille[i]) local taille_pieds = taille_pieds_pouces.feet local taille_pouces = taille_pieds_pouces.inches table.insert(resultat, taille_pieds .. ' pied') if taille_pieds > 1.0 then table.insert(resultat, 's') end table.insert(resultat, ' ' .. taille_pouces .. ' pouce') if taille_pouces > 1.0 then table.insert(resultat, 's') end elseif taille[i] == '' or taille[i] == '-' then table.insert(resultat, '???,? m') else table.insert(resultat, '[[Fichier:Panneau Attention.png|x20px|Erreur dans la saisie de la taille : le format doit être de la forme « xxx.y », sans indiquer « m ».]] <i>' .. taille[i] .. '</i>[[Catégorie:Pokémon dont la taille est mal indiquée]]') end table.insert(resultat, '<br/><small><i>(' .. nil_to_string(conditions_taille[i]) .. ')</i></small></td></tr>') end end taille = nil -- POIDS if poids == nil then poids = {} else poids = mw.text.split(poids, "/") end if poids[2] == nil -- Une seule forme then table.insert(resultat, '<tr><th>[[Poids]]</th><td colspan="3">') if poids[1] == nil or poids[1] == '' or poids[1] == '-' then table.insert(resultat, '???,? kg') if categories_wiki and poids[1] ~= '-' then table.insert(resultat, "[[Catégorie:Pokémon dont le poids est inconnu]]") end else if tonumber(poids[1]) then if donnees then table.insert(resultat, '[[Poids::' .. decimal_dot_to_comma(poids[1]) .. ']] kg, soit ') -- on change la notation de type '0.2' en '0,2'. else table.insert(resultat, decimal_dot_to_comma(poids[1]) .. ' kg, soit ') end local poids_livres = kg_to_pounds(poids[1]) if poids_livres <= 1.0 then table.insert(resultat, decimal_dot_to_comma(tostring(poids_livres)) .. ' livre') else table.insert(resultat, decimal_dot_to_comma(tostring(poids_livres)) .. ' livres') end else table.insert(resultat, '[[Fichier:Panneau Attention.png|x20px|Erreur dans la saisie du poids : le format doit être de la forme « xxx.y », sans indiquer « kg ».]] <i>' .. poids[1] .. '</i>[[Catégorie:Pokémon dont le poids est mal indiqué]]') end table.insert(resultat, '</td></tr>') end -- Plusieurs formes else table.insert(resultat, '<tr><th colspan="4" style="text-align:center">[[Poids]]</th></tr>') local i = 1 local poids_livres while poids[i] and poids[i+1] do table.insert(resultat, '<tr><td colspan="2" style="text-align:center;">') if tonumber(poids[i]) then if donnees then table.insert(resultat, '[[Poids::' .. decimal_dot_to_comma(poids[i]) .. ']] kg, soit<br/>') -- on change la notation de type '0.2' en '0,2'. else table.insert(resultat, decimal_dot_to_comma(poids[i]) .. ' kg, soit<br/>') end local poids_livres = kg_to_pounds(poids[i]) if poids_livres <= 1.0 then table.insert(resultat, decimal_dot_to_comma(tostring(poids_livres)) .. ' livre') else table.insert(resultat, decimal_dot_to_comma(tostring(poids_livres)) .. ' livres') end elseif poids[i] == '' or poids[i] == '-' then table.insert(resultat, '???,? kg') else table.insert(resultat, '[[Fichier:Panneau Attention.png|x20px|Erreur dans la saisie du poids : le format doit être de la forme « xxx.y », sans indiquer « kg ».]] <i>' .. poids[1] .. '</i>[[Catégorie:Pokémon dont le poids est mal indiqué]]') end table.insert(resultat, '<br/><small><i>(' .. nil_to_string(conditions_poids[i]) .. ')</i></small></td><td colspan="2" style="text-align:center;">') if tonumber(poids[i+1]) then if donnees then table.insert(resultat, '[[Poids::' .. decimal_dot_to_comma(poids[i+1]) .. ']] kg, soit<br/>') -- on change la notation de type '0.2' en '0,2'. else table.insert(resultat, decimal_dot_to_comma(poids[i+1]) .. ' kg, soit<br/>') end local poids_livres = kg_to_pounds(poids[i+1]) if poids_livres <= 1.0 then table.insert(resultat, decimal_dot_to_comma(tostring(poids_livres)) .. ' livre') else table.insert(resultat, decimal_dot_to_comma(tostring(poids_livres)) .. ' livres') end elseif poids[i+1] == '' or poids[i+1] == '-' then table.insert(resultat, '???,? kg') else table.insert(resultat, '[[Fichier:Panneau Attention.png|x20px|Erreur dans la saisie du poids : le format doit être de la forme « xxx.y », sans indiquer « kg ».]] <i>' .. poids[i+1] .. '</i>[[Catégorie:Pokémon dont le poids est mal indiqué]]') end table.insert(resultat, '<br/><small><i>(' .. nil_to_string(conditions_poids[i+1]) .. ')</i></small></td></tr>') i = i + 2 end if poids[i] then table.insert(resultat, '<tr><td colspan="4" style="text-align:center">') if tonumber(poids[i]) then if donnees then table.insert(resultat, '[[Poids::' .. decimal_dot_to_comma(poids[i]) .. ']] kg, soit ') -- on change la notation de type '0.2' en '0,2'. else table.insert(resultat, decimal_dot_to_comma(poids[i]) .. ' kg, soit ') end local poids_livres = kg_to_pounds(poids[i]) if poids_livres <= 1.0 then table.insert(resultat, decimal_dot_to_comma(tostring(poids_livres)) .. ' livre') else table.insert(resultat, decimal_dot_to_comma(tostring(poids_livres)) .. ' livres') end elseif poids[i] == '' or poids[i] == '-' then table.insert(resultat, '???,? kg') else table.insert(resultat, '[[Fichier:Panneau Attention.png|x20px|Erreur dans la saisie du poids : le format doit être de la forme « xxx.y », sans indiquer « kg ».]] <i>' .. poids[i] .. '</i>[[Catégorie:Pokémon dont le poids est mal indiqué]]') end table.insert(resultat, '<br/><small><i>(' .. nil_to_string(conditions_poids[i]) .. ')</i></small></td></tr>') end end poids = nil -- TALENTS if talents == nil or talents == '' then table.insert(resultat, '<tr><th>[[Talent]]s</th><td colspan="3">—</td></tr>') if categories_wiki then table.insert(resultat, "[[Catégorie:Pokémon dont le talent est inconnu]]") end else function talents_to_list(talents) talents = mw.text.split(talents, "//") local j = 1 local infos_talent = {} local init = true local function_ans = {} while talents[j] do infos_talent_j = mw.text.split(talents[j], "/") if infos_talent_j[1] ~= nil then if init then init = false else table.insert(function_ans, '<br>') end if talents[2] then table.insert(function_ans, j .. '. ') end if infos_talent_j[1] == "" or infos_talent_j[1] == '-' or infos_talent_j[1] == '—' then table.insert(function_ans, '—') else table.insert(function_ans, '[[' .. infos_talent_j[1] .. ']]') end if infos_talent_j[2] ~= nil and infos_talent_j[2] ~= "" then table.insert(function_ans, '<small> <i>(' .. infos_talent_j[2] .. ')</i></small>') end end j = j + 1 end return {["how_many"] = j - 1, ["ans"] = table.concat(function_ans, "")} end talents = mw.text.split(talents, "///") if not talents[2] then local ttl = talents_to_list(talents[1]) local plural = "" if ttl.how_many >= 2 then plural = "s" end table.insert(resultat, '<tr><th>[[Talent]]' .. plural .. '</th><td colspan="3">' .. ttl.ans .. '</td></tr>') else table.insert(resultat, '<tr><th colspan="4" style="text-align:center">[[Talent]]s</th></tr>') local i = 1 while talents[i] and talents[i+1] do local ttl_i = talents_to_list(talents[i]) local ttl_ip1 = talents_to_list(talents[i+1]) if ttl_i.how_many >= 2 then table.insert(resultat, '<tr><td colspan="2">' .. ttl_i.ans .. '<div style="text-align:center"><small><i>(' .. nil_to_string(conditions_talents[i]) .. ')</i></small></div></td>') else table.insert(resultat, '<tr><td colspan="2" style="text-align:center">' .. ttl_i.ans .. '<div style="text-align:center"><small><i>(' .. nil_to_string(conditions_talents[i]) .. ')</i></small></div></td>') end if ttl_ip1.how_many >= 2 then table.insert(resultat, '<td colspan="2">' .. ttl_ip1.ans .. '<div style="text-align:center"><small><i>(' .. nil_to_string(conditions_talents[i+1]) .. ')</i></small></div></td></tr>') else table.insert(resultat, '<td colspan="2" style="text-align:center">' .. ttl_ip1.ans .. '<div style="text-align:center"><small><i>(' .. nil_to_string(conditions_talents[i+1]) .. ')</i></small></div></td></tr>') end i = i + 2 end if talents[i] then local ttl_i = talents_to_list(talents[i]) if ttl_i.how_many >= 2 then table.insert(resultat, '<tr><td colspan="4">' .. ttl_i.ans .. '<div style="text-align:center"><small><i>(' .. nil_to_string(conditions_talents[i]) .. ')</i></small></div></td></tr>') else table.insert(resultat, '<tr><td colspan="4" style="text-align:center">' .. ttl_i.ans .. '<small><br><i>(' .. nil_to_string(conditions_talents[i]) .. ')</i></small></td></tr>') end end end end talents = nil -- GROUPES ŒUF if groupeoeuf2 ~= nil and groupeoeuf2 ~= '' and groupeoeuf2 ~= '-' then table.insert(resultat, '<tr><th>[[Liste des Pokémon par groupe d\'Œuf|Groupes d\'Œuf]]</th><td colspan="3">') else table.insert(resultat, '<tr><th>[[Liste des Pokémon par groupe d\'Œuf|Groupe d\'Œuf]]</th><td colspan="3">') end if groupeoeuf1 == nil or groupeoeuf1 == '' or groupeoeuf1 == '-' then table.insert(resultat, '—') if categories_wiki then table.insert(resultat, "[[Catégorie:Pokémon dont le groupe d'Œuf est inconnu]]") end else table.insert(resultat, '[[:Catégorie:Pokémon du groupe ' .. groupeoeuf1 .. '|' .. groupeoeuf1 .. ']]') if groupeoeuf1diff ~= nil then table.insert(resultat, '<small> <i>(' .. groupeoeuf1diff .. ')</i></small>') end if categories_wiki then table.insert(resultat, '[[Catégorie:Pokémon du groupe ' .. groupeoeuf1 .. ']]') end if groupeoeuf2 ~= nil and groupeoeuf2 ~= '' and groupeoeuf2 ~= '-' then table.insert(resultat, '<br>[[:Catégorie:Pokémon du groupe ' .. groupeoeuf2 .. '|' .. groupeoeuf2 .. ']]') if groupeoeuf2diff ~= nil then table.insert(resultat, '<small> <i>(' .. groupeoeuf2diff .. ')</i></small>') end if categories_wiki then table.insert(resultat, '[[Catégorie:Pokémon du groupe ' .. groupeoeuf2 .. ']]') end end end table.insert(resultat, '</td></tr>') -- ÉCLOSION if oeufpas == nil then oeufpas = {} if eclosion == nil then eclosion = {} else eclosion = mw.text.split(eclosion, "/") end else oeufpas = mw.text.split(oeufpas, "/") if eclosion == nil then eclosion = {} local oeufpas_i = 1 while oeufpas[oeufpas_i] and tonumber(oeufpas[oeufpas_i]) do eclosion[oeufpas_i] = math.floor(oeufpas[oeufpas_i]/255) - 1 oeufpas_i = oeufpas_i + 1 end else eclosion = mw.text.split(eclosion, "/") end end if eclosion[2] == nil then if tonumber(eclosion[1]) then table.insert(resultat, '<tr><th>Éclosion</th><td colspan="3">') local s = '' if tonumber(eclosion[1]) > 1 then s = 's' end if donnees then table.insert(resultat, '[[Éclosion::' .. eclosion[1] .. "]] [[Cycle d'éclosion|cycle]]" .. s) else table.insert(resultat, eclosion[1] .. "]] [[Cycle d'éclosion|cycle]]" .. s) end table.insert(resultat, '</td></tr>') else if categories_wiki and oeufpas[1] ~= '-' then table.insert(resultat, "[[Catégorie:Pokémon dont le temps d'éclosion est inconnu]]") end end else table.insert(resultat, '<tr><th colspan="4" style="text-align:center">Éclosion</th></tr>') local i = 1 while eclosion[i] and tonumber(eclosion[i]) and eclosion[i+1] and tonumber(eclosion[i+1]) do local s = '' if tonumber(eclosion[i]) > 1 then s = 's' end table.insert(resultat, '<tr><td colspan="2" style="text-align:center">') if donnees then table.insert(resultat, '[[Éclosion::' .. eclosion[i] .. ']]') else table.insert(resultat, eclosion[i]) end table.insert(resultat, " [[Cycle d'éclosion|cycle]]" .. s .. '<br><small><i>(' .. nil_to_string(conditions_eclosion[i]) .. ')</i></small></td>') if tonumber(eclosion[i+1]) > 1 then s = 's' else s = '' end table.insert(resultat, '<td colspan="2" style="text-align:center">') if donnees then table.insert(resultat, '[[Éclosion::' .. eclosion[i+1] .. ']]') else table.insert(resultat, eclosion[i+1]) end table.insert(resultat, " [[Cycle d'éclosion|cycle]]" .. s .. '<br><small><i>(' .. nil_to_string(conditions_eclosion[i+1]) .. ')</i></small></td></tr>') i = i + 2 end if eclosion[i] then local s = '' if tonumber(eclosion[i]) > 1 then s = 's' end table.insert(resultat, '<tr><td colspan="4" style="text-align:center">') if donnees then table.insert(resultat, '[[Éclosion::' .. eclosion[i] .. ']]') else table.insert(resultat, eclosion[i]) end table.insert(resultat, " [[Cycle d'éclosion|cycle]]" .. s .. '<br><small><i>(' .. nil_to_string(conditions_eclosion[i]) .. ')</i></small></td></tr>') end end -- EV if effortval == nil then effortval = {} else effortval = mw.text.split(effortval, "/") end if effortval[2] == nil then table.insert(resultat, '<tr><th>[[EV|Points effort]]</th><td colspan="3">') if effortval[1] == nil or effortval[1] == '' then table.insert(resultat, '—') if categories_wiki then table.insert(resultat, "[[Catégorie:Pokémon dont les EV gagnés sont inconnus]]") end else if donnees then table.insert(resultat, '[[Points effort::' .. effortval[1] .. ']]') else table.insert(resultat, effortval[1]) end end table.insert(resultat, '</td></tr>') else table.insert(resultat, '<tr><th colspan="4" style="text-align:center">[[EV|Points effort]]</th></tr>') local i = 1 while effortval[i] and effortval[i+1] do if donnees then for z = i, i+1 do effortval[z] = '[[Points effort::' .. effortval[z] .. ']]' end end table.insert(resultat, '<tr><td colspan="2" style="text-align:center">' .. effortval[i] .. '<br/><small><i>(' .. nil_to_string(conditions_effortval[i]) .. ')</i></small></td>') table.insert(resultat, '<td colspan="2" style="text-align:center">' .. effortval[i+1] .. '<br/><small><i>(' .. nil_to_string(conditions_effortval[i+1]) .. ')</i></small></td></tr>') i = i + 2 end if effortval[i] then if donnees then effortval[i] = '[[Points effort::' .. effortval[i] .. ']]' end table.insert(resultat, '<tr><td colspan="4" style="text-align:center">' .. effortval[i] .. '<br/><small><i>(' .. nil_to_string(conditions_effortval[i]) .. ')</i></small></td></tr>') end end effortval = nil -- POINTS EXP table.insert(resultat, '<tr><th>[[Expérience|Points exp.]]</th><td colspan="3">') if expval == nil or expval == "" then if categories_wiki then table.insert(resultat, "[[Catégorie:Pokémon dont le gain d'expérience est inconnu]]") end expval = {"—"} else expval = mw.text.split(expval, "//") end i = 1 while expval[i] do expval_i = mw.text.split(expval[i], "/") if expval_i[1] == "—" then table.insert(resultat, '—') else if i ~= 1 then table.insert(resultat, "<br>") end if donnees and expval[i+1] == nil -- semantic data only for the latest instance then table.insert(resultat, '[[Points exp::' .. expval_i[1] .. ']] exp.') else table.insert(resultat, expval_i[1] .. ' exp.') end if expval_i[2] then table.insert(resultat, "<small> <i>(" .. expval_i[2] .. ")</i></small>") end if i == 1 and expvaldiff ~= nil then table.insert(resultat, ' (' .. expvaldiff .. ')') end end i = i + 1 end table.insert(resultat, '</td></tr>') -- EXPÉRIENCE AU NIVEAU 100 table.insert(resultat, '<tr><th>[[Expérience|Exp au niveau 100]]</th><td colspan="3">') if expmax then expmax = expmax:gsub(" ", "") end -- Pour permettre la saisie de données sous la forme "1 000 000" if not tonumber(expmax) then table.insert(resultat, '—') if categories_wiki then table.insert(resultat, "[[Catégorie:Pokémon dont l'expérience au niveau 100 est inconnue]]") end else expmax = separate_thousands(expmax) if donnees then table.insert(resultat, '[[Exp au niveau 100::' .. expmax .. ']] exp.') else table.insert(resultat, expmax .. ' exp.') end end table.insert(resultat, '</td></tr>') -- SEXE table.insert(resultat, '<tr><th>[[Liste des Pokémon par répartition des sexes|Sexe]]</th><td colspan="3">') if fmratio == nil or fmratio == '' or fmratio == '-' then table.insert(resultat, '<i>Répartition inconnue</i>') if categories_wiki then table.insert(resultat, "[[Catégorie:Pokémon dont la répartition des sexes est inconnue]]") end else fmratio = mw.text.split(fmratio, "/") local i = 1 local init = true while fmratio[i] do if tonumber(fmratio[i]) then fmratio[i] = tonumber(fmratio[i]) if init then init = false else table.insert(resultat, '<br/>') end if fmratio[i] == -1 then table.insert(resultat, 'Asexué') if fmratio[2] then table.insert(resultat, ' <i><small>(' .. nil_to_string(conditions_fmratio[i]) .. ')</small></i>') end if categories_wiki then table.insert(resultat, '[[Catégorie:Pokémon asexué]]') end else table.insert(resultat, fmratio[i]*100 .. ' % femelle ; ' .. 100-fmratio[i]*100 .. ' % mâle<br/><div style="border-radius: 10px;overflow: hidden;line-height: 15px;"><div style="background-color:pink;display:inline-block;width:' .. fmratio[i]*100 .. '%"> </div><div style="background-color:lightblue;display:inline-block;width:' .. 100-fmratio[i]*100 .. '%"> </div></div>') if fmratio[2] then table.insert(resultat, '<i><small>(' .. nil_to_string(conditions_fmratio[i]) .. ')</small></i>') end if categories_wiki and fmratio[i] == 1 then table.insert(resultat, '[[Catégorie:Pokémon uniquement femelle]]') elseif categories_wiki and fmratio[i] == 0 then table.insert(resultat, '[[Catégorie:Pokémon uniquement mâle]]') end end end i = i + 1 end end table.insert(resultat, '</td></tr>') -- COULEUR if not debug_mode and (couleur == nil or couleur == '' or couleur == '-' or couleur == 'Inconnue') then if categories_wiki then table.insert(resultat, '[[Catégorie:Pokémon dont la couleur est inconnue]]') end -- En commentaire : un code pour mettre la couleur "Inconnu" par défaut. Actuellement, on retire complètement la section. -- table.insert(resultat, '<tr><th>[[Couleur]]</th><td colspan="3">—') -- table.insert(resultat, '</th></tr>') else if couleur == nil then couleur = '' end couleur = mw.text.split(couleur, "/") local i = 1 local init = true if couleur[2] then table.insert(resultat, '<tr><th>[[Couleur|Couleurs]]</th><td colspan="3">') else table.insert(resultat, '<tr><th>[[Couleur]]</th><td colspan="3">') end while couleur[i] do if init then init = false else table.insert(resultat, '<br/>') end if donnees then table.insert(resultat, '[[Couleur::' .. couleur[i] .. '|]]') end table.insert(resultat, frame:expandTemplate{title='Image couleur', args={couleur[i]}}) if categories_wiki then if couleur[i] ~= "Inconnue" then table.insert(resultat, '[[Catégorie:Pokémon listé comme ' .. couleur[i] .. ']]') else table.insert(resultat, '[[Catégorie:Pokémon dont la couleur est inconnue]]') end end if couleur[2] then table.insert(resultat, ' <i><small>(' .. nil_to_string(conditions_couleur[i]) .. ')</small></i>') end i = i + 1 end table.insert(resultat, '</td></tr>') end couleur = nil -- TAUX DE CAPTURE if not debug_mode and not (captureval == nil or captureval == '' or captureval == '-') then if captureval == nil then captureval = '' end table.insert(resultat, '<tr><th>[[Capture de Pokémon|Taux de capture]]</th><td colspan="3">') captureval = mw.text.split(captureval, "/") local i = 1 local init = true while captureval[i] do if init then init = false else table.insert(resultat, '<br/>') end if donnees then table.insert(resultat, '[[Taux de capture::' .. captureval[i] .. ']]') else table.insert(resultat, captureval[i]) end if captureval[2] then table.insert(resultat, ' <i><small>(' .. nil_to_string(conditions_captureval[i]) .. ')</small></i>') end i = i + 1 end table.insert(resultat, '</td></tr>') else if categories_wiki then table.insert(resultat, "[[Catégorie:Pokémon dont le taux de capture est inconnu]]") end end -- EMPREINTE table.insert(resultat, '') if debug_mode or (empreinte ~= '-' and (empreinte == nil or empreinte == '')) and tonumber(ndex) and generation <= 5 then table.insert(resultat, '<tr><th>Empreinte</th><td colspan="3">[[Fichier:' .. ndex .. 'empreinte.png|x22px|class=imagenoire]]</td></tr>') elseif not(empreinte == nil or empreinte == '' or empreinte == '-') then table.insert(resultat, '<tr><th>Empreinte</th><td colspan="3">[[Fichier:' .. empreinte .. '.png|x22px|class=imagenoire]]</td></tr>') end -- APPARENCE DU CORPS if corps == nil then corps = forme end if corps == nil or corps == '' or corps == '-' then table.insert(resultat, '<tr><th>[[Apparence du corps|Apparence<br/>du corps]]</th><td colspan="3">—') if categories_wiki then table.insert(resultat, "[[Catégorie:Pokémon dont l'apparence du corps est inconnue]]") end else corps = mw.text.split(corps, "/") local i = 1 local init = true if corps[2] then table.insert(resultat, '<tr><th>[[Apparence du corps|Apparences<br/>du corps]]</th><td colspan="3">') else table.insert(resultat, '<tr><th>[[Apparence du corps|Apparence<br/>du corps]]</th><td colspan="3">') end while corps[i] do if init then init = false else table.insert(resultat, '<br/>') end table.insert(resultat, frame:expandTemplate{title='Apparence du corps', args={corps[i]}}) if corps[2] then table.insert(resultat, ' <i><small>(' .. nil_to_string(conditions_corps[i]).. ')</small></i>') end i = i + 1 end end table.insert(resultat, '</td></tr>') -- CRI if cri == '' then cri = nil end if cri == nil and not tonumber(ndex) then table.insert(resultat, '<tr><th colspan="4" style="text-align:center">[[Cri]]</th></tr><tr><td colspan="4" style="text-align:center">—</td></tr>') elseif cri ~= nil then cri = mw.text.split(cri, "/") if cri[2] then table.insert(resultat, '<tr><th colspan="4" style="text-align:center">[[Cri]]s</th></tr>') else table.insert(resultat, '<tr><th colspan="4" style="text-align:center">[[Cri]]</th></tr>') end local i = 1 while cri[i] do table.insert(resultat, '<tr><td colspan="4" style="text-align:center"><center>[[Fichier:' .. cri[i] .. '.ogg|noicon]]</center>') if cri[2] then table.insert(resultat, '<small><i>(' .. nil_to_string(conditions_cri[i]) .. ')</i></small>') end table.insert(resultat, '</td></tr>') i = i + 1 end else table.insert(resultat, '<tr><th colspan="4" style="text-align:center">[[Cri]]</th></tr><tr><td colspan="4" style="text-align:center"><center>') if tonumber(ndex) <= 493 then table.insert(resultat, '[[Fichier:Cri ' .. ndex .. ' DP.ogg|noicon]]') elseif tonumber(ndex) <= 649 then table.insert(resultat, '[[Fichier:Cri ' .. ndex .. ' NB.ogg|noicon]]') elseif tonumber(ndex) <= 721 then table.insert(resultat, '[[Fichier:Cri ' .. ndex .. ' XY.ogg|noicon]]') elseif tonumber(ndex) <= 809 then table.insert(resultat, '[[Fichier:Cri ' .. ndex .. ' SL.ogg|noicon]]') elseif tonumber(ndex) <= 898 then table.insert(resultat, '[[Fichier:Cri ' .. ndex .. ' EB.ogg|noicon]]') elseif tonumber(ndex) <= 905 then table.insert(resultat, '[[Fichier:Cri ' .. ndex .. ' LPA.ogg|noicon]]') else table.insert(resultat, '[[Fichier:Cri ' .. ndex .. ' EV.ogg|noicon]]') end table.insert(resultat, '</center></td></tr>') end cri = nil -- GESTION CATÉGORISATION GÉNÉRATION ET DONNÉES table.insert(resultat, '<tr><td style="width:30%; height: 0px; padding: 0px;">') if categories_wiki then table.insert(resultat, '[[Catégorie:Pokémon]]') if generation == 1 then table.insert(resultat, '[[Catégorie:Pokémon de la première génération]]') elseif generation == 2 then table.insert(resultat, '[[Catégorie:Pokémon de la deuxième génération]]') elseif generation == 3 then table.insert(resultat, '[[Catégorie:Pokémon de la troisième génération]]') elseif generation == 4 then table.insert(resultat, '[[Catégorie:Pokémon de la quatrième génération]]') elseif generation == 5 then table.insert(resultat, '[[Catégorie:Pokémon de la cinquième génération]]') elseif generation == 6 then table.insert(resultat, '[[Catégorie:Pokémon de la sixième génération]]') elseif generation == 7 then table.insert(resultat, '[[Catégorie:Pokémon de la septième génération]]') elseif generation == 8 then table.insert(resultat, '[[Catégorie:Pokémon de la huitième génération]]') elseif generation == 9 then table.insert(resultat, '[[Catégorie:Pokémon de la neuvième génération]]') end if fmratio == -1 then table.insert(resultat, '[[Catégorie:Pokémon asexué]]') elseif fmratio == 1 then table.insert(resultat, '[[Catégorie:Pokémon uniquement femelle]]') elseif fmratio == 0 then table.insert(resultat, '[[Catégorie:Pokémon uniquement mâle]]') end end if donnees then if generation == 1 then table.insert(resultat, '[[Génération du Pokémon::Première génération|]]') elseif generation == 2 then table.insert(resultat, '[[Génération du Pokémon::Deuxième génération|]]') elseif generation == 3 then table.insert(resultat, '[[Génération du Pokémon::Troisième génération|]]') elseif generation == 4 then table.insert(resultat, '[[Génération du Pokémon::Quatrième génération|]]') elseif generation == 5 then table.insert(resultat, '[[Génération du Pokémon::Cinquième génération|]]') elseif generation == 6 then table.insert(resultat, '[[Génération du Pokémon::Sixième génération|]]') elseif generation == 7 then table.insert(resultat, '[[Génération du Pokémon::Septième génération|]]') elseif generation == 8 then table.insert(resultat, '[[Génération du Pokémon::Huitième génération|]]') elseif generation == 9 then table.insert(resultat, '[[Génération du Pokémon::Neuvième génération|]]') end end table.insert(resultat, '</td><td style="width:20%; height: 0px; padding: 0px;"></td><td style="width:20%; height: 0px; padding: 0px;"></td><td style="width:30%; height: 0px; padding: 0px;"></td></tbody>') table.insert(resultat, '</table>') return table.concat(resultat, "") end return p