Module:Imagerie

De Poképédia
Sauter à la navigation Sauter à la recherche

Paramètres[modifier]

Paramètres généraux[modifier]

  • le premier paramètre, sans nom, est le numéro du Pokémon concerné, toujours en trois chiffres arabes.
  • le paramètre génération, par défaut la génération actuelle.
  • il est aussi possible de définir, si nécessaire, la forme du Pokémon (le nom complet de la forme, en accord avec la nomenclature des images).
  • si le Pokémon est Shiny Locked dans la génération concernée, définir le paramètre shinylock. À noter qu'il existe aussi aussi une famille de paramètres du type shinylock-jeu, pour un Pokémon Shiny Locked dans un jeu seulement, mais son usage est extrêmement rare à tel point qu'il est réduit à un seul Pokémon dans une seule génération : voir Mew#Imagerie.

Sprites[modifier]

Par défaut, le module produit une configuration initiale du tableau qui est - tout du moins théoriquement - la plus utilisée. Par exemple, pour la quatrième génération, il suppose que le sprite de face est le même dans Pokémon Diamant et Perle et Pokémon Platine, que celui-ci de Pokémon Or HeartGold et Argent SoulSilver est différent, et enfin que celui de dos est le même pour les trois jeux. Bien sûr, cette supposition se révèle fausse pour un bon nombre de Pokémon, et il faut alors pouvoir lui indiquer ce qu'il y a à changer. Deux familles de paramètres existent alors :

  • sprite-face-jeu ;
  • sprite-dos-jeu.

Le présence de jeu en italique montre une particularité de ces paramètres permise pour les modules : leur nom varie. On pourra ainsi aussi bien utiliser « sprite-face-rs », « sprite-dos-hgss », « sprite-face-lgpe », etc, le module comprendra et les gérera tous de la même façon. Comme vous pouvez le constater, l'abréviation du jeu est en minuscule, ceci pour respecter les conventions sur les paramètres de modèles (supposée étendue aux modules). Maintenant que nous savons quels paramètres existent, encore faut-il savoir que renseigner : l'abréviation du jeu dans lequel est apparu le sprite utilisé. Pour reprendre l'exemple précédemment cité, si l'on veut que Pokémon Diamant et Perle soit à part et que Pokémon Platine et Pokémon Or HeartGold et Argent SoulSilver utilisent le même sprite de face, on définira à la fois « sprite-face-pt=pt » et « sprite-face-hgss=pt ». Ici encore, l'abréviation renseignée est insensible à la casse.

Un deuxième cas est géré à part, celui-ci ou un Pokémon est absent d'un jeu. Par exemple, Keldeo n'est présent que dans Pokémon Noir 2 et Blanc 2 dans la cinquième génération et il faut donc indiquer au module qu'il est absent de Pokémon Noir et Blanc. Assez intuitivement, la catégorie de paramètre est de la forme absence-jeu avec, comme précédemment, l'abréviation du jeu en minuscule. Un cas particulier ici aussi : Pokémon : Let's Go, Pikachu et Let's Go, Évoli. Comme moins de 160 des plus de 800 Pokémon existants à l'époque sont présents dans le jeu, le module "triche" en renseignant par lui-même le paramètre « absence-lgpe » (autre possibilité des modules) si celui-ci n'est pas défini. Ainsi, pour indiquer qu'un Pokémon est présent dans Pokémon : Let's Go, Pikachu et Let's Go, Évoli, on indiquer plutôt qu'il n'est pas absent de ce jeu avec « absence-lgpe=non ». Trois paramètres sont possibles pour les différences entre les sprites femelles et mâles :

  • diff-sprites-sexe, à l'effet classique, qui convient le plus souvent ;
  • si seuls les sprites de face varient, et non ceux de dos, alors il faudra utiliser diff-sprites-face-sexe ;
  • au contraire, si seuls les sprites de dos varient, c'est diff-sprites-dos-sexe qui sera nécessaire.

Enfin, dans le cas particulier où un Pokémon n'est jamais disponible de face ou de dos dans un jeu, il est possible de faire disparaître la colonne correspondante du tableau pour ce jeu ciblé, avec un des paramètres suivants :

  • absence-face-jeu=oui ;
  • absence-dos-jeu=oui.

La configuration par défaut actuelle, en absence de paramètre dédié, désactive automatiquement les sprites de dos de Pokémon HOME qui ne sont disponibles que pour un nombre limité de créatures.

