Module:RequiredCraftingStations

De ARK Wiki
Aller à la navigation Aller à la recherche

Affiche la liste des stations de fabrication pour une ressource donnée.

Paramètres

  • craftedin: station nécessaire pour fabriquer l'objet
  • Liste des ressources, séparées par |

Utilisation

{{RequiredCraftingStations|<resources>}}
{{RequiredCraftingStations|craftedin=<station>|<resources>}}

Exemple

{{RequiredCraftingStations|Narcotique|Lingot de métal}}

Mortier et Pilon.png Mortier et Pilon
Forge.png Forge

{{RequiredCraftingStations|craftedin=Centre d'usinage|Narcotique|Lingot de métal}}

Mortier et Pilon.png Mortier et Pilon
Centre d'usinage.png Centre d'usinage
Forge.png Forge


local p = {}
function p.neededstations( f )
  local args = f:getParent().args
  local stations = {["Feu de Camp"] = false, ["Mortier et Pilon"] = false, ["Forge"] = false, ["Armoire de conservation"] = false, ["Atelier"] = false, ["Centre d'usinage"] = false}
  local dependencies = {
    ["Feu de Camp"] = {
      "Charbon",
      "Viande cuite",
      "Viande cuite supérieure",
      "Poudre à Canon"
    },
    ["Mortier et Pilon"] = {
      "Poudre-étincelle",
      "Narcotique",
      "Poudre à Canon",
      "Stimulant",
      "Ciment",
      "Répulsif à insectes",
      "Polymère",
      "Argile",
      "Carburant"
    },
    ["Forge"] = {
      "Lingot de métal",
      "Essence",
      "Électroniques",
      "Brique",
      "Verre",
      "Lingot de fer",
      "Lingot d'acier"
    },
    ["Armoire de conservation"] = {
      "Viande cuite séchée",
      "Viande supérieure séchée"
    },
    ["Atelier"] = {
      "Fléchette tranquillisante"
    },
    ["Centre d'usinage"] = {
      "Électroniques",
      "Polymère"
    },
    ["Labo de chimie"] = {
      "Substrat absorbant"
    },
  --Primitive Plus
    ["Chaudron"] = {
      "Levure naturelle",
      "Lait de Noix de Cajou"
    },
    ["Bétonnière"] = {
      "Ciment Frais"
    },
    ["Atelier de Cuisine"] = {
      "Pâte à pain"
    },
    ["Moulin à main"] = {
      "Argile (Primitive+)",
      "Sac de Farine",
      "Sel"
    },
    ["Station de Travail du Bois"] = {
      "Bois de Charpente"
    },
    ["Feu de Camp de Préservation"] = {
      "Orge Séché",
      "Sachets de Thé Séchés",
      "Blé Séché"
    },
    ["Presse à fruits"] = {
      "Seau de jus de Sucre Frais"
    },
    ["Chevalet de Tannage"] = {
      "Cuir"
    }
  }

  -- check if item itself needs a station to be crafted in. if yes, set to true
  if args.craftedin ~= nil and stations[args.craftedin] ~= nil then
    stations[args.craftedin] = true
  end
  -- get iconsize
  local iconsize = '20px'
  if args.iconsize ~= nil then
    iconsize = args.iconsize
  end

  -- test all given resources and set station to true if needed and station is not already on true
  for _,res in ipairs(args) do
    if res ~= '' then
      for station,_ in pairs(dependencies) do
        if not stations[station] and p.inTable(dependencies[station], res) then
          stations[station] = true
        end
      end
    end
  end

  local returnTable = {}
  for station, needed in pairs(stations) do
    if needed then
      table.insert(returnTable,'[[File:'..station..'.png|'..iconsize..']] [['..station..']]')
    end
  end

  return table.concat(returnTable,'<br/>')
end

function p.inTable(tbl, item)
  for _, value in pairs(tbl) do
    if string.lower(value) == string.lower(item) then return true end
  end
  return false
end

return p