Module:Capsule

De Poképédia
Aller à la navigation Aller à la recherche
La version imprimable n’est plus prise en charge et peut comporter des erreurs de génération. Veuillez mettre à jour les signets de votre navigateur et utiliser à la place la fonction d’impression par défaut de celui-ci.

Fonction « tableau »

Paramètres

Légende des icônes
Certains paramètres sont accompagnés d'une ou plusieurs icône indiquant leur(s) caractéristique(s) :
 : Ce paramètre est facultatif, et n'a donc pas besoin d'être systématiquement défini.
 : Ce paramètre classe automatiquement l'article dans une catégorie.
 : Ce paramètre influe sur les données sémantiques présentes en pied de page.
  • génération : numéro de la génération en chiffres arabes (1, 2, 3…)
  • jeu  : si la capacité présente dans une Capsule varie dans les jeux d'une même génération, il faut utiliser plusieurs fois le module. Dans ce cas, on utilise ce paramètre pour préciser à quel jeu de la génération le tableau se rapporte.
  • capacité : nom de la capacité.
  • jeux : liste des abréviations des jeux dans lesquels la capsule est présente tels que définies dans le Modèle:Jeu. Chaque jeu est séparé par un « / ».
    • abréviation_du_jeu-emplacement  : emplacement de la capsule. À répéter pour chaque jeu.
    • abréviation_du_jeu-achat  : prix d'achat de la capsule. À répéter pour chaque jeu.
    • abréviation_du_jeu-achat-unité  : unité du prix d'achat de la capsule, par exemple « jetons ». Par défaut, le module considère qu'il s'agit de Pokédollars (Poké Dollar). À répéter pour chaque jeu.
    • abréviation_du_jeu-vente  : prix de vente de la capsule. À répéter pour chaque jeu.
  • imagenuméro  : nom de l'image représentant la localisation de la capsule. La première image a « 1 » comme numéro, puis la suivante 2, puis 3…
  • imagenuméro-description  : decription de l'image représentant la localisation de la capsule. La première image a « 1 » comme numéro, puis la suivante 2, puis 3…
  • pokémon : liste des Pokémon pouvant apprendre la capsule séparés par des « / ». Incompatible avec le paramètre tous.
  • tous : si tous les Pokémon ou presque pouvant apprendre une capsule peuvent apprendre cette capacité, remplir ce paramètre avec oui. Si ce n'est le cas que pour les Pokémon sexués, indiquer tous=sexués. Incompatible avec le paramètre pokémon.
  • exceptions  : seulement dans les cas où tous=oui ou tous=sexués, il est possible de renseigner ce paramètre pour définir les exceptions, les Pokémon qui ne peuvent pas apprendre la capacité même s'ils peuvent une capsule. Par exemple, si les exceptions sont Tarsal, Kirlia et Méios, il faut taper « exceptions = [[Tarsal]], [[Kirlia]] et [[Méios]] ».

Trois paramètres spécifiques ont été introduits pour mieux gérer la Machine à CT de Pokémon Écarlate et Violet : ev-recette-pl pour indiquer le nombre de Points de Ligue nécessaires à la création de la CT, ev-recette-échantillons pour indiquer les échantillons nécessaires à la création de la CT et ev-recette-condition (facultatif) si un événement du jeu débloque l'apparition de cette recette. Les informations sont disposées sur une ligne à part - voir le dernier exemple pour bien comprendre le fonctionnement prévu de ces paramètres.

Exemples

Données venant de la page CT01

{{#invoke:Capsule|tableau
| génération = 1
| capacité = Ultimapoing
| jeux = rbj
| rbj-emplacement = [[Mont Sélénite]], [[Centre commercial de Céladopole]]
| rbj-achat = 3 000
| rbj-vente = 1 500
| image1 = Cap ecran obtention ct01 sélénite rbj.png
| image1-description = CT01 au Mont Sélénite
| image2 = Cap ecran obtention ct01 céladopole rbj.png
| image2-description = Au Centre Commercial
| pokémon = Salamèche/Reptincel/Dracaufeu/Carapuce/Carabaffe/Tortank/Pikachu/Raichu/Nidoqueen/Nidoking/Mélofée/Mélodelfe/Rondoudou/Grodoudou/Psykokwak/Akwakwak/Férosinge/Colossinge/Têtarte/Tartard/Abra/Kadabra/Alakazam/Machoc/Machopeur/Mackogneur/Racaillou/Gravalanch/Grolem/Flagadoss/Ectoplasma/Soporifik/Hypnomade/Osselait/Ossatueur/Kicklee/Tygnon/Excelangue/Rhinoféros/Leveinard/Kangourex/M. Mime/Lippoutou/Élektek/Magmar/Ronflex/Mewtwo/Mew
}}

