Module:Character Appearances: Difference between revisions

From fractalthorns wiki
Jump to navigation Jump to search
No edit summary
McAwesome (talk | contribs)
m fractalthorns uses hyphens
 
(20 intermediate revisions by 2 users not shown)
Line 1: Line 1:
local package = {}
local p = {}


local appearances = {
local appearances = {
VERCE = {  
VERCE = {  
"the dark",
"[the dark]",
"endless night",
"[open arms for the endless night]",
"music and meter and rhyme",
"[music and meter and rhyme]",
"verses",
"[verses]",
"though strangers",
"[though strangers]",
"somehow i knew"
"[somehow i knew]",
},
VERDE = {
"[painting will never be the same]",
"[jealous pigments]",
"[afterlife]",
"[though strangers]",
"[somehow i knew]",
},
VIBRA = {
"[bit of a shame]",
"[afterlife]",
"[verses] (mentioned)",
"[though strangers]",
"[somehow i knew]",
"† [interviews i]",
"† [interviews ii]",
},
VERTI = {
"[the sun sets]",
"[marked stone]",
},
SILLH = {
"[virtues ii]",
"[discovery]",
"[canopy ii] (mentioned)",
"[canopy iii]",
"[canopy iv]",
"[commands]",
"[dejil's daughter] (mentioned)",
"[the fifth deity]",
"[canopy v] (mentioned)",
"[loose ends] (mentioned)",
"[end of a journey]",
"[virtues iii] (mentioned)",
"[repentance]",
"† [interviews ii] (mentioned)",
},
DZUNE = {
"[discovery] (mentioned)",
"[canopy ii] (mentioned)",
"[canpoy iii] (mentioned)",
"[commands] (mentioned)",
"[the fifth diety]",
"[canopy v] (mentioned)",
"[end of a journey]",
"[repentance]",
},
ZEHAL = {
"[being forgotten] (mentioned)",
"[i made a friend] (mentioned)",
"[lucky] (mentioned)",
"[obituary] (mentioned)",
"[starseeking] (mentioned)",
"[the historian] (mentioned)",
},
AEMIL = {
"[virtues ii]",
"[a piece of firebark]",
"[canopy i]",
"[canopy ii]",
"[canopy iii]",
"[canopy iv]",
"[canopy v]",
"[commands] (mentioned)",
"[dejil's daughter] (mentioned)",
"[through rockthorn]",
"[end of a journey] (mentioned)",
"† [interviews i]",
"† [interviews ii]",
},
LOXXE = {
"[virtues i]",
"[virtues ii]",
"[a piece of firebark]",
"[canopy i]",
"[canopy ii]",
"[canopy iii]",
"[canopy v]",
"[dejil's daughter]",
"[nothing without its price] (mentioned)",
"[loose ends] (mentioned)",
"[through rockthorn]",
"[virtues iii]",
"† [interviews i]",
"† [interviews ii]",
},
VETTE = {
"[dreams of sunlight]",
"[the historian] (mentioned)",
"[warning]",
"[lost and found]",
"[dark whispers]",
"[goodbyes i] (mentioned)",
"[goodbyes ii]",
"[secret agents] (mentioned)",
"[commands]",
"[the fifth diety]",
"[end of a journey]",
},
MELLI = {
"[dreams of sunlight]",
"[warning] (mentioned)",
"[dark whispers]",
"[goodbyes ii] (mentioned)",
},
KIRII = {
"[warning] (mentioned)",
"[lost and found]",
"[goodbyes i]",
"[secret agents]",
"[just in time]",
},
METIS = {
"[warning] (mentioned)",
"[lost and found]",
"[goodbyes i] (mentioned)",
"[secret agents]",
"[just in time]",
},
LOTUS = {
"[compromises i]",
"[compromises ii]",
"[halls of sculpture]",
"[exfiltration]",
"[warning] (mentioned)",
"[lost and found]",
"[secret agents] (mentioned)",
"[dark whispers]",
"[goodbyes i] (mentioned)",
"[goodbyes ii]",
"[life will change]",
"[only ashes to rule] (mentioned)",
},
DZANE = {
"[minehead]",
},
ROMAL = {
"[compromises i]",
"[compromises ii]",
"[the historian] (mentioned)",
"[exfiltration]",
"[goodbyes i]",
"[goodbyes ii]",
"[waiting to die]",
"[demonstration of spirit]",
"[just in time]",
"[life will change]",
"[loyalty] (mentioned)",
"[what was meant to be found]",
"[loose ends]",
"[end of a journey]",
"[decimation] (mentioned)",
"[only ashes to rule]",
"† [interviews i]",
"† [interviews ii]",
},
JAKAL = {
"[starseeking]",
"[demonstration of spirit]",
},
ELLAI = {
"[being forgotten]",
"[starseeking]",
"[the historian] (mentioned)",
"[demonstration of spirit]",
},
MEAZS = {
"[being forgotten]",
"[starseeking]",
"[the historian] (mentioned)",
"[demonstration of spirit]",
"[what they deserve]",
"[decimation] (mentioned)",
"[not weakness] (mentioned)",
"[the true king]",
"† [interviews i]",
},
JAELA = {
"[compromises i]",
"[compromises ii]",
"[exfiltration]",
"[goodbyes ii] (mentioned)",
"[life will change]",
"[meant to be found]",
},
TIMUR = {
"[meant to be found]"
},
EVJAR = {
"[waiting to die]",
"[life will change]",
"[loyalty]",
"[meant to be found]",
"[loose ends]",
"[end of a journey]",
"[only ashes to rule]",
"[repentance]",
"† [interviews i]",
"† [interviews ii]",
},
HEKAE = {
"[compromises ii]",
"[exfiltration]",
"[goodbyes ii]",
"[halls of sculpture]",
},
NIMEA = {
"[loose ends]"
},
KHYEL = {
"[compromises i]",
"[compromises ii]",
"[exfiltration]"
},
ARILI = {
"[virtues ii]",
"[canopy v] (mentioned)",
},
KEZSE = {
"[canopy v]",
"† [interviews ii]",
},
MALDA = {
"[weathered through doubt]",
"[the historian] (mentioned)"
},
MIKIL = {
"[waiting to die]",
"[life will change]",
"[loyalty] (mentioned)",
"† [interviews i] (mentioned)",
},
AERIS = {
"[compromises ii]",
"[goodbyes ii] (mentioned)",
},
SHAEL = {
"[through rockthorn]",
},
KAEZA = {
"[through rockthorn]",
},
LEZSE = {
"[not weakness]",
},
REAME = {
"[not weakness]",
},
KRYTA = {
"[goodbyes i]",
},
TEKAL = {
"[threads]",
"[virtues i]",
"[virtues iii] (mentioned)",
},
MEDZA = {
"[threads] (mentioned)",
},
KAELI = {
"[virtues i]",
},
LLEMA = {
"[virtues i]",
"† [interviews ii] (mentioned)",
},
SELTE = {
"[virtues ii]",
},
KAVUK = {
"[virtues iii]",
},
TEZEL = {
"[virtues iii]",
},
RIMII = {
"[virtues iii]",
},
HAGAZ = {
"[weathered through doubt]",
},
VANJE = {
"[weathered through doubt]",
},
KARUS = {
"[weathered through doubt]",
},
VESES = {
"[waiting to die]",
},
KIERA = {
"[waiting to die]",
},
NDEJA = {
"[weathered through doubt]",
},
SENNA = {
"[dreams of sunlight]",
},
VAEJA = {
"[rites]"
},
JERGH = {
"[rites]"
},
RUTHA = {
"[life will change]"
},
MEFET = {
"[losing a brother]",
"[reservoir]",
"[council] (mentioned)",
"[decimation]"
},
AURAK = {
"[concern]",
"[losing a brother]",
"[reservoir]",
"[scribe] (mentioned)",
"[council] (mentioned)",
"[lucky] (mentioned)",
"[obituary] (mentioned)",
"[what they deserve]",
"[decimation] (mentioned)",
"[glacier i] (mentioned)",
"[glacier ii] (mentioned)",
"[the true king] (mentioned)",
"† [interviews ii] (mentioned)"
},
YANIS = {
"[the genius of the summit]",
"[reservoir]",
"[decimation]",
},
TARAN = {
"[losing a brother]",
"[reservoir]",
"[council]",
"[decimation]",
"[glacier i]",
"[glacier ii]",
},
IGLAS = {
"[reservoir]",
"[council]",
"[scribe] (mentioned)",
"[dejil's daughter] (mentioned)",
"[decimation]",
"[not weakness]",
"[the true king]",
"[interviews i]",
"[interviews ii]",
},
WARES = {
"[the genius of the summit]",
"[losing a brother]",
"[reservoir]",
"[council]",
"[scribe] (mentioned)",
"[nothing without its price] (mentioned)",
"[providence] (mentioned)",
"[what they deserve] (mentioned)",
"[dejil's daughter]",
"[virtues iii] (mentioned)",
"[only ashes to rule]",
"[decimation] (mentioned)",
"† [interviews ii] (mentioned)",
},
NERAN = {
"[reservoir]",
"[council]",
"[what they deserve] (mentioned)",
"[decimation]",
},
CASEI = {
"[concern]",
"[losing a brother]",
"[i made a friend]",
"[lucky]",
"[obituary]",
"[starseeking]",
"[what they deserve] (mentioned)",
"[the historian]",
"[providence]",
},
COLUS = {
"[scribe]",
"[nothing without its price]",
"[providence] (mentioned)",
"† [interviews i] (mentioned)",
"† [interviews ii] (mentioned)",
},
ALUSE = {
"[heaven and hell]",
},
SETEI = {
"[heaven and hell]",
},
YARUS = {
"[dejil's daughter]",
"[only ashes to rule]",
},
DESSA = {
"[dejil's daughter]",
"[only ashes to rule]",
},
RIMAN = {
"[the genius of the summit]",
},
CALEN = {
"[the genius of the summit]",
},
ERISS = {
"[nothing without its price] (mentioned)",
},
FEREI = {
"[decimation]",
},
IWEML = {
"[glacier i]",
"[glacier ii]",
},
TACEK = {
"[providence]",
},
WEHAN = {
"[providence] (mentioned)",
},
FENAN = {
"[providence] (mentioned)",
},
EMBER = {
"[there it remains]",
"[death itself]",
"† [from a distance] (mentioned)",
"† [fruits of chaos]",
"† [deep hyperspace]",
"† [abandonment protocol]",
},
FLOAT = {
"[kindling]",
},
SIGIL = {
"[kindling]",
},
QUARK = {
"[kindling]",
},
PEARL = {
"[timeplace]",
},
PLUTO = {
"[timeplace]",
},
OCHRE = {
"[timeplace]",
"[death itself]",
"[from a distance] (mentioned)"
},
NYXEM = {
"[commencement]",
"[liftoff]",
"[little box]",
"[eight] (mentioned)",
"[the wanderer]",
"[pulse] (mentioned)",
"† [the hive queen]",
"† [somehow i knew]",
"† [heaven and hell]",
"† [the genius of the summit]",
"† [reservoir] (mentioned)",
"† [concern] (mentioned)",
"† [losing a brother] (mentioned)",
"† [i made a friend] (mentioned)",
"† [lucky] (mentioned)",
"† [obituary] (mentioned)",
"† [council] (mentioned)",
"† [scribe] (mentioned)",
"† [nothing without its price] (mentioned)",
"† [what they deserve] (mentioned)",
"† [decimation] (mentioned)",
"† [glacier i] (mentioned)",
"† [glacier ii]",
"† [not weakness] (mentioned)",
"† [the true king] (mentioned)",
"† [providence] (mentioned)",
"† [fruits of chaos] (mentioned)",
"[interviews i] (mentioned)",
"[interviews ii] (mentioned)",
"[abandonment protocol] (mentioned)",
"† [they are not alive]",
},
IOGOS = {
"[commencement] (mentioned)",
"[liftoff]",
"[little box]",
"[eight] (mentioned)",
"[pulse]",
"[seven hundred days]",
"[deep hyperspace]",
"[abandonment protocol]",
},
RHOMB = {
"[commencement] (mentioned)",
"[liftoff] (mentioned)",
"[little box] (mentioned)",
"[eight]",
"[the wanderer]",
"[seven hundred days] (mentioned)",
"[deep hyperspace]",
"[abandonment protocol] (mentioned)",
"† [the hive queen]",
"† [though strangers]",
"† [somehow i knew]",
"† [glacier ii]",
},
OEREC = {
"[liftoff]",
"[the wanderer]",
"[pulse]",
"[seven hundred days]",
"[deep hyperspace]",
"[interviews i]",
"[interviews ii]",
"[abandonment protocol]",
},
CYXYM = {
"[liftoff] (mentioned)"
},
NIMDA = {
"[pulse]",
"[seven hundred days]",
"[deep hyperspace]",
"[abandonment protocol]",
},
VITAS = {
"[pulse]",
"[seven hundred days]"
},
HALEN = {
"[seven hundred days]",
},
ZELUN = {
"[seven hundred days]",
"[equipment malfunction]",
"[interviews ii]",
},
NITAS = {
"[seven hundred days]",
},
NETRE = {
"[interviews i]",
"[interviews ii]",
},
SABRE = {
"[from a distance]",
}
}
}
}