Miniature(s)[modifier]

Il faut savoir que par défaut, et cela est suffisant dans l'immense majorité des cas, une miniature correspondant au premier jeu de la génération est affichée. Dans quelques cas, une deuxième miniature peut être nécessaire. Dans ce cas, renseigner miniature2 avec l'abréviation du jeu d'où provient cette deuxième miniature (insensible à la casse). Pour note, si le paramètre « diff-miniatures-sexe » est renseigné, ce paramètre-ci sera alors sans en effet, cela se justifie par le fait que ce cas ne s'est jusqu'alors jamais présenté.

Si les miniatures mâles et femelles sont différentes, dans de rares cas comme Mistigrix, la solution sera alors le paramètre diff-miniatures-sexe.

Enfin, dans le cas particulier où un Pokémon n'aurait pas de miniature (typiquement la génération 8 pour les Pokémon absents d'Épée/Bouclier), ajouter absence-miniature=oui permet de supprimer la colonne dédiée.

Artwork[modifier]

Pour afficher un artwork au-dessus de la galerie de miniature(s) et sprites, le paramètre artwork doit être renseigné avec l'abréviation du jeu d'où provient cet artwork. Par exemple, pour afficher « Fichier:Arcanin-RFVF.png » sur une page ou sous-page d'Arcanin, on utilisera « artwork=RFVF ». Cependant, il est aussi possible d'utiliser « artwork=oui » pour afficher le dernier artwork du Pokémon. Il est à noter que le nom du Pokémon est tiré du nom de la page où est appelé le module. Ainsi, tout essai de ce paramètre en dehors d'une page de Pokémon ne mènera qu'à l'apparition d'un point rouge.

Un paramètre supplémentaire est associé à l'artwork : artwork-précisions. Celui-ci est utile pour les Pokémon ayant plusieurs artworks, et correspond à la partie entre parenthèses dans le nom de l'artwork recherché. Deux exemples : pour afficher l'artwork de la forme Originelle de Giratina dans Pokémon Platine (« Fichier:Giratina (Forme Originelle)-Pt.png »), il est nécessaire de combiner « artwork=Pt » avec « artwork-précisions=Forme Originelle » ; pour celui-ci de Mistigrix femelle dans Pokémon X et Y (« Fichier:Mistigrix (Femelle)-XY.png »), ce sera « artwork=XY » et « artwork-précisions=Femelle ».

Exemples[modifier]

Un cas classique[modifier]

