Module:RequiredCraftingStations

From ARK: Survival Evolved Wiki
Jump to: navigation, search
Template-info.png Documentation

Displays a list of needed crafting stations needed to craft the given resources.

Parameter[edit source]

  • craftedin: station that is needed to craft the item
  • Resources as list, separated by |

Usage[edit source]

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

Example[edit source]

{{RequiredCraftingStations|Narcotic|Metal Ingot}}

Refining Forge.png Refining Forge
Mortar And Pestle.png Mortar and Pestle

{{RequiredCraftingStations|craftedin=Fabricator|Narcotic|Metal Ingot}}

Fabricator.png Fabricator
Refining Forge.png Refining Forge
Mortar And Pestle.png Mortar and Pestle


local p = {}
function p.neededstations( f )
  local args = f:getParent().args
  local stations = {["Campfire"] = false, ["Mortar and Pestle"] = false, ["Refining Forge"] = false, ["Preserving Bin"] = false, ["Smithy"] = false, ["Fabricator"] = false, ["Industrial Cooker"] = false}
  local dependencies = {
    ["Campfire"] = {
      "Charcoal",
      "Cooked Meat",
      "Cooked Prime Meat",
      "Gunpowder"
    },
    ["Mortar and Pestle"] = {
      "Sparkpowder",
      "Narcotic",
      "Gunpowder",
      "Stimulant",
      "Cementing Paste",
      "Bug Repellant",
      "Polymer",
      "Clay (Scorched Earth)",
      "Propellant"
    },
    ["Refining Forge"] = {
      "Metal Ingot",
      "Gasoline",
      "Electronics",
      "Brick",
      "Glass",
      "Iron Ingot",
      "Steel Ingot",
      "Metal Ingot or Scrap Metal Ingot"
    },
    ["Preserving Bin"] = {
      "Cooked Meat Jerky",
      "Prime Meat Jerky"
    },
    ["Smithy"] = {
      "Tranquilizer Dart"
    },
    ["Fabricator"] = {
      "Electronics",
      "Polymer"
    },
    ["Chemistry Bench"] = {
      "Absorbent Substrate"
    },
    ["Industrial Cooker"] = {
      "Geopolymer Cement (Mobile)"
    },
  --Primitive Plus
    ["Apiary"] = {
      "Honey",
      "Beeswax"
    },
    ["Cauldron"] = {
      "Natural Yeast",
      "Cashew Milk"
    },
    ["Cement Mixer"] = {
      "Fresh Cement"
    },
    ["Cooking Table"] = {
      "Fresh Dough"
    },
    ["Handmill"] = {
      "Clay (Primitive+)",
      "Sack of Flour",
      "Salt"
    },
    ["Lumber Station"] = {
      "Wood Plank"
    },
    ["Preserving Campfire"] = {
      "Dried Barley",
      "Dried Tea Bags",
      "Dried Wheat"
    },
    ["Sugar Press"] = {
      "Fresh Sugar Juice Bucket"
    },
    ["Tanning Rack"] = {
      "Leather"
    }
  }

  -- 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