ATTENTION! The process of updating WiKi to version Eco 10.x has begun. Those wishing to participate can find out more Information on our ECO Contribution Wiki Discord.
From April 26 to May 12, errors may occur in the Wiki, as we will be carrying out a major update to the information processing modules.

Editing Module:Infobox Item

From Eco - English Wiki

Your changes will be displayed to readers once an authorized user accepts them. (help)

Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.

Latest revision Your text
Line 2: Line 2:


local p = {}
local p = {}
local Utils = require('Module:Utils')
 
local L = require('Module:Localization')
-- Grabs args from the parent frame
-- Trims and parses the args into a table, then returns the table
function norm()
    local origArgs = mw.getCurrentFrame():getParent().args
    local args = {}
   
    for k, v in pairs( origArgs ) do
        v = mw.text.trim( tostring( v ) )
        if v ~= '' then
            args[k] = v
        end
    end
   
    return args
end


-- Build an Item Infobox
-- Build an Item Infobox
function itemBox(args, itemData)
function itemBox( args, itemData )
     -- check that all necessary arguments are passed correctly
     -- check that all necessary arguments are passed correctly
     if args.name == nil or args.name == '' then
     if args.name == nil or args.name == '' then
         return '\'name\' must be specified.'
         return '\'name\' must be specified.'
     end
     end
 
   
    local item = args.name
local item = args.name
     local itemTable = itemData.items[item]
      
 
local itemimagename = string.gsub(item, ' ', '')
    if itemTable == nil then
       
        return item .. ' could not be found in Module:ItemData. [[Category:MissingItem]]'
local itemTable = itemData.items[item]
    end
if itemTable == nil then
 
return item .. ' could not be found in Module:ItemData.'
    local itemType = itemTable.type
end
    local itemEN = string.sub(itemType, 1, -5)
      
     local itemimagename = string.gsub(itemEN, ' ', '')
 
     -- string used to build the infobox
     -- string used to build the infobox
     local infobox = '{| class=\"infobox\"\n'
     local infobox = '{| class=\"infobox\"\n'
   
-- 'Name and Image' section
-- name of the item
infobox = infobox .. '|- style=\"color: white; background-color: #1165AF; text-align: center;\"\n| colspan=\"2\" | \'\'\'<big>' .. item .. '</big>\'\'\'\n'
   
-- the item's type (ItemData - group)
infobox = infobox .. '|- style=\"text-align: center; color: white; background-color: '
if itemTable.group == 'Food' then
infobox = infobox .. '#85D66B;\"\n| colspan=\"2\" | \'\'\'Food\'\'\'\n'
-- Items:Food Icon Image
local image = 'NoImage.png|link=https://wiki.play.eco/index.php?title=Special:Upload&wpDestFile=' .. itemimagename .. '_Icon.png|[[Category:Pages_with_missing_icon]]'
if mw.title.makeTitle('File', itemimagename .. '_Icon.png').file.exists then
image = itemimagename .. '_Icon.png'
elseif mw.title.makeTitle('File', itemimagename .. '_Icon.jpg').file.exists then
image = itemimagename .. '_Icon.jpg'
end
    infobox = infobox .. '|-\n| colspan=\"2\" style=\"padding: 10px;\" | <div class="iconContainer"><div class="iconStack">[[File:' .. image .. '|frameless|class=iconGreen]]</div><div class=iconBorder style=\"position:absolute;\"></div></div> \n'
elseif itemTable.group == 'Skill Books' or itemTable.group == 'Skill Scrolls' then
infobox = infobox .. '#FFCF4D;\"\n| colspan=\"2\" | \'\'\'' .. itemTable.group .. '\'\'\'\n'
-- Items:Skill Books Icon Image
local image = 'NoImage.png|link=https://wiki.play.eco/index.php?title=Special:Upload&wpDestFile=' .. itemimagename .. '_Icon.png|[[Category:Pages_with_missing_icon]]'
if mw.title.makeTitle('File', itemimagename .. '_Icon.png').file.exists then
image = itemimagename .. '_Icon.png'
elseif mw.title.makeTitle('File', itemimagename .. '_Icon.jpg').file.exists then
image = itemimagename .. '_Icon.jpg'
end
infobox = infobox .. '|-\n| colspan=\"2\" style=\"padding: 10px;\" | <div class="iconContainer"><div class="iconStack">[[File:' .. image .. '|frameless|class=iconGold]]</div><div class=iconBorder style=\"position:absolute;\"></div></div> \n'
else
infobox = infobox .. '#78B1FF;\"\n| colspan=\"2\" | \'\'\'' .. itemTable.group .. '\'\'\'\n'
-- Items: Other Icon Image
local image = 'NoImage.png|link=https://wiki.play.eco/index.php?title=Special:Upload&wpDestFile=' .. itemimagename .. '_Icon.png|[[Category:Pages_with_missing_icon]]'
if mw.title.makeTitle('File', itemimagename .. '_Icon.png').file.exists then
image = itemimagename .. '_Icon.png'
elseif mw.title.makeTitle('File', itemimagename .. '_Icon.jpg').file.exists then
image = itemimagename .. '_Icon.jpg'
end
    infobox = infobox .. '|-\n| colspan=\"2\" style=\"padding: 10px;\" | <div class="iconContainer"><div class="iconStack">[[File:' .. image .. '|frameless|class=iconBlue]]</div><div class=iconBorder style=\"position:absolute;\"></div></div> \n'