{{#invoke:Imagerie|pokemon|162|génération=2}}
Miniatures et sprites de la deuxième génération
MiniatureSprites de faceSprites de dos
Pokémon OrPokémon ArgentPokémon CristalPokémon OrPokémon ArgentPokémon Cristal
Miniature Chien OA.gifSprite 162 O.pngSprite 162 A.pngSprite 162 C.gifSprite 162 dos OA.png
Miniature Chromatique OA.png
Chromatique
Sprite 162 chromatique O.pngSprite 162 chromatique A.pngSprite 162 chromatique C.gifSprite 162 chromatique dos OA.png

Forme et paramètres de configuration[modifier]

{{#invoke:Imagerie|pokemon|487|génération=4|forme=Alternative|sprite-face-pt=pt|sprite-dos-hgss=hgss}}
Miniatures et sprites de la quatrième génération
MiniatureSprites de faceSprites de dosCompagnonHGSS
Pokémon Diamant et PerlePokémon PlatinePokémon Or HeartGold et Argent SoulSilverPokémon Diamant et PerlePokémon PlatinePokémon Or HeartGold et Argent SoulSilver
Miniature 487 Alternative DP.gifSprite 487 Alternative DP.pngSprite 487 Alternative Pt.pngSprite 487 Alternative HGSS.pngSprite 487 Alternative dos DP.pngSprite 487 Alternative dos HGSS.pngCompagnon 487 Alternative ouest HGSS.gif Compagnon 487 Alternative est HGSS.gif
Compagnon 487 Alternative sud HGSS.gif Compagnon 487 Alternative nord HGSS.gif
Miniature Chromatique DP.png
Chromatique
Sprite 487 Alternative chromatique DP.pngSprite 487 Alternative chromatique Pt.pngSprite 487 Alternative chromatique HGSS.pngSprite 487 Alternative chromatique dos DP.pngSprite 487 Alternative chromatique dos Pt.pngCompagnon 487 Alternative chromatique ouest HGSS.gif Compagnon 487 Alternative chromatique est HGSS.gif
Compagnon 487 Alternative chromatique sud HGSS.gif Compagnon 487 Alternative chromatique nord HGSS.gif

Différences entre sprites mâles et femelles, et compagnons de Pokémon Or HeartGold et Argent SoulSilver[modifier]

{{#invoke:Imagerie|pokemon|025|génération=4|diff-sprites-sexe=oui}}
Miniatures et sprites de la quatrième génération
MiniatureSprites de faceSprites de dosCompagnonHGSS
Pokémon Diamant et PerlePokémon PlatinePokémon Or HeartGold et Argent SoulSilverPokémon Diamant et PerlePokémon PlatinePokémon Or HeartGold et Argent SoulSilver
Symbole femelle.png
Femelle
Miniature 025 RS.gifSprite 025 ♀ DP.pngSprite 025 ♀ HGSS.pngSprite 025 ♀ dos DP.pngCompagnon 025 ouest HGSS.gif Compagnon 025 est HGSS.gif
Compagnon 025 sud HGSS.gif Compagnon 025 nord HGSS.gif
Symbole mâle.png
Mâle
Sprite 025 ♂ DP.pngSprite 025 ♂ HGSS.pngSprite 025 ♂ dos DP.png
Symbole femelle.png Miniature Chromatique DP.png
Femelle chromatique
Sprite 025 ♀ chromatique DP.pngSprite 025 ♀ chromatique HGSS.pngSprite 025 ♀ chromatique dos DP.pngCompagnon 025 chromatique ouest HGSS.gif Compagnon 025 chromatique est HGSS.gif
Compagnon 025 chromatique sud HGSS.gif Compagnon 025 chromatique nord HGSS.gif
Symbole mâle.png Miniature Chromatique DP.png
Mâle chromatique
Sprite 025 ♂ chromatique DP.pngSprite 025 ♂ chromatique HGSS.pngSprite 025 ♂ chromatique dos DP.png

Différences entre sprites mâles et femelles seulement de dos[modifier]

{{#invoke:Imagerie|pokemon|419|génération=5|diff-sprites-dos-sexe=oui}}
Miniatures et sprites de la cinquième génération
MiniatureSprites de faceSprites de dos
Pokémon Noir et BlancPokémon Noir 2 et Blanc 2Pokémon Noir et BlancPokémon Noir 2 et Blanc 2
Symbole femelle.png
Femelle
Miniature 419 DP.gifSprite 419 NB.pngSprite 419 ♀ dos NB.png
Symbole mâle.png
Mâle
Sprite 419 ♂ dos NB.png
Symbole femelle.png Miniature Chromatique NB.png
Femelle chromatique
Sprite 419 chromatique NB.pngSprite 419 ♀ chromatique dos NB.png
Symbole mâle.png Miniature Chromatique NB.png
Mâle chromatique
Sprite 419 ♂ chromatique dos NB.png

Différences entre sprites et miniatures mâles et femelles[modifier]

{{#invoke:Imagerie|pokemon|678|génération=6|diff-sprites-sexe=oui|diff-miniatures-sexe=oui}}
Miniatures et sprites de la sixième génération
MiniatureSprites de faceSprites de dos
Pokémon X et YPokémon Rubis Oméga et Saphir AlphaPokémon X et YPokémon Rubis Oméga et Saphir Alpha
Symbole femelle.png
Femelle
Miniature 678 ♀ XY.png (femelle)
Miniature 678 ♂ XY.png (mâle)
Sprite 678 ♀ XY.pngSprite 678 ♀ dos XY.png
Symbole mâle.png
Mâle
Sprite 678 ♂ XY.pngSprite 678 ♂ dos XY.png
Symbole femelle.png Miniature Chromatique XY.png
Femelle chromatique
Sprite 678 ♀ chromatique XY.pngSprite 678 ♀ chromatique dos XY.png
Symbole mâle.png Miniature Chromatique XY.png
Mâle chromatique
Sprite 678 ♂ chromatique XY.pngSprite 678 ♂ chromatique dos XY.png

Forme, absence d'un jeu et Shiny Lock[modifier]

{{#invoke:Imagerie|pokemon|647|génération=5|forme=Décidé|shinylock=oui|absence-nb=oui}}
Miniatures et sprites de la cinquième génération
MiniatureSprites de faceSprites de dos
Pokémon Noir 2 et Blanc 2Pokémon Noir 2 et Blanc 2
Miniature 647 Décidé NB2.gifSprite 647 Décidé NB2.pngSprite 647 Décidé dos NB2.png
Miniature Chromatique NB.png
Chromatique
Indisponible car ce Pokémon est Shiny Lock

Le cas Pokémon : Let's Go, Pikachu et Let's Go, Évoli[modifier]

{{#invoke:Imagerie|pokemon|006|génération=7|absence-lgpe=non|miniature2=LGPE}}
Miniatures et sprites de la septième génération
MiniatureSprites de faceSprites de dos
Pokémon Soleil et LunePokémon Ultra-Soleil et Ultra-LunePokémon : Let's Go, Pikachu et Let's Go, ÉvoliPokémon Soleil et LunePokémon Ultra-Soleil et Ultra-LunePokémon : Let's Go, Pikachu et Let's Go, Évoli
Miniature 006 XY.pngSLUSUL Miniature 006 LGPE.pngLGSprite 006 XY.pngSprite 006 LGPE.pngSprite 006 dos XY.pngSprite 006 dos LGPE.png
Miniature Chromatique SL.png
Chromatique
Sprite 006 chromatique XY.pngSprite 006 chromatique LGPE.pngSprite 006 chromatique dos XY.pngSprite 006 chromatique dos LGPE.png

local p = {}
local ressources = {
	indexTableau = require("Module:Ressources/indexTableau"),
	tailleTableau = require("Module:Ressources/tailleTableau")
}

function p.pokemon( frame )
	-- CONFIGURATION INITIALE
	local num, generation
	if frame.args[1] == nil then return "Erreur : le numéro du Pokémon n'a pas été défini." else num = frame.args[1] end
	if frame.args['génération'] == nil then generation = 8 else generation = tonumber( frame.args['génération'] ) end
	if frame.args['forme'] then forme = frame.args['forme'] .. ' ' else forme = '' end
	local nom_gen= ''
	local symbole_chromatique = ''
	local jeux = {}
	
	-- tableau de deux éléments
	-- le premier liste les groupes de jeux ayant un sprite de face commun,
	-- le second liste les groupes de jeux ayant un sprite de dos commun
	local sprites = {}
	
	if generation == 1 then
		nom_gen = 'première'
		jeux = {"RV", "RB", "J"}
		sprites = { { RV = {"RV"}, RB = {"RB"}, J = {"J"} }, { RV = {"RV", "RB", "J"} } }
	elseif generation == 2 then
		nom_gen = 'deuxième'
		symbole_chromatique = '[[Fichier:Miniat shiny oac.png]]'
		jeux = {"OA", "O", "A", "C"}
		sprites = { { O = {"O"},  A = {"A"}, C = {"C"} }, { OA = {"O", "A", "C"} } }
	elseif generation == 3 then
		nom_gen = 'troisième'
		symbole_chromatique = '[[Fichier:Miniat shiny rfvf.png]]'
		jeux = {"RS", "RFVF", "E"}
		sprites = { { RS = {"RS", "RFVF"}, E = {"E"} }, { RS = {"RS", "RFVF", "E"} } }
	elseif generation == 4 then
		nom_gen = 'quatrième'
		symbole_chromatique = '[[Fichier:Miniat shiny dpphgss.png]]'
		jeux = {"DP", "Pt", "HGSS"}
		sprites = { { DP = {"DP", "Pt"}, HGSS = {"HGSS"} }, { DP = {"DP", "Pt", "HGSS"} } }
	elseif generation == 5 then
		nom_gen = 'cinquième'
		symbole_chromatique = '[[Fichier:Miniat shiny nbn2b2.png]]'
		jeux = {"NB", "NB2"}
		sprites = { { NB = {"NB", "NB2"} }, { NB = {"NB", "NB2"} } }
	elseif generation == 6 then
		nom_gen = 'sixième'
		symbole_chromatique = '[[Fichier:Miniat shiny xy.png]]'
		jeux = {"XY", "ROSA"}
		sprites = { { XY = {"XY", "ROSA"} }, { XY = {"XY", "ROSA"} } }
	elseif generation == 7 then
		nom_gen = 'septième'
		symbole_chromatique = '[[Fichier:Miniat shiny slusul.png]]'
		jeux = {"SL", "USUL", "LGPE"}
		sprites = { { SL = {"SL", "USUL"}, LGPE = {"LGPE"} }, { SL = {"SL", "USUL"}, LGPE = {"LGPE"} } }
	elseif generation == 8 then
		nom_gen = 'huitième'
		jeux = {"EB", "HOME"}
		sprites = { { EB = {"EB"}, HOME = {"HOME"} }, { EB = {"EB"}, HOME = {"HOME"} } }
	else return "Erreur : génération inconnue."
	end
	
	-- GESTION DES PARAMETRES DE CONFIGURATION PRINCIPAUX
	if not frame.args['absence-lgpe'] then frame.args['absence-lgpe'] = 'oui' end
	if not frame.args['absence-dos-home'] then frame.args['absence-dos-home'] = 'oui' end
	if not frame.args['absence-miniature'] then frame.args['absence-miniature'] = 'non' end
	local remove = {}
	for _, jeu in ipairs(jeux) do
		
		-- gestion des absences dans un jeu donné
		-- si l'absence a lieu pour un jeu qui servait de référence à un groupe, le reste du groupe est éclaté afin de conserver les autres membres
		-- (les valeurs deviennent des clés/valeurs supplémentaires du tableau parent)
		if frame.args['absence-' .. string.lower(jeu)] and frame.args['absence-' .. string.lower(jeu)] ~= 'non' then
			table.insert(remove, jeu)
			for _2, spritesN in ipairs(sprites) do
				if spritesN[jeu] then
					if #spritesN[jeu] > 1 then
						for _3, jeuN in ipairs(spritesN[jeu]) do
							if jeuN ~= jeu then
								spritesN[jeuN] = { jeuN }
							end
						end
					end
					spritesN[jeu] = nil
				else
					for _3, spriteN in pairs(spritesN) do
						if ressources.indexTableau(spriteN, jeu) then
							table.remove(spriteN, ressources.indexTableau(spriteN, jeu))
							break
						end
					end
				end
			end
		end
		
		local paramsSprites = { 'face', 'dos' }
		for numParam, paramSprites in ipairs(paramsSprites) do
			
			-- gestion des sprites de face/dos non prévus par le scénario standard, déclarés manuellement
			-- (les sprites sont supposés communs par groupes de jeux mais des exceptions existent)
			if frame.args['sprite-' .. paramSprites .. '-' .. string.lower(jeu)] then
				local param = frame.args['sprite-' .. paramSprites .. '-' .. string.lower(jeu)]
				for _2, jeu2 in ipairs(jeux) do
					if string.lower(jeu2) == string.lower(param) then
						param = jeu2
						break
					end
				end
				if sprites[numParam][jeu] then sprites[numParam][jeu] = nil
				else
					for _2, sprite in pairs(sprites[numParam]) do
						if ressources.indexTableau(sprite, jeu) then
							table.remove(sprite, ressources.indexTableau(sprite, jeu))
							break
						end
					end
				end
				if sprites[numParam][param] then table.insert(sprites[numParam][param], jeu)
				else sprites[numParam][param] = { jeu }
				end
			end
			
			-- gestion des jeux sans sprite de face ou de dos
			if frame.args['absence-' .. paramSprites .. '-' .. string.lower(jeu)] and frame.args['absence-' .. paramSprites .. '-' .. string.lower(jeu)] ~= 'non' then
				if sprites[numParam][jeu] then sprites[numParam][jeu] = nil
				else
					for _2, sprite in pairs(sprites[numParam]) do
						if ressources.indexTableau(sprite, jeu) then
							table.remove(sprite, ressources.indexTableau(sprite, jeu))
							break
						end
					end
				end
			end
		end
	end
	for _, jeu in ipairs(remove) do
		table.remove(jeux, ressources.indexTableau(jeux, jeu))
	end
	
	-- CREATION VIRTUELLE DU TABLEAU ET PARAMETRES DE CONFIGURATION SPECIFIQUES
	local tableau = {}
	if generation == 1 then
		tableau[1] = { "", {}, {} }
		for _, jeu in ipairs(jeux) do
			if sprites[1][jeu] then
				table.insert(tableau[1][2], {jeu, jeu, sprites[1][jeu], 1})
			end
			if sprites[2][jeu] then
				table.insert(tableau[1][3], {jeu, "dos " .. jeu, sprites[2][jeu], 1})
			end
		end
	elseif generation >= 4 and (frame.args['diff-sprites-sexe'] or frame.args['diff-sprites-face-sexe'] or frame.args['diff-sprites-dos-sexe']) then
		tableau = { 
			{ "[[Fichier:Symbole femelle.png|10px]]<br />[[Sexe des Pokémon|Femelle]]", {}, {} },
			{ "[[Fichier:Symbole mâle.png|10px]]<br />[[Sexe des Pokémon|Mâle]]", {}, {} },
			{ "[[Fichier:Symbole femelle.png|10px]] " .. symbole_chromatique .. "<br />[[Sexe des Pokémon|Femelle]] [[Pokémon chromatique|chromatique]]", {}, {} },
			{ "[[Fichier:Symbole mâle.png|10px]] " .. symbole_chromatique .. "<br />[[Sexe des Pokémon|Mâle]] [[Pokémon chromatique|chromatique]]", {}, {} }
		}
		for _, jeu in ipairs(jeux) do
			if sprites[1][jeu] then
				if frame.args['diff-sprites-sexe'] or frame.args['diff-sprites-face-sexe'] then
					table.insert(tableau[1][2], {jeu, forme .. "♀ " .. jeu, sprites[1][jeu], 1})
					table.insert(tableau[2][2], {jeu, forme .. "♂ " .. jeu, sprites[1][jeu], 1})
					table.insert(tableau[3][2], {jeu, forme .. "♀ chromatique " .. jeu, sprites[1][jeu], 1})
					table.insert(tableau[4][2], {jeu, forme .. "♂ chromatique " .. jeu, sprites[1][jeu], 1})
				else
					table.insert(tableau[1][2], {jeu, forme .. jeu, sprites[1][jeu], 2})
					table.insert(tableau[3][2], {jeu, forme .. "chromatique " .. jeu, sprites[1][jeu], 2})
				end
			end
			if sprites[2][jeu] then
				if frame.args['diff-sprites-sexe'] or frame.args['diff-sprites-dos-sexe'] then
					table.insert(tableau[1][3], {jeu, forme .. "♀ dos " .. jeu, sprites[2][jeu], 1})
					table.insert(tableau[2][3], {jeu, forme .. "♂ dos " .. jeu, sprites[2][jeu], 1})
					table.insert(tableau[3][3], {jeu, forme .. "♀ chromatique dos " .. jeu, sprites[2][jeu], 1})
					table.insert(tableau[4][3], {jeu, forme .. "♂ chromatique dos " .. jeu, sprites[2][jeu], 1})
				else
					table.insert(tableau[1][3], {jeu, forme .. "dos " .. jeu, sprites[2][jeu], 2})
					table.insert(tableau[3][3], {jeu, forme .. "chromatique dos " .. jeu, sprites[2][jeu], 2})
				end
			end
		end
	else
		tableau = { { "", {}, {} }, { symbole_chromatique .. "<br />[[Pokémon chromatique|Chromatique]]", {}, {} } }
		for _, jeu in ipairs(jeux) do
			if sprites[1][jeu] then
				table.insert(tableau[1][2], {jeu, forme .. jeu, sprites[1][jeu], 1})
				table.insert(tableau[2][2], {jeu, forme .. "chromatique " .. jeu, sprites[1][jeu], 1})
			end
			if sprites[2][jeu] then
				table.insert(tableau[1][3], {jeu, forme .. "dos " .. jeu, sprites[2][jeu], 1})
				table.insert(tableau[2][3], {jeu, forme .. "chromatique dos " .. jeu, sprites[2][jeu], 1})
			end
		end
	end
	
	-- ENTETE DU TABLEAU et ARTWORK
	local resultat = {'<table class="tableaustandard centre">'}
	if frame.args['artwork'] then
		table.insert(resultat, '<tr><th colspan="' .. 2 * #jeux + 3 .. '" style="background-color: #C0C0FF;">Artwork officiel</th></tr><tr><td colspan="' .. 2 * #jeux + 3 .. '">[[Fichier:' .. mw.text.split(frame:getParent():getTitle(),"/",true)[1])
		if frame.args['artwork-précisions'] then table.insert(resultat, ' (' .. frame.args['artwork-précisions'] .. ')') end
		if frame.args['artwork'] ~= "oui" then table.insert(resultat, '-' .. frame.args['artwork']) end
		table.insert(resultat, '.png|175px]]</td></tr>')
	end
	table.insert(resultat, '<tr>')
	if frame.args['absence-miniature'] == 'non' then
		table.insert(resultat, '<th colspan="' .. 2 * #jeux + 3 .. '" style="background-color: #C0C0FF;">Miniatures et sprites de la [[' .. nom_gen .. ' génération]]</th>')
	else
		table.insert(resultat, '<th colspan="' .. 2 * #jeux + 2 .. '" style="background-color: #C0C0FF;">Sprites de la [[' .. nom_gen .. ' génération]]</th>')
	end
	table.insert(resultat, '</tr>')
	
	local colonnesFace, colonnesDos
	-- if ressources.tailleTableau(sprites[1]) == 1 then colonnesFace = false else colonnesFace = true end
	-- if ressources.tailleTableau(sprites[2]) == 1 then colonnesDos = false else colonnesDos = true end
	colonnesFace = true
	colonnesDos = true
	if generation ~= 1 then
		table.insert(resultat, '<th')
		if colonnesFace or colonnesDos then table.insert(resultat, ' rowspan="2"') end
		table.insert(resultat, '></th>')
	end
	if frame.args['absence-miniature'] == 'non' then
		table.insert(resultat, '<th')
		if colonnesFace or colonnesDos then table.insert(resultat, ' rowspan="2"') end
		table.insert(resultat, '>Miniature</th>')
	end
	
	local colspanFace = 0
	local colspanDos = 0
	for _, jeuSprite in ipairs(jeux) do
		if sprites[1][jeuSprite] then
			for _2, jeu in ipairs(sprites[1][jeuSprite]) do
				colspanFace = colspanFace + 1
			end
		end
		if sprites[2][jeuSprite] then
			for _2, jeu in ipairs(sprites[2][jeuSprite]) do
				colspanDos = colspanDos + 1
			end
		end
	end
	
	if colspanFace > 0 then
		table.insert(resultat, '<th')
		if colonnesFace then table.insert(resultat, ' colspan="' .. colspanFace .. '"')
		elseif colonnesDos then table.insert(resultat, ' rowspan="2"')
		end
		table.insert(resultat, '>Sprites de face</th>')
	end
	
	if colspanDos > 0 then
		table.insert(resultat, '<th')
		if colonnesDos then table.insert(resultat, ' colspan="' .. colspanDos .. '"')
		elseif colonnesFace then table.insert(resultat, ' rowspan="2"')
		end
		table.insert(resultat, '>Sprites de dos</th>')
	end
	
	if generation == 4 then
		table.insert(resultat, '<th')
		if colonnesFace or colonnesDos then table.insert(resultat, ' rowspan="2"') end
		table.insert(resultat, '>Compagnon' .. frame:expandTemplate{ title = 'Sup', args = { 'HGSS' }} .. '</th>')
	end
	table.insert(resultat, '</tr>')
	if colonnesFace or colonnesDos then
		table.insert(resultat, '<tr>')
		if colonnesFace then
			for _, jeuSprite in ipairs(jeux) do
				if sprites[1][jeuSprite] then
					for _2, jeu in ipairs(sprites[1][jeuSprite]) do
						table.insert(resultat, '<th>' .. frame:expandTemplate{ title = 'Jeu', args = { jeu } } .. '</th>')
					end
				end
			end
		end
		if colonnesDos then
			for _, jeuSprite in ipairs(jeux) do
				if sprites[2][jeuSprite] then
					for _2, jeu in ipairs(sprites[2][jeuSprite]) do
						table.insert(resultat, '<th>' .. frame:expandTemplate{ title = 'Jeu', args = { jeu } } .. '</th>')
					end
				end
			end
		end
		table.insert(resultat, '</tr>')
	end
	
	-- CORPS DU TABLEAU
	local i = 1
	while tableau[i] do
		if generation ~= 1 then table.insert(resultat, '<tr><th>' .. tableau[i][1] .. '</th>') end
		local miniatExtension = "png"
		if generation >= 2 and generation <= 5 then miniatExtension = "gif" end
		if i == 1 and frame.args['absence-miniature'] == 'non' then
			table.insert(resultat, '<td rowspan="4">[[Fichier:Miniature ' .. num .. ' ' .. forme)
			if frame.args['diff-miniatures-sexe'] then table.insert(resultat, '♀ ') end
			table.insert(resultat, jeux[1] .. '.' .. miniatExtension .. ']]')
			if frame.args['diff-miniatures-sexe'] then
				table.insert(resultat, ' (femelle)<br>[[Fichier:Miniature ' .. num .. ' ' .. forme .. '♂ ' .. jeux[1] .. '.' .. miniatExtension .. ']] (mâle)')
			elseif frame.args['miniature2'] then
				for _, jeu in ipairs(jeux) do
					if string.lower(jeu) == string.lower(frame.args['miniature2']) then table.insert(resultat, ' [[Fichier:Miniature ' .. num .. ' ' .. forme .. jeu .. '.' .. miniatExtension .. ']]') end
					if jeu ~= "OA" then table.insert(resultat, frame:expandTemplate{ title = 'Sup', args = { jeu }}) end
				end
			end
			table.insert(resultat, '</td>')
		end
		if frame.args['shinylock'] and i > #tableau / 2 then
			if i == #tableau / 2 + 1 then
				table.insert(resultat, '<td colspan="' .. 2 * #jeux + 1 .. '" rowspan="' .. #tableau / 2 .. '">\'\'Indisponible car ce Pokémon est [[Shiny Lock]]\'\'</td>')
			end
		else
			for _, sprite in ipairs(tableau[i][2]) do
				if i > #tableau / 2 and frame.args['shinylock-' .. string.lower(sprite[1])] then
					if i == #tableau / 2 + 1 then
						table.insert(resultat, '<td rowspan="' .. #tableau / 2 .. '">\'\'Indisponible car ce Pokémon est [[Shiny Lock]]\'\'</td>')
					end
				else
					table.insert(resultat, '<td')
					if colonnesFace then table.insert(resultat, ' colspan="' .. #sprite[3] .. '"') end
					table.insert(resultat, ' rowspan="' .. sprite[4] .. '">[[Fichier:Sprite ' .. num .. ' ' .. sprite[2] .. '.')
					if sprite[1] == "C" or sprite[1] == "E" then table.insert(resultat, 'gif') else table.insert(resultat, 'png') end
					table.insert(resultat, '|class=maxheight100px]]</td>')
				end
			end
			for _, sprite in ipairs(tableau[i][3]) do
				if i > #tableau / 2 and frame.args['shinylock-' .. string.lower(sprite[1])] then
					if i == #tableau / 2 + 1 then
						table.insert(resultat, '<td rowspan="' .. #tableau / 2 .. '">\'\'Indisponible car ce Pokémon est [[Shiny Lock]]\'\'</td>')
					end
				else
					table.insert(resultat, '<td')
					if colonnesDos then table.insert(resultat, ' colspan="' .. #sprite[3] .. '"') end
					table.insert(resultat, ' rowspan="' .. sprite[4] .. '">[[Fichier:Sprite ' .. num .. ' ' .. sprite[2] .. '.png|class=maxheight100px]]</td>') end
				end
			if generation == 4 then
				if i == 1 then table.insert(resultat, '<td rowspan="' .. #tableau / 2 .. '">[[Fichier:Compagnon ' .. num .. ' ' .. forme .. 'ouest HGSS.gif]] [[Fichier:Compagnon ' .. num .. ' ' .. forme .. 'est HGSS.gif]]<br>[[Fichier:Compagnon ' .. num .. ' ' .. forme .. 'sud HGSS.gif]] [[Fichier:Compagnon ' .. num .. ' ' .. forme .. 'nord HGSS.gif]]</td>')
				elseif i == #tableau / 2 + 1 then table.insert(resultat, '<td rowspan="' .. #tableau / 2 .. '">[[Fichier:Compagnon ' .. num .. ' ' .. forme .. 'chromatique ouest HGSS.gif]] [[Fichier:Compagnon ' .. num .. ' ' .. forme .. 'chromatique est HGSS.gif]]<br>[[Fichier:Compagnon ' .. num .. ' ' .. forme .. 'chromatique sud HGSS.gif]] [[Fichier:Compagnon ' .. num .. ' ' .. forme .. 'chromatique nord HGSS.gif]]</td>')
				end
			end
		end
		table.insert(resultat, '</tr>')
		i = i + 1
	end
	
	table.insert(resultat, '</table>')
	return table.concat(resultat, '')
end

return p