<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.geministation.com/index.php?action=history&amp;feed=atom&amp;title=Module%3AMissionreq</id>
	<title>Module:Missionreq - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.geministation.com/index.php?action=history&amp;feed=atom&amp;title=Module%3AMissionreq"/>
	<link rel="alternate" type="text/html" href="https://wiki.geministation.com/index.php?title=Module:Missionreq&amp;action=history"/>
	<updated>2026-06-04T09:06:43Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki.geministation.com/index.php?title=Module:Missionreq&amp;diff=5413&amp;oldid=prev</id>
		<title>Banri at 23:58, 12 June 2020</title>
		<link rel="alternate" type="text/html" href="https://wiki.geministation.com/index.php?title=Module:Missionreq&amp;diff=5413&amp;oldid=prev"/>
		<updated>2020-06-12T23:58:24Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 23:58, 12 June 2020&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l36&quot;&gt;Line 36:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 36:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			:tag(&amp;#039;th&amp;#039;)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			:tag(&amp;#039;th&amp;#039;)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			:css(&amp;#039;text-align&amp;#039;,&amp;#039;left&amp;#039;)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			:css(&amp;#039;text-align&amp;#039;,&amp;#039;left&amp;#039;)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			:wikitext(&#039;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[File:Mission.png|21px|link=]] &lt;/del&gt;Missions:&#039;)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			:wikitext(&#039;Missions:&#039;)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			:done()&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			:done()&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		:done()&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		:done()&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Banri</name></author>
	</entry>
	<entry>
		<id>https://wiki.geministation.com/index.php?title=Module:Missionreq&amp;diff=5406&amp;oldid=prev</id>
		<title>Banri: Created page with &quot;--  -- Part of Template:Missionreq&#039;s implementation -- For information on how to update this page, please see Module talk:Missionreq -- &lt;nowiki&gt; --  local p = {}  -- L...&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.geministation.com/index.php?title=Module:Missionreq&amp;diff=5406&amp;oldid=prev"/>
		<updated>2020-06-12T22:28:09Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;--  -- Part of &lt;a href=&quot;/Template:Missionreq&quot; title=&quot;Template:Missionreq&quot;&gt;Template:Missionreq&lt;/a&gt;&amp;#039;s implementation -- For information on how to update this page, please see &lt;a href=&quot;/index.php?title=Module_talk:Missionreq&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Module talk:Missionreq (page does not exist)&quot;&gt;Module talk:Missionreq&lt;/a&gt; -- &amp;lt;nowiki&amp;gt; --  local p = {}  -- L...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;-- &lt;br /&gt;
-- Part of [[Template:Missionreq]]&amp;#039;s implementation&lt;br /&gt;
-- For information on how to update this page, please see [[Module talk:Missionreq]]&lt;br /&gt;
-- &amp;lt;nowiki&amp;gt;&lt;br /&gt;
--&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
-- Load data from mission list&lt;br /&gt;
local missions = mw.loadData(&amp;#039;Module:Missionreq/data&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
-- Main function&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	local args = frame:getParent().args&lt;br /&gt;
	local mission = args[1]&lt;br /&gt;
	local limit = tonumber(args[2]) or 9&lt;br /&gt;
	local closed = args[3] ~= &amp;#039;open&amp;#039;&lt;br /&gt;
	return p._main(mission,limit,closed)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._main(mission,limit,closed)&lt;br /&gt;
    &lt;br /&gt;
    local closedCss = &amp;#039;&amp;#039;&lt;br /&gt;
    if closed then&lt;br /&gt;
        closedCss = &amp;#039;mw-collapsed&amp;#039;&lt;br /&gt;
    else&lt;br /&gt;
        closedCss = &amp;#039;mw-open&amp;#039;&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
	return mw.html.create(&amp;#039;table&amp;#039;)&lt;br /&gt;
			:addClass(&amp;#039;mw-collapsible&amp;#039;)&lt;br /&gt;
			:addClass(closedCss)&lt;br /&gt;
			:addClass(&amp;#039;missionreq&amp;#039;)&lt;br /&gt;
			:css(&amp;#039;background&amp;#039;,&amp;#039;none&amp;#039;)&lt;br /&gt;
		:tag(&amp;#039;tr&amp;#039;)&lt;br /&gt;
			:tag(&amp;#039;th&amp;#039;)&lt;br /&gt;
			:css(&amp;#039;text-align&amp;#039;,&amp;#039;left&amp;#039;)&lt;br /&gt;
			:wikitext(&amp;#039;[[File:Mission.png|21px|link=]] Missions:&amp;#039;)&lt;br /&gt;
			:done()&lt;br /&gt;
		:done()&lt;br /&gt;
		:tag(&amp;#039;tr&amp;#039;)&lt;br /&gt;
			:tag(&amp;#039;td&amp;#039;)&lt;br /&gt;
				:css(&amp;#039;padding-left&amp;#039;,&amp;#039;25px&amp;#039;)&lt;br /&gt;
				:tag(&amp;#039;ul&amp;#039;)&lt;br /&gt;
					:node( list_reqs(mission,1,limit) )&lt;br /&gt;
				:done()&lt;br /&gt;
			:done()&lt;br /&gt;
		:done()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
-- Recursive list function&lt;br /&gt;
-- Level determines how deep the indentation is&lt;br /&gt;
-- Replaces &amp;#039;Started:&amp;#039; modifier&lt;br /&gt;
-- If the mission just listed was found in the big list and the limit for level is not reached&lt;br /&gt;
-- the mission&amp;#039;s requirements will be listed as a sublist 1 level deeper&lt;br /&gt;
--&lt;br /&gt;
function list_reqs(mission,level,limit)&lt;br /&gt;
	local req_name, sub_req_list&lt;br /&gt;
	if mission then&lt;br /&gt;
		local started&lt;br /&gt;
		-- Look for the &amp;#039;Started:&amp;#039; modifier and replace it&lt;br /&gt;
		-- If found, set boolean to true&lt;br /&gt;
		if mission:find(&amp;#039;Started:&amp;#039;) then&lt;br /&gt;
			mission = mission:gsub(&amp;#039;Started:%s*&amp;#039;,&amp;#039;&amp;#039;)&lt;br /&gt;
			started = true&lt;br /&gt;
		end&lt;br /&gt;
		-- Look for mission in the list&lt;br /&gt;
		local subreqs = missions[mission]&lt;br /&gt;
		if subreqs then&lt;br /&gt;
			if started then&lt;br /&gt;
				req_name = &amp;#039;Started &amp;#039; .. tidy_link(mission)&lt;br /&gt;
			else&lt;br /&gt;
				req_name = tidy_link(mission)&lt;br /&gt;
			end&lt;br /&gt;
			-- For every requirement, call this function again&lt;br /&gt;
			-- Handled the same, but 1 level deeper&lt;br /&gt;
			-- If limit is reached, denote extra requirements exist with ellipses&lt;br /&gt;
            if subreqs[1] then&lt;br /&gt;
                if level &amp;lt;= limit then&lt;br /&gt;
					sub_req_list = mw.html.create(&amp;#039;ul&amp;#039;)&lt;br /&gt;
                    for i, q in ipairs(subreqs) do&lt;br /&gt;
						local sub_list = list_reqs(q,level+1,limit)&lt;br /&gt;
						sub_req_list:node(sub_list)&lt;br /&gt;
					end&lt;br /&gt;
					sub_req_list:done()&lt;br /&gt;
                else&lt;br /&gt;
                    req_name = req_name .. &amp;#039;…&amp;#039;&lt;br /&gt;
                end&lt;br /&gt;
            end&lt;br /&gt;
		else&lt;br /&gt;
		-- If the requirement can&amp;#039;t be found in the big list&lt;br /&gt;
		-- Paste it as is and skip any attempt to make a sublist&lt;br /&gt;
			req_name =  mission&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local ret = mw.html.create(&amp;#039;li&amp;#039;)&lt;br /&gt;
				:wikitext(req_name)&lt;br /&gt;
&lt;br /&gt;
	if sub_req_list then&lt;br /&gt;
		ret:node(sub_req_list)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return ret:done()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Function to simply get a list of missions needed, as JSON, for further processing&lt;br /&gt;
function p.JSON_reqs(mission,level,limit)&lt;br /&gt;
	local req_name, sub_req_list&lt;br /&gt;
	local ret = {}&lt;br /&gt;
	&lt;br /&gt;
	if mission then&lt;br /&gt;
		local started&lt;br /&gt;
		-- Look for the &amp;#039;Started:&amp;#039; modifier and replace it&lt;br /&gt;
		-- If found, set boolean to true&lt;br /&gt;
		if mission:find(&amp;#039;Started:&amp;#039;) then&lt;br /&gt;
			mission = mission:gsub(&amp;#039;Started:%s*&amp;#039;,&amp;#039;&amp;#039;)&lt;br /&gt;
			started = true --currently treated exactly the same as without&lt;br /&gt;
		end&lt;br /&gt;
		-- Look for mission in the list&lt;br /&gt;
		local subreqs = missions[mission]&lt;br /&gt;
		if subreqs then&lt;br /&gt;
			-- For every requirement, call this function again&lt;br /&gt;
			-- Handled the same, but 1 level deeper&lt;br /&gt;
			-- If limit is reached, skip&lt;br /&gt;
            if subreqs[1] then&lt;br /&gt;
                if level &amp;lt;= limit then&lt;br /&gt;
					sub_req_list = mw.html.create(&amp;#039;ul&amp;#039;)&lt;br /&gt;
                    for i, q in ipairs(subreqs) do&lt;br /&gt;
						local sub_list = p.JSON_reqs(q,level+1,limit)&lt;br /&gt;
						&lt;br /&gt;
						for k,v in pairs(sub_list) do ret[k] = v end&lt;br /&gt;
					end&lt;br /&gt;
                else&lt;br /&gt;
                    -- terminate recursion&lt;br /&gt;
                end&lt;br /&gt;
            end&lt;br /&gt;
		else&lt;br /&gt;
			-- If the requirement can&amp;#039;t be found in the big list, don&amp;#039;t recurse&lt;br /&gt;
		end&lt;br /&gt;
		ret[mission] = true&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return ret&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
-- Function to tidy mission names into links&lt;br /&gt;
-- Any parenthetical (e.g. &amp;#039;(mission)&amp;#039;) will be removed from the text, but remain in the link&lt;br /&gt;
-- &amp;#039;Recipe for Disaster/&amp;#039; will be replaced in the RfD submissions, so that only the submission name appears as text&lt;br /&gt;
-- Returns a link&lt;br /&gt;
-- The &amp;#039;Full:&amp;#039; modifier is removed&lt;br /&gt;
--&lt;br /&gt;
function tidy_link(name)&lt;br /&gt;
	if name then&lt;br /&gt;
		if name:find(&amp;#039;Full:&amp;#039;) then&lt;br /&gt;
			name = name:sub(6)&lt;br /&gt;
		end&lt;br /&gt;
		local alt = name:match(&amp;#039;(.*)%(.*%)&amp;#039;) or name&lt;br /&gt;
&lt;br /&gt;
		if name:find(&amp;#039;Recipe for Disaster%/&amp;#039;) then&lt;br /&gt;
			alt = name:gsub(&amp;#039;Recipe for Disaster%/&amp;#039;,&amp;#039;&amp;#039;)&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		name = string.format(&amp;#039;[[%s|%s]]&amp;#039;,name,alt)&lt;br /&gt;
	end&lt;br /&gt;
	return name&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Banri</name></author>
	</entry>
</feed>