end
   
  -- 'Description' section header
infobox = infobox .. '|- style=\"background-color: #4688C0; text-align: center;\"\n| colspan=\"2\" | \'\'\'Description\'\'\'\n'
if itemTable.description == nil then
infobox = infobox .. '|- style=\"text-align: center;\"\n| colspan=\"2\" | \'\'\'None\'\'\'\n'
elseif itemTable.description == '' then
infobox = infobox .. '|- style=\"text-align: center;\"\n| colspan=\"2\" | \'\'\'None\'\'\'\n'
else
infobox = infobox .. '|- style=\"text-align: center;\"\n| colspan=\"2\" | ' .. itemTable.description .. '\n'
end
    -- 'General' section header
infobox = infobox .. '|- style=\"background-color: #4688C0; text-align: center;\"\n| colspan=\"2\" | \'\'\'General\'\'\'\n'
   
-- created at
local craftingRecipes = require( "Module:CraftingRecipes" )
local recipes = craftingRecipes.recipes
local function addToSet(set, key)
set[key] = true
end
local function setNotContains(set, key)
return set[key] == nil
end
if craftingRecipes.items[item] ~= nil and #craftingRecipes.items[item] >= 1 then
local count = 0
local stations = {}
local sortStations = {}
local stationString = ''
local found = false
for k, v in ipairs( craftingRecipes.items[item] ) do
for num = '', #recipes[v].numberOfVariants do
if (recipes[v].numberOfVariants ~= nil and recipes[v].numberOfVariants <= '1') then
if setNotContains(stations, recipes[v].craftStn[1]) then
addToSet(stations, recipes[v].craftStn[1])
count = count + 1
end
if found == false then
found = true
infobox = infobox .. '|-\n| Created at:\n| style=\"text-align: right; padding: 3px;\" |'
end
end
end
end
local track = 0
if found == true then
for a, b in pairs(craftStn) do
table.insert(sortStations, a)
end
table.sort(sortStations)
for i, n in ipairs(sortStations) do
stationString = stationString .. ' [[' .. n .. ']]'
track = track + 1
if track ~= count then -- Changed these line to produce comma if not last table.
stationString = stationString .. ','
end
end
infobox = infobox .. stationString .. '\n'
else
infobox = infobox .. '|-\n| Created at:\n| style=\"text-align: right; padding: 3px;\" | N/A\n'
end
elseif args.created ~= nil and args.created ~= '' then
infobox = infobox .. '|-\n| Created at:\n| style=\"text-align: right; padding: 3px;\" | ' .. args.created .. '\n'
else
infobox = infobox .. '|-\n| Created at:\n| style=\"text-align: right; padding: 3px;\" | N/A\n'
end


    -- 'Name and Image' section
-- calories and nutrients (if itemTable.group == 'Food')
    -- name of the item
if itemTable.group == 'Food' then
    infobox = infobox .. '|- style=\"color: white; background-color: #1165AF; text-align: center;\"\n| colspan=\"2\" | \'\'\'<big>' .. item .. '</big>\'\'\'\n'
infobox = infobox .. '|-\n| Calories:\n| style=\"text-align: right; padding: 3px;\" | ' .. itemTable.calories .. '\n|- valign=\"center\"\n| rowspan=\"4\" | Nutrients:\n'
 
infobox = infobox .. '| style=\"color: red; text-align: right; padding: 3px;\" | Carbs: ' .. itemTable.carbs .. '\n'
    -- the item's type (ItemData - group)
infobox = infobox .. '|- valign=\"center\"\n| style=\"color: orange; text-align: right; padding: 3px;\" | Protein: ' .. itemTable.protein .. '\n'
    infobox = infobox .. '|- style=\"text-align: center; color: white; background-color: '
infobox = infobox .. '|- valign=\"center\"\n| style=\"color: yellow; text-align: right; padding: 3px;\" | Fat: ' .. itemTable.fat .. '\n'
 
infobox = infobox .. '|- valign=\"center\"\n| style=\"color: limegreen; text-align: right; padding: 3px;\" | Vitamins: ' .. itemTable.vitamins .. '\n'
    local text_colour = '#78B1FF'
infobox = infobox .. '|-\n| Nutrition Density:\n| style=\"text-align: right; padding: 3px;\" | ' .. itemTable.density .. ' per 100 cals\n'
 
end
    if itemTable.group == L.t('Food') then
        text_colour = '#85D66B'