donne :

Première génération

CapacitéTypeCatégoriePuissancePrécisionPP
UltimapoingNormalPhysique8085 %20
JeuEmplacementAchatVente
RBJMont Sélénite, Centre commercial de Céladopole3 000 Pokédollar1 500 Pokédollar
Pokémon aptes
0004 Salamèche0005 Reptincel0006 Dracaufeu0007 Carapuce0008 Carabaffe0009 Tortank
0025 Pikachu0026 Raichu0031 Nidoqueen0034 Nidoking0035 Mélofée0036 Mélodelfe
0039 Rondoudou0040 Grodoudou0054 Psykokwak0055 Akwakwak0056 Férosinge0057 Colossinge
0061 Têtarte0062 Tartard0063 Abra0064 Kadabra0065 Alakazam0066 Machoc
0067 Machopeur0068 Mackogneur0074 Racaillou0075 Gravalanch0076 Grolem0080 Flagadoss
0094 Ectoplasma0096 Soporifik0097 Hypnomade0104 Osselait0105 Ossatueur0106 Kicklee
0107 Tygnon0108 Excelangue0112 Rhinoféros0113 Leveinard0115 Kangourex0122 M. Mime
0124 Lippoutou0125 Élektek0126 Magmar0143 Ronflex0150 Mewtwo0151 Mew




Données venant de la page CT89

{{#invoke:Capsule|tableau
| génération = 4
| capacité = Demi-Tour
| jeux = dpp/hgss/pbr
| dpp-emplacement = [[Joliberges]], [[Casino de Voilaroc]]
| dpp-achat = 6 000
| dpp-achat-unité = jetons
| dpp-vente = 2 500
| hgss-emplacement = Prix pour avoir battu [[Hector]], [[Zone de Combat (Quatrième génération)|Zone de Combat]]
| hgss-achat = 40
| hgss-achat-unité = PCo
| hgss-vente = 1 500
| pbr-emplacement = Boutique
| pokémon = Papilusion/Dardargnan/Roucool/Roucoups/Roucarnage/Rattata/Rattatac/Piafabec/Rapasdepic/Nosferapti/Nosferalto/Aéromite/Miaouss/Persian/Férosinge/Colossinge/Canarticho/Insécateur/Artikodin/Électhor/Sulfura/Mew/Fouinette/Fouinar/Coxy/Coxyclaque/Nostenfer/Natu/Xatu/Granivol/Floravol/Cotovol/Capumain/Yanma/Scorplane/Cizayox/Celebi/Charmillon/Papinox/Nirondelle/Hélédelle/Goélise/Bekipan/Maskadra/Ninjask/Muciole/Lumivole/Vibraninf/Libégon/Jirachi/Ouisticram/Chimpenfeu/Simiabraz/Étourmi/Étourvol/Étouraptor/Papilord/Apireine/Pachirisu/Capidextre/Chaglam/Chaffreux/Pijako/Écayon/Luminéon/Yanmega/Scorvol/Créhelf/Créfollet/Créfadet/Phione/Manaphy
}}

donne :

Quatrième génération

