Module:Apprentissage
Le module Apprentissage rassemble différentes fonctions permettant de créer des tableaux d'apprentissage destinés aux pages des Pokémon. Il utilise lui-même des modules auxiliaires, en particulier le module de ressources « donneesCapacite » pour récupérer les données (puissance, précision etc) des capacités apparaissant.
Fonction « niveau »
Paramètres
- type : le type du Pokémon. Utilisé uniquement pour la coloration du tableau.
- génération en chiffre arabe (1, 2, 3…).
- masquer (facultatif) : indiquer oui pour que le tableau soit masqué par défaut.
- Les capacités apprises et les niveaux. Chaque capacité est disposée sur une nouvelle ligne et on trouve ensuite les niveaux d'apprentissage (leur nombre varie selon la génération, c.f. le paragraphe suivant). Sur une même ligne, les infos sont séparées par des slashs (/). Pour les noms de capacité, il est obligatoire d'écrire dans le code le nom de la capacité lors de la génération et rien d'autre : ne pas essayer en particulier de modifier le lien vers lequel pointe la capacité au risque de perturber la récupération des informations sur celle-ci. On notera que les homonymies sont gérées automatiquement. Indiquer un numéro rajoute automatiquement un « N. » devant. On peut indiquer plusieurs niveaux sur une même case en les séparant d'une virgule et d'un espace. Indiquer un simple tiret (-) le transforme automatiquement en tiret long (—). Précéder un niveau de la lettre M ajoute une icône de maîtrise de la capacité.
Voici les colonnes par défaut par génération :
- première génération, deux colonnes : RBJ et J ;
- deuxième génération, deux colonnes : OA et C ;
- troisième génération, trois colonnes : RS, E et RFVF ;
- quatrième génération, trois colonnes : DP, Pt et HGSS ;
- cinquième génération, deux colonnes : NB et NB2 ;
- sixième génération, deux colonnes : XY et ROSA ;
- septième génération, trois colonnes : SL, USUL et LGPE ;
- huitième génération, deux colonnes : EB et DEPS ensemble, puis LPA ;
- neuvième génération, une colonne : EV.
On notera que la fonction niveau retire automatiquement les colonnes pour lesquelles aucune information n'est indiquée. C'est en particulier intéressant pour Pokémon : Let's Go, Pikachu et Let's Go, Évoli et Légendes Pokémon : Arceus, où peu des Pokémon existants à l'époque étaient présents dans le jeu. Prenons l'exemple suivant : on veut remplir le tableau génération 7 d'un Pokémon de la troisième génération. Le module s'attend à trois colonnes : SL, USUL et LGPE ; mais un Pokémon de la troisième génération n'est pas présent dans LGPE. Dans ce cas, il n'y a pas à indiquer au module cette information, il suffit de ne jamais mettre de niveau dans la troisième colonne et elle disparaîtra d'elle-même.
Exemples
{{#invoke:Apprentissage|niveau|type=plante|génération=6| Charge/Départ/Départ Rugissement/3/3 Fouet Lianes/7/5 Fouet Lianes/9/7 Poudre Toxik/13/9 Poudre Dodo/-/12 Bélier/-/15 Tranch'Herbe/19/18 Doux Parfum/21/21 Croissance/25/24 Damoclès/27/27 Soucigraine/31/30 Synthèse/33/33 Canon Graine/37/Évolution }}
donne :
Capacité | Niveau | |||||||||
---|---|---|---|---|---|---|---|---|---|---|
Nom | Type | Catégorie | Puissance | Précision | PP | Type Concours | Charme | Blocage | XY | ROSA |
Charge | 50 | 100 % | 35 | ♥♥♥♥ | — | Départ | Départ | |||
Rugissement | — | 100 % | 40 | ♥♥ | — | N.3 | N.3 | |||
Fouet Lianes | 45 | 100 % | 15 | ♥♥♥♥ | — | N.7 | N.5 | |||
Fouet Lianes | 45 | 100 % | 15 | ♥♥♥♥ | — | N.9 | N.7 | |||
Poudre Toxik | — | 75 % | 35 | ♥♥♥ | — | N.13 | N.9 | |||
Poudre Dodo | — | 75 % | 15 | ♥ | ♥♥♥ | — | N.12 | |||
Bélier | 90 | 85 % | 20 | ♥♥♥♥♥♥ | — | — | N.15 | |||
Tranch'Herbe | 55 | 95 % | 25 | ♥♥♥♥ | — | N.19 | N.18 | |||
Doux Parfum | — | 100 % | 20 | ♥♥ | — | N.21 | N.21 | |||
Croissance | — | — | 40 | ♥ | — | N.25 | N.24 | |||
Damoclès | 120 | 100 % | 15 | ♥♥♥♥♥♥ | — | N.27 | N.27 | |||
Soucigraine | — | 100 % | 10 | ♥♥ | — | N.31 | N.30 | |||
Synthèse | — | — | 5 | ♥ | — | N.33 | N.33 | |||
Canon Graine | 80 | 100 % | 15 | ♥♥♥♥ | — | N.37 | Évolution |
{{#invoke:Apprentissage|niveau|type=plante|génération=7|Aucune}}
donne :
Capacité | |||||
---|---|---|---|---|---|
Nom | Type | Catégorie | Puissance | Précision | PP |
Ce Pokémon n'apprend aucune capacité par montée en niveau lors de cette génération. |
Fonction « capsule »
Paramètres
- type : le type du Pokémon. Utilisé uniquement pour la coloration du tableau.
- génération en chiffre arabe (1, 2, 3…).
- jeux (facultatif) : ce paramètre n'est actuellement utile que pour les générations 7 et 8, où les données des capacités (puissance, précision etc) ont pu varier selon les jeux. Si un tableau ne concerne que certains jeux de la génération, alors les indiquer avec se paramètre permettra que seules les données utiles soient affichées et allégera donc le tableau. Il faut utiliser les abréviations des jeux en question, conformément au modèle Jeu, et séparer les différents jeux par des slashs (/). Par exemple : « jeux=LPA » ou « jeux=EB/DEPS ».
- masquer (facultatif) : indiquer oui pour que le tableau soit masqué par défaut.
- Le numéro de la CT/CS et la capacité qu'elle contient. Chaque capsule est disposée sur une nouvelle ligne et on trouve ensuite le nom de la capacité puis l'abréviation du jeu comme paramètre facultatif. Sur une même ligne, les infos sont séparées par des slashs (/). Pour les noms de capacité, il est obligatoire d'écrire dans le code le nom de la capacité lors de la génération et rien d'autre : ne pas essayer en particulier de modifier le lien vers lequel pointe la capacité au risque de perturber la récupération des informations sur celle-ci. On notera que les homonymies sont gérées automatiquement.
Exemples
{{#invoke:Apprentissage|capsule|type=Sol|génération=6| 90/Clonage 91/Luminocanon 94/Éclate-Roc/XY 94/Force Cachée/ROSA 98/Poing Boost 100/Confidence 02/Vol 04/Force 06/Éclate-Roc/ROSA }}
donne :
Numéro | Capacité | Type | Catégorie | Puissance | Précision | PP | Type Concours | Charme | Blocage |
---|---|---|---|---|---|---|---|---|---|
CT90 | Clonage | — | — | 10 | ♥♥ | — | |||
CT91 | Luminocanon | 80 | 100 % | 10 | ♥♥♥♥ | — | |||
CT94 | Éclate-RocXY | 40 | 100 % | 15 | ♥♥♥♥ | — | |||
CT94 | Force CachéeROSA | 70 | 100 % | 20 | ♥ | — | |||
CT98 | Poing Boost | 40 | 100 % | 20 | ♥ | — | |||
CT100 | Confidence | — | — | 20 | ♥♥♥ | — | |||
CS02 | Vol | 90 | 95 % | 15 | ♥♥ | — | |||
CS04 | Force | 80 | 100 % | 15 | ♥♥♥♥ | — | |||
CS06 | Éclate-RocROSA | 40 | 100 % | 15 | ♥♥♥♥ | — |
{{#invoke:Apprentissage|capsule|type=Sol|génération=7|Aucune}}
donne :
Numéro | Capacité | Type | Catégorie | Puissance | Précision | PP |
---|---|---|---|---|---|---|
Ce Pokémon n'apprend aucune capacité par capsule lors de cette génération. |
Fonction « disque »
Paramètres
- type : le type du Pokémon. Utilisé uniquement pour la coloration du tableau.
- génération en chiffre arabe (1, 2, 3…).
- jeux (facultatif) : ce paramètre n'est actuellement utile que pour les générations 7 et 8, où les données des capacités (puissance, précision etc) ont pu varier selon les jeux. Si un tableau ne concerne que certains jeux de la génération, alors les indiquer avec se paramètre permettra que seules les données utiles soient affichées et allégera donc le tableau. Il faut utiliser les abréviations des jeux en question, conformément au modèle Jeu, et séparer les différents jeux par des slashs (/). Par exemple : « jeux=LPA » ou « jeux=EB/DEPS ».
- masquer (facultatif) : indiquer oui pour que le tableau soit masqué par défaut.
- Le numéro du DT et la capacité qu'il contient. Chaque disque est disposé sur une nouvelle ligne et on trouve ensuite le nom de la capacité puis l'abréviation du jeu comme paramètre facultatif. Sur une même ligne, les infos sont séparées par des slashs (/). Pour les noms de capacité, il est obligatoire d'écrire dans le code le nom de la capacité lors de la génération et rien d'autre : ne pas essayer en particulier de modifier le lien vers lequel pointe la capacité au risque de perturber la récupération des informations sur celle-ci. On notera que les homonymies sont gérées automatiquement.
Exemple
{{#invoke:Apprentissage|disque|type=Feu|génération=8| 00 / Danse Lames 01 / Plaquage 02 / Lance-Flammes 10 / Séisme 15 / Déflagration 20 / Clonage 24 / Colère 26 / Ténacité }}
donne :
Numéro | Capacité | Type | Catégorie | Puissance | Précision | PP |
---|---|---|---|---|---|---|
DT00 | Danse Lames | — | — | 20 | ||
DT01 | Plaquage | 85 | 100 % | 15 | ||
DT02 | Lance-Flammes | 90 | 100 % | 15 | ||
DT10 | Séisme | 100 | 100 % | 10 | ||
DT15 | Déflagration | 110 | 85 % | 5 | ||
DT20 | Clonage | — | — | 10 | ||
DT24 | Colère | 120 | 100 % | 10 | ||
DT26 | Ténacité | — | — | 10 |
Fonction « reproduction »
Paramètres
- type : le type du Pokémon. Utilisé uniquement pour la coloration du tableau.
- génération en chiffre arabe (1, 2, 3…).
- jeux (facultatif) : ce paramètre n'est actuellement utile que pour les générations 7 et 8, où les données des capacités (puissance, précision etc) ont pu varier selon les jeux. Si un tableau ne concerne que certains jeux de la génération, alors les indiquer avec se paramètre permettra que seules les données utiles soient affichées et allégera donc le tableau. Il faut utiliser les abréviations des jeux en question, conformément au modèle Jeu, et séparer les différents jeux par des slashs (/). Par exemple : « jeux=LPA » ou « jeux=EB/DEPS ».
- masquer (facultatif) : indiquer oui pour que le tableau soit masqué par défaut.
- méthodes : les différentes méthodes d'apprentissage possibles des parents, séparées par des slashs (/). Les valeurs doivent compléter la phrase « Parents possibles l'apprenant par ». Par défaut, les valeurs sont « niveau » et « reproduction ».
- queulorior : indiquer oui si Queulorior est un parent possible.
- Les capacités apprises et les parents possibles. Chaque capacité est disposée sur une nouvelle ligne et on trouve ensuite les parents apprenant naturellement la capacité puis ceux l'apprenant par reproduction. Sur une même ligne, les infos sont séparées par des slashs (/). Quand on liste les parents possibles, les Pokémon sont séparés par des virgules. Il est possible, comme dans l'exemple ci-dessous, de laisser une ligne vide entre chaque capacité pour une meilleure visibilité, mais cela reste tout à fait facultatif. Pour les noms de capacité, il est obligatoire d'écrire dans le code le nom de la capacité lors de la génération et rien d'autre : ne pas essayer en particulier de modifier le lien vers lequel pointe la capacité au risque de perturber la récupération des informations sur celle-ci. On notera que les homonymies sont gérées automatiquement.
- À côté du nom d'une capacité, il est possible d'indiquer
jeu(XXX)
en remplaçant XXX par une abréviation de jeu pour préciser si une capacité est présente uniquement dans un jeu. La liste des abréviations possibles est celle du modèle Abréviation.
- À côté du nom d'une capacité, il est possible d'indiquer
Exemples
{{#invoke:Apprentissage|reproduction|génération=6|type=Dragon| Hâte/Roucool, Roucoups, Roucarnage, Piafabec, Rapasdepic, Canarticho, Doduo, Dodrio, Hypotrempe, Hypocéan, Ptéra, Minidraco, Draco, Dracolosse, Airmure, Hyporoi, Arcko, Massko, Jungko, Nirondelle, Hélédelle, Étourmi, Étourvol, Étouraptor, Arkéapti, Aéroptéryx, Passerouge, Braisillon, Flambusard, Sonistrelle, Bruyverne/Tylton, Altaria, Roucool, Roucoups, Roucarnage, Piafabec, Rapasdepic, Canarticho, Doduo, Dodrio, Hypotrempe, Hypocéan, Ptéra, Minidraco, Draco, Dracolosse, Hoothoot, Noarfang, Airmure, Hyporoi, Arcko, Massko, Jungko, Nirondelle, Hélédelle, Goélise, Bekipan, Étourmi, Étourvol, Étouraptor, Pijako, Arkéapti, Aéroptéryx, Passerouge, Braisillon, Flambusard, Galvaran, Iguolta, Sonistrelle, Bruyverne Permuforce jeu(ROSA)/Natu, Xatu/Tylton, Altaria, Natu, Xatu Frénésie/Doduo, Dodrio, Draby, Drackhaus, Drattak/Tylton, Altaria, Doduo, Dodrio, Nirondelle, Hélédelle, Draby, Drackhaus, Drattak }}
donne :
Capacité | Type | Cat. | Puis. | Préc. | PP | Type Concours | Charme | Blocage | Parents l'apprenant par niveau | Parents l'apprenant par reproduction |
---|---|---|---|---|---|---|---|---|---|---|
Hâte | — | — | 30 | ♥♥♥ | — | |||||
PermuforceROSA | — | — | 10 | ♥ | — | |||||
Frénésie | 20 | 100 % | 20 | ♥ | ♥♥♥ |
{{#invoke:Apprentissage|reproduction|type=Acier|génération=6 |méthodes=[[niveau]] / [[CT]] / [[donneur de capacités]] dans [[ROSA]] / [[reproduction]]| Larcin / / Simularbre, Tutafeh, Tutankafer, Miamiasme, Miasmax / / Trousselin Mur de Fer / Tarinorme, Nodulithe, Géolithe, Gigalithe, Grindur, Noacier, Monorpale, Dimoclès, Exagide / / Racaillou, Gravalanch, Grolem, Tarinor, Tarinorme, Nodulithe, Géolithe, Gigalithe, Crabicoque, Crabaraque, Tutafeh, Tutankafer, Sorbébé, Sorboul, Sorbouboul, Grindur, Noacier, Monorpale, Dimoclès, Exagide, Trousselin / Crabicoque, Crabaraque, Sorbébé, Sorboul, Sorbouboul, Trousselin Passe-Passe / / / / Stalgamin, Oniglali, Momartik, Trousselin Verrouillage / Tarinor, Tarinorme / / / Nodulithe, Géolithe, Gigalithe, Trousselin }}
donne :
Capacité | Type | Cat. | Puis. | Préc. | PP | Type Concours | Charme | Blocage | Parents l'apprenant par niveau | Parents l'apprenant par CT | Parents l'apprenant par donneur de capacités dans ROSA | Parents l'apprenant par reproduction |
---|---|---|---|---|---|---|---|---|---|---|---|---|
Larcin | 60 | 100 % | 10 | ♥ | — | — | — | |||||
Mur de Fer | — | — | 15 | ♥ | — | — | ||||||
Passe-Passe | — | 100 % | 10 | ♥♥ | ♥ | — | — | — | ||||
Verrouillage | — | — | 10 | ♥♥♥ | — | — | — |
{{#invoke:Apprentissage|reproduction|type=Dragon|génération=7|Aucune}}
donne :
Capacité | Type | Cat. | Puis. | Préc. | PP | Parents l'apprenant par niveau | Parents l'apprenant par reproduction |
---|---|---|---|---|---|---|---|
Ce Pokémon n'apprend aucune capacité par reproduction lors de cette génération. |
Fonction « donneur »
Paramètres
- type : le type du Pokémon. Utilisé uniquement pour la coloration du tableau.
- génération en chiffre arabe (1, 2, 3…).
- jeux (facultatif) : ce paramètre n'est actuellement utile que pour les générations 7 et 8, où les données des capacités (puissance, précision etc) ont pu varier selon les jeux. Si un tableau ne concerne que certains jeux de la génération, alors les indiquer avec se paramètre permettra que seules les données utiles soient affichées et allégera donc le tableau. Il faut utiliser les abréviations des jeux en question, conformément au modèle Jeu, et séparer les différents jeux par des slashs (/). Par exemple : « jeux=LPA » ou « jeux=EB/DEPS ».
- masquer (facultatif) : indiquer oui pour que le tableau soit masqué par défaut.
- prix-unité (facultatif) : l'unité utilisée pour la colonne « Prix ». Par défaut, ce sera « PCo ».
- Les capacités apprises et les infos sur le donneur de capacités. Chaque capacité est disposée sur une nouvelle ligne et on trouve ensuite le lieu où se trouve le donneur, le prix et l'unité. Sur une même ligne, les infos sont séparées par des slashs (/). L'unité définie sur une ligne est prioritaire par rapport au paramètre prix-unité. Pour les noms de capacité, il est obligatoire d'écrire dans le code le nom de la capacité lors de la génération et rien d'autre : ne pas essayer en particulier de modifier le lien vers lequel pointe la capacité au risque de perturber la récupération des informations sur celle-ci. On notera que les homonymies sont gérées automatiquement.
Exemples
{{#invoke:Apprentissage|donneur|type=sol|génération=6| Barrage/[[Atoll de Combat]], Cabane 3/8 Telluriforce/[[Atoll de Combat]], Cabane 2/12 Poing-Éclair/[[Atoll de Combat]], Cabane 1/8 Psykoud'Boul/[[Atoll de Combat]], Cabane 2/8 Vent Glace/[[Atoll de Combat]], Cabane 4/12 }}
donne :
Capacité | Type | Catégorie | Puissance | Précision | PP | Type Concours | Charme | Blocage | Lieu | Coût |
---|---|---|---|---|---|---|---|---|---|---|
Barrage | — | — | 5 | ♥♥ | — | Atoll de Combat, Cabane 3 | 8 PCo | |||
Telluriforce | 90 | 100 % | 10 | ♥♥♥♥ | — | Atoll de Combat, Cabane 2 | 12 PCo | |||
Poing-Éclair | 75 | 100 % | 15 | ♥♥♥♥ | — | Atoll de Combat, Cabane 1 | 8 PCo | |||
Psykoud'Boul | 80 | 90 % | 15 | ♥♥♥♥ | — | Atoll de Combat, Cabane 2 | 8 PCo | |||
Vent Glace | 55 | 95 % | 15 | ♥♥♥♥ | — | Atoll de Combat, Cabane 4 | 12 PCo |
{{#invoke:Apprentissage|donneur|type=sol|génération=7|Aucune}}
donne :
Capacité | Type | Catégorie | Puissance | Précision | PP | Lieu | Coût |
---|---|---|---|---|---|---|---|
Ce Pokémon n'apprend aucune capacité par donneur lors de cette génération. |
Fonction « preevolution »
Paramètres
- type : le type du Pokémon. Utilisé uniquement pour la coloration du tableau.
- génération en chiffre arabe (1, 2, 3…).
- jeux (facultatif) : ce paramètre n'est actuellement utile que pour les générations 7 et 8, où les données des capacités (puissance, précision etc) ont pu varier selon les jeux. Si un tableau ne concerne que certains jeux de la génération, alors les indiquer avec se paramètre permettra que seules les données utiles soient affichées et allégera donc le tableau. Il faut utiliser les abréviations des jeux en question, conformément au modèle Jeu, et séparer les différents jeux par des slashs (/). Par exemple : « jeux=LPA » ou « jeux=EB/DEPS ».
- masquer (facultatif) : indiquer oui pour que le tableau soit masqué par défaut.
- Les capacités apprises et la pré-évolution qui l'apprend. Chaque capacité est disposée sur une nouvelle ligne et on trouve ensuite le nom de la pré-évolution. Sur une même ligne, les infos sont séparées par des slashs (/). Pour les noms de capacité, il est obligatoire d'écrire dans le code le nom de la capacité lors de la génération et rien d'autre : ne pas essayer en particulier de modifier le lien vers lequel pointe la capacité au risque de perturber la récupération des informations sur celle-ci. On notera que les homonymies sont gérées automatiquement.
Exemples
{{#invoke:Apprentissage|preevolution|type=Insecte|génération=7| Dard-Venin/Aspicot Sécrétion/Aspicot Piqûre/Aspicot Armure/Coconfort }}
donne :
Capacité | Type | Catégorie | Puissance | Précision | PP | Pré-évolution |
---|---|---|---|---|---|---|
Dard-Venin | 15 | 100 % | 35 | 0013 Aspicot | ||
Sécrétion | — | 95 % | 40 | 0013 Aspicot | ||
Piqûre | 60 | 100 % | 20 | 0013 Aspicot | ||
Armure | — | — | 30 | 0014 Coconfort |
{{#invoke:Apprentissage|preevolution|type=Insecte|génération=7|Aucune}}
donne :
Capacité | Type | Catégorie | Puissance | Précision | PP | Pré-évolution |
---|---|---|---|---|---|---|
Ce Pokémon n'apprend aucune capacité par pré-évolution lors de cette génération. |
Fonction « evenement »
Paramètres
- type : le type du Pokémon. Utilisé uniquement pour la coloration du tableau.
- génération en chiffre arabe (1, 2, 3…).
- jeux (facultatif) : ce paramètre n'est actuellement utile que pour les générations 7 et 8, où les données des capacités (puissance, précision etc) ont pu varier selon les jeux. Si un tableau ne concerne que certains jeux de la génération, alors les indiquer avec se paramètre permettra que seules les données utiles soient affichées et allégera donc le tableau. Il faut utiliser les abréviations des jeux en question, conformément au modèle Jeu, et séparer les différents jeux par des slashs (/). Par exemple : « jeux=LPA » ou « jeux=EB/DEPS ».
- masquer (facultatif) : indiquer oui pour que le tableau soit masqué par défaut.
- Les capacités apprises et l'événement. Chaque capacité est disposée sur une nouvelle ligne et on trouve ensuite le nom de l'événement. Sur une même ligne, les infos sont séparées par des slashs (/). Pour les noms de capacité, il est obligatoire d'écrire dans le code le nom de la capacité lors de la génération et rien d'autre : ne pas essayer en particulier de modifier le lien vers lequel pointe la capacité au risque de perturber la récupération des informations sur celle-ci. On notera que les homonymies sont gérées automatiquement.
Exemples
{{#invoke:Apprentissage|evenement|type=Psy|génération=7| Coup-Victoire/Centre Pokémon de Tohoku (Japon, juin-septembre 2017) Célébration/Centre Pokémon de Tohoku (Japon, juin-septembre 2017) }}
donne :
Capacité | Type | Catégorie | Puissance | Précision | PP | Événement |
---|---|---|---|---|---|---|
Coup Victoire | 180 | 95 % | 5 | Centre Pokémon de Tohoku (Japon, juin-septembre 2017) | ||
Célébration | — | — | 40 | Centre Pokémon de Tohoku (Japon, juin-septembre 2017) |
{{#invoke:Apprentissage|evenement|type=Psy|génération=7|Aucune}}
donne :
Capacité | Type | Catégorie | Puissance | Précision | PP | Événement |
---|---|---|---|---|---|---|
Ce Pokémon n'apprend aucune capacité par événement lors de cette génération. |
local p = {} local ressources = { ["donneesCapacite"] = require("Module:Ressources/donneesCapacite") } local generation_actuelle = 9 local generation_to_jeux = { {"RB", "J"}, -- gen 1 {"OA", "C"}, -- gen 2 {"RS", "E", "RFVF"}, -- gen 3 {"DP", "Pt", "HGSS"}, -- gen 4 {"NB", "N2B2"}, -- gen 5 {"XY", "ROSA"}, -- gen 6 {"SL", "USUL", "LGPE"}, -- gen 7 {{"EB", "DEPS"}, "LPA"}, -- gen 8, EB et DEPS sont mis dans la même colonne {"EV"} -- gen 9 } local function non_vide( valeur ) if valeur ~= nil and mw.text.trim( valeur ) ~= "" and mw.text.trim(valeur ) ~= "-" and mw.text.trim( valeur ) ~= "—" then return true else return false end end function p.niveau( frame ) local infos = frame.args[1] if infos == nil then return "Aucune information donnée" else infos = mw.text.trim( infos ) end infos = mw.text.split(infos, "\n") local generation = frame.args['génération'] if generation == nil then generation = generation_actuelle else generation = tonumber( generation ) end local poke_type = frame.args['type'] if poke_type == nil then poke_type = "inconnu" else poke_type = mw.text.trim( string.lower( string.gsub( poke_type, "É", "é" ) ) ) end local generation_to_colspans = { {6, 2}, -- gen 1 {6, 2}, -- gen 2 {9, 3}, -- gen 3 {8, 3}, -- gen 4 {6, 2}, -- gen 5 {9, 2}, -- gen 6 {6, 3}, -- gen 7 {6, 2}, -- gen 8 {6, 1} -- gen 9 } local colspans = { generation_to_colspans[generation][1], generation_to_colspans[generation][2] } -- Détection automatique des colonnes pour lesquelles aucune donnée n'est renseignée. Ces colonnes n'apparaîtront pas. local presence = {} for j = 1, colspans[2] do presence[j] = false end local i = 1 local infos_capacite = {} while infos[i] do infos_capacite = mw.text.split(infos[i], "/") for j = 1, colspans[2] do if non_vide( infos_capacite[j+1] ) then presence[j] = true end end i = i + 1 end for j = 1, generation_to_colspans[generation][2] do if presence[j] == false then colspans[2] = colspans[2] - 1 end end colspans[3] = colspans[1] + colspans[2] local jeux = {} for j = 1, generation_to_colspans[generation][2] do if presence[j] then table.insert(jeux, generation_to_jeux[generation][j]) end end local resultat = {} table.insert(resultat, '<table class="tableaustandard ' .. poke_type .. ' sortable centre tableau-apprentissage apprentissage-usuel apprentissage-usuel-génération' .. generation ..' apprentissage-niveau-' .. colspans[2] .. 'niveaux"><thead><tr><th class="cellule-entête" colspan="' .. colspans[1] .. '">[[Capacité]]</th>') if colspans[2] > 0 then table.insert(resultat, '<th class="cellule-entête" colspan="' .. colspans[2] .. '">[[Niveau]]</th>') end table.insert(resultat, '</tr><tr><th class="colonne-1">[[Capacité|Nom]]</th><th class="colonne-2">[[Type]]</th><th class="colonne-3">[[Catégorie de capacité|Catégorie]]</th><th class="colonne-4">[[Puissance (statistique)|Puissance]]</th><th class="colonne-5">[[Précision]]</th><th class="colonne-6">[[PP]]</th>') if generation == 3 or generation == 4 or generation == 6 then table.insert(resultat, '<th class="colonne-7">[[Concours Pokémon|Type Concours]]</th><th class="colonne-8">[[Charme (concours)|Charme]]</th>') if generation == 3 or generation == 6 then table.insert(resultat, '<th class="colonne-8">[[Blocage (concours)|Blocage]]</th>') end end for _, jeux_colonne in ipairs(jeux) do if type(jeux_colonne) == "string" then table.insert(resultat, '<th class="colonne-niveau">' .. frame:expandTemplate{title="Abréviation", args={jeux_colonne, ""}} .. '</th>') else local abreviations = {} for _, jeu_colonne in ipairs(jeux_colonne) do table.insert(abreviations, frame:expandTemplate{title="Abréviation", args={jeu_colonne, ""}}) end table.insert(resultat, '<th class="colonne-niveau">' .. table.concat(abreviations, ", ") .. '</th>') end end table.insert(resultat, '</tr>') if #infos == 1 and infos[1] == "Aucune" then table.insert(resultat, '</thead><tbody><tr><td class="colonne-toutes" colspan="' .. colspans[3] .. '">Ce Pokémon n\'apprend aucune capacité par montée en niveau lors de cette génération.</td></tr>') else local bouton if frame.args['masquer'] == "oui" or frame.args['masquer'] == "1" then bouton = {"afficher", "[-] Masquer", "[+] Afficher"} else bouton = {"masquer", "[+] Afficher", "[-] Masquer"} end table.insert(resultat, '<tr><td class="colonne-toutes" colspan="' .. colspans[3] .. '"><button type="button" name="ListeCapacites' .. generation .. '" value="' .. bouton[1] .. '" style="font-size:80%" title="' .. bouton[2] .. '">' .. bouton[3] .. '</button></td></tr></thead><tbody class="ListeCapacites' .. generation .. '">') local i = 1 local infos_capacite = {} local donnees = {} while infos[i] do infos_capacite = mw.text.split(infos[i], "/") if infos_capacite[1] ~= nil and infos_capacite[1] ~= "" then local jeux_capacite = {} for j = 1, generation_to_colspans[generation][2] do if non_vide( infos_capacite[j+1] ) then table.insert(jeux_capacite, generation_to_jeux[generation][j]) end end donnees = ressources.donneesCapacite( generation, mw.text.trim( infos_capacite[1] ), jeux_capacite ) for j = 1, colspans[1] do table.insert(resultat, '<td class="colonne-' .. j .. '">' .. donnees[j] .. '</td>') end for j = 2, generation_to_colspans[generation][2] + 1 do if presence[j-1] then if infos_capacite[j] ~= nil then infos_capacite[j] = mw.text.trim( infos_capacite[j] ) infos_capacite_split = mw.text.split(infos_capacite[j], ", ") local k = 1 local infos_capacite_tmp_string = "" local valeur = nil while infos_capacite_split[k] do local maitrise = false if mw.ustring.find(infos_capacite_split[k], "M") == 1 then maitrise = true infos_capacite_split[k] = mw.ustring.sub(infos_capacite_split[k], 2) end if infos_capacite_split[k] == "—" or infos_capacite_split[k] == "-" or infos_capacite_split[k] == "" then infos_capacite_split[k] = "—" if valeur == nil then valeur = 101 end elseif string.find( infos_capacite_split[k], "Départ" ) then if valeur == nil then valeur = 0 end elseif tonumber(infos_capacite_split[k]) ~= nil then if valeur == nil then valeur = infos_capacite_split[k] end infos_capacite_split[k] = "N." .. infos_capacite_split[k] else if valeur == nil then valeur = 0 end end if k ~= 1 then infos_capacite_tmp_string = infos_capacite_tmp_string .. "<br/>" end if maitrise then infos_capacite_tmp_string = infos_capacite_tmp_string .. "[[Fichier:Icône Maîtrise LPA.png|x20px|Maîtrise|link=Maîtrise]]" end infos_capacite_tmp_string = infos_capacite_tmp_string .. infos_capacite_split[k] k = k + 1 end table.insert(resultat, '<td class="colonne-niveau" data-sort-value="' .. valeur .. '"><span style="white-space:nowrap">' .. infos_capacite_tmp_string .. '</span>') else table.insert(resultat, '<td class="colonne-niveau" data-sort-value="101">—') end table.insert(resultat, '</td>') end end table.insert(resultat, '</tr>') end i = i + 1 end end table.insert(resultat, '</tbody></table>') return table.concat(resultat, "") end local function capsuleEtDisque( disque, frame ) local infos = frame.args[1] if infos == nil then return "Aucune information donnée" else infos = mw.text.trim( infos ) end local generation = frame.args['génération'] if generation == nil then generation = generation_actuelle else generation = tonumber( generation ) end local type = frame.args['type'] if type == nil then type = "inconnu" else type = mw.text.trim( string.lower( string.gsub( type, "É", "é" ) ) ) end local jeux = frame.args['jeux'] if jeux == nil then jeux = generation_to_jeux[generation] if generation == 8 then jeux[2] = nil end -- Pas de capsule dans LPA else jeux = mw.text.split(jeux, "/") for i,jeu in ipairs(jeux) do jeux[i] = mw.text.trim( jeu ) end end local colspan = 7 if generation == 3 or generation == 6 then colspan = 10 elseif generation == 4 then colspan = 9 end local resultat = {} table.insert(resultat, '<table class="tableaustandard ' .. type .. ' centre sortable tableau-apprentissage apprentissage-capsule apprentissage-capsule-génération' .. generation ..'"><thead><tr><th class="colonne-1">Numéro</th><th class="colonne-2">Capacité</th><th class="colonne-3">Type</th><th class="colonne-4">Catégorie</th><th class="colonne-5">Puissance</th><th class="colonne-6">Précision</th><th class="colonne-7">PP</th>') if generation == 3 or generation == 6 then table.insert(resultat, '<th class="colonne-8">[[Concours Pokémon|Type Concours]]</th><th class="colonne-8">[[Charme (concours)|Charme]]</th><th class="colonne-10">[[Blocage (concours)|Blocage]]</th>') elseif generation == 4 then table.insert(resultat, '<th class="colonne-8">[[Concours Pokémon|Type Concours]]</th><th class="colonne-9">[[Charme (concours)|Charme]]</th>') end table.insert(resultat, '</tr>') if infos == "Aucune" then table.insert(resultat, '</thead><tbody><tr><td class="colonne-toutes" colspan="' .. colspan .. '">Ce Pokémon n\'apprend aucune capacité par ') if disque then table.insert(resultat, 'disque') else table.insert(resultat, 'capsule') end table.insert(resultat, ' lors de cette génération.</td></tr>') else local bouton if frame.args['masquer'] == "oui" or frame.args['masquer'] == "1" then bouton = {"afficher", "[-] Masquer", "[+] Afficher"} else bouton = {"masquer", "[+] Afficher", "[-] Masquer"} end table.insert(resultat, '<tr><td class="colonne-toutes" colspan="' .. colspan .. '"><button type="button" name="Liste') if disque then table.insert(resultat, 'Disque') else table.insert(resultat, 'Capsule') end table.insert(resultat, 's' .. generation .. '" value="' .. bouton[1] .. '" style="font-size:80%" title="' .. bouton[2] .. '">' .. bouton[3] .. '</button></td></tr></thead><tbody class="Liste') if disque then table.insert(resultat, 'Disque') else table.insert(resultat, 'Capsule') end table.insert(resultat, 's' .. generation .. '">') infos = mw.text.split(infos, "\n") local i = 1 local infos_capacite = {} local donnees = {} local capsule local cs = { ["Coupe"] = {true, true, true, true, true, true}, ["Vol"] = {true, true, true, true, true, true}, ["Surf"] = {true, true, true, true, true, true}, ["Force"] = {true, true, true, true, true, true}, ["Flash"] = {true, true, true, false, false, false}, ["Siphon"] = {false, true, false, "depend", false, false}, ["Cascade"] = {false, true, true, true, true, true}, ["Éclate-Roc"] = {false, false, true, true, false, "depend"}, ["Plongée"] = {false, false, "depend", false, true, "depend"}, ["Anti-Brume"] = {false, false, false, "depend", false, false}, ["Escalade"] = {false, false, false, true, false, false} } cs["Plongée"]["rse"] = true cs["Plongée"]["rfvf"] = false cs["Siphon"]["dpp"] = false cs["Siphon"]["hgss"] = true cs["Anti-Brume"]["dpp"] = true cs["Anti-Brume"]["hgss"] = false cs["Éclate-Roc"]["xy"] = false cs["Éclate-Roc"]["rosa"] = true cs["Plongée"]["xy"] = false cs["Plongée"]["rosa"] = true while infos[i] do infos_capacite = mw.text.split(infos[i], "/") if infos_capacite[1] ~= nil and infos_capacite[1] ~= "" and infos_capacite[2] ~= nil and infos_capacite[2] ~= "" then if disque then capsule = 'DT' else capsule = 'CT' if cs[mw.text.trim( infos_capacite[2] )] then if cs[mw.text.trim( infos_capacite[2] )][generation] == true then capsule = 'CS' elseif cs[mw.text.trim( infos_capacite[2] )][generation] == "depend" then if infos_capacite[3] then if cs[mw.text.trim( infos_capacite[2] )][mw.text.trim( string.lower( infos_capacite[3] ) )] == true then capsule = 'CS' end end end end end donnees = ressources.donneesCapacite( generation, mw.text.trim( infos_capacite[2] ), jeux ) table.insert(resultat, '<tr><td class="colonne-1">[[' .. capsule .. mw.text.trim( infos_capacite[1] ) .. ']]</td><td class="colonne-2">' .. donnees[1]) if infos_capacite[3] then table.insert(resultat, '<sup>' .. frame:expandTemplate{ title = 'Abréviation', args = { infos_capacite[3] } } .. '</sup>' ) end table.insert(resultat, '</td>') for j = 2, colspan - 1 do table.insert(resultat, '<td class="colonne-' .. j+1 .. '">' .. donnees[j] .. '</td>') end table.insert(resultat, '</tr>') end i = i + 1 end end table.insert(resultat, '</tbody></table>') return table.concat(resultat, "") end function p.capsule( frame ) return capsuleEtDisque( false, frame ) end function p.disque( frame ) return capsuleEtDisque( true, frame ) end function p.reproduction( frame ) ressources["infosPokemon"] = require("Module:Ressources/infosPokemon") local infos = frame.args[1] if infos == nil then return "Aucune information donnée" else infos = mw.text.trim( infos ) end local generation = frame.args['génération'] if generation == nil then generation = generation_actuelle else generation = tonumber( generation ) end local type = frame.args['type'] if type == nil then type = "inconnu" else type = mw.text.trim( string.lower( string.gsub( type, "É", "é" ) ) ) end local jeux = frame.args['jeux'] if jeux == nil then jeux = generation_to_jeux[generation] if generation == 8 then jeux[2] = nil end -- Pas de reproduction dans LPA else jeux = mw.text.split(jeux, "/") for i,jeu in ipairs(jeux) do jeux[i] = mw.text.trim( jeu ) end end local methodes = frame.args['méthodes'] if methodes == nil then methodes = {"[[niveau]]", "[[reproduction]]"} else methodes = mw.text.split(methodes, "/") end local colspan = 6 + #methodes if generation == 3 or generation == 6 then colspan = 9 + #methodes elseif generation == 4 then colspan = 8 + #methodes end local resultat = {} table.insert(resultat, '<table class="tableaustandard centre ' .. type .. ' sortable tableau-apprentissage apprentissage-usuel apprentissage-usuel-génération' .. generation ..'" style="max-width: 100%;"><thead><tr><th class="colonne-1">[[Capacité]]</th><th class="colonne-2">[[Type]]</th><th class="colonne-3">[[Catégorie de capacité|Cat.]]</th><th class="colonne-4">[[Puissance (statistique)|Puis.]]</th><th class="colonne-5">[[Précision|Préc.]]</th><th class="colonne-6">[[PP]]</th>') if generation == 3 or generation == 6 then table.insert(resultat, '<th class="colonne-7">[[Concours Pokémon|Type Concours]]</th><th class="colonne-8">[[Charme (concours)|Charme]]</th><th class="colonne-9">[[Blocage (concours)|Blocage]]</th>') elseif generation == 4 then table.insert(resultat, '<th class="colonne-7">[[Concours Pokémon|Type Concours]]</th><th class="colonne-8">[[Charme (concours)|Charme]]</th>') end local z = 1 while methodes[z] do table.insert(resultat, '<th class="colonne-toutes">Parents l\'apprenant par ' .. methodes[z] .. '</th>') z = z + 1 end table.insert(resultat, '</tr>') if infos == "Aucune" then table.insert(resultat, '</thead><tbody><tr><td class="colonne-toutes" colspan="' .. colspan .. '">Ce Pokémon n\'apprend aucune capacité par reproduction lors de cette génération.</td></tr>') else local bouton if frame.args['masquer'] == "oui" or frame.args['masquer'] == "1" then bouton = {"afficher", "[-] Masquer", "[+] Afficher"} else bouton = {"masquer", "[+] Afficher", "[-] Masquer"} end table.insert(resultat, '<tr><td class="colonne-toutes" colspan="' .. colspan .. '"><button type="button" name="ListeReproduction' .. generation .. '" value="' .. bouton[1] .. '" style="font-size:80%" title="' .. bouton[2] .. '">' .. bouton[3] .. '</button></td></tr></thead><tbody class="ListeReproduction' .. generation .. '">') infos = mw.text.split(infos, "\n") local i = 1 local j = 1 local y = {} local infos_capacite = {} local poke_niveau = {} local poke_repro = {} local donnees = {} while infos[i] do infos_capacite = mw.text.split(infos[i], "/") if mw.text.trim( infos_capacite[1] ) ~= "" then if ( string.match(infos_capacite[1], "jeu%([^)]*%)") ) then jeu = mw.getCurrentFrame():expandTemplate{ title = 'Sup', args = { string.sub(string.match(infos_capacite[1], "jeu%([^)]*%)"), 5, -2) } } infos_capacite[1] = string.gsub( infos_capacite[1], "jeu%([^)]*%)", "" ) else jeu = "" end if ( string.match(infos_capacite[1], "sup%([^)]*%)") ) then jeu = mw.getCurrentFrame():expandTemplate{ title = 'Sup', args = { string.sub(string.match(infos_capacite[1], "sup%([^)]*%)"), 5, -2) } } infos_capacite[1] = string.gsub( infos_capacite[1], "sup%([^)]*%)", "" ) end infos_capacite[1] = mw.text.trim( infos_capacite[1] ) donnees = ressources.donneesCapacite( generation, mw.text.trim( infos_capacite[1] ), jeux ) table.insert(resultat, '<tr><td class="colonne-1">' .. donnees[1] .. jeu .. '</td>') for j = 2, colspan - #methodes do table.insert(resultat, '<td class="colonne-' .. j .. '">' .. donnees[j] .. '</td>') end table.insert(resultat, '<td class="colonne-toutes">') while methodes[j] do y[j] = 1 if infos_capacite[j + 1] ~= nil and mw.text.trim( infos_capacite[j + 1] ) ~= "" then poke_niveau = mw.text.split(infos_capacite[j + 1], ",") while poke_niveau[y[j]] do table.insert(resultat, ressources.infosPokemon( poke_niveau[y[j]], "miniature" ) ) y[j] = y[j] + 1 end else table.insert(resultat, "—") end if j == #methodes then table.insert(resultat, '</td></tr>') else table.insert(resultat, '</td><td class="colonne-toutes">') end j = j + 1 end end i = i + 1 j = 1 y = {} end end if frame.args['queulorior'] == "oui" then table.insert(resultat, '<tr><td class="colonne-toutes" colspan="' .. colspan .. '>Grâce à sa capacité [[Gribouille]], [[Queulorior]] est capable d\'apprendre toutes ces capacités, qu\'il peut également transmettre par reproduction.</td></tr>') end table.insert(resultat, '</tbody></table>') return table.concat(resultat, "") end function p.donneur( frame ) local infos = frame.args[1] if infos == nil then return "Aucune information donnée" else infos = mw.text.trim( infos ) end local generation = frame.args['génération'] if generation == nil then generation = generation_actuelle else generation = tonumber( generation ) end local type = frame.args['type'] if type == nil then type = "inconnu" else type = mw.text.trim( string.lower( string.gsub( type, "É", "é" ) ) ) end local jeux = frame.args['jeux'] if jeux == nil then jeux = generation_to_jeux[generation] else jeux = mw.text.split(jeux, "/") for i,jeu in ipairs(jeux) do jeux[i] = mw.text.trim( jeu ) end end local colspan = 8 if generation == 3 or generation == 6 then colspan = 11 elseif generation == 4 then colspan = 10 end local prix_unite = frame.args['prix-unité'] if prix_unite == nil then prix_unite = "[[Point de Combat|PCo]]" end local resultat = {} table.insert(resultat, '<table class="tableaustandard centre ' .. type .. ' sortable tableau-apprentissage apprentissage-donneur apprentissage-usuel apprentissage-usuel-génération' .. generation ..'" style="max-width: 100%;"><thead><tr><th class="colonne-1">[[Capacité]]</th><th class="colonne-2">[[Type]]</th><th class="colonne-3">[[Catégorie de capacité|Catégorie]]</th><th class="colonne-4">[[Puissance (statistique)|Puissance]]</th><th class="colonne-5">[[Précision|Précision]]</th><th class="colonne-6">[[PP]]</th>') if generation == 3 or generation == 6 then table.insert(resultat, '<th class="colonne-7">[[Concours Pokémon|Type Concours]]</th><th class="colonne-8">[[Charme (concours)|Charme]]</th><th class="colonne-9">[[Blocage (concours)|Blocage]]</th>') elseif generation == 4 then table.insert(resultat, '<th class="colonne-7">[[Concours Pokémon|Type Concours]]</th><th class="colonne-8">[[Charme (concours)|Charme]]</th>') end table.insert(resultat, '<th class="colonne-lieu">Lieu</th><th class="colonne-coût">Coût</th></tr>') if infos == "Aucune" then table.insert(resultat, '</thead><tbody><tr><td class="colonne-toutes" colspan="' .. colspan .. '">Ce Pokémon n\'apprend aucune capacité par donneur lors de cette génération.</td></tr>') else local bouton if frame.args['masquer'] == "oui" or frame.args['masquer'] == "1" then bouton = {"afficher", "[-] Masquer", "[+] Afficher"} else bouton = {"masquer", "[+] Afficher", "[-] Masquer"} end table.insert(resultat, '<tr><td class="colonne-toutes" colspan="' .. colspan .. '"><button type="button" name="ListeDonneur' .. generation .. '" value="' .. bouton[1] .. '" style="font-size:80%" title="' .. bouton[2] .. '">' .. bouton[3] .. '</button></td></tr></thead><tbody class="ListeDonneur' .. generation .. '">') infos = mw.text.split(infos, "\n") i = 1 local donnees = {} while infos[i] do infos_capacite = mw.text.split(infos[i], "/") if infos_capacite[1] ~= nil and infos_capacite[1] ~= "" then donnees = ressources.donneesCapacite( generation, mw.text.trim( infos_capacite[1] ), jeux ) if infos_capacite[2] == nil then infos_capacite[2] = "" end if infos_capacite[3] == nil then infos_capacite[3] = "—" infos_capacite[4] = "" else if infos_capacite[4] == nil then infos_capacite[4] = prix_unite end end table.insert(resultat, '<tr>') for j = 1, colspan - 2 do table.insert(resultat, '<td class="colonne-' .. j .. '">' .. donnees[j] .. '</td>') end table.insert(resultat, '<td class="colonne-lieu">' .. infos_capacite[2] .. '</td><td class="colonne-coût">' .. infos_capacite[3] .. " " .. infos_capacite[4] .. '</td></tr>') end i = i + 1 end end table.insert(resultat, '</tbody></table>') return table.concat(resultat, "") end function p.preevolution( frame ) ressources["infosPokemon"] = require("Module:Ressources/infosPokemon") local infos = frame.args[1] if infos == nil then return "Aucune information donnée" else infos = mw.text.trim( infos ) end local generation = frame.args['génération'] if generation == nil then generation = generation_actuelle else generation = tonumber( generation ) end local type = frame.args['type'] if type == nil then type = "inconnu" else type = mw.text.trim( string.lower( string.gsub( type, "É", "é" ) ) ) end local jeux = frame.args['jeux'] if jeux == nil then jeux = generation_to_jeux[generation] else jeux = mw.text.split(jeux, "/") for i,jeu in ipairs(jeux) do jeux[i] = mw.text.trim( jeu ) end end local colspan = 7 if generation == 3 or generation == 6 then colspan = 10 elseif generation == 4 then colspan = 9 end local resultat = {} table.insert(resultat, '<table class="tableaustandard centre ' .. type .. ' sortable tableau-apprentissage apprentissage-usuel apprentissage-usuel-génération' .. generation ..'" style="max-width: 100%;"><thead><tr><th class="colonne-1">[[Capacité]]</th><th class="colonne-2">[[Type]]</th><th class="colonne-3">[[Catégorie de capacité|Catégorie]]</th><th class="colonne-4">[[Puissance (statistique)|Puissance]]</th><th class="colonne-5">[[Précision|Précision]]</th><th class="colonne-6">[[PP]]</th>') if generation == 3 or generation == 6 then table.insert(resultat, '<th class="colonne-7">[[Concours Pokémon|Type Concours]]</th><th class="colonne-8">[[Charme (concours)|Charme]]</th><th class="colonne-9">[[Blocage (concours)|Blocage]]</th>') elseif generation == 4 then table.insert(resultat, '<th class="colonne-7">[[Concours Pokémon|Type Concours]]</th><th class="colonne-8">[[Charme (concours)|Charme]]</th>') end table.insert(resultat, '<th class="colonne-toutes">Pré-évolution</th></tr>') if infos == "Aucune" then table.insert(resultat, '</thead><tbody><tr><td class="colonne-toutes" colspan="' .. colspan .. '">Ce Pokémon n\'apprend aucune capacité par pré-évolution lors de cette génération.</td></tr>') else local bouton if frame.args['masquer'] == "oui" or frame.args['masquer'] == "1" then bouton = {"afficher", "[-] Masquer", "[+] Afficher"} else bouton = {"masquer", "[+] Afficher", "[-] Masquer"} end table.insert(resultat, '<tr><td class="colonne-toutes" colspan="' .. colspan .. '"><button type="button" name="ListePreevolution' .. generation .. '" value="' .. bouton[1] .. '" style="font-size:80%" title="' .. bouton[2] .. '">' .. bouton[3] .. '</button></td></tr></thead><tbody class="ListePreevolution' .. generation .. '">') infos = mw.text.split(infos, "\n") i = 1 local donnees = {} while infos[i] do infos_capacite = mw.text.split(infos[i], "/") if infos_capacite[1] ~= nil and infos_capacite[1] ~= "" then donnees = ressources.donneesCapacite( generation, mw.text.trim( infos_capacite[1] ), jeux ) if infos_capacite[2] == nil then infos_capacite[2] = "Inconnue" end table.insert(resultat, '<tr>') for j = 1, colspan - 1 do table.insert(resultat, '<td class="colonne-' .. j .. '">' .. donnees[j] .. '</td>') end table.insert(resultat, '<td class="colonne-toutes" style="text-align:left">' .. ressources.infosPokemon( infos_capacite[2] ) .. '</td></tr>') end i = i + 1 end end table.insert(resultat, '</tbody></table>') return table.concat(resultat, "") end function p.evenement( frame ) local infos = frame.args[1] if infos == nil then return "Aucune information donnée" else infos = mw.text.trim( infos ) end local generation = frame.args['génération'] if generation == nil then generation = generation_actuelle else generation = tonumber( generation ) end local type = frame.args['type'] if type == nil then type = "inconnu" else type = mw.text.trim( string.lower( string.gsub( type, "É", "é" ) ) ) end local jeux = frame.args['jeux'] if jeux == nil then jeux = generation_to_jeux[generation] else jeux = mw.text.split(jeux, "/") for i,jeu in ipairs(jeux) do jeux[i] = mw.text.trim( jeu ) end end local colspan = 7 if generation == 3 or generation == 6 then colspan = 10 elseif generation == 4 then colspan = 9 end local resultat = {} table.insert(resultat, '<table class="tableaustandard centre ' .. type .. ' sortable tableau-apprentissage apprentissage-usuel apprentissage-usuel-génération' .. generation ..'" style="max-width: 100%;"><thead><tr><th class="colonne-1">[[Capacité]]</th><th class="colonne-2">[[Type]]</th><th class="colonne-3">[[Catégorie de capacité|Catégorie]]</th><th class="colonne-4">[[Puissance (statistique)|Puissance]]</th><th class="colonne-5">[[Précision|Précision]]</th><th class="colonne-6">[[PP]]</th>') if generation == 3 or generation == 6 then table.insert(resultat, '<th class="colonne-7">[[Concours Pokémon|Type Concours]]</th><th class="colonne-8">[[Charme (concours)|Charme]]</th><th class="colonne-9">[[Blocage (concours)|Blocage]]</th>') elseif generation == 4 then table.insert(resultat, '<th class="colonne-7">[[Concours Pokémon|Type Concours]]</th><th class="colonne-8">[[Charme (concours)|Charme]]</th>') end table.insert(resultat, '<th class="colonne-toutes">Événement</th></tr>') if infos == "Aucune" then table.insert(resultat, '</thead><tbody><tr><td class="colonne-toutes" colspan="' .. colspan .. '">Ce Pokémon n\'apprend aucune capacité par événement lors de cette génération.</td></tr>') else local bouton if frame.args['masquer'] == "oui" or frame.args['masquer'] == "1" then bouton = {"afficher", "[-] Masquer", "[+] Afficher"} else bouton = {"masquer", "[+] Afficher", "[-] Masquer"} end table.insert(resultat, '<tr><td class="colonne-toutes" colspan="' .. colspan .. '"><button type="button" name="ListeEvenement' .. generation .. '" value="' .. bouton[1] .. '" style="font-size:80%" title="' .. bouton[2] .. '">' .. bouton[3] .. '</button></td></tr></thead><tbody class="ListeEvenement' .. generation .. '">') infos = mw.text.split(infos, "\n") i = 1 local donnees = {} while infos[i] do infos_capacite = mw.text.split(infos[i], "/") if infos_capacite[1] ~= nil and infos_capacite[1] ~= "" then donnees = ressources.donneesCapacite( generation, mw.text.trim( infos_capacite[1] ), jeux ) if infos_capacite[2] == nil then infos_capacite[2] = "Inconnu" end table.insert(resultat, '<tr>') for j = 1, colspan - 1 do table.insert(resultat, '<td class="colonne-' .. j .. '">' .. donnees[j] .. '</td>') end table.insert(resultat, '<td class="colonne-toutes">' .. infos_capacite[2] .. '</td></tr>') end i = i + 1 end end table.insert(resultat, '</tbody></table>') return table.concat(resultat, "") end return p