-- carried
     elseif itemTable.group == L.t('Skill Books') or itemTable.group == L.t('Skill Scrolls') then
if args.carried ~= nil and args.carried ~= '' then
        text_colour = '#FFCF4D'
infobox = infobox .. '|-\n| Carried in:\n| style=\"text-align: right; padding: 3px;\" | ' .. args.carried .. '\n'
     elseif itemTable.group == L.t('Skill Scrolls') then
else
        text_colour = '#FFCF4D'
infobox = infobox .. '|-\n| Carried in:\n| style=\"text-align: right; padding: 3px;\" | ' .. itemTable.carried .. '\n'
    end
end
 
      
    infobox = infobox .. text_colour .. ';\"\n| colspan=\"2\" | \'\'\'' .. itemTable.group .. '\'\'\'\n'
-- weight
    local icon = Utils.build_icon(item)
if itemTable.weight ~= nil then
    infobox = infobox .. '|-\n| colspan=\"2\" style=\"padding: 10px;\" | '..icon .. '\n'
infobox = infobox .. '|-\n| Weight:\n| style="text-align: right; padding: 3px;" | ' .. itemTable.weight .. ' kg\n'
 
else
     -- 'Description' section header
infobox = infobox .. '|-\n| Weight:\n| style="text-align: right; padding: 3px;" | 0.00kg\n'
    infobox = infobox .. sectionHeader('Description')
end
 
      
     if itemTable.description == nil or itemTable.description == '' then
-- stack limit
        infobox = infobox .. '|- style=\"text-align: center;\"\n| colspan=\"2\" | \'\'\'' .. L.t('None') .. '\'\'\'\n'
if itemTable.maxStack ~= nil then
     else
infobox = infobox .. '|-\n| Stack limit:\n| style=\"text-align: right; padding: 3px;\" | ' .. itemTable.maxStack .. '\n'
        infobox = infobox .. '|- style=\"text-align: center;\"\n| colspan=\"2\" | ' .. itemTable.description .. '\n'
end
     end
 
-- yield
    --Crafting
if itemTable.yield ~= nil then
    local craftingRecipes = mw.loadData("Module:CraftingRecipes")
infobox = infobox .. '|-\n| Improve Gathering: \n| style=\"text-align: right; padding: 3px;\" | ' .. itemTable.yield .. '\n'
 
end
    infobox = infobox .. generalSection(item, itemTable, craftingRecipes, args)
 
-- fuel
    infobox = infobox .. IDsSection(itemTable)
if itemTable.fuel ~= nil then
 
infobox = infobox .. '|-\n| Fuel energy:\n| style=\"text-align: right; padding: 3px;\" | ' .. itemTable.fuel .. ' J\n'
    -- Tags Header
end
    if itemTable.tagGroups ~= nil and itemTable.tagGroups ~= {} then
      
        infobox = infobox .. tagSection(itemTable, itemData)
-- currency
    end
if itemTable.currency ~= nil then
infobox = infobox .. '|-\n| Used as Currency:\n| style=\"text-align: right; padding: 3px;\" | ' .. itemTable.currency .. '\n'
end
     -- 'IDs' section header
infobox = infobox .. '|- style=\"background-color: #4688C0; text-align: center;\"\n| colspan=\"2\" | \'\'\'IDs\'\'\'\n'
      
-- item id (type)
infobox = infobox .. '|- valign=\"center\"\n| Item ID:\n| style=\"text-align: right; padding: 3px;\" | ' .. itemTable.type .. '\n'
      
-- id number (type id)
infobox = infobox .. '|- valign=\"center\"\n| ID Number:\n| style=\"text-align: right; padding: 3px;\" | ' .. itemTable.typeID .. '\n'


     -- 'Item' World Object header (if itemTable.group = Placeable or Blocks)
     -- 'Item' World Object header (if itemTable.group = Placeable or Blocks)
    if itemTable.group == L.t('Block Items') or itemTable.group == L.t('World Object Items') then
if itemTable.group == 'Block Items' or itemTable.group == 'World Object Items' then
        infobox = infobox .. placementSection(itemTable, itemimagename)
infobox = infobox .. '|- style=\"text-align: center; background-color: #517ab2;\"\n| colspan=\"2\" | \'\'\'World Object\'\'\'\n'
-- Object Placed Image
local image = 'NoImage.png|link=https://wiki.play.eco/index.php?title=Special:Upload&wpDestFile=' .. itemimagename .. '_Placed.png|[[Category:Pages_with_missing_placed]]'
if mw.title.makeTitle('File', itemimagename .. '_Placed.png').file.exists then
image = itemimagename .. '_Placed.png'
elseif mw.title.makeTitle('File', itemimagename .. '_Placed.jpg').file.exists then
image = itemimagename .. '_Placed.jpg'
end
infobox = infobox .. '|-\n| colspan=\"2\" style=\"padding: 10px;\" | [[File:' .. image .. '|center|border|240px]]\n'
 