CapacitéTypeCatégoriePuissancePrécisionPPType concoursCharme
Demi-TourInsectePhysique70100 %20Grâce
JeuEmplacementAchatVente
DPPJoliberges, Casino de Voilaroc6 000 jetons2 500 Pokédollar
HGSSPrix pour avoir battu Hector, Zone de Combat40 PCo1 500 Pokédollar
PBRBoutique
Pokémon aptes
0012 Papilusion0015 Dardargnan0016 Roucool0017 Roucoups0018 Roucarnage0019 Rattata
0020 Rattatac0021 Piafabec0022 Rapasdepic0041 Nosferapti0042 Nosferalto0049 Aéromite
0052 Miaouss0053 Persian0056 Férosinge0057 Colossinge0083 Canarticho0123 Insécateur
0144 Artikodin0145 Électhor0146 Sulfura0151 Mew0161 Fouinette0162 Fouinar
0165 Coxy0166 Coxyclaque0169 Nostenfer0177 Natu0178 Xatu0187 Granivol
0188 Floravol0189 Cotovol0190 Capumain0193 Yanma0207 Scorplane0212 Cizayox
0251 Celebi0267 Charmillon0269 Papinox0276 Nirondelle0277 Hélédelle0278 Goélise
0279 Bekipan0284 Maskadra0291 Ninjask0313 Muciole0314 Lumivole0329 Vibraninf
0330 Libégon0385 Jirachi0390 Ouisticram0391 Chimpenfeu0392 Simiabraz0396 Étourmi
0397 Étourvol0398 Étouraptor0414 Papilord0416 Apireine0417 Pachirisu0424 Capidextre
0431 Chaglam0432 Chaffreux0441 Pijako0456 Écayon0457 Luminéon0469 Yanmega
0472 Scorvol0480 Créhelf0481 Créfollet0482 Créfadet0489 Phione0490 Manaphy




Données venant de la page CT94

{{#invoke:Capsule|tableau
| génération = 6
| jeu = Rubis Oméga et Saphir Alpha
| capacité = Force Cachée
| jeux = rosa
| rosa-emplacement = Offerte par [[Millepertuis]] sur la [[Route 111]]
| tous = oui
| exceptions = [[Zarbi]], [[Qulbutoké]], [[Okéoké]], [[Crikzik]], [[Cheniti]], [[Anchwatt]] et [[Pérégrain]]
}}

donne :

Sixième génération - Rubis Oméga et Saphir Alpha

CapacitéTypeCatégoriePuissancePrécisionPPType concoursCharmeBlocage
Force CachéeNormalPhysique70100 %20Intelligence
JeuEmplacementAchatVente
ROSAOfferte par Millepertuis sur la Route 111
Pokémon aptes
Tout Pokémon pouvant apprendre une capacité par capsule peut apprendre Force Cachée sauf Zarbi, Qulbutoké, Okéoké, Crikzik, Cheniti, Anchwatt et Pérégrain.




{{#invoke:Capsule|tableau
| génération = 9
| capacité = Croco Larme
| jeux = ev
| ev-emplacement = [[Zone Est n° 1]], [[Mont Nappé]], [[Zone Sud n° 2]], [[Zone Sud n° 5]]
| ev-vente=400
| ev-recette-condition=avoir vaincu [[Brome]]
| ev-recette-pl=400
| ev-recette-échantillons=Larme de [[Manzaï]] ×3, Griffe de [[Teddiursa]] ×3
| pokémon =Pikachu/Rondoudou/Grodoudou/Miaouss/Miaouss forme(Alola)/Miaouss forme(Galar)/Persian/Persian forme(Alola)/Évoli/Aquali/Voltali/Pyroli/Mew/Toudoudou/Marill/Azumarill/Simularbre/Mentali/Noctali/Feuforêve/Farfuret/Teddiursa/Ursaring/Balignon/Chapignon/Azurill/Stalgamin/Oniglali/Lixy/Luxio/Luxray/Pachirisu/Magirêve/Manzaï/Dimoret/Phyllali/Givrali/Momartik/Zorua/Zorua forme(Hisui)/Zoroark/Zoroark forme(Hisui)/Scrutella/Mesmérella/Sidérella/Vivaldaim/Haydaim/Meloetta/Nymphali/Diancie/Malamandre/Minisange/Bleuseille/Corvaillus/Grimalin/Fourbelin/Angoliath/Berserkatt/Ursaking/Poussacha/Matourgeon/Miascarade/Compagnol/Famignol/Tapatoès/Grondogue/Dogrino/Forgerette/Forgella/Forgelina/Hurle-Queue/Flotte-Mèche
}}

donne :

Neuvième génération

