Please note that some information on this wiki is still based on the demo version.
If you notice any errors, feel free to correct them.

Module:UnitsRelicsTable

From Super Fantasy Kingdom Official Wiki
Revision as of 00:37, 8 November 2023 by imported>Cadaei (Created page with "local p = {} local cargo = mw.ext.cargo function p.Main( frame ) local allRelics = p.getAllRelics() local tables = 'units' local fields = 'name, requiredForRelic, benefitsFromRelics' local args = { orderBy = 'name' } local units = cargo.query( tables, fields, args ) local headerColumns = {'Units', 'Unlocks'} for i=1,#allRelics do table.insert(headerColumns, p.itemLink(allRelics[i], nil)) end local unitRows = {} for i = 1, #units do local unit = uni...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Displays a table of units and the relics they benefit from.

{{#invoke:UnitsRelicsTable|Main}}

Lua error: Error: Table relics not found..


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

function p.Main( frame )
	local allRelics = p.getAllRelics()

	local tables = 'units'
	local fields = 'name, requiredForRelic, benefitsFromRelics'
	local args = {
		orderBy = 'name'
	}
	local units = cargo.query( tables, fields, args )
	
	local headerColumns = {'Units', 'Unlocks'}
	for i=1,#allRelics do
		table.insert(headerColumns, p.itemLink(allRelics[i], nil))
	end
	
	local unitRows = {}
	for i = 1, #units do
		local unit = units[i]
		local rowColumns = {p.itemLink(unit.name, nil), p.itemLink(unit.requiredForRelic, nil)}
		for r=1,#allRelics do
			local benefitsFromRelic = ''
			if string.find(unit.benefitsFromRelics, allRelics[r]) then
				benefitsFromRelic = '✔'
			end
			table.insert(rowColumns, benefitsFromRelic)
		end
		
		table.insert(unitRows, '<td>'..table.concat(rowColumns, '</td><td>')..'</td>')
	end
	
	return '<table class="wikitable sortable">'..
		'<tr><th>'..table.concat(headerColumns, '</th><th>')..'</th></tr>'..
		'<tr>'..table.concat(unitRows, '</tr><tr>')..'</tr></table>'
end

function p.getAllRelics()
	-- return a table with all relic names
	local tables = 'relics'
	local fields = 'name'
	local args = {
		orderBy = 'name'
	}
	local results = cargo.query( tables, fields, args )
	local allRelics = {}
	
	for r = 1, #results do
		table.insert(allRelics, results[r].name)
	end
	return allRelics
end

function p.itemLink(link, name)
	local linkPart = link
	if name ~= nil then
		linkPart = link..'|'..name
	end
	return '[[File:'..link..'|16x16px|class=itemlink|alt=]] [['..linkPart..']]'
end

return p