-- 'Placement' section
--Placement Header
infobox = infobox .. '|- style=\"background-color: #4688C0; text-align: center;\"\n| colspan=\"2\" | \'\'\'Placement\'\'\'\n'


        -- Object Form Image
--Vechile
        if itemTable.group == L.t('Block Items') then
if itemTable.mobile ~= nil then
            infobox = infobox .. objectFormSection(itemTable, itemimagename)
infobox = infobox .. '|-\n| Vehicle/Mobile Object:\n| style=\"text-align: right; padding: 3px;\" | ' .. itemTable.mobile .. '\n'
        end
end
--Dimensions
if itemTable.footprint ~= nil then
infobox = infobox .. '|-\n| Dimensions (X,Y,Z):\n| style=\"text-align: right; padding: 3px;\" | ' .. itemTable.footprint .. '\n'
end
--Material Tier
if itemTable.materialTier ~= nil or itemTable.materialTier == 0 then
infobox = infobox .. '|-\n| Room Material:\n| style=\"text-align: right; padding: 3px;\" | Tier ' .. itemTable.materialTier .. '\n'
end
--Room Req.
if itemTable.roomContainReq ~= nil then
infobox = infobox .. '|-\n| Room Required:\n| style=\"text-align: right; padding: 3px;\" | ' .. itemTable.roomContainReq .. '\n'
end
--Room Size. Req.
if itemTable.roomSizeReq ~= nil then
infobox = infobox .. '|-\n| Room Size:\n| style=\"text-align: right; padding: 3px;\" | ' .. itemTable.roomSizeReq .. ' m³\n'
end
--Room Mat. Req.
if itemTable.roomMatReq ~= nil then
infobox = infobox .. '|-\n| Room Materials:\n| style=\"text-align: right; padding: 3px;\" | ' .. itemTable.roomMatReq .. '\n'
end
-- Object Form Image
if itemTable.group == 'Block Items' then
local image = 'NoImage.png|link=https://wiki.play.eco/index.php?title=Special:Upload&wpDestFile=' .. itemimagename .. '_Form.png|[[Category:Pages_with_missing_form]]'
if mw.title.makeTitle('File', itemimagename .. '_Form.png').file.exists then
image = itemimagename .. '_Form.png'
elseif mw.title.makeTitle('File', itemimagename .. '_Form.jpg').file.exists then
image = itemimagename .. '_Form.jpg'
end
infobox = infobox .. '|-\n| colspan=\"2\" style=\"padding: 10px;\" | [[File:' .. image .. '|center|border|240px]]\n'
end


        -- 'Housing' section (if there is a Room Category)
-- 'Housing' section (if there is a Room Category)
        if itemTable.roomCategory ~= nil then
if itemTable.roomCategory ~= nil then
            infobox = infobox .. housingSection(itemTable)
-- Housing Header
        end
infobox = infobox .. '|- style=\"background-color: #4688C0; text-align: center;\"\n| colspan=\"2\" | \'\'\'Housing\'\'\'\n'
   
--roomCategory
infobox = infobox .. '|-\n| Room Category:\n| style=\"text-align: right; padding: 3px;\" | ' .. itemTable.roomCategory .. '\n'


        -- 'Storage' Section (if inventorySlots is not nil)
if itemTable.roomCategory ~= 'Industrial' then
        if itemTable.inventorySlots ~= nil then
if itemTable.furnitureType ~= nil then
            infobox = infobox .. storageSection(itemTable)
--furnitureType
        end
infobox = infobox .. '|-\n| Furniture Type:\n| style=\"text-align: right; padding: 3px;\" | ' .. itemTable.furnitureType .. '\n'
           
--Value of the object
infobox = infobox .. '|-\n| Value:\n| style=\"text-align: right; padding: 3px;\" | ' .. itemTable.skillValue .. '\n'
           
--Dim. Return % of Object 
infobox = infobox .. '|-\n| Dim. Return %:\n| style=\"text-align: right; padding: 3px;\" | ' .. itemTable.repeatsDepreciation .. '\n'   
end
end
if itemTable.roomCategory == 'Industrial' then
infobox = infobox .. '|- style=\"background-color: red; text-align: center;\"\n| colspan=\"2\" | \'\'\'ALL ROOM VALUE LOST\'\'\'\n'
end
end
-- 'Storage' Section (if inventorySlots is not nil)
if itemTable.inventorySlots ~= nil then
-- Storage Header
infobox = infobox .. '|- style=\"background-color: #4688C0; text-align: center;\"\n| colspan=\"2\" | \'\'\'Storage\'\'\'\n'


        -- 'Power' section (if EngeryType is ``not nil)
--Inventory Slots
        if itemTable.energyType ~= nil then
infobox = infobox .. '|-\n| Inventory Slots:\n| style=\"text-align: right; padding: 3px;\" | ' .. itemTable.inventorySlots .. '\n'
            infobox = infobox .. powerSection(itemTable)