VignetteCapacitéTypeCatégoriePuissancePrécisionPP
Fichier:Vignette Module:Capsule/doc EV.pngCroco LarmeTénèbresStatut100 %20
JeuEmplacementAchatVente
EVZone Est n° 1, Mont Nappé, Zone Sud n° 2, Zone Sud n° 5400 Pokédollar
Fabricable à la Machine à CT après avoir vaincu Brome pour 400 PL et avec les échantillons suivants :
Larme de Manzaï ×3, Griffe de Teddiursa ×3
Pokémon aptes
0025 Pikachu0039 Rondoudou0040 Grodoudou0052 Miaouss0052 Miaouss
Forme d'Alola
0052 Miaouss
Forme de Galar
0053 Persian0053 Persian
Forme d'Alola
0133 Évoli0134 Aquali0135 Voltali0136 Pyroli
0151 Mew0174 Toudoudou0183 Marill0184 Azumarill0185 Simularbre0196 Mentali
0197 Noctali0200 Feuforêve0215 Farfuret0216 Teddiursa0217 Ursaring0285 Balignon
0286 Chapignon0298 Azurill0361 Stalgamin0362 Oniglali0403 Lixy0404 Luxio
0405 Luxray0417 Pachirisu0429 Magirêve0438 Manzaï0461 Dimoret0470 Phyllali
0471 Givrali0478 Momartik0570 Zorua0570 Zorua
Forme de Hisui
0571 Zoroark0571 Zoroark
Forme de Hisui
0574 Scrutella0575 Mesmérella0576 Sidérella0585 Vivaldaim0586 Haydaim0648 Meloetta
0700 Nymphali0719 Diancie0758 Malamandre0821 Minisange0822 Bleuseille0823 Corvaillus
0859 Grimalin0860 Fourbelin0861 Angoliath0863 Berserkatt0901 Ursaking0906 Poussacha
0907 Matourgeon0908 Miascarade0924 Compagnol0925 Famignol0931 Tapatoès0942 Grondogue
0943 Dogrino0957 Forgerette0958 Forgella0959 Forgelina0985 Hurle-Queue0987 Flotte-Mèche

local p = {}
local ressources = {
	["infosPokemon"] = require("Module:Ressources/infosPokemon"),
	["donneesCapacite"] = require("Module:Ressources/donneesCapacite"),
	["indexTableau"] = require("Module:Ressources/indexTableau")
}

