Module:Infobox/editedcopy

local p = {}

-- 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 function itemBox( args, itemData ) -- check that all necessary arguments are passed correctly if args.name == nil or args.name == '' then return '\'name\' must be specified.' end

local item = args.name

local itemTable = itemData.items[item] if itemTable == nil then return item .. ' could not be found in Module:ItemData.' end

-- string used to build the infobox local infobox = '{| class=\"infobox\"\n'

-- name of the item infobox = infobox .. '|- style=\"background-color: darkred; text-align: center;\"\n| colspan=\"2\" | \'\'\' ' .. item .. ' \'\'\'\n'

-- the item's type (ItemData - group) infobox = infobox .. '|- style=\"text-align: center; background-color: ' if itemTable.group == 'Food' then    infobox = infobox .. '#4b9130;\"\n| colspan=\"2\" | \'\'\'Food\'\'\'\n' elseif itemTable.group == 'Skill Books' or itemTable.group == 'Skill Scrolls' then infobox = infobox .. '#af8d33;\"\n| colspan=\"2\" | \'\'\ .. itemTable.group .. '\'\'\'\n' else    infobox = infobox .. '#517ab2;\"\n| colspan=\"2\" | \'\'\ .. itemTable.group .. '\'\'\'\n' end

-- Items Icon Image local image = string.gsub(item, ' ', '') .. '_Icon.png' if not mw.title.makeTitle('File', image).exists then image = string.gsub(item, ' ', '') .. '_Icon.jpg' if not mw.title.makeTitle('File', image).exists then image = 'NoImage.png|link=https://eco.gamepedia.com/index.php?title=Special:Upload&wpDestFile=' .. string.gsub(item, ' ', '') .. '_Icon.png' end end

infobox = infobox .. '|-\n| colspan=\"2\" style=\"padding: 10px;\" | \n'

-- 'General' section header infobox = infobox .. '|- style=\"background-color: #4B9130; 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 = 1, #recipes[v].products do        if (recipes[v].products[num][1] ~= nil and recipes[v].products[num][1] == item) 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;\" |' end end end end

local track = 0 if found == true then for a, b in pairs(stations) 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;\" | N/A\n' end elseif args.created ~= nil and args.created ~= '' then infobox = infobox .. '|-\n| Created at:\n| style=\"text-align: right;\" | ' .. args.created .. '\n' else infobox = infobox .. '|-\n| Created at:\n| style=\"text-align: right;\" | N/A\n' end

-- calories and nutrients (if itemTable.group == 'Food') if itemTable.group == 'Food' then infobox = infobox .. '|-\n| Calories:\n| style=\"text-align: right;\" | ' .. itemTable.calories .. '\n|- valign=\"center\"\n| rowspan=\"4\" | Nutrients:\n' infobox = infobox .. '| style=\"color: red; text-align: right;\" | Carbs: ' .. itemTable.carbs .. '\n' infobox = infobox .. '|- valign=\"center\"\n| style=\"color: orange; text-align: right;\" | Protein: ' .. itemTable.protein .. '\n' infobox = infobox .. '|- valign=\"center\"\n| style=\"color: yellow; text-align: right;\" | Fat: ' .. itemTable.fat .. '\n' infobox = infobox .. '|- valign=\"center\"\n| style=\"color: limegreen; text-align: right;\" | Vitamins: ' .. itemTable.vitamins .. '\n' infobox = infobox .. '|-\n| Nutrition Density:\n| style=\"text-align: right;\" | ' .. itemTable.density .. ' per 100 cals\n' end

-- carried if args.carried ~= nil and args.carried ~= '' then infobox = infobox .. '|-\n| Carried in:\n| style=\"text-align: right;\" | ' .. args.carried .. '\n' else infobox = infobox .. '|-\n| Carried in:\n| style=\"text-align: right;\" | ' .. itemTable.carried .. '\n' end

-- weight if itemTable.weight ~= nil then infobox = infobox .. '|-\n| Weight:\n| style="text-align: right;" | ' .. itemTable.weight .. 'kg\n' else infobox = infobox .. '|-\n| Weight:\n| style="text-align: right;" | 0.00kg\n' end

-- stack limit if itemTable.maxStack ~= nil then infobox = infobox .. '|-\n| Stack limit:\n| style=\"text-align: right;\" | ' .. itemTable.maxStack .. '\n' end

-- yield if itemTable.yield ~= nil then infobox = infobox .. '|-\n| Improve Gathering: \n| style=\"text-align: right;\" | ' .. itemTable.yield .. '\n' end

-- fuel if itemTable.fuel ~= nil then infobox = infobox .. '|-\n| Fuel energy:\n| style=\"text-align: right;\" | ' .. itemTable.fuel .. 'J\n' end

-- currency if itemTable.currency ~= nil then infobox = infobox .. '|-\n| Used as Currency:\n| style=\"text-align: right;\" | ' .. itemTable.currency .. '\n' end

-- 'IDs' section header infobox = infobox .. '|- style=\"background-color: #4B9130; text-align: center;\"\n| colspan=\"2\" | \'\'\'IDs\'\'\'\n'

-- item id (type) infobox = infobox .. '|- valign=\"center\"\n| Item ID:\n| style=\"text-align: right;\" | ' .. itemTable.type .. '\n'

-- id number (type id) infobox = infobox .. '|- valign=\"center\"\n| ID Number:\n| style=\"text-align: right;\" | ' .. itemTable.typeID .. '\n'

-- 'Item' World Object header (if itemTable.group = Placeable or Blocks) if itemTable.group == 'Block Items' or itemTable.group == 'World Object Items' then infobox = infobox .. '|- style=\"text-align: center; background-color: #517ab2;\"\n| colspan=\"2\" | \'\'\'World Object\'\'\'\n'