--inventoryMaxWeight
if itemTable.inventoryMaxWeight ~= nil then
maxWeightKg = itemTable.inventoryMaxWeight/1000
infobox = infobox .. '|-\n| Inventory Max Weight:\n| style=\"text-align: right; padding: 3px;\" | ' .. maxWeightKg .. ' Kg\n'
else
infobox = infobox .. '|-\n| Inventory Max Weight:\n| style=\"text-align: right; padding: 3px;\" | Unlimited \n'
end
end


        end
-- 'Power' section (if EngeryType is ``not nil)
if itemTable.energyType ~= nil then 
-- Power Header
infobox = infobox .. '|- style=\"background-color: #4688C0; text-align: center;\"\n| colspan=\"2\" | \'\'\'Power\'\'\'\n'


        -- 'Fuel' Section (if fuelsUsed by Object)
--EngergyType
        if itemTable.fuelsUsed ~= nil then
infobox = infobox .. '|-\n| Energy Type:\n| style=\"text-align: right; padding: 3px;\" | ' .. itemTable.energyType .. '\n'
            infobox = infobox .. fuelsSection(itemTable)
        end
--Grid Radius
infobox = infobox .. '|-\n| Grid Radius:\n| style=\"text-align: right; padding: 3px;\" | ' .. itemTable.gridRadius .. ' m\n'
--Energy Produced
infobox = infobox .. '|-\n| Energy Produced:\n| style=\"text-align: right; padding: 3px;\" | ' .. itemTable.energyProduced .. ' J\n'
--Energy Used
infobox = infobox .. '|-\n| Energy Used:\n| style=\"text-align: right; padding: 3px;\" | ' .. itemTable.energyUsed .. ' J\n'
end


        -- 'Fluid' section (if fludisUsed is not nil)
-- 'Fuel' Section (if fuelsUsed by Object)
        if itemTable.fluidsUsed ~= nil or itemTable.fluidsProduced ~= nil then
if itemTable.fuelsUsed ~= nil then
            infobox = infobox .. fluidsSection(itemTable)
-- Fuel Header
        end
infobox = infobox .. '|- style=\"background-color: #4688C0; text-align: center;\"\n| colspan=\"2\" | \'\'\'Fuel\'\'\'\n'
    end
 
--Fuels Used by Object
    -- Road Object header (if group == Road Items)
infobox = infobox .. '|-\n| Fuels Used:\n| style=\"text-align: right; padding: 3px;\" | ' .. itemTable.fuelsUsed .. '\n'
    if itemTable.group == L.t('Road Items') then
end
        infobox = infobox .. roadItemsSection(itemTable, itemimagename)
    end
-- 'Fluid' section (if fludisUsed is not nil)  
    infobox = infobox .. '|}'
            if itemTable.fluidsUsed ~= nil then  
    return infobox
            -- Liquid/Gas Header
end
                infobox = infobox .. '|- style=\"background-color: #4688C0; text-align: center;\"\n| colspan=\"2\" | \'\'\'Liquid/Gas\'\'\'\n'
 
           
function sectionHeader(title, count)
                --Input (fludisUsed)  
    return "|- style=\"background-color: #4688C0; text-align: center;\"\n| colspan=\"2\" | '''" .. L.t(title, count) .. "'''\n"
                infobox = infobox .. '|-\n| Input: \n| style=\"text-align: right; padding: 3px;\" | '
end
                    for a,b in ipairs(itemTable.fluidsUsed) do
 
                        local acceptedType =  b[1]