function p.tableau( frame )
	local generation = tonumber( mw.text.trim( frame.args['génération'] ) )
	local capacite = mw.text.trim( frame.args['capacité'] )
	local jeux = frame.args['jeux']
	local poke_aptes = frame.args['pokémon']
	if generation == nil then generation = "" end
	if capacite == nil then return "Pas de nom de capacité renseigné" end
	if jeux ~= nil then jeux = mw.text.split( string.lower(jeux), "/" ) else jeux = {} end
	for i,jeu in ipairs(jeux) do
		jeux[i] = mw.text.trim( jeu )
	end
	if poke_aptes ~= nil then poke_aptes = mw.text.split( poke_aptes, "/" ) else poke_aptes = {} end
	local generations = {"Première", "Deuxième", "Troisième", "Quatrième", "Cinquième", "Sixième", "Septième", "Huitième", "Neuvième"}
	local titre
	if generations[generation] then titre = generations[generation] end
	titre = titre .. ' génération'
	if frame.args['jeu'] then titre = titre .. ' - <i>' .. frame.args['jeu'] .. '</i>' end
	
	local colspan = 6
	if generation == 3 or generation == 6 then colspan = 9
	elseif generation == 4 then colspan = 8
	end

	local i = 1
	local infos_jeux = {}
	local emplacement, achat, vente
	while jeux[i] ~= nil do
		jeux[i] = mw.text.trim( jeux[i] )
		if frame.args[jeux[i] .. '-emplacement'] == nil then
			if jeux[i] == "ev" and frame.args["ev-recette-pl"] ~= nil then emplacement = "—"
			else emplacement = "Inconnu"
			end
		else emplacement = mw.text.trim( frame.args[jeux[i] .. '-emplacement'] )
		end
		if frame.args[jeux[i] .. '-achat'] == nil or frame.args[jeux[i] .. '-achat'] == "-" or frame.args[jeux[i] .. '-achat'] == "—" then achat = "—"
		else 
			if frame.args[jeux[i] .. '-achat-unité'] then achat = mw.text.trim( frame.args[jeux[i] .. '-achat'] ) .. " " .. mw.text.trim( frame.args[jeux[i] .. '-achat-unité'] )
			else achat = mw.text.trim( frame.args[jeux[i] .. '-achat'] ) .. " [[Fichier:Miniature Pokédollar EB.png|10px|class=imagenoire|link=Pokédollar|alt=Pokédollar]]"
			end
		end
		if frame.args[jeux[i] .. '-vente'] == nil or frame.args[jeux[i] .. '-vente'] == "-" or frame.args[jeux[i] .. '-vente'] == "—" then vente = "—"
		else vente = mw.text.trim( frame.args[jeux[i] .. '-vente'] ) .. " [[Fichier:Miniature Pokédollar EB.png|10px|class=imagenoire|link=Pokédollar|alt=Pokédollar]]"
		end
		if jeux[i] == "ev" and frame.args["ev-recette-échantillons"] ~= nil and frame.args["ev-recette-pl"] ~= nil then
			if emplacement == "—" then table.insert(infos_jeux, '<tr class="ligne-jeu-recette"><td>' .. frame:expandTemplate{ title = 'Abréviation', args = { jeux[i] } } .. '</td><td colspan="'.. colspan - 2 .. '">Fabricable à la [[Machine à CT]]')
			else table.insert(infos_jeux, '<tr class="ligne-jeu"><td rowspan="2">' .. frame:expandTemplate{ title = 'Abréviation', args = { jeux[i] } } .. '</td><td colspan="' .. colspan - 3 .. '">' .. emplacement .. '</td><td>' .. achat .. '</td><td rowspan="2">' .. vente .. '</td></tr><tr class="ligne-jeu-recette-2"><td colspan="'.. colspan - 2 .. '">Fabricable à la [[Machine à CT]]')
			end
			if frame.args["ev-recette-condition"] ~= nil then table.insert(infos_jeux, ' après ' .. mw.text.trim(frame.args["ev-recette-condition"])) end
			table.insert(infos_jeux, ' pour ' .. mw.text.trim(frame.args["ev-recette-pl"]) .. ' [[PL]] et avec les échantillons suivants :<br />' .. mw.text.trim(frame.args["ev-recette-échantillons"]) .. '</td>')
			if emplacement == "—" then table.insert(infos_jeux, '<td>' .. vente .. '</td>') end
			table.insert(infos_jeux, '</tr>')
		else
			table.insert(infos_jeux, '<tr class="ligne-jeu"><td>' .. frame:expandTemplate{ title = 'Abréviation', args = { jeux[i] } } .. '</td><td colspan="' .. colspan - 3 .. '">' .. emplacement .. '</td><td>' .. achat .. '</td><td>' .. vente .. '</td></tr>')
		end
		i = i + 1
	end

	local poke = {}
	local aucun = "non"
	table.insert(poke, '<tr class="tableau-capsule-pokémon tableau-capsule-generation' .. generation)
	if frame.args['jeu'] then table.insert(poke, '-' .. frame.args['jeu'] .. '') end
	table.insert(poke, '-pokémon">')
	if frame.args['tous'] == "oui" or frame.args['tous'] == "sexués" then
		table.insert(poke, '<td class="cellule-unique" colspan="' .. colspan + 1 .. '">Tout Pokémon')
		if frame.args['tous'] == "sexués" then table.insert(poke, ' sexué') end
		table.insert(poke, ' pouvant apprendre une capacité par capsule peut apprendre ' .. capacite)
		if frame.args['exceptions'] then table.insert(poke, ' sauf ' .. frame.args['exceptions']) end
		table.insert(poke, '.</td>')
	else
		local y = 1
		local z = 1
		local colspan_poke
		if poke_aptes[1] == "" then
			aucun = "oui"
			table.insert(poke, '<td class="cellule-unique" colspan="' .. colspan + 1 .. '">\'\'Incomplet\'\'</td>')
		end
		while poke_aptes[y] and aucun == "non" do
			if generation == 3 and (z == 1 or z == 3 or z == 5) then colspan_poke = 2
			elseif generation == 4 and (z == 3 or z == 4) then colspan_poke = 2
			elseif generation == 9 and z == 6 then colspan_poke = 2
			else colspan_poke = 1
			end
			table.insert(poke, '<td colspan="' .. colspan_poke .. '" style="text-align: left;">' .. ressources.infosPokemon( poke_aptes[y] ) .. '</td>')
			y = y + 1
			 if z == 6 then
			 	table.insert(poke, '</tr><tr class="tableau-capsule-pokémon tableau-capsule-generation' .. generation)
				if frame.args['jeu'] then table.insert(poke, '-' ..frame.args['jeu'] .. '') end
				table.insert(poke, '-pokémon">')
			 	z = 1
			 else z = z + 1 end
		end
	end
	table.insert(poke, '</tr>')

	local donnees = ressources.donneesCapacite(generation, capacite, jeux)
	local resultat = {}
	table.insert(resultat, '<table class="tableaustandard centre ' .. donnees["type"] .. ' tableau-capsule tableau-capsule-generation' .. generation .. '" style="width: 90%;"><caption><h3>' .. titre.. '</h3></caption><tr class="ligne-1">')
	if ressources.indexTableau(jeux, "ev") then table.insert(resultat, '<th>Vignette</th>') end
	table.insert(resultat, '<th>Capacité</th><th>Type</th><th>Catégorie</th><th>Puissance</th><th>Précision</th><th>PP</th>')
	if generation == 3 or generation == 6 then table.insert(resultat, '<th>[[Concours Pokémon|Type concours]]</th><th>[[Charme (concours)|Charme]]</th><th>[[Blocage (concours)|Blocage]]</th>')
	elseif generation == 4 then table.insert(resultat, '<th>[[Concours Pokémon|Type concours]]</th><th>[[Charme (concours)|Charme]]</th>')
	end
	table.insert(resultat, '</tr><tr class="ligne-2">')
	if ressources.indexTableau(jeux, "ev") then
		rowspan = #jeux + 2
		if frame.args["ev-recette-échantillons"] ~= nil and frame.args["ev-recette-pl"] ~= nil then rowspan = rowspan + 1 end
		table.insert(resultat, '<td rowspan="' .. rowspan .. '">[[Fichier:Vignette ' .. frame:getParent():getTitle() .. ' EV.png|150px]]</td>')
	end
	for j = 1, colspan do table.insert(resultat, '<td>' .. donnees[j] .. '</td>') end
	table.insert(resultat, '</tr><tr class="ligne-3"><th>Jeu</th><th colspan="' .. colspan - 3 .. '">Emplacement</th><th>Achat</th><th>Vente</th></tr>' .. table.concat(infos_jeux, ""))
	
	local j = 1
	local galerie = {}
	if frame.args['image1'] then table.insert(galerie, '<gallery widths="180px" heights="120px">') end
	while frame.args['image' .. j] do
		if frame.args['image' .. j .. '-description'] == nil then frame.args['image' .. j .. '-description'] = "" end
		table.insert(galerie, frame.args['image' .. j] .. '|' .. frame.args['image' .. j .. '-description'] .. '\n')
		j = j + 1
	end
	if frame.args['image1'] then
		table.insert(galerie, '</gallery>')
		table.insert(resultat, '<tr><td colspan="' .. colspan .. '">' .. frame:preprocess( table.concat(galerie, "") .. '</td></tr>' ) )
	end
	
	table.insert(resultat, '<tr><th colspan=' .. colspan + 1 .. '>Pokémon aptes</th></tr>')
	if frame.args['tous'] ~= "oui" and frame.args['tous'] ~= "sexués" and aucun ~= "oui" then 
		table.insert(resultat, '<tr><td colspan="' .. colspan + 1 .. '"><button type="button" name="tableau-capsule-generation' .. generation .. '')
		if frame.args['jeu'] then table.insert(resultat, '-' .. frame.args['jeu']) end
		table.insert(resultat, '-pokémon" value="afficher" style="font-size:80%" title="[-] Masquer les Pokémon aptes">[+] Afficher les Pokémon aptes</button></td></tr>')
	end
	table.insert(resultat, table.concat(poke, "") .. '</table>')

	return table.concat(resultat, "")
end

return p