Модуль:RequiredCraftingStations

Материал из ARK Wiki
Перейти к навигации Перейти к поиску

Отображает список необходимых станций для создания требуемого ресурса.

Параметр

  • craftedin: станция которая нужная для создания предмета
  • Список необходимых ресурсов разделяется знаком |

Использование

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

Пример

{{RequiredCraftingStations|Наркотик|Слиток Металла}}

Ступка и Пестик.png Ступка и Пестик
Плавильная Печь.png Плавильная Печь

{{RequiredCraftingStations|craftedin=Станок|Наркотик|Слиток Металла}}

Ступка и Пестик.png Ступка и Пестик
Плавильная Печь.png Плавильная Печь
Станок.png Станок


local p = {}
function p.neededstations( f )
  local args = f:getParent().args
  local stations = {["Костёр"] = false, ["Ступка и Пестик"] = false, ["Плавильная Печь"] = false, ["Термошкаф"] = false, ["Верстак"] = false, ["Станок"] = false}
  local dependencies = {
    ["Костёр"] = {
      "Уголь",
      "Жареное Мясо",
      "Жареное Первосортное Мясо",
      "Порох"
    },
    ["Ступка и Пестик"] = {
      "Селитра",
      "Наркотик",
      "Порох",
      "Стимулятор",
      "Цементная Паста",
      "Средство от Насекомых",
      "Полимер",
      "Глина (Scorched Earth)",
      "Пропеллент"
    },
    ["Плавильная Печь"] = {
      "Слиток Металла",
      "Бензин",
      "Электроника",
      "Кирпич",
      "Стекло",
      "Железный Слиток",
      "Стальной Слиток"
    },
    ["Термошкаф"] = {
      "Вяленое Мясо",
      "Вяленое Первосортное Мясо"
    },
    ["Верстак"] = {
      "Транквилизирующий Дротик"
    },
    ["Станок"] = {
      "Электроника",
      "Полимер"
    },
    ["Химический Стол"] = {
      "Абсорбент"
    },
  --Primitive Plus
    ["Пасека (Primitive Plus)"] = {
      "Мёд (Primitive Plus)",
      "Пчелиный Воск (Primitive Plus)"
    },
    ["Котел (Primitive Plus)"] = {
      "Натуральные Дрожжи (Primitive Plus)",
      "Молоко из Кешью (Primitive Plus)"
    },
    ["Бетономешалка (Primitive Plus)"] = {
      "Свежий Цемент (Primitive Plus)"
    },
    ["Кулинарная Станция (Primitive Plus)"] = {
      "Хлебное Тесто (Primitive Plus)"
    },
    ["Ручная Мельница (Primitive Plus)"] = {
      "Глина (Primitive Plus)",
      "Мешок Муки (Primitive Plus)",
      "Соль (Primitive Plus)"
    },
    ["Лесопилка (Primitive Plus)"] = {
      "Пиломатериалы (Primitive Plus)"
    },
    ["Сушилка (Primitive Plus)"] = {
      "Сушеный Ячмень (Primitive Plus)",
      "Сушеный Чай (Primitive Plus)",
      "Сушеная Пшеница (Primitive Plus)"
    },
    ["Sugar Press"] = {
      "Fresh Sugar Juice Bucket"
    },
    ["Сушильная Стойка (Primitive Plus)"] = {
      "Кожа (Primitive Plus)"
    }
  }

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