Module:Tableau Objet
Ce module propose différentes fonctions qui dressent des tableaux relatifs à des objets. Pour plus d'informations sur chacune, se référer aux sections respectives.
Fonction « donnees »
[modifier]Cette fonction sert à générer un tableau qui liste les poches de rangement ainsi que les prix d'achat et de vente d'un objet dans différents jeux.
Elle s'insère dans la section Fonctionnement de l'objet en question, dans une sous-section nommée « Rangement et prix ».
Paramètres
[modifier]- (paramètre non nommé) : Le paramètre non nommé représente le contenu du tableau. Chaque ligne du tableau résultat est représentée par une ligne dans ce paramètre.
- Une ligne est scindée par des slashs entourés d'espaces
/, et représente un jeu. Les cinq arguments sont donnés dans l'ordre :- L'abréviation du jeu en question, selon le Modèle:Jeu.
- La poche de rangement dans le jeu en question. Une image est automatiquement ajoutée.
- Le ou les prix d'achat dans le jeu en question. Indiquer
P,Poké,Méga-FragmentouMéga-Fragmentsformate automatiquement le rendu pour avoir la bonne unité monétaire. Plusieurs prix peuvent être indiqués, séparés à l'aide d'une virgule. Des précisions sur le prix affiché peuvent être indiquées, par exemple si le prix ne concerne qu'un PNJ particulier dans le jeu. On pourra ainsi indiquer1000 P (collectionneur), 64 PCopour un rendu sur deux lignes, avec 1 000
(collectionneur) sur la première, et 64 PCo sur la deuxième. - Le ou les prix de vente dans le jeu en question. Le formatage est le même que pour les prix d'achat, avec les mêmes possibilités d'affichage.
- D'éventuelles notes, par exemple pour indiquer l'emplacement des PNJ sus-nommés. Si aucune note n'est renseignée, la colonne n'apparaît pas.
Si, dans les trois dernières colonnes, plusieurs lignes sont identiques, elles sont fusionnées.
Exemples d'utilisation
[modifier]Exemple général
[modifier]{{#invoke:Tableau Objet|donnees|
XY / Objets
ROSA / Objets
SL / Objets / 64 PCo
USUL / Objets / 64 PCo
LPZA / Méga-Gemmes
}}
donne :
| Jeu | Rangement | Prix | |
|---|---|---|---|
| Achat | Vente | ||
| XY | — | — | |
| ROSA | |||
| SL | Objets | 64 PCo | |
| USUL | Objets | ||
| LPZA | — | ||
Avec des notes
[modifier]{{#invoke:Tableau Objet|donnees|
DP / Objets / - / 5000 P
NB / Objets / 50000 P / 5000 P, 10000 P (collectionneur) / Dans ''[[Pokémon Noir]]'' uniquement, un collectionneur est situé à [[Flocombe]].
LPA / Trésors / - / 10000 P
}}
donne :
| Jeu | Rangement | Prix | Notes | |
|---|---|---|---|---|
| Achat | Vente | |||
| DP | — | 5 000 | — | |
| NB | 50 000 | 5 000 10 000 | Dans Pokémon Noir uniquement, un collectionneur est situé à Flocombe. | |
| LPZA | — | 10 000 | — | |
Fonction « antre »
[modifier]Cette fonction sert à générer un tableau qui liste les différents objets obtenus au cours d'un raid Dynamax. Elle s'insère sur les pages d'antres, dans une section « Récompenses » qui suit celle contenant le module Tableau Pokémon.
Paramètres
[modifier]- (paramètre non nommé) : Le paramètre non nommé représente le contenu du tableau. Chaque ligne du tableau résultat est représentée par une ligne dans ce paramètre. Il existe deux types de ligne.
- Ligne ne présentant pas de slash
/ - Une ligne ne présentant pas de slash sera considérée comme étant un changement de section. Pour capturer tous les cas possibles, on distingue toutefois quatre types de changement de section :
- Normal : on indique simplement le texte qui prendra toute la ligne. Ceci gère la plupart des cas, autant pour la section « Récompenses bonus » que pour indiquer « Exclusifs à tel Pokémon », ou « Tous » pour indiquer les objets communs à tous les Pokémon présents dans l'antre.
- Exclusifs à Épée/Bouclier : on indique simplement « Épée » ou « Bouclier ». La ligne aura un style spécial qui indique cette particularité. On précède en général la section « Épée » d'une section supplémentaire « Exclusifs à une version ». Exemple : Antre 83.
- Spécifiques à certains Pokémon selon la version : on indique les Pokémon concernés dans Épée en premier, selon la nomenclature du Module:Ressources/infosPokemon, et après un double slash
//, on indique les Pokémon concernés dans Bouclier. Exemple : Antre 40. - Sur-sections : dans L'île solitaire de l'Armure et Les terres enneigées de la Couronne, les récompenses bonus peuvent également changer selon le Pokémon. En entourant la section de balises
<big></big>, celle-ci est plus grande et prend une autre couleur, afin d'indiquer qu'elle englobe les autres. Exemple : Antre 99.
- Ligne présentant un slash
/
- Ligne ne présentant pas de slash
- Une ligne présentant un slash sera considérée comme étant un objet. Elle se présente sous la forme
NomObjet / nom-attribut1(attribut1) nom-attribut2(attribut2) ....- La partie de gauche représente le nom de l'objet.
- Dans le cas d'une homonymie, on indique le nom de la page, puis
{{!}}, puis le nom de l'objet affiché. Par exemple,Perle (objet){{!}}Perle. - Dans le cas d'un DT, on indique d'abord le numéro du DT, puis une virgule
,, puis le nom de la capacité qu'il contient. Si celle-ci est une homonymie, on utilisera la même technique qu'au-dessus. Par exemple, on aDT13, Puissance (capacité){{!}}Puissance.
- Dans le cas d'une homonymie, on indique le nom de la page, puis
- La partie de droite représente les attributs de l'objet dans le contexte de récompense de fin de raid. Plusieurs fonctionnalités sont disponibles, et sauf indication contraire, s'indiquent avec des parenthèses
(), sous la formenom-attribut(attribut). Les différents attributs possibles sont les suivants :
- image : si l'image affichée ne correspond pas à celle de l'objet renseigné, notamment pour les DT, on indique le bon nom d'objet à afficher. Par exemple,
image(DT Normal). - taux, 1, 2, 3, 4, 5 : on utilise taux lorsque la difficulté du raid n'influe pas sur le taux d'obtention de l'objet, et les autres paramètres sinon. Ils sont à renseigner avec le pourcentage de chances d'obtention de l'objet à l'issue du raid, ou bien au nombre d'objets obtenus pour les récompenses bonus.
- Pour les pourcentages, il n'est pas nécessaire d'ajouter une espace avant le symbole « % ».
- Dans le cas où certains taux par difficulté ne sont pas renseignés, le module complète en ajoutant des « — ».
- On peut renseigner une différence entre versions avec, par exemple,
2(50%, Ep, 80%, Bo).
- image : si l'image affichée ne correspond pas à celle de l'objet renseigné, notamment pour les DT, on indique le bon nom d'objet à afficher. Par exemple,
Exemple d'utilisation
[modifier]{{#invoke:Tableau Objet|antre|
Tous
Capsule d'Argent / 3(1%) 4(2%) 5(3%)
Super Bonbon / taux(25%)
Pépite / taux(50%, Ep, 80%, Bo)
Perle (objet){{!}}Perle / taux(80%, Ep, 50%, Bo)
Exclusifs à une version
Épée
Baie Alga / taux(100%)
DT19, Triplattaque / image(DT Normal) taux(100%)
DT26, Ténacité / image(DT Normal) 3(100%) 4(100%) 5(100%)
DT29, Relais / image(DT Normal) 4(100%) 5(100%)
Bouclier
Baie Papaya / taux(100%)
DT87, Tunnelier / image(DT Sol) 1(100%) 2(100%) 4(100%) 5(100%)
DT94, Cavalerie Lourde / image(DT Sol) 2(100%) 3(100%) 5(100%)
DT76, Piège de Roc / image(DT Roche) 3(100%) 4(100%) 5(100%)
DT10, Séisme / image(DT Sol) 4(100%) 5(100%)
Récompenses bonus
Bonbon Exp. XS / 1(5)
Bonbon Exp. S / 1(1) 2(5)
Bonbon Exp. M / 2(1) 3(5) 4(2)
Bonbon Exp. L / 3(1) 4(3) 5(2)
Bonbon Exp. XL / 5(1)
Bonbon Dynamax / 1(1) 2(1) 3(1) 4(1) 5(2)
}}
donne :
| Objet | Taux | ||||
|---|---|---|---|---|---|
| ★ | ★★ | ★★★ | ★★★★ | ★★★★★ | |
| Tous | |||||
Capsule d'Argent | — | — | 1 % | 2 % | 3 % |
Super Bonbon | 25 % | ||||
Pépite | 50 %E 80 %B | ||||
Perle | 80 %E 50 %B | ||||
| Exclusifs à une version | |||||
| Pokémon Épée | |||||
Baie Alga | 100 % | ||||
DT19 (Triplattaque) | 100 % | ||||
DT26 (Ténacité) | — | — | 100 % | 100 % | 100 % |
DT29 (Relais) | — | — | — | 100 % | 100 % |
| Pokémon Bouclier | |||||
Baie Papaya | 100 % | ||||
DT87 (Tunnelier) | 100 % | 100 % | — | 100 % | 100 % |
DT94 (Cavalerie Lourde) | — | 100 % | 100 % | — | 100 % |
DT76 (Piège de Roc) | — | — | 100 % | 100 % | 100 % |
DT10 (Séisme) | — | — | — | 100 % | 100 % |
| Récompenses bonus | |||||
Bonbon Exp. XS | 5 | — | — | — | — |
Bonbon Exp. S | 1 | 5 | — | — | — |
Bonbon Exp. M | — | 1 | 5 | 2 | — |
Bonbon Exp. L | — | — | 1 | 3 | 2 |
Bonbon Exp. XL | — | — | — | — | 1 |
Bonbon Dynamax | 1 | 1 | 1 | 1 | 2 |
Fonction « teracristal »
[modifier]Cette fonction sert à générer un tableau qui liste les différents objets obtenus au cours d'un raid Téracristal. Elle s'insère sur les pages d'antres, dans une section « Récompenses » qui suit celle contenant le module Tableau Pokémon.
Paramètres
[modifier]- (paramètre non nommé) : Le paramètre non nommé représente le contenu du tableau. Chaque objet ou section du tableau résultat est représenté par une ligne dans ce paramètre. Il existe deux types de ligne.
- Ligne ne présentant pas de slash
/ - Une ligne ne présentant pas de slash sera considérée comme étant un changement de section. Pour qu'elle soit reliée correctement au module Tableau Pokémon, elle doit avoir la forme
Pokémon_Difficulté, où :Pokémonest le nom du Pokémon comme défini dans le tableau Pokémon sans aucun attribut (pour Tauros de Paldea, défini enTauros forme(Paldea), on indiquera simplementTauros) :Difficultéest un nombre qui représente la difficulté du raid en question, en nombre d'étoiles ;- optionnellement, si plusieurs instances d'un même Pokémon à une même difficulté existent, on peut rajouter
_2,_3, etc. à la fin de ce code de changement de section.
- Ligne présentant un slash
/ - Une ligne présentant un slash sera considérée comme étant un objet. Elle se présente sous la forme
NomObjet / Nombre / Précision.- La partie de gauche représente le nom de l'objet.
- Dans le cas d'une homonymie, on indique le nom de la page, puis
{{!}}, puis le nom de l'objet affiché. Par exemple,Perle (objet){{!}}Perle. - Dans le cas d'une CT, on indique d'abord le nom de l'image à afficher, puis le numéro de la CT, puis le nom de la capacité qu'elle contient, le tout séparé par des virgules
,. Si celle-ci est une homonymie, on utilisera la même technique qu'au-dessus. Par exemple, on aCT Normal, CT202, Balance (capacité){{!}}Balance..
- Dans le cas d'une homonymie, on indique le nom de la page, puis
- La partie au centre représente le nombre d'objets obtenus à la fois. Il n'est pas nécessaire de préciser autre chose que ce nombre.
- La troisième partie, facultative, permet d'ajouter une précision entre parenthèses. On distingue quatre cas :
- dans le cas où la récompense est unique, c'est-à-dire qu'elle ne peut pas être obtenue en triomphant du raid une nouvelle fois, renseigner « unique » ;
- dans le cas où la récompense est réservée à l'hôte du raid, renseigner « hôte » ;
- dans le cas où la récompense est réservée aux personnes invitées au raid, renseigner « invités » ;
- dans le cas où la récompense n'est obtenue qu'avec une certaine probabilité, renseigner un pourcentage, par exemple « 22,73% ».
- Ligne ne présentant pas de slash
Exemple d'utilisation
[modifier]{{#invoke:Tableau Objet|teracristal|
Axoloto_1
Bonbon Exp. XS / 1
Bonbon Exp. S / 2
Mucus d'Axoloto / 1
Jolie Plume / 1
Bonbon Exp. XS / 1 / 20%
Bonbon Exp. S / 1 / 8,5%
Plume Santé / 1 / hôte
Plume Force / 1 / invités
Plume Sprint / 5 / 10%
Patch Talent / 1 / unique
Axoloto_1_2
Bonbon Exp. XS / 1
Bonbon Exp. S / 2
Mucus d'Axoloto / 1
Jolie Plume / 1
Bonbon Exp. XS / 1 / 20%
Bonbon Exp. S / 1 / 8,5%
Plume Armure / 1 / hôte
Plume Esprit / 1 / invités
Plume Sprint / 5 / 10%
Pilule Talent / 1 / unique
}}
donne :
| Objet | Nombre | Objet | Nombre |
|---|---|---|---|
| Récompenses d'Axoloto 1★ (voir) | |||
Bonbon Exp. XS | ×1 | Bonbon Exp. S | ×2 |
Mucus d'Axoloto | ×1 | Jolie Plume | ×1 |
Bonbon Exp. XS | ×1 (20 %) | Bonbon Exp. S | ×1 (8,5 %) |
Plume Santé | ×1 (hôte) | Plume Force | ×1 (invités) |
Plume Sprint | ×5 (10 %) | Patch Talent | ×1 (unique) |
| Récompenses d'Axoloto 1★ (voir) | |||
Bonbon Exp. XS | ×1 | Bonbon Exp. S | ×2 |
Mucus d'Axoloto | ×1 | Jolie Plume | ×1 |
Bonbon Exp. XS | ×1 (20 %) | Bonbon Exp. S | ×1 (8,5 %) |
Plume Armure | ×1 (hôte) | Plume Esprit | ×1 (invités) |
Plume Sprint | ×5 (10 %) | Pilule Talent | ×1 (unique) |
local p = {}
local ressources = {
["infosPokemon"] = require("Module:Ressources/infosPokemon")
}
-- Extrait le contenu d'une fonction de la forme "fun_name(argument)" dans une expression.
function extract_argument(fun_name, expression, default)
-- le tiret est un caractère utilisé pour les noms de fonctions, mais aussi spécial pour les expressions rationnelles
fun_name_rat = string.gsub(fun_name, "%-", "%%-")
if (string.match(expression, fun_name_rat .. "%([^)]*%)"))
then return string.sub(string.match(expression, fun_name_rat .. "%([^)]*%)"), string.len(fun_name) + 2, -2)
else return default
end
end
function separate_thousands(amount)
local formatted = amount
while true do
formatted, k = string.gsub(formatted, "^(-?%d+)(%d%d%d)", '%1 %2')
if (k==0) then
break
end
end
return formatted
end
function p.donnees(frame)
local donnees = frame.args[1]
local lignes = {}
if donnees ~= nil then lignes = mw.text.split(donnees, "\n") end
images_rangement = {
["RB"] = "[[Fichier:Vide.png|32px]]",
["J"] = "[[Fichier:Vide.png|32px]]",
["OA"] = "[[Fichier:Sprite XXX OA.png|32px]]",
["C"] = "[[Fichier:Sprite XXX OA.png|32px]]",
["RS"] = "[[Fichier:Sprite Sac (XXX) ♂ RS.png|32px]]",
["RFVF"] = "[[Fichier:Sprite Sac (XXX) ♂ RFVF.png|32px]]",
["E"] = "[[Fichier:Sprite Sac (XXX) ♂ E.png|32px]]",
["DP"] = "[[Fichier:Miniature Poche XXX (sélectionnée) DP.png|32px]]",
["Pt"] = "[[Fichier:Miniature Poche XXX (sélectionnée) Pt.png|32px]]",
["HGSS"] = "[[Fichier:Miniature Poche XXX (sélectionnée) HGSS.png]]",
["NB"] = "[[Fichier:Sprite Sac (XXX, transition) ♂ NB.png|32px]]",
["N2B2"] = "[[Fichier:Sprite Sac (XXX, transition) ♂ N2B2.png|32px]]",
["XY"] = "[[Fichier:Miniature Poche XXX (sélectionnée) XY.png]]",
["ROSA"] = "[[Fichier:Miniature Poche XXX (sélectionnée) ROSA.png]]",
["SL"] = '<div style="width:32px; text-align:center; display:inline-block">[[Fichier:Miniature Poche XXX SL.png]]</div>',
["USUL"] = '<div style="width:32px; text-align:center; display:inline-block">[[Fichier:Miniature Poche XXX USUL.png]]</div>',
["LGPE"] = "[[Fichier:Miniature XXX LGPE.png]]",
["EB"] = "[[Fichier:Miniature Poche XXX (sélectionnée) EB.png|class=imagenoire|32px]]",
["DEPS"] = "[[Fichier:Miniature Poche XXX (sélectionnée) DEPS.png|32px]]",
["LPA"] = "[[Fichier:Miniature Sacoche LPA.png|32px]]",
["EV"] = "[[Fichier:Miniature Poche XXX (sélectionnée) EV.png|32px]]",
["LPZA"] = "[[Fichier:Miniature Poche XXX LPZA.png|class=imagenoire|32px]]",
}
function afficher_monnaie(monnaie, jeu)
local d = {
["P"] = frame:expandTemplate({ title = 'P'}),
["Poké"] = frame:expandTemplate({ title = 'Monnaie PDM', args = { ["jeu"] = jeu }}),
["Méga-Fragment"] = frame:expandTemplate({ title = "Objet", args = { "Méga-Fragment", ["jeu"] = jeu, ["nom"] = "non" }}),
["Méga-Fragments"] = frame:expandTemplate({ title = "Objet", args = { "Méga-Fragment", ["jeu"] = jeu, ["nom"] = "non" }})
}
if d[monnaie]
then return d[monnaie]
else return monnaie
end
end
local corps_result = {}
local has_notes = false
local donnees_dict = {}
local i = 1
while lignes[i] ~= nil do
local ligne = lignes[i]
local ligne_split = mw.text.split(ligne, " / ")
for j = 3, 5 do
if ligne_split[j] == nil or ligne_split[j] == "-"
then ligne_split[j] = "—"
end
end
donnees_dict[i] = {
["jeu"] = ligne_split[1],
["rangement"] = ligne_split[2],
["achat"] = ligne_split[3],
["vente"] = ligne_split[4],
["note"] = ligne_split[5]
}
i = i + 1
end
i = 1
while lignes[i] ~= nil do
local jeu = donnees_dict[i].jeu
local rangement = donnees_dict[i].rangement
local achat = donnees_dict[i].achat
local vente = donnees_dict[i].vente
local note = donnees_dict[i].note
if jeu ~= ""
then
precedent_exists = donnees_dict[i-1] ~= nil and donnees_dict[i-1].jeu ~= ""
table.insert(corps_result, "<tr><td>" .. frame:expandTemplate({ title = 'Abréviation', args = { jeu } }) .. "</td>")
if not rangement
then rangement = "—"
else
if jeu == "OA" or jeu == "C"
then rangement = "Poche " .. rangement
end
if images_rangement[jeu]
then rangement = images_rangement[jeu]:gsub("XXX", rangement) .. " " .. rangement
end
end
table.insert(corps_result, '<td style="white-space:nowrap; text-align:left">' .. rangement .. '</td>')
local achatvente_strings = {"achat", "vente"}
for av = 1, 2 do
local achatvente_string = achatvente_strings[av]
local achatvente = donnees_dict[i][achatvente_string]
local achatvente_texte = "—"
local rowspan = 1
if not(precedent_exists and achatvente == donnees_dict[i-1][achatvente_string])
then
while donnees_dict[i + rowspan] and achatvente == donnees_dict[i + rowspan][achatvente_string] do
rowspan = rowspan + 1
end
if achatvente
then
achatventes = mw.text.split(achatvente, ", ")
achatvente_texte = ""
local j = 1
while achatventes[j] do
achatvente_j = achatventes[j]
local precision_achatvente = ""
local parenthese_pos = achatvente_j:find(" %(")
if parenthese_pos
then precision_achatvente = achatvente_j:sub(parenthese_pos):gsub(" %(", " <small>(") .. "</small>"
achatvente_j = achatvente_j:sub(0, parenthese_pos - 1)
end
espace_pos = achatvente_j:find(" ")
local unite_achatvente = ""
if espace_pos
then unite_achatvente = achatvente_j:sub(espace_pos + 1) -- + 1 pour enlever l'espace
unite_achatvente = " " .. afficher_monnaie(unite_achatvente, jeu)
achatvente_j = achatvente_j:sub(0, espace_pos - 1)
end
if achatvente_j == "-"
then achatvente_j = "—"
else achatvente_j = separate_thousands(achatvente_j)
end
if achatvente_texte ~= "" then achatvente_texte = achatvente_texte .. "<br>" end
achatvente_texte = achatvente_texte .. achatvente_j .. unite_achatvente .. precision_achatvente
j = j + 1
end
end
table.insert(corps_result, '<td rowspan="' .. rowspan .. '" style="white-space:nowrap">' .. achatvente_texte .. "</td>")
end
end
local rowspan = 1
if not(precedent_exists and note == donnees_dict[i-1].note)
then
while donnees_dict[i + rowspan] and note == donnees_dict[i + rowspan].note do
rowspan = rowspan + 1
end
if note ~= nil and note ~= "—"
then has_notes = true
else note = "—"
end
table.insert(corps_result, '<td rowspan="' .. rowspan .. '">' .. note .. "</td>")
end
table.insert(corps_result, "</tr>")
end
i = i + 1
end
local result = {}
local corps = table.concat(corps_result, "")
table.insert(result, '<table class="tableaustandard centre">')
table.insert(result, '<tr><th rowspan="2" style="min-width:55px">Jeu</th><th rowspan="2">Rangement</th><th colspan="2">Prix</th>')
if has_notes
then table.insert(result, '<th rowspan="2">Notes</th>')
else corps = corps:gsub('<td rowspan="%d+">—</td></tr>', '</tr>') -- on enlève la colonne Notes
end
table.insert(result, '</tr><tr><th style="min-width:70px">Achat</th><th style="min-width:70px">Vente</th></tr>')
table.insert(result, corps)
table.insert(result, "</table>")
return table.concat(result, "")
end
function p.antre(frame)
local resultat = {"<table class='tableaustandard centre' style='max-width: 100%;'><tr><th rowspan='2'>Objet</th><th colspan='5'>Taux</th></tr>"
.. "<tr><td class='raid1' width='80px'>★</td><td class='raid2' width='80px'>★★</td><td class='raid3' width='80px'>★★★</td>"
.. "<td class='raid4' width='80px'>★★★★</td><td class='raid5' width='80px'>★★★★★</td></tr>"}
local objets = frame.args[1]
if objets ~= nil then objets = mw.text.split(objets, "\n") else objets = {} end
local i = 1
while objets[i] do
infos = mw.text.split(objets[i], " / ")
if infos[1] and infos[2] then
local nom = infos[1]
nom = mw.text.split(nom, ", ")
nom[1] = nom[1]:gsub("{{!}}", "|")
local image = extract_argument("image", infos[2], nil)
if image == nil
then if nom[1]:find("|") == nil
then image = nom[1]
else image = nom[1]:sub(nom[1]:find("|")+1, nom[1]:len())
end
end
image = "Miniature " .. image .. " EB.png"
table.insert(resultat, "<tr><td style='text-align:left'>[[Fichier:" .. image .. "|class=miniature_objet_EB|link=" .. nom[1] .. "]] [[" .. nom[1] .. "]]")
if nom[2]
then table.insert(resultat, " ([[" .. nom[2]:gsub("{{!}}", "|") .. "]])")
end
table.insert(resultat, "</td>")
local taux = extract_argument("taux", infos[2], "—")
local union_taux = (taux ~= "—")
if taux == "—"
then
local j = 1
while j <= 5 do
local taux_j = extract_argument(j, infos[2], "—")
if taux_j ~= "—"
then union_taux = false break
end
j = j + 1
end
end
if union_taux
then taux = mw.text.split(taux, ", ")
local taux_text = taux[1]:gsub("%%", " %%")
k = 2
while taux[k] do
taux_k_number = taux[k]:gsub("%%", "")
if tonumber(taux_k_number)
then taux_text = taux_text .. "<br>" .. taux[k]:gsub("%%", " %%")
else taux_text = taux_text .. frame:expandTemplate{title='Sup', args={taux[k]}}
end
k = k + 1
end
table.insert(resultat, "<td colspan='5'>" .. taux_text .. "</td>")
else
local j = 1
while j <= 5 do
local taux_j = extract_argument(j, infos[2], "—")
taux_j = mw.text.split(taux_j, ", ")
local taux_j_text = taux_j[1]:gsub("%%", " %%")
k = 2
while taux_j[k] do
taux_jk_number = taux_j[k]:gsub("%%", "")
if tonumber(taux_jk_number)
then taux_j_text = taux_j_text .. "<br>" .. taux_j[k]:gsub("%%", " %%")
else taux_j_text = taux_j_text .. frame:expandTemplate{title='Sup', args={taux_j[k]}}
end
k = k + 1
end
table.insert(resultat, "<td class='raid" .. j .. "'>" .. taux_j_text .. "</td>")
j = j + 1
end
end
table.insert(resultat, "</tr>")
elseif infos[1] ~= "" then
local ligne = mw.text.split(infos[1], " // ")
if ligne[2]
then
l1 = mw.text.split(ligne[1], ", ")
l2 = mw.text.split(ligne[2], ", ")
table.insert(resultat, '<tr><td colspan="6" style="padding:0px;">'
.. '<table style="width:100%;text-align:center;background-color:white;border-radius:3px;">'
.. '<tr><td class="épée" width="50%"><small><i>Épée</i></small><br>')
local j = 1
while l1[j] do
if l1[j]:find("★")
then table.insert(resultat, "<sup>" .. l1[j] .. "</sup>")
else table.insert(resultat, ressources.infosPokemon(l1[j] .. " jeu(EB)", "miniature"))
end
j = j + 1
end
table.insert(resultat, '</td><td class="bouclier" width="50%"><small><i>Bouclier</i></small><br>')
local j = 1
while l2[j] do
if l2[j]:find("★")
then table.insert(resultat, "<sup>" .. l2[j] .. "</sup>")
else table.insert(resultat, ressources.infosPokemon(l2[j] .. " jeu(EB)", "miniature"))
end
j = j + 1
end
table.insert(resultat, "</td></tr></table></th></tr>")
else
if infos[1]:sub(1,5) == "<big>"
then table.insert(resultat, "<tr><th colspan='6' class='transition'>" .. infos[1] .. "</td></tr>")
elseif infos[1] == "Épée"
then table.insert(resultat, "<tr><td colspan='6' class='épée'>"
.. frame:expandTemplate{title='Jeu', args={"Ep"}} .. "</td></tr>")
elseif infos[1] == "Bouclier"
then table.insert(resultat, "<tr><td colspan='6' class='bouclier'>"
.. frame:expandTemplate{title='Jeu', args={"Bo"}} .. "</td></tr>")
else table.insert(resultat, "<tr><th colspan='6'>" .. infos[1] .. "</th></tr>")
end
end
end
i = i + 1
end
table.insert(resultat, "</table>")
return table.concat(resultat, "")
end
function p.teracristal(frame)
local ressources = {
["de"] = require("Module:Ressources/de")
}
local id_separator = "_"
local resultat = {"<table class='tableaustandard centre'><tr><th>Objet</th><th width='80px'>Nombre</th><th>Objet</th><th width='80px'>Nombre</th></tr>"}
local objets = frame.args[1]
if objets ~= nil then objets = mw.text.split(objets, "\n") else objets = {} end
local item_on_the_left = true
local i = 1
while objets[i] do
infos = mw.text.split(objets[i], " / ")
if infos[1] and infos[2] then
local name_list = mw.text.split(infos[1], ", ")
local name = name_list[1]
name = name:gsub("{{!}}", "|")
local image = name
if name_list[2]
then name = name_list[2] -- image stays the same
end
if image:find("|") ~= nil
then image = image:sub(image:find("|")+1, image:len())
end
image = "Miniature " .. image .. " EV.png"
if item_on_the_left then table.insert(resultat, "<tr>") end
table.insert(resultat, "<td style='text-align:left; white-space:nowrap'>[[Fichier:" .. image .. "|class=miniature_objet_EV|link=" .. name .. "]] [[" .. name .. "]]")
if name_list[3]
then table.insert(resultat, " ([[" .. name_list[3]:gsub("{{!}}", "|") .. "]])")
end
table.insert(resultat, "</td>")
local amount = infos[2]
if amount == "" or amount == "-" then amount = "—"
elseif tonumber(amount) then amount = "×" .. amount
end
if infos[3]
then infos[3] = infos[3]:gsub("%%", " %%")
if infos[3] == "hôte" or infos[3] == "h"
then amount = amount .. "<br>(hôte)"
elseif infos[3] == "invités" or infos[3] == "i"
then amount = amount .. "<br>(invités)"
else amount = amount .. "<br>(" .. infos[3] .. ")"
end
end
table.insert(resultat, "<td>" .. amount .. "</td>")
if not item_on_the_left then table.insert(resultat, "</tr>") end
item_on_the_left = not item_on_the_left
elseif infos[1] ~= "" then
local id = infos[1]
local id_split = mw.text.split(id, id_separator)
local pokemon = id_split[1]
local difficulty = id_split[2]
local difficulty_stars = ""
if tonumber(difficulty) ~= nil
then difficulty_stars = " " .. difficulty .. "★"
end
table.insert(resultat, "<tr><th colspan='4' id='Objet" .. id_separator .. id .. "'>Récompenses " .. ressources.de(pokemon) .. pokemon .. difficulty_stars .. " ([[#Pokémon" .. id_separator .. id .. "|voir]])</th></tr>")
item_on_the_left = true
end
i = i + 1
end
table.insert(resultat, "</table>")
return table.concat(resultat, "")
end
return p

























