Modification de Module:Liste d'objets de Fallout 76

Attention : vous n’êtes pas connecté(e). Votre adresse IP sera visible de tout le monde si vous faites des modifications. Si vous vous connectez ou créez un compte, vos modifications seront attribuées à votre propre nom d’utilisateur(rice) et vous aurez d’autres avantages.

La modification peut être annulée. Veuillez vérifier les différences ci-dessous pour voir si c’est bien ce que vous voulez faire, puis publier ces changements pour finaliser l’annulation de cette modification.

Version actuelle Votre texte
Ligne 16 : Ligne 16 :
end
end


function countItems(moduledata)
-- Récompenses par regroupement
n = 0
for i, item in pairs(moduledata.items) do
n = n + (item.max or 1)
end
return n
end
 
function formatChance(chance)
chanceCeil = math.ceil(chance)
if chanceCeil == chance then
return chanceCeil
else
return string.format("%.2f", chance)
end
end


------------------------------------------------------------------
function addItem(item)
 
if type(item) == 'string' then
-- Ajout un élément dans la liste des récompenses en calculant
return '*' .. item
-- également les chances globales d'obtenir cet élément.
elseif type(item) == 'table' then
-- Précision au dixième de pourcent près
local moduledata = require( 'Module:Liste d\'objets de Fallout 76/' .. item.value )
function addItem(item, isAuto, numberOfItems, globalChance)
if type(item) ~= 'table' then
return "<error> item : pas une table"
end
local itemValue = item.value
if not itemValue then
return "<error> item : propriété 'value' non renseignée"
end
local itemType = item.type
local itemMin = item.min or 1
local itemMax = item.max or 1
if itemMin > itemMax then
return "<error> item : propriété 'min' > 'max'"
end
    local itemChance
 
    if isAuto == true then
        itemChance = ( itemMax - itemMin + 1 ) / numberOfItems
    else
        itemChance = item.chance
    end
   
    if not itemChance then
    return "<error> item : propriété chance non renseignée"
    end
   
    itemChance =  itemChance * globalChance
   
    local suffix = ' ('
   
    local itemQuantity = item.quantity
    if itemQuantity then
        suffix = suffix .. itemQuantity .. ', '
    elseif itemMax > 1 then
    suffix = suffix .. itemMin .. '-' .. itemMax .. ', '
    end
   
    suffix = suffix .. formatChance(100 * itemChance) .. ' %'
   
    local itemPlayerLevel = item.level
    local itemEvent = item.event
   
    if itemPlayerLevel then
        suffix = suffix .. ', disponible au niveau ' .. itemPlayerLevel
        if itemEvent then
        suffix = suffix .. " et lors de l'événement " .. itemEvent
        end
    elseif itemEvent then
    suffix = suffix .. ", disponible lors de l'événement " .. itemEvent
    end
 
    suffix = suffix .. ')'
if itemType == 'item'  then
return '*' .. itemValue .. suffix
elseif itemType == 'sublist' then
local subModuledata = require( 'Module:Liste d\'objets de Fallout 76/' .. itemValue )
local sublist = '<div class="avt-dropdown-box mw-collapsible mw-collapsed">' ..
local sublist = '<div class="avt-dropdown-box mw-collapsible mw-collapsed">' ..
'<div class="avt-dropdown-box-title">' .. subModuledata.title .. suffix .. '</div>' ..
'<div class="avt-dropdown-box-title">' .. moduledata.title .. '</div>' ..
'<div class="avt-dropdown-box-content mw-collapsible-content">\n'
'<div class="avt-dropdown-box-content mw-collapsible-content">\n'
        local subIsAuto = subModuledata.auto
for i, subitem in pairs(moduledata.items) do
    subIsAuto = subIsAuto == nil or subIsAuto == true
sublist = sublist .. addItem(subitem) .. '\n'
   
        local subNumberOfItems = countItems(subModuledata)
       
for i, subitem in pairs(subModuledata.items) do
sublist = sublist .. addItem(subitem, subIsAuto, subNumberOfItems, itemChance) .. '\n'
end
end
Ligne 117 : Ligne 35 :
return sublist
return sublist
else
return "<error> item : propriété 'type' non reconnue"
end
end
end
end


-- Génère une liste hiérarchisée de récompenses avec le pourcentage
-- de chance d'obtenir chaque élément.
function p._build(args)
function p._build(args)
-- chargement du module de paramétrage
-- chargement du module de paramétrage
Ligne 131 : Ligne 45 :
'<div class="avt-dropdown-box-title">' .. moduledata.title .. '</div>' ..
'<div class="avt-dropdown-box-title">' .. moduledata.title .. '</div>' ..
'<div class="avt-dropdown-box-content mw-collapsible-content">\n'
'<div class="avt-dropdown-box-content mw-collapsible-content">\n'
    local isAuto = moduledata.auto
    isAuto = isAuto == nil or isAuto == true
   
    local numberOfItems = countItems(moduledata)
for i, item in pairs(moduledata.items) do
for i, item in pairs(moduledata.items) do
list = list .. addItem(item, isAuto, numberOfItems, 1) .. '\n'
list = list .. addItem(item) .. '\n'
end
end
Ligne 146 : Ligne 55 :
end
end


------------------------------------------------------------------
-- Récompenses via une liste unique
 
function addItemToUniqList(item, list)
if type(item) == 'string' then
table.insert( list, item )
elseif type(item) == 'table' then
local moduledata = require( "Module:Liste d'objets de Fallout 76/" .. item.value )
for i, subitem in pairs(moduledata.items) do
addItemToUniqList( subitem, list )
end
end
end
 
function p._uniqList(args)
-- chargement du module de paramétrage
local moduledata = require( "Module:Liste d'objets de Fallout 76/" .. args.nom )
local list = {}
for i, item in pairs(moduledata.items) do
addItemToUniqList(item, list)
end
table.sort( list )
local htmlList = '<ul>'
for i, item in pairs(list) do
htmlList = htmlList .. '<li>' .. item .. '</li>'
end
htmlList = htmlList .. '</ul>'
 
return tostring(htmlList)
end


-- Fonction modèle
-- Fonction modèle


function p.build(frame) return p._build(getArgs(frame)) end
function p.build(frame) return p._build(getArgs(frame)) end
function p.uniqList(frame) return p._uniqList(getArgs(frame)) end


return p
return p
Notez bien que toutes les contributions à Les Archives de Vault-Tec sont considérées comme publiées sous les termes de la creative Commons - CC BY-NC-SA 3.0 (voir Les Archives de Vault-Tec:Copyrights pour plus de détails). Si vous ne désirez pas que vos écrits soient modifiés et distribués à volonté, merci de ne pas les soumettre ici.
Vous nous promettez aussi que vous avez écrit ceci vous-même, ou que vous l’avez copié d’une source placée dans le domaine public ou d’une ressource libre similaire. N’utilisez aucun travail sous droits d’auteur sans autorisation expresse !
Annuler Aide pour la modification (s’ouvre dans une nouvelle fenêtre)