Module:FoodDetails
From Eco - English Wiki
Documentation[edit source]
This module provides the back end functionality of the Template:FoodDetails.
If the template is passed, this module creates a table using details from the following Modules:
local p = {} function p.main() local wiki = '' -- import the required modules local itemData = mw.loadData( "Module:ItemData" ) local recipeData = mw.loadData( "Module:CraftingRecipes" ) local plantData = mw.loadData( "Module:PlantData" ) -- assign modules for use local items = itemData.items local recipes = recipeData.recipes local plants = plantData.plants -- create the header of the table local header = "<table class=\"wikitable sortable\"> \n " header = header .. "<tr> \n " header = header .. "<th>Food</th> \n " header = header .. "<th>Calories</th> \n " header = header .. "<th data-sort-type=\"descending\" style=\"color: red;\">Carbs</th> \n " header = header .. "<th style=\"color: orange;\">Protein</th> \n " header = header .. "<th style=\"color: yellow;\">Fat</th> \n " header = header .. "<th style=\"color: lightgreen;\">Vitamins</th> \n " header = header .. "<th>Nutrition</th> \n " header = header .. "<th>Density (/100kcal)</th> \n " header = header .. "<th>Skill Point Contribution</th> \n " header = header .. "<th>Created With</th> \n " header = header .. "<th>Skill Needed</th> \n " header = header .. "<th>Skill Level</th> \n " header = header .. "<th data-sort-type=\"number\">Base Crafting Time(Min)</th> \n " header = header .. "</tr> \n " wiki = header for k,v in pairs(items) do local row = '' if v.group == 'Food' then --if (k == "Basic Salad" or k == "Fiddlehead Salad" or k == "Bear S U P R E M E" or k == "Charred Tomato" or k == "Tallow" or k == "Beet" or k == "Campfire Beans" or k == "Wheat") then local item = k row = row .. "<tr> \n " local nutrition = v.vitamins + v.carbs + v.protein + v.fat local sp_contribution = nutrition * v.calories -- print name, calories, carbs, protein, fat, vitamins, nutrition and skill point contribution from ItemData. row = row .. "<td> [[" .. item .. "]] </td> \n" row = row .. "<td>" .. v.calories .. " </td> \n" row = row .. "<td>" .. v.carbs .. "</td> \n" row = row .. "<td>" .. v.protein .. "</td> \n" row = row .. "<td>" .. v.fat .. "</td> \n" row = row .. "<td>" .. v.vitamins .. "</td> \n" row = row .. "<td>" .. nutrition .. "</td> \n" row = row .. "<td>" .. v.density .. "</td> \n" row = row .. "<td>" .. sp_contribution .. "</td> \n" local created = '' local skill = '' local skill_level = '' local baseCraftTime = '' local baseLaborCost = '' local baseXPGain = '' local recipe = '' local plant = '' if recipes[item] ~= nil then recipe = recipes[item] -- implies food item is created via a recipe with the item's name -- else -- for key,val in pairs(recipes) do -- for numx = 1, #val.variants[item].products and val.variants ~= '' do -- if val.variants[item].products[numx][1] == item then -- recipe = val -- implies food item is created via a differently named recipe (issue: selects the first found recipe) -- end -- end -- end end if recipe ~= '' then created = recipe.craftStn[1][1] if recipe.skillNeeds[1] == nil then skill = "none" -- implies a basic recipe like Campfire Beans skill_level = '-' else skill = recipe.skillNeeds[1][1] -- implies a "normal" recipe like Fiddlehead Salad that has a skill requirement skill_level = tonumber(recipe.skillNeeds[1][2]) end baseCraftTime = tonumber(recipe.baseCraftTime) if baseCraftTime == 0 then baseCraftTime = '?' -- it looks like many foods have erroneous 0 baseCraftTime, so these are explicitly marked suspect end else for key,val in pairs(plants) do if val.resourceItem == '[[' .. item .. ']]' then plant = val --implies food item is harvested from a plant end end if plant ~= '' then skill = "Gathering" skill_level = 0 if (plant.harvestTool ~= nil and plant.killOnHarvest == 'Yes') then created = plant.harvestTool --implies a plant like wheat that must be destroyed with a tool else created = "none" --implies a plant gathered like beets or huckleberry, even if the plant can be destroyed with a tool end baseCraftTime = 0 else --implies food item not created via a recipe or a plant created = "-" skill = "-" skill_level = "-" baseCraftTime = "-" end end if (skill ~= '' and skill ~= 'none' and skill ~= '-') then skill = "[[" .. skill .. "]]" end if (created ~= '' and created ~= 'none' and created ~= '-') then created = "[[" .. created .. "]]" end -- print the icon or none for the found created. row = row .. "<td>" .. tostring(created) .. "</td> \n" -- print skill needed or none. row = row .. "<td>" .. tostring(skill) .. "</td> \n" -- print skill level needed. row = row .. "<td>" .. tostring(skill_level) .. "</td> \n" -- print crafting minutes. row = row .. "<td>" .. baseCraftTime .. "</td> \n" row = row .. "</tr>" --print(item) --print(tostring(created)) --print(tostring(skill)) --print(tostring(skill_level)) --print(tostring(baseCraftTime)) --print("") --end end -- add row created to table. wiki = wiki .. row end wiki = wiki .. " </table>" return wiki end return p