Module:ArmorSet

local p = {} local cargo = mw.ext.cargo

function p.Main( frame ) local inpSet = frame.args['set'] local inpSource = frame.args['source'] local inpImage = frame.args['image']

-- prepare query local where = 'armorset = "' .. inpSet .. '"' tables = 'Item' fields = 'id, name, _pageName, bonus, heatres, coldres, dlcPackage, equipslot' local args = { where = 'type="Armor" AND ' .. where, orderBy = 'equipslot', groupBy = 'id,_pageName', limit = 10 }   -- itemlist local itemList = "" local foundHeatres, foundColdres = false local dlcPackage local attr = {["Accuracy"] = 0, ["Agility"] = 0, ["Grit"] = 0, ["Encumbrance"] = 0, ["Strength"] = 0, ["Survival"] = 0, ["Vitality"] = 0} local tempResis = {["HeatResi"] = 0, ["ColdResi"] = 0}

local results = cargo.query( tables, fields, args ) local lastEquipslot = -1 for r = 1, #results do       local result = results[r] -- item list itemList = itemList .. "* " .. frame:callParserFunction('#invoke:ItemLink', 'Main', result["_pageName"]) .. "\n" -- heat/cold res if tonumber(result["heatres"]) or 0 > 0 then foundHeatres = true tempResis["HeatResi"] = tempResis["HeatResi"] + tonumber(result["heatres"]) end if tonumber(result["coldres"]) or 0 > 0 then foundColdres = true tempResis["ColdResi"] = tempResis["ColdResi"] + tonumber(result["coldres"]) end -- bonus if result["bonus"] ~= "" then -- only add bonus of it is a differnet equipslot than the last one if result["equipslot"] ~= lastEquipslot then lastEquipslot = result["equipslot"] for x in string.gmatch(result["bonus"], "([^,]+)") do		       	local value, key = string.match(x,'(%d+)%s*(%a+)') if attr[key] then value = value + attr[key] attr[key] = value end end end end -- dlc if not dlcPackage then dlcPackage = result["dlcPackage"] end end -- prepare result -- headline local headline = ' ' .. inpSet .. ' \n' -- sub-headline local subHeadline = "" -- heat/cold res if foundHeatres then subHeadline = subHeadline .. " " .. tempResis["HeatResi"] .. " Heat resistance" end

if foundColdres then if foundHeatres then subHeadline = subHeadline .. ", "   	end subHeadline = subHeadline .. " " .. tempResis["ColdResi"] .. " Cold resistance" end if not foundHeatres and not foundColdres then subHeadline = subHeadline .. "No resistances" end -- bonus local bonus = "" for k, v in pairs(attr) do   	if v > 0 then if bonus ~= "" then bonus = bonus .. " "   		end bonus = bonus .. "+" .. v .. " " .. k   	end end if bonus ~= "" then --if foundColdres or foundHeatres then subHeadline = subHeadline .. ", "		--end subHeadline = subHeadline .. bonus end -- dlc if dlcPackage and dlcPackage ~= "" then subHeadline = subHeadline .. ", DLC " .. dlcPackage .. "" end subHeadline = subHeadline .. "\n" -- source local source = "" if inpSource and inpSource ~= "" then source = "The prerequisite to craft this is:\n" source = source .. "* " .. inpSource .. "\n" source = source .. " "   end -- image if inpImage and inpImage ~= "" then -- wrap itemList into a tabel and add the image to the second cell local itemListWrapped = '{|width="750px"\n' itemListWrapped = itemListWrapped .. '|width="500px"|\n' .. itemList .. '\n' itemListWrapped = itemListWrapped .. '| style="vertical-align:top;" | ' .. '' .. '\n' itemListWrapped = itemListWrapped .. '|}'   	itemList = itemListWrapped end return headline .. subHeadline .. ' \n' .. itemList .. source .. ' \n' end return p