Module:Compétences
Ce module implémente le modèle {{Compétences}}.
Ajouter une compétence
Il suffit d'ajouter la ligne suivante dans la table SKILLS
.
["<nom_compétence_minuscule>"] = "<lien_page_compétence>",
<nom_compétence_minuscule>
désigne le paramètre que doit entrer l'utilisateur pour utiliser cette compétence.<lien_page_compétence>
doit correspondre au nom de l'article associé à la compétence. Il est possible d'utiliser la barre verticale|
pour afficher le lien différemment.
Merci d'aligner le symbole =
avec les reste de lignes et de toujours trier les compétences dans l'ordre alphabétique.
local p = {}
local UNKNOWN_SKILL = "[[Catégorie:Compétence inconnue]]"
-- Merci de conserver le tri
-- TODO: Traduire les compétences une fois le jeu sorti
-- TODO: Faire évoluer cette liste pour prendre en charge les images de
-- chaque rang.
local SKILLS = {
["astrodynamics"] = "Astrodynamique",
["astrophysics"] = "Astrophysique",
["boost pack training"] = "Certification jet-pack",
["ballistics"] = "Balistique",
["botany"] = "Botanique",
["chemistry"] = "Chimie",
["decontamination"] = "Decontamination",
["gastronomy"] = "Gastronomie",
["geology"] = "Geologie",
["instigation"] = "Provocation",
["intimidation"] = "Intimidation",
["lasers"] = "Lasers",
["leadership"] = "Leadership",
["marksmanship"] = "Adresse au tir",
["martial arts"] = "Arts martiaux",
["missile weapon systems"] = "Systèmes d'armes à missiles",
["negotiation"] = "Négotiation",
["neurostrikes"] = "Frappes névralgiques",
["outpost engineering"] = "Ingénierie avant-poste",
["outpost management"] = "Gestion d'avant-poste",
["particle beam weapon systems"] = "Systèmes d'armes à particules",
["payloads"] = "Chargements",
["piloting"] = "Pilotage",
["rapid reloading"] = "Rechargement rapide",
["rifle certification"] = "Certification en fusil",
["robotics"] = "Robotique",
["security"] = "Securité",
["shotgun certification"] = "Certif. fusil à pompe",
["sniper certification"] = "Certification en sniper",
["starship engineering"] = "Ingénierie aérospatiale",
["targeting"] = "Visée",
["xenosociology"] = "Xénosociologie",
}
-- Génère une liste des compétences avec leur niveau.
-- Fonction à appeler depuis un autre module
-- L'utilisateur doit passer un tableau associatif des compétences qu'il
-- veut afficher au format `{["nom_compétence"]="niveau_compétence"}`.
-- Si l'utilisateur renseigne inconnue alors la fonction ajoute
-- la catégorie "Compétence inconnue".
function p._skills_list(args)
local list = mw.html.create("ul")
local names = {}
for name, rank in pairs(args) do table.insert(names, name) end
table.sort(names, function(n1, n2) return args[n1] > args[n2] end)
local contains_unknown_skill = false
for _, name in ipairs(names) do
link = SKILLS[name:lower()]
if link then
-- TODO: Améliorer le visuel
text = "[[" .. link .. "]] ➡️ " .. tostring(args[name])
list:tag('li')
:wikitext(text)
:done()
else
contains_unknown_skill = true
end
end
list:allDone()
local wrapper = mw.html.create("div")
:addClass("liste-simple")
:node(list)
:done()
local category = ""
if contains_unknown_skill then
category = UNKNOWN_SKILL
end
return tostring(wrapper) .. category
end
-- Génère une liste des compétences avec leur niveau.
-- Fonction à appeler depuis un modèle
function p.skills_list(frame)
local args = {}
local argsParent = frame:getParent().args
for cle, val in pairs(argsParent) do
if val then
args[cle] = mw.text.trim(val)
end
end
return p._skills_list(args)
end
return p