Module:Items

From The Walkscape Walkthrough

Documentation for this module may be created at Module:Items/doc

local p = {}

local utilities = require('Module:Utilities')

local materials = utilities.getPageJson('Data:Material')
local collectables = utilities.getPageJson('Data:Collectable')
local consumables = utilities.getPageJson('Data:Consumable')

function p.getMaterialsTable()
    local materialsTable = {}
    table.insert(
        materialsTable, 
    	"{| class=\"wikitable sortable\"\n! colspan=\"2\" | Item || Value || Fine Value || Rarity || Keywords")
    
    for _, material in pairs(materials) do
        local keywords = {}
        if material.keywords ~= nil then
	        for _, keyword in pairs(material.keywords) do
	            table.insert(keywords, "[[" .. keyword:gsub("^%l", string.upper) .. "]]")
	        end
        end
	
        table.insert(
            materialsTable, 
            string.format(
                "|-\n| [[File:%s|25px]] || [[%s]] || [[Image:Money icon.png|link=Coins]] %s || [[Image:Money icon.png|link=Coins]] %s || %s || %s",
                utilities.getImageName(material.itemIcon),
                utilities.getReadableName(material.name),
                utilities.getFormattedValue({material.itemValue, material.itemValueMultiplier}),
                utilities.getFormattedValue({material.itemValue, material.itemValueMultiplier}), -- figure out calculating fine materials value
                utilities.getRarityImage(material.quality:gsub("^%l", string.upper)),
                table.concat(keywords, ", ")))
    end
    
    table.insert(materialsTable, "|}")
    return table.concat(materialsTable, "\n")
end

function p.getCollectablesTable()
	local coltable = {}
	table.insert(
		coltable,
		"{| class=\"wikitable sortable\"\n! colspan=\"2\" | Item || Value || Rarity || Requirements")
	
	for _, col in pairs(collectables) do
        local requirements = {}
        if col.requirements ~= nil then
	        for _, keyword in pairs(col.requirements) do
	            table.insert(requirements, "[[" .. keyword:gsub("^%l", string.upper) .. "]]")
	        end
        end
        
        if next(requirements) == nil then
        	table.insert(requirements, "\'\'None\'\'")
    	end
	
        table.insert(
            coltable, 
            string.format(
                "|-\n| [[File:%s|25px]] || [[%s]] || [[Image:Money icon.png|link=Coins]] %s || %s || %s",
                utilities.getImageName(col.itemIcon),
                utilities.getReadableName(col.name),
                utilities.getFormattedValue({col.itemValue, col.itemValueMultiplier}),
                utilities.getRarityImage(col.quality:gsub("^%l", string.upper)),
                table.concat(requirements, ", ")))
    end
	
	table.insert(coltable, "|}")
	return table.concat(coltable, "\n")
end

function p.getConsumablesTable()
	local contable = {}
	table.insert(
		contable,
		"{| class=\"wikitable sortable\"\n! colspan=\"2\" | Item || Value || Fine Value || Rarity")
	
	for _, col in pairs(consumables) do
        table.insert(
            contable, 
            string.format(
                "|-\n| [[File:%s|25px]] || [[%s]] || [[Image:Money icon.png|link=Coins]] %s || [[Image:Money icon.png|link=Coins]] %s || %s",
                utilities.getImageName(col.itemIcon),
                utilities.getReadableName(col.name),
                utilities.getFormattedValue({col.itemValue, col.itemValueMultiplier}),
                utilities.getFormattedValue({col.itemValue, col.itemValueMultiplier}), -- figure out how to get the fine value
                utilities.getRarityImage(col.quality:gsub("^%l", string.upper))))
    end
	
	table.insert(contable, "|}")
	return table.concat(contable, "\n")
end

return p