function package.test(frame)
function p.get_table_for_character(frame)
local character = 'VERSE'
local character = frame.args[1]
local starts_collapsed = frame.args["starts_collapsed"]
local result = {}
local result = {}
local collapsed_class = starts_collapsed == "true" and "mw-collapsed" or ""
local append = function(str) result[#result + 1] = str end
result[#result + 1] = '<table class="wikitable mw-collapsible ' .. collapsed_class .. '" style="width: 100%; flex-basis: 23%;">'
result[#result + 1] = '<tr style="height: 20px;"><th>[[' .. character .. ']]</th></tr>'
append('{| class = "mediawiki')
append('! [[' .. character .. ']]')
for _, record in pairs(appearances[character]) do
for _, record in pairs(appearances[character]) do
local record_link = 'https://doughbyte.com/art/?show=' .. string.gsub(record, ' ', '_')
local pre_text = string.match(record, "(.+)%[") or ""
append('|-')
local record_name = string.match(record, "%[(.+)%]")
append('| [' .. record_link .. ' ' .. record .. ']')
local post_text = string.match(record, "%](.+)") or ""
local record_link = 'https://fractalthorns.com/episodic/' .. string.gsub(record_name, ' ', '-')
result[#result + 1] = '<tr><td>' .. pre_text .. '[' .. record_link .. ' ' .. record_name .. ']' .. post_text .. '</tr></td>'
end
end
append("|}")
result[#result + 1] = "</table>"
     return table.concat(result, '\n')
     return table.concat(result, '\n')
end
end


return package
return p

Latest revision as of 22:19, 28 June 2024

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

local p = {}

local appearances = {
	VERCE = { 
		"[the dark]",
		"[open arms for the endless night]",
		"[music and meter and rhyme]",
		"[verses]",
		"[though strangers]",
		"[somehow i knew]",
	},
	VERDE = {
		"[painting will never be the same]",
		"[jealous pigments]",
		"[afterlife]",
		"[though strangers]",
		"[somehow i knew]",
	},
	VIBRA = {
		"[bit of a shame]",
		"[afterlife]",
		"[verses] (mentioned)",
		"[though strangers]",
		"[somehow i knew]",
		"† [interviews i]",
		"† [interviews ii]",
	},
	VERTI = {
		"[the sun sets]",
		"[marked stone]",
	},
	SILLH = {
		"[virtues ii]",
		"[discovery]",
		"[canopy ii] (mentioned)",
		"[canopy iii]",
		"[canopy iv]",
		"[commands]",
		"[dejil's daughter] (mentioned)",
		"[the fifth deity]",
		"[canopy v] (mentioned)",
		"[loose ends] (mentioned)",
		"[end of a journey]",
		"[virtues iii] (mentioned)",
		"[repentance]",
		"† [interviews ii] (mentioned)",
	},
	DZUNE = {
		"[discovery] (mentioned)",
		"[canopy ii] (mentioned)",
		"[canpoy iii] (mentioned)",
		"[commands] (mentioned)",
		"[the fifth diety]",
		"[canopy v] (mentioned)",
		"[end of a journey]",
		"[repentance]",
	},
	ZEHAL = {
		"[being forgotten] (mentioned)",
		"[i made a friend] (mentioned)",
		"[lucky] (mentioned)",
		"[obituary] (mentioned)",
		"[starseeking] (mentioned)",
		"[the historian] (mentioned)",
	},
	AEMIL = {
		"[virtues ii]",
		"[a piece of firebark]",
		"[canopy i]",
		"[canopy ii]",
		"[canopy iii]",
		"[canopy iv]",
		"[canopy v]",
		"[commands] (mentioned)",
		"[dejil's daughter] (mentioned)",
		"[through rockthorn]",
		"[end of a journey] (mentioned)",
		"† [interviews i]",
		"† [interviews ii]",
	},
	LOXXE = {
		"[virtues i]",
		"[virtues ii]",
		"[a piece of firebark]",
		"[canopy i]",
		"[canopy ii]",
		"[canopy iii]",
		"[canopy v]",
		"[dejil's daughter]",
		"[nothing without its price] (mentioned)",
		"[loose ends] (mentioned)",
		"[through rockthorn]",
		"[virtues iii]",
		"† [interviews i]",
		"† [interviews ii]",
	},
	VETTE = {
		"[dreams of sunlight]",
		"[the historian] (mentioned)",
		"[warning]",
		"[lost and found]",
		"[dark whispers]",
		"[goodbyes i] (mentioned)",
		"[goodbyes ii]",
		"[secret agents] (mentioned)",
		"[commands]",
		"[the fifth diety]",
		"[end of a journey]",
	},
	MELLI = {
		"[dreams of sunlight]",
		"[warning] (mentioned)",
		"[dark whispers]",
		"[goodbyes ii] (mentioned)",
	},
	KIRII = {
		"[warning] (mentioned)",
		"[lost and found]",
		"[goodbyes i]",
		"[secret agents]",
		"[just in time]",
	},
	METIS = {
		"[warning] (mentioned)",
		"[lost and found]",
		"[goodbyes i] (mentioned)",
		"[secret agents]",
		"[just in time]",
	},
	LOTUS = {
		"[compromises i]",
		"[compromises ii]",
		"[halls of sculpture]",
		"[exfiltration]",
		"[warning] (mentioned)",
		"[lost and found]",
		"[secret agents] (mentioned)",
		"[dark whispers]",
		"[goodbyes i] (mentioned)",
		"[goodbyes ii]",
		"[life will change]",
		"[only ashes to rule] (mentioned)",
	},
	DZANE = {
		"[minehead]",
	},
	ROMAL = {
		"[compromises i]",
		"[compromises ii]",
		"[the historian] (mentioned)",
		"[exfiltration]",
		"[goodbyes i]",
		"[goodbyes ii]",
		"[waiting to die]",
		"[demonstration of spirit]",
		"[just in time]",
		"[life will change]",
		"[loyalty] (mentioned)",
		"[what was meant to be found]",
		"[loose ends]",
		"[end of a journey]",
		"[decimation] (mentioned)",
		"[only ashes to rule]",
		"† [interviews i]",
		"† [interviews ii]",
	},
	JAKAL = {
		"[starseeking]",
		"[demonstration of spirit]",
	},
	ELLAI = {
		"[being forgotten]",
		"[starseeking]",
		"[the historian] (mentioned)",
		"[demonstration of spirit]",
	},
	MEAZS = {
		"[being forgotten]",
		"[starseeking]",
		"[the historian] (mentioned)",
		"[demonstration of spirit]",
		"[what they deserve]",
		"[decimation] (mentioned)",
		"[not weakness] (mentioned)",
		"[the true king]",
		"† [interviews i]",
	},
	JAELA = {
		"[compromises i]",
		"[compromises ii]",
		"[exfiltration]",
		"[goodbyes ii] (mentioned)",
		"[life will change]",
		"[meant to be found]",
	},
	TIMUR = {
		"[meant to be found]"
	},
	EVJAR = {
		"[waiting to die]",
		"[life will change]",
		"[loyalty]",
		"[meant to be found]",
		"[loose ends]",
		"[end of a journey]",
		"[only ashes to rule]",
		"[repentance]",
		"† [interviews i]",
		"† [interviews ii]",
	},
	HEKAE = {
		"[compromises ii]",
		"[exfiltration]",
		"[goodbyes ii]",
		"[halls of sculpture]",
	},
	NIMEA = {
		"[loose ends]"
	},
	KHYEL = {
		"[compromises i]",
		"[compromises ii]",
		"[exfiltration]"
	},
	ARILI = {
		"[virtues ii]",
		"[canopy v] (mentioned)",
	},
	KEZSE = {
		"[canopy v]",
		"† [interviews ii]",
	},
	MALDA = {
		"[weathered through doubt]",
		"[the historian] (mentioned)"
	},
	MIKIL = {
		"[waiting to die]",
		"[life will change]",
		"[loyalty] (mentioned)",
		"† [interviews i] (mentioned)",
	},
	AERIS = {
		"[compromises ii]",
		"[goodbyes ii] (mentioned)",
	},
	SHAEL = {
		"[through rockthorn]",
	},
	KAEZA = {
		"[through rockthorn]",
	},
	LEZSE = {
		"[not weakness]",
	},
	REAME = {
		"[not weakness]",
	},
	KRYTA = {
		"[goodbyes i]",
	},
	TEKAL = {
		"[threads]",
		"[virtues i]",
		"[virtues iii] (mentioned)",
	},
	MEDZA = {
		"[threads] (mentioned)",
	},
	KAELI = {
		"[virtues i]",
	},
	LLEMA = {
		"[virtues i]",
		"† [interviews ii] (mentioned)",
	},
	SELTE = {
		"[virtues ii]",
	},
	KAVUK = {
		"[virtues iii]",
	},
	TEZEL = {
		"[virtues iii]",
	},
	RIMII = {
		"[virtues iii]",
	},
	HAGAZ = {
		"[weathered through doubt]",
	},
	VANJE = {
		"[weathered through doubt]",
	},
	KARUS = {
		"[weathered through doubt]",
	},
	VESES = {
		"[waiting to die]",
	},
	KIERA = {
		"[waiting to die]",
	},
	NDEJA = {
		"[weathered through doubt]",
	},
	SENNA = {
		"[dreams of sunlight]",
	},
	VAEJA = {
		"[rites]"
	},
	JERGH = {
		"[rites]"
	},
	RUTHA = {
		"[life will change]"
	},
	MEFET = {
		"[losing a brother]",
		"[reservoir]",
		"[council] (mentioned)",
		"[decimation]"
	},
	AURAK = {
		"[concern]",
		"[losing a brother]",
		"[reservoir]",
		"[scribe] (mentioned)",
		"[council] (mentioned)",
		"[lucky] (mentioned)",
		"[obituary] (mentioned)",
		"[what they deserve]",
		"[decimation] (mentioned)",
		"[glacier i] (mentioned)",
		"[glacier ii] (mentioned)",
		"[the true king] (mentioned)",
		"† [interviews ii] (mentioned)"
	},
	YANIS = {
		"[the genius of the summit]",
		"[reservoir]",
		"[decimation]",
	},
	TARAN = {
		"[losing a brother]",
		"[reservoir]",
		"[council]",
		"[decimation]",
		"[glacier i]",
		"[glacier ii]",
	},
	IGLAS = {
		"[reservoir]",
		"[council]",
		"[scribe] (mentioned)",
		"[dejil's daughter] (mentioned)",
		"[decimation]",
		"[not weakness]",
		"[the true king]",
		"[interviews i]",
		"[interviews ii]",
	},
	WARES = {
		"[the genius of the summit]",
		"[losing a brother]",
		"[reservoir]",
		"[council]",
		"[scribe] (mentioned)",
		"[nothing without its price] (mentioned)",
		"[providence] (mentioned)",
		"[what they deserve] (mentioned)",
		"[dejil's daughter]",
		"[virtues iii] (mentioned)",
		"[only ashes to rule]",
		"[decimation] (mentioned)",
		"† [interviews ii] (mentioned)",
	},
	NERAN = {
		"[reservoir]",
		"[council]",
		"[what they deserve] (mentioned)",
		"[decimation]",
	},
	CASEI = {
		"[concern]",
		"[losing a brother]",
		"[i made a friend]",
		"[lucky]",
		"[obituary]",
		"[starseeking]",
		"[what they deserve] (mentioned)",
		"[the historian]",
		"[providence]",
	},
	COLUS = {
		"[scribe]",
		"[nothing without its price]",
		"[providence] (mentioned)",
		"† [interviews i] (mentioned)",
		"† [interviews ii] (mentioned)",
	},
	ALUSE = {
		"[heaven and hell]",
	},
	SETEI = {
		"[heaven and hell]",
	},
	YARUS = {
		"[dejil's daughter]",
		"[only ashes to rule]",
	},
	DESSA = {
		"[dejil's daughter]",
		"[only ashes to rule]",
	},
	RIMAN = {
		"[the genius of the summit]",
	},
	CALEN = {
		"[the genius of the summit]",
	},
	ERISS = {
		"[nothing without its price] (mentioned)",
	},
	FEREI = {
		"[decimation]",
	},
	IWEML = {
		"[glacier i]",
		"[glacier ii]",
	},
	TACEK = {
		"[providence]",
	},
	WEHAN = {
		"[providence] (mentioned)",
	},
	FENAN = {
		"[providence] (mentioned)",
	},
	EMBER = {
		"[there it remains]",
		"[death itself]",
		"† [from a distance] (mentioned)",
		"† [fruits of chaos]",
		"† [deep hyperspace]",
		"† [abandonment protocol]",
	},
	FLOAT = {
		"[kindling]",
	},
	SIGIL = {
		"[kindling]",
	},
	QUARK = {
		"[kindling]",
	},
	PEARL = {
		"[timeplace]",
	},
	PLUTO = {
		"[timeplace]",
	},
	OCHRE = {
		"[timeplace]",
		"[death itself]",
		"[from a distance] (mentioned)"
	},
	NYXEM = {
		"[commencement]",
		"[liftoff]",
		"[little box]",
		"[eight] (mentioned)",
		"[the wanderer]",
		"[pulse] (mentioned)",
		"† [the hive queen]",
		"† [somehow i knew]",
		"† [heaven and hell]",
		"† [the genius of the summit]",
		"† [reservoir] (mentioned)",
		"† [concern] (mentioned)",
		"† [losing a brother] (mentioned)",
		"† [i made a friend] (mentioned)",
		"† [lucky] (mentioned)",
		"† [obituary] (mentioned)",
		"† [council] (mentioned)",
		"† [scribe] (mentioned)",
		"† [nothing without its price] (mentioned)",
		"† [what they deserve] (mentioned)",
		"† [decimation] (mentioned)",
		"† [glacier i] (mentioned)",
		"† [glacier ii]",
		"† [not weakness] (mentioned)",
		"† [the true king] (mentioned)",
		"† [providence] (mentioned)",
		"† [fruits of chaos] (mentioned)",
		"[interviews i] (mentioned)",
		"[interviews ii] (mentioned)",
		"[abandonment protocol] (mentioned)",
		"† [they are not alive]",
	},
	IOGOS = {
		"[commencement] (mentioned)",
		"[liftoff]",
		"[little box]",
		"[eight] (mentioned)",
		"[pulse]",
		"[seven hundred days]",
		"[deep hyperspace]",
		"[abandonment protocol]",
	},
	RHOMB = {
		"[commencement] (mentioned)",
		"[liftoff] (mentioned)",
		"[little box] (mentioned)",
		"[eight]",
		"[the wanderer]",
		"[seven hundred days] (mentioned)",
		"[deep hyperspace]",
		"[abandonment protocol] (mentioned)",
		"† [the hive queen]",
		"† [though strangers]",
		"† [somehow i knew]",
		"† [glacier ii]",
	},
	OEREC = {
		"[liftoff]",
		"[the wanderer]",
		"[pulse]",
		"[seven hundred days]",
		"[deep hyperspace]",
		"[interviews i]",
		"[interviews ii]",
		"[abandonment protocol]",
	},
	CYXYM = {
		"[liftoff] (mentioned)"
	},
	NIMDA = {
		"[pulse]",
		"[seven hundred days]",
		"[deep hyperspace]",
		"[abandonment protocol]",
	},
	VITAS = {
		"[pulse]",
		"[seven hundred days]"
	},
	HALEN = {
		"[seven hundred days]",
	},
	ZELUN = {
		"[seven hundred days]",
		"[equipment malfunction]",
		"[interviews ii]",
	},
	NITAS = {
		"[seven hundred days]",
	},
	NETRE = {
		"[interviews i]",
		"[interviews ii]",
	},
	SABRE = {
		"[from a distance]",
	}
}

function p.get_table_for_character(frame)
	local character = frame.args[1]
	local starts_collapsed = frame.args["starts_collapsed"]
	local result = {}
	
	local collapsed_class = starts_collapsed == "true" and "mw-collapsed" or ""
	result[#result + 1] = '<table class="wikitable mw-collapsible ' .. collapsed_class .. '" style="width: 100%; flex-basis: 23%;">'
	result[#result + 1] = '<tr style="height: 20px;"><th>[[' .. character .. ']]</th></tr>'
	
	for _, record in pairs(appearances[character]) do
		local pre_text = string.match(record, "(.+)%[") or ""
		local record_name = string.match(record, "%[(.+)%]") 
		local post_text = string.match(record, "%](.+)") or ""
		
		local record_link = 'https://fractalthorns.com/episodic/' .. string.gsub(record_name, ' ', '-')
		result[#result + 1] = '<tr><td>' .. pre_text .. '[' .. record_link .. ' ' .. record_name .. ']' .. post_text .. '</tr></td>'
	end
	
	result[#result + 1] = "</table>"
    return table.concat(result, '\n')
end

return p