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: Difference between revisions

From Super Fantasy Kingdom Official Wiki
imported>Cadaei
unit->hero
imported>CadsBot
→top: guardian->hero->unit
Line 5: Line 5:
local allRelics = p.getAllRelics()
local allRelics = p.getAllRelics()


local tables = 'Heroes'
local tables = 'Units'
local fields = 'name, requiredForRelics, benefitsFromRelics'
local fields = 'name, requiredForRelics, benefitsFromRelics'
local args = {
local args = {
orderBy = 'name'
orderBy = 'name'
}
}
local heroes = cargo.query( tables, fields, args )
local units = cargo.query( tables, fields, args )
local headerColumns = {'Heroes', 'Unlocks'}
local headerColumns = {'Units', 'Unlocks'}
for i=1,#allRelics do
for i=1,#allRelics do
table.insert(headerColumns, p.itemLink(allRelics[i], ''))
table.insert(headerColumns, p.itemLink(allRelics[i], ''))
end
end
local heroRows = {}
local unitRows = {}
for i = 1, #heroes do
for i = 1, #units do
local hero = heroes[i]
local unit = units[i]
local requiredForRelics = ''
local requiredForRelics = ''
if (hero.requiredForRelics or '') ~= '' then
if (unit.requiredForRelics or '') ~= '' then
local requiredForRelicsEntries = {}
local requiredForRelicsEntries = {}
for relic in string.gmatch(hero.requiredForRelics, '%s*([^,]+)') do
for relic in string.gmatch(unit.requiredForRelics, '%s*([^,]+)') do
table.insert(requiredForRelicsEntries, p.itemLink(relic, nil))
table.insert(requiredForRelicsEntries, p.itemLink(relic, nil))
end
end
Line 29: Line 29:
end
end
local rowColumns = {p.itemLink(hero.name, nil), requiredForRelics}
local rowColumns = {p.itemLink(unit.name, nil), requiredForRelics}
for r=1,#allRelics do
for r=1,#allRelics do
local benefitsFromRelic = ''
local benefitsFromRelic = ''
if hero.benefitsFromRelics ~= nil and string.find(hero.benefitsFromRelics, allRelics[r]) then
if unit.benefitsFromRelics ~= nil and string.find(unit.benefitsFromRelics, allRelics[r]) then
benefitsFromRelic = '✔'
benefitsFromRelic = '✔'
end
end
Line 38: Line 38:
end
end
table.insert(heroRows, '<td>'..table.concat(rowColumns, '</td><td>')..'</td>')
table.insert(unitRows, '<td>'..table.concat(rowColumns, '</td><td>')..'</td>')
end
end
return '<table class="wikitable sortable stickyheader stickyfirstcol">'..
return '<table class="wikitable sortable stickyheader stickyfirstcol">'..
'<tr><th>'..table.concat(headerColumns, '</th><th>')..'</th></tr>'..
'<tr><th>'..table.concat(headerColumns, '</th><th>')..'</th></tr>'..
'<tr>'..table.concat(heroRows, '</tr><tr>')..'</tr></table>'
'<tr>'..table.concat(unitRows, '</tr><tr>')..'</tr></table>'
end
end



Revision as of 20:41, 20 October 2025


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

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

	local tables = 'Units'
	local fields = 'name, requiredForRelics, 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], ''))
	end
	
	local unitRows = {}
	for i = 1, #units do
		local unit = units[i]
		local requiredForRelics = ''
		if (unit.requiredForRelics or '') ~= '' then
			local requiredForRelicsEntries = {}
			for relic in string.gmatch(unit.requiredForRelics, '%s*([^,]+)') do
				table.insert(requiredForRelicsEntries, p.itemLink(relic, nil))
			end
			requiredForRelics = table.concat(requiredForRelicsEntries, '</br>')
		end
		
		local rowColumns = {p.itemLink(unit.name, nil), requiredForRelics}
		for r=1,#allRelics do
			local benefitsFromRelic = ''
			if unit.benefitsFromRelics ~= nil and 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 stickyheader stickyfirstcol">'..
		'<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)
	if link == nil or link == '' then
		return ''
	end
	
	local linkPart = ' [['..link..']]'
	local imageLink = ''
	if name ~= nil then
		if name == '' then
			linkPart = ''
			imageLink = '|link='..link
		else
			linkPart = ' [['..link..'|'..name..']]'
		end
	end
	return '[[File:'..link..'.png|16x16px|class=itemlink|alt='..imageLink..']]'..linkPart
end

return p