-- Object Placed Image local image = string.gsub(item, ' ', '') .. '_Placed.png' if not mw.title.makeTitle('File', image).exists then image = string.gsub(item, ' ', '') .. '_Placed.jpg' if not mw.title.makeTitle('File', image).exists then image = 'NoImage.png|link=https://eco.gamepedia.com/index.php?title=Special:Upload&wpDestFile=' .. string.gsub(item, ' ', '') .. '_Placed.png' end end

infobox = infobox .. '|-\n| colspan=\"2\" style=\"padding: 10px;\" | \n'

-- 'Placement' section --Placement Header infobox = infobox .. '|- style=\"background-color: #4B9130; text-align: center;\"\n| colspan=\"2\" | \'\'\'Placement\'\'\'\n'

--Vechile if itemTable.mobile ~= nil then infobox = infobox .. '|-\n| Vehicle/Mobile Object:\n| style=\"text-align: right;\" | ' .. itemTable.mobile .. '\n' end

--Dimensions if itemTable.footprint ~= nil then infobox = infobox .. '|-\n| Dimensions (X,Y,Z):\n| style=\"text-align: right;\" | ' .. 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;\" | Tier ' .. itemTable.materialTier .. '\n' end

--Room Req. if itemTable.roomContainReq ~= nil then infobox = infobox .. '|-\n| Room Required:\n| style=\"text-align: right;\" | ' .. itemTable.roomContainReq .. '\n' end

--Room Size. Req. if itemTable.roomSizeReq ~= nil then infobox = infobox .. '|-\n| Room Size:\n| style=\"text-align: right;\" | ' .. itemTable.roomSizeReq .. 'm³\n' end

--Room Mat. Req. if itemTable.roomMatReq ~= nil then infobox = infobox .. '|-\n| Room Materials:\n| style=\"text-align: right;\" | ' .. itemTable.roomMatReq .. '\n' end

-- Object Form Image if itemTable.group == 'Block Items' then local image = string.gsub(item, ' ', '') .. '_Form.png' if not mw.title.makeTitle('File', image).exists then image = string.gsub(item, ' ', '') .. '_Form.jpg' if not mw.title.makeTitle('File', image).exists then image = 'NoImage.png|link=https://eco.gamepedia.com/index.php?title=Special:Upload&wpDestFile=' .. string.gsub(item, ' ', '') .. '_Form.png' end end

infobox = infobox .. '|-\n| colspan=\"2\" style=\"padding: 10px;\" | \n' end

-- 'Housing' section (if there is a Room Category) if itemTable.roomCategory ~= nil then -- Housing Header infobox = infobox .. '|- style=\"background-color: #4B9130; text-align: center;\"\n| colspan=\"2\" | \'\'\'Housing\'\'\'\n'

--roomCategory infobox = infobox .. '|-\n| Room Category:\n| style=\"text-align: right;\" | ' .. itemTable.roomCategory .. '\n'

if itemTable.roomCategory ~= 'Industrial' then if itemTable.furnitureType ~= nil then --furnitureType infobox = infobox .. '|-\n| Furniture Type:\n| style=\"text-align: right;\" | ' .. itemTable.furnitureType .. '\n'

--Value of the object infobox = infobox .. '|-\n| Value:\n| style=\"text-align: right;\" | ' .. itemTable.skillValue .. '\n'

--Dim. Return % of Object infobox = infobox .. '|-\n| Dim. Return %:\n| style=\"text-align: right;\" | ' .. 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

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

--EngergyType infobox = infobox .. '|-\n| Energy Type:\n| style=\"text-align: right;\" | ' .. itemTable.energyType .. '\n'

--Grid Radius infobox = infobox .. '|-\n| Grid Radius:\n| style=\"text-align: right;\" | ' .. itemTable.gridRadius .. 'm\n'

--Energy Produced infobox = infobox .. '|-\n| Energy Produced:\n| style=\"text-align: right;\" | ' .. itemTable.energyProduced .. 'J\n'

--Energy Used infobox = infobox .. '|-\n| Energy Used:\n| style=\"text-align: right;\" | ' .. itemTable.energyUsed .. 'J\n' end

-- 'Fuel' Section (if fuelsUsed by Object) if itemTable.fuelsUsed ~= nil then -- Fuel Header infobox = infobox .. '|- style=\"background-color: #4B9130; text-align: center;\"\n| colspan=\"2\" | \'\'\'Fuel\'\'\'\n'

--Fuels Used by Object infobox = infobox .. '|-\n| Fuels Used:\n| style=\"text-align: right;\" | ' .. itemTable.fuelsUsed .. '\n' end end

-- Road Object header (if group == Road Items) if itemTable.group == 'Road Items' then infobox = infobox .. '|- style=\"text-align: center; background-color: #517ab2;\"\n| colspan=\"2\" | \'\'\'Road Object\'\'\'\n'

-- Object Placed Image local image = string.gsub(item, ' ', '') .. '_Placed.png' if not mw.title.makeTitle('File', image).exists then image = string.gsub(item, ' ', '') .. '_Placed.jpg' if not mw.title.makeTitle('File', image).exists then image = 'NoImage.png|link=https://eco.gamepedia.com/index.php?title=Special:Upload&wpDestFile=' .. string.gsub(item, ' ', '') .. '_Placed.png' end end infobox = infobox .. '|-\n| colspan=\"2\" style=\"padding: 10px;\" | \n' end

infobox = infobox .. '|}'

return infobox end

-- Main entry point for the Module function p.ItemMain -- get args from the Template local args = norm

-- get item data local itemData = require( "Module:ItemData" )

return itemBox( args, itemData )

end

return p