function sectionRow(label, content, count, unit)
                        local cRateString = string.gsub(b[2], "%s+", "")
    if unit ~= nil then
                        local consumingRate = tonumber(cRateString)
        content = tonumber(content)
                        infobox = infobox .. acceptedType .. ' at ' .. consumingRate .. ' L'
        unit = L.t(unit, content)
                        if (a ~= #itemTable.fluidsUsed) then
        local lang = mw.getContentLanguage()
                            infobox = infobox .. ', '
        content = lang:formatNum(content)
                        end
    else
                    end
        unit = ''
                infobox = infobox .. '\n'
    end
    return '|-\n| ' .. L.t(label, count) .. ':\n| style=\"text-align: right; padding: 3px;\" | ' .. content .. unit .. '\n'
--Output (liquidProduced)
end
infobox = infobox .. '|-\n| Output: \n| style=\"text-align: right; padding: 3px;\" | '
 
for a,b in ipairs(itemTable.fluidsProduced) do
function sectionImage(imageName, suffix)
local producedType = b[1]
    local image = checkImage(imageName, suffix)
                        local pRateString = string.gsub(b[2], "%s+", "")
    return '|-\n| colspan=\"2\" style=\"padding: 10px;\" | [[File:' .. image .. '|center|border|240px]]\n'
                        local producingRate = tonumber(pRateString)
end
if (producingRate == 0) then
 
producingRate = 'Rate of Input'
local function addToSet(set, key)
end
    set[key] = true
infobox = infobox .. producedType .. ' at ' .. producingRate .. ' L'
end
if (a ~= #itemTable.fluidsProduced) then
 
infobox = infobox .. ', '
local function setNotContains(set, key)
end
    return set[key] == nil
end
end
infobox = infobox .. '\n'
 
end
local function craftingSubSection(title, item, productsOrIngredients, recipes)
end
    local stations = {}
    local sortStations = {}
-- Road Object header (if group == Road Items)
    local stationString = ''
if itemTable.group == 'Road Items' then
    for _, recipeName in ipairs(productsOrIngredients[item]) do
infobox = infobox .. '|- style=\"text-align: center; background-color: #517ab2;\"\n| colspan=\"2\" | \'\'\'Road Object\'\'\'\n'
        local currentRecipe = recipes[recipeName]
        if currentRecipe ~= nil then
-- Object Placed Image
            if currentRecipe.variants[recipeName] ~= nil then
local image = 'NoImage.png|link=https://wiki.play.eco/index.php?title=Special:Upload&wpDestFile=' .. itemimagename .. '_Placed.png|[[Category:Pages_with_missing_placed]]'
                local currentStation = currentRecipe.craftStn[1][1]
if mw.title.makeTitle('File', itemimagename .. '_Placed.png').file.exists then
                 if setNotContains(stations, currentStation) then
image = itemimagename .. '_Placed.png'
                     addToSet(stations, currentStation)
elseif mw.title.makeTitle('File', itemimagename .. '_Placed.jpg').file.exists then
image = itemimagename .. '_Placed.jpg'
end
infobox = infobox .. '|-\n| colspan=\"2\" style=\"padding: 10px;\" | [[File:' .. image .. '|center|border|240px]]\n'
end
-- Tags Header
if itemTable.tagGroups ~= nil and itemTable.tagGroups ~= {} then
            -- Tags Header
            infobox = infobox .. '|- style=\"background-color: #4688C0; text-align: center;\"\n| colspan=\"2\" | \'\'\'Tags\'\'\'\n'
            local tags = itemTable.tagGroups
            local list = ''
            -- for each item in the list (a is position, b is value)           
            for a,b in ipairs(tags) do
            --if not these tags listed here
                if (b ~='[[Object]]' or b ~= '[[World  Object]]' or b ~= '[[Housing  Object]]') then
                    -- add the tag to the list
                    list = list .. b
                end
                -- if not the last item in the list
                 if (b ~= tags[#tags]) then
                     -- add a comma
                    list = list .. ', '
                 end
                 end
             end
             end
            -- Now the list is made add it to the infobox
            infobox = infobox .. '|- style=\"text-align: center;\"\n| colspan=\"2\" | ' .. list .. '\n'
         end
         end
    end
    if stations then
        for a, _ in pairs(stations) do
            table.insert(sortStations, a)
        end
        table.sort(sortStations)
        for i, n in ipairs(sortStations) do
            stationString = stationString .. ' [[' .. n .. ']]'
            if (n ~= sortStations[#sortStations]) then
                -- add a comma
                stationString = stationString .. ', '
            end
        end
        return sectionRow(title, stationString)
    else
        return sectionRow(title, L.t('N/A'))
    end
end
function generalSection(item, itemTable, craftingRecipes, args)
    -- 'General' section header
    section = sectionHeader('General')
    -- Is a product at these tables
    if craftingRecipes.products[item] ~= nil and Utils.tableLen(craftingRecipes.products[item]) >= 1 then
        section = section .. craftingSubSection('Created at', item, craftingRecipes.products, craftingRecipes.recipes)
    end
    -- Is an ingredient at these tables
    if craftingRecipes.ingredients[item] ~= nil and Utils.tableLen(craftingRecipes.ingredients[item]) >= 1 then
        section = section .. craftingSubSection('Used at', item, craftingRecipes.ingredients, craftingRecipes.recipes)
    end
    -- calories and nutrients (if itemTable.group == 'Food')
    if itemTable.group == L.t('Food') then
        section = section .. sectionRow('Calorie', itemTable.calories, tonumber(itemTable.calories), 'cal')
        section = section .. '|- valign=\"center\"\n| rowspan=\"4\" | ' .. L.t('Nutrients') .. ':\n'
        section = section .. '| style=\"color: red; text-align: right; padding: 3px;\" | ' .. L.t('Carbs') .. ': ' .. itemTable.carbs .. '\n'
        section = section .. '|- valign=\"center\"\n| style=\"color: orange; text-align: right; padding: 3px;\" | ' .. L.t('Protein') .. ': ' .. itemTable.protein .. '\n'
        section = section .. '|- valign=\"center\"\n| style=\"color: darkkhaki; text-align: right; padding: 3px;\" | ' .. L.t('Fat') .. ': ' .. itemTable.fat .. '\n'
        section = section .. '|- valign=\"center\"\n| style=\"color: limegreen; text-align: right; padding: 3px;\" | ' .. L.t('Vitamins') .. ': ' .. itemTable.vitamins .. '\n'
        section = section .. sectionRow('Nutrition Density', L.t('%s per 100 cals'):format(itemTable.density))
    end
    -- carried
    local carried
    if args.carried ~= nil and args.carried ~= '' then
        carried = args.carried
    else
        carried = itemTable.carried
    end
    section = section .. sectionRow('Carried in', carried)
    -- weight
    local weight
    if itemTable.weight ~= nil then
        weight = itemTable.weight/100
    else
        weight = '0.0'
    end
    section = section .. sectionRow('Weight', weight, nil, 'kg')
    -- stack limit
    if itemTable.maxStack ~= nil then
        section = section .. sectionRow('Stack limit', itemTable.maxStack)
    end
    -- yield
    if itemTable.yield ~= nil then
        section = section .. sectionRow('Improve Gathering', itemTable.yield)
    end
    -- fuel
    if itemTable.fuel ~= nil then
        section = section .. sectionRow('Fuel energy', itemTable.fuel, nil, 'J')
    end
    -- currency
    if itemTable.currency ~= nil then
        section = section .. "|- style=\"text-align: center;\"\n| colspan=\"2\" | " .. L.t('Can back a currency') .. "\n"
    end
    return section
end
function IDsSection(itemTable)
    -- 'IDs' section header
    section = sectionHeader('ID', 2)
    -- item id (type)
    section = section .. sectionRow('Item ID', itemTable.type)
    return section
end
function tagSection(itemTable, itemData)
    -- Tags Header
    local tags = itemTable.tagGroups
    section = sectionHeader('Tag', Utils.tableLen(tags))
    local list = ''
    -- for each item in the list (a is position, b is value)
    for a, b in ipairs(tags) do
        --if not these tags listed here
        if (b ~= L.t('Object') or b ~= L.t('World  Object') or b ~= L.t('Housing  Object')) then
            -- add the tag to the list
            -- HACK: Some tag localisations have spaces in the tag name, but not in the tag data
            local tagLink
            -- Some tags have multiple spaces? Possible data quality issue
            bClean = b:gsub("%s+", " ")
            if itemData.tags[bClean] ~= nil then
                tagLink = L.t('%s Tag'):format(bClean)
            else
                tagLink = L.t('%s Tag'):format(bClean:gsub(' ', ''))
            end
            list = list .. '[[' .. tagLink .. '|' .. bClean .. ']][[Category:' .. bClean .. ']]'
        end
        -- if not the last item in the list
        if (b ~= tags[#tags]) then
            -- add a comma
            list = list .. ', '
        end
    end
    -- Now the list is made add it to the infobox
    section = section .. '|- style=\"text-align: center;\"\n| colspan=\"2\" | ' .. list .. '\n'
    return section
end
function placementSection(itemTable, itemImageName)
    section = sectionHeader('World Object')
    -- Object Placed Image
    section = section .. sectionImage(itemImageName, 'Placed')
    -- 'Placement' section
    --Placement Header
    section = section .. sectionHeader('Placement')
    --Vechile
    if itemTable.mobile ~= nil then
        section = section .. sectionRow('Vehicle/Mobile Object', itemTable.mobile)
    end
    --Dimensions
    if itemTable.footprint ~= nil then
        section = section .. sectionRow('Dimensions (X,Y,Z)', itemTable.footprint)
    end
    --Material Tier
    if itemTable.materialTier ~= nil or itemTable.materialTier == 0 then
        section = section .. sectionRow('Room Material', itemTable.materialTier) .. '[[Category:Tier ' .. itemTable.materialTier .. ']]\n'
    end
    --Room Req.
    if itemTable.roomContainReq ~= nil then
        section = section .. sectionRow('Room Required', itemTable.roomContainReq)
    end
    --Room Size. Req.
    if itemTable.roomSizeReq ~= nil then
        section = section .. sectionRow('Room Size', itemTable.roomSizeReq, nil, 'm³')
    end
    --Room Mat. Req.
    if itemTable.roomMatReq ~= nil then
        section = section .. sectionRow('Room Materials', itemTable.roomMatReq)
    end
    return section
end
function objectFormSection(itemTable, itemImageName)
    return sectionImage(itemImageName, 'Form')
end
function housingSection(itemTable)
    -- Housing Header
    section = sectionHeader('Housing')
    --roomCategory
    section = section .. sectionRow('Room Category', itemTable.roomCategory) .. '[[Category:' .. itemTable.roomCategory .. ']]\n'
    if itemTable.roomCategory ~= L.t('Industrial') then
        if itemTable.furnitureType ~= nil then
            --furnitureType
            section = section .. sectionRow('Furniture Type', itemTable.furnitureType) .. '[[Category:' .. itemTable.furnitureType .. ']]\n'
            --Value of the object
            section = section .. sectionRow('Value', itemTable.skillValue)
            --Dim. Return % of Object
            section = section .. sectionRow('Dim. Return %', itemTable.repeatsDepreciation * 100, nil, '%')
        end
    end
    if itemTable.roomCategory == L.t('Industrial') then
        section = section .. "|- style=\"background-color: #red; text-align: center;\"\n| colspan=\"2\" | '''" .. L.t('ALL ROOM VALUE LOST') .. "'''\n"
    end
    return section
end
function storageSection(itemTable)
    -- Storage Header
    section = sectionHeader('Storage')
    --Inventory Slots
    section = section .. sectionRow('Inventory Slots', itemTable.inventorySlots)
    --inventoryMaxWeight
    if itemTable.inventoryMaxWeight ~= nil then
        maxWeightKg = itemTable.inventoryMaxWeight / 1000
        section = section .. sectionRow('Inventory Max Weight', maxWeightKg, nil, 'kg')
    else
        section = section .. sectionRow('Inventory Max Weight', L.t('Unlimited'))
    end
    return section
end
function powerSection(itemTable)
    -- Power Header
    section = sectionHeader('Power')
    --EngergyType
    section = section .. sectionRow('Energy Type', itemTable.energyType) .. '[[Category:' .. itemTable.energyType .. ']]\n'
    --Grid Radius
    section = section .. sectionRow('Grid Radius', itemTable.gridRadius, nil, 'm')
    --Energy Produced
    section = section .. sectionRow('Energy Produced', itemTable.energyProduced, nil, 'w')
    --Energy Used
    section = section .. sectionRow('Energy Used', itemTable.energyUsed, nil, 'w')
    return section
end
function fuelsSection(itemTable)
    -- Fuel Header
    section = sectionHeader('Fuel')
    --Fuels Used by Object
    section = section .. sectionRow('Fuels Used', '[[' .. L.t('%s Tag'):format(itemTable.fuelsUsed:gsub('[%[%]]+', '')) .. ']]')
    return section
end
function fluidsSection(itemTable)
    -- Liquid/Gas Header
    section = sectionHeader('Liquid/Gas')
    --Input (fludisUsed)
    if itemTable.fluidsUsed ~= nil then
        local list = ''
        for a, b in ipairs(itemTable.fluidsUsed) do
            local acceptedType = b[1]
            local cRateString = string.gsub(b[2], "%s+", "")
            local consumingRate = tonumber(cRateString)
            list = list .. L.t('%s at %sL'):format(acceptedType, consumingRate)
            if (a ~= #itemTable.fluidsUsed) then
                list = list .. ', '
            end
        end
        section = section .. sectionRow('Input', list)
    end


    --Output (liquidProduced)
    if itemTable.fluidsProduced ~= nil then
infobox = infobox .. '|}'
        local list = ''
return infobox
        for a, b in ipairs(itemTable.fluidsProduced) do
end
            local producedType = b[1]
            local pRateString = string.gsub(b[2], "%s+", "")
            local producingRate = tonumber(pRateString)
            if (producingRate == 0) then
                producingRate = 'Rate of Input'
            end
            list = list .. L.t('%s at %sL'):format(producedType, producingRate)
            if (a ~= #itemTable.fluidsProduced) then
                list = list .. ', '
            end
        end
        section = section .. sectionRow('Output', list)
    end
 
    return section
end
 
function roadItemsSection(itemTable, itemImageName)
    section = sectionHeader('Road Object')
 
    -- Object Placed Image
    section = section .. sectionImage(itemImageName, 'Placed')
    return section
end
 
function checkImage(imageName, suffix)
    local image = 'NoImage.png|link=https://wiki.play.eco/index.php?title=Special:Upload&wpDestFile=' .. imageName .. '_' .. suffix .. '.png|[[Category:Pages_with_missing_' .. suffix:lower() .. ']]'
    if mw.title.makeTitle('File', imageName .. '_' .. suffix .. '.png').file.exists then
        image = imageName .. '_' .. suffix .. '.png'
    elseif mw.title.makeTitle('File', imageName .. '_' .. suffix .. '.jpg').file.exists then
        image = imageName .. '_' .. suffix .. '.jpg'
    end
    return image
end


-- Main entry point for the Module
-- Main entry point for the Module
function p.ItemMain(frame)
function p.ItemMain()
     -- get args from the Template
     -- get args from the Template
     local args = Utils.normaliseArgs(frame)
     local args = norm()
 
   
     -- get item data
     -- get item data
     local itemData = mw.loadData("Module:ItemData")
     local itemData = require( "Module:ItemData" )
     return itemBox(args, itemData)
     return itemBox( args, itemData )
end
end


return p
return p
Please note that all contributions to Eco - English Wiki are considered to be released under the CC BY-NC-SA 4.0 (see Eco:Copyrights for details). If you do not want your writing to be edited mercilessly and redistributed at will, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource. Do not submit copyrighted work without permission!

To protect the wiki against automated edit spam, we kindly ask you to solve the following hCaptcha:

Cancel Editing help (opens in new window)

Template used on this page: