<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.runerealm.org/index.php?action=history&amp;feed=atom&amp;title=Module%3ARecipe</id>
	<title>Module:Recipe - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.runerealm.org/index.php?action=history&amp;feed=atom&amp;title=Module%3ARecipe"/>
	<link rel="alternate" type="text/html" href="https://wiki.runerealm.org/index.php?title=Module:Recipe&amp;action=history"/>
	<updated>2026-05-05T12:02:03Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.41.1</generator>
	<entry>
		<id>https://wiki.runerealm.org/index.php?title=Module:Recipe&amp;diff=49586&amp;oldid=prev</id>
		<title>Alex at 17:45, 13 November 2024</title>
		<link rel="alternate" type="text/html" href="https://wiki.runerealm.org/index.php?title=Module:Recipe&amp;diff=49586&amp;oldid=prev"/>
		<updated>2024-11-13T17:45:45Z</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 19:45, 13 November 2024&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 590:&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 590:&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;			[&#039;Uses facility&#039;] = mw.text.split(facilities or &#039;&#039;, &#039;%s*,%s*&#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;			[&#039;Uses facility&#039;] = mw.text.split(facilities or &#039;&#039;, &#039;%s*,%s*&#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;			[&#039;Is members only&#039;] = members,&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;			[&#039;Is members only&#039;] = members,&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;			[&#039;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Category&lt;/del&gt;&#039;] = args.category,&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;			[&#039;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;RecipeCategory&lt;/ins&gt;&#039;] = args.category,&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;			[&#039;Production JSON&#039;] = mw.text.jsonEncode(jsonObject),&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;			[&#039;Production JSON&#039;] = mw.text.jsonEncode(jsonObject),&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;			[&#039;Is boostable&#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;			[&#039;Is boostable&#039;] = {},&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;

&lt;!-- diff cache key mediawiki:diff:1.41:old-49584:rev-49586:wikidiff2=table:1.13.0:bc2a06be --&gt;
&lt;/table&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>https://wiki.runerealm.org/index.php?title=Module:Recipe&amp;diff=49584&amp;oldid=prev</id>
		<title>Alex at 17:42, 13 November 2024</title>
		<link rel="alternate" type="text/html" href="https://wiki.runerealm.org/index.php?title=Module:Recipe&amp;diff=49584&amp;oldid=prev"/>
		<updated>2024-11-13T17:42:56Z</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 19:42, 13 November 2024&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 579:&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 579:&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;		-- Because string values are expected by smw, we convert the boolean values back to strings here&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;		-- Because string values are expected by smw, we convert the boolean values back to strings here&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;		members = members and &#039;Yes&#039; or members == false and &#039;No&#039; or &#039;&#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;		members = members and &#039;Yes&#039; or members == false and &#039;No&#039; or &#039;&#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;		local jsonObject = {skills = skills, members = members, materials = {}, output = output[1], ticks = ticks, facilities = facilities, tools = tools}&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;		local jsonObject = {skills = skills, members = members, materials = {}, output = output[1], ticks = ticks, facilities = facilities, tools = tools&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;, category = args.category &lt;/ins&gt;}&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;		local materialNames = {}&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;		local materialNames = {}&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;		for _, v in ipairs(materials) do&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;		for _, v in ipairs(materials) do&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 590:&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 590:&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;			[&#039;Uses facility&#039;] = mw.text.split(facilities or &#039;&#039;, &#039;%s*,%s*&#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;			[&#039;Uses facility&#039;] = mw.text.split(facilities or &#039;&#039;, &#039;%s*,%s*&#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;			[&#039;Is members only&#039;] = members,&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;			[&#039;Is members only&#039;] = members,&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;			[&#039;Category&#039;] = category,&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;			[&#039;Category&#039;] = &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;args.&lt;/ins&gt;category,&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;			[&#039;Production JSON&#039;] = mw.text.jsonEncode(jsonObject),&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;			[&#039;Production JSON&#039;] = mw.text.jsonEncode(jsonObject),&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;			[&#039;Is boostable&#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;			[&#039;Is boostable&#039;] = {},&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;

&lt;!-- diff cache key mediawiki:diff:1.41:old-49574:rev-49584:wikidiff2=table:1.13.0:bc2a06be --&gt;
&lt;/table&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>https://wiki.runerealm.org/index.php?title=Module:Recipe&amp;diff=49574&amp;oldid=prev</id>
		<title>Alex at 16:53, 13 November 2024</title>
		<link rel="alternate" type="text/html" href="https://wiki.runerealm.org/index.php?title=Module:Recipe&amp;diff=49574&amp;oldid=prev"/>
		<updated>2024-11-13T16:53:41Z</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 18:53, 13 November 2024&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 90:&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 90:&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;function p.main(frame)&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;function p.main(frame)&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;	local args = frame:getParent().args&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;	local args = frame:getParent().args&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-deleted&quot;&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;	local category = args.category or &#039;&#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;br /&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;br /&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;	local function cost_to_number(cost_v, name, currencyName)&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;	local function cost_to_number(cost_v, name, currencyName)&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 589:&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 590:&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;			[&#039;Uses facility&#039;] = mw.text.split(facilities or &#039;&#039;, &#039;%s*,%s*&#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;			[&#039;Uses facility&#039;] = mw.text.split(facilities or &#039;&#039;, &#039;%s*,%s*&#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;			[&#039;Is members only&#039;] = members,&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;			[&#039;Is members only&#039;] = members,&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-deleted&quot;&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;			[&#039;Category&#039;] = category,&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;			[&#039;Production JSON&#039;] = mw.text.jsonEncode(jsonObject),&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;			[&#039;Production JSON&#039;] = mw.text.jsonEncode(jsonObject),&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;			[&#039;Is boostable&#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;			[&#039;Is boostable&#039;] = {},&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;

&lt;!-- diff cache key mediawiki:diff:1.41:old-49303:rev-49574:wikidiff2=table:1.13.0:bc2a06be --&gt;
&lt;/table&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>https://wiki.runerealm.org/index.php?title=Module:Recipe&amp;diff=49303&amp;oldid=prev</id>
		<title>Alex at 16:24, 9 November 2024</title>
		<link rel="alternate" type="text/html" href="https://wiki.runerealm.org/index.php?title=Module:Recipe&amp;diff=49303&amp;oldid=prev"/>
		<updated>2024-11-09T16:24:06Z</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 18:24, 9 November 2024&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 212:&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 212:&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;		local xp = v.experience == &#039;?&#039; and edit or v.experience&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;		local xp = v.experience == &#039;?&#039; and edit or v.experience&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;br /&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;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-deleted&quot;&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;		local frame = mw.getCurrentFrame()&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;a class=&quot;mw-diff-movedpara-left&quot; title=&quot;Paragraph was moved. Click to jump to new location.&quot; href=&quot;#movedpara_5_3_rhs&quot;&gt;&amp;#x26AB;&lt;/a&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;&lt;a name=&quot;movedpara_2_0_lhs&quot;&gt;&lt;/a&gt;	&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;	local&lt;/del&gt; &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;citeText&lt;/del&gt; &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;=&lt;/del&gt; &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&quot;{{CiteText|text=Experience&lt;/del&gt; &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;boost|&lt;/del&gt;quote=The experience shown is for players on the normal gamemode, without any other [[experience boosts]] active.&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;}}&quot;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-added&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-deleted&quot;&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;	    local citeText = frame:expandTemplate{&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;br /&gt;&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-added&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-deleted&quot;&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;	        title = &#039;CiteText&#039;,&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-deleted&quot;&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;	        args = {&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-deleted&quot;&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;	            text = &#039;Experience boost&#039;,&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-deleted&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;a class=&quot;mw-diff-movedpara-right&quot; title=&quot;Paragraph was moved. Click to jump to old location.&quot; href=&quot;#movedpara_2_0_lhs&quot;&gt;&amp;#x26AB;&lt;/a&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;&lt;a name=&quot;movedpara_5_3_rhs&quot;&gt;&lt;/a&gt;	    &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;        &lt;/ins&gt;quote&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; &lt;/ins&gt;=&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; &#039;&lt;/ins&gt;The experience shown is for players on the normal gamemode, without any other [[experience boosts]] active.&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&#039;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-deleted&quot;&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;	        }&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-deleted&quot;&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;	    }&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-deleted&quot;&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;	    &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;		requirement = mw.html.create(&#039;tr&#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;		requirement = mw.html.create(&#039;tr&#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;		requirement&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;		requirement&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;

&lt;!-- diff cache key mediawiki:diff:1.41:old-49302:rev-49303:wikidiff2=table:1.13.0:bc2a06be --&gt;
&lt;/table&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>https://wiki.runerealm.org/index.php?title=Module:Recipe&amp;diff=49302&amp;oldid=prev</id>
		<title>Alex at 16:22, 9 November 2024</title>
		<link rel="alternate" type="text/html" href="https://wiki.runerealm.org/index.php?title=Module:Recipe&amp;diff=49302&amp;oldid=prev"/>
		<updated>2024-11-09T16:22:44Z</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 18:22, 9 November 2024&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 212:&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 212:&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;		local xp = v.experience == &#039;?&#039; and edit or v.experience&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;		local xp = v.experience == &#039;?&#039; and edit or v.experience&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;br /&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;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-deleted&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;a class=&quot;mw-diff-movedpara-right&quot; title=&quot;Paragraph was moved. Click to jump to old location.&quot; href=&quot;#movedpara_3_3_lhs&quot;&gt;&amp;#x26AB;&lt;/a&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;&lt;a name=&quot;movedpara_1_0_rhs&quot;&gt;&lt;/a&gt;		&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;local&lt;/ins&gt; &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;citeText&lt;/ins&gt; &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;=&lt;/ins&gt; &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&quot;{{CiteText|text=Experience&lt;/ins&gt; &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;boost|&lt;/ins&gt;quote=The experience shown is for players on the normal gamemode, without any other [[experience boosts]] active.&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;}}&quot;&lt;/ins&gt;&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;		local citeText = frame:expandTemplate{&lt;/div&gt;&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-added&quot;&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;		    title = &#039;CiteText&#039;,&lt;/div&gt;&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-added&quot;&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;		    args = {&lt;/div&gt;&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-added&quot;&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;		        text = &#039;Experience boost&#039;,&lt;/div&gt;&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-added&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;a class=&quot;mw-diff-movedpara-left&quot; title=&quot;Paragraph was moved. Click to jump to new location.&quot; href=&quot;#movedpara_1_0_rhs&quot;&gt;&amp;#x26AB;&lt;/a&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;&lt;a name=&quot;movedpara_3_3_lhs&quot;&gt;&lt;/a&gt;		    &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    &lt;/del&gt;quote&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; &lt;/del&gt;=&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; &#039;&lt;/del&gt;The experience shown is for players on the normal gamemode, without any other [[experience boosts]] active.&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&#039;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-added&quot;&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;		    }&lt;/div&gt;&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-added&quot;&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;		}&lt;/div&gt;&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-added&quot;&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;br /&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;br /&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;		requirement = mw.html.create(&#039;tr&#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;		requirement = mw.html.create(&#039;tr&#039;)&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>https://wiki.runerealm.org/index.php?title=Module:Recipe&amp;diff=49301&amp;oldid=prev</id>
		<title>Alex at 16:18, 9 November 2024</title>
		<link rel="alternate" type="text/html" href="https://wiki.runerealm.org/index.php?title=Module:Recipe&amp;diff=49301&amp;oldid=prev"/>
		<updated>2024-11-09T16:18:27Z</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 18:18, 9 November 2024&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 224:&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 224:&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(&#039;td&#039;):attr(&#039;colspan&#039;, 2):wikitext(skillpic(v.name, nil, true)):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;			:tag(&#039;td&#039;):attr(&#039;colspan&#039;, 2):wikitext(skillpic(v.name, nil, true)):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;			:tag(&#039;td&#039;):wikitext(levelText):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;			:tag(&#039;td&#039;):wikitext(levelText):done()&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;			:tag(&#039;td&#039;):wikitext((tonumber(xp) ~= nil and commas._add(xp) or xp) .. citeText):done()&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;			:tag(&#039;td&#039;):wikitext((tonumber(xp) ~= nil and commas._add(xp) or xp)&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; .. &quot; &quot;&lt;/ins&gt; .. citeText):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;br /&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;br /&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;		table.insert(requirements, requirement)&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;		table.insert(requirements, requirement)&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>https://wiki.runerealm.org/index.php?title=Module:Recipe&amp;diff=49299&amp;oldid=prev</id>
		<title>Alex at 16:16, 9 November 2024</title>
		<link rel="alternate" type="text/html" href="https://wiki.runerealm.org/index.php?title=Module:Recipe&amp;diff=49299&amp;oldid=prev"/>
		<updated>2024-11-09T16:16:06Z</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 18:16, 9 November 2024&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 211:&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 211:&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;		&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;		&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;		local xp = v.experience == &#039;?&#039; and edit or v.experience&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;		local xp = v.experience == &#039;?&#039; and edit or v.experience&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-deleted&quot;&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;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-deleted&quot;&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;		local citeText = frame:expandTemplate{&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-deleted&quot;&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;		    title = &#039;CiteText&#039;,&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-deleted&quot;&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;		    args = {&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-deleted&quot;&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;		        text = &#039;Experience boost&#039;,&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-deleted&quot;&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;		        quote = &#039;The experience shown is for players on the normal gamemode, without any other [[experience boosts]] active.&#039;&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-deleted&quot;&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;		    }&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-deleted&quot;&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;		}&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;br /&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;br /&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;		requirement = mw.html.create(&#039;tr&#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;		requirement = mw.html.create(&#039;tr&#039;)&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 216:&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 224:&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(&#039;td&#039;):attr(&#039;colspan&#039;, 2):wikitext(skillpic(v.name, nil, true)):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;			:tag(&#039;td&#039;):attr(&#039;colspan&#039;, 2):wikitext(skillpic(v.name, nil, true)):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;			:tag(&#039;td&#039;):wikitext(levelText):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;			:tag(&#039;td&#039;):wikitext(levelText):done()&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;			:tag(&#039;td&#039;):wikitext(tonumber(xp) ~= nil and commas._add(xp) or xp):done()&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;			:tag(&#039;td&#039;):wikitext&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;(&lt;/ins&gt;(tonumber(xp) ~= nil and commas._add(xp) or xp&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;) .. citeText&lt;/ins&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;br /&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;br /&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;		table.insert(requirements, requirement)&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;		table.insert(requirements, requirement)&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>https://wiki.runerealm.org/index.php?title=Module:Recipe&amp;diff=44775&amp;oldid=prev</id>
		<title>Alex at 15:03, 5 November 2024</title>
		<link rel="alternate" type="text/html" href="https://wiki.runerealm.org/index.php?title=Module:Recipe&amp;diff=44775&amp;oldid=prev"/>
		<updated>2024-11-05T15:03:19Z</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 17:03, 5 November 2024&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 491:&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 491:&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(&#039;th&#039;):wikitext(&#039;Members&#039;):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;		:tag(&#039;th&#039;):wikitext(&#039;Members&#039;):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;		:tag(&#039;td&#039;):wikitext(membersTemplate):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;		:tag(&#039;td&#039;):wikitext(membersTemplate):done()&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;		:tag(&#039;th&#039;):attr(&#039;title&#039;, &#039;Ticks per action&#039;):wikitext(&#039;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Length of a tick|&lt;/del&gt;Ticks&#039;):done()&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;		:tag(&#039;th&#039;):attr(&#039;title&#039;, &#039;Ticks per action&#039;):wikitext(&#039;Ticks&#039;):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;br /&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;br /&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;	local ticks_cell, has_ticks_ref_tag = generate_ticks_cell(frame, ticks, ticks_note)&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;	local ticks_cell, has_ticks_ref_tag = generate_ticks_cell(frame, ticks, ticks_note)&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>https://wiki.runerealm.org/index.php?title=Module:Recipe&amp;diff=44774&amp;oldid=prev</id>
		<title>Alex at 15:03, 5 November 2024</title>
		<link rel="alternate" type="text/html" href="https://wiki.runerealm.org/index.php?title=Module:Recipe&amp;diff=44774&amp;oldid=prev"/>
		<updated>2024-11-05T15:03:10Z</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 17:03, 5 November 2024&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 491:&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 491:&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(&#039;th&#039;):wikitext(&#039;Members&#039;):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;		:tag(&#039;th&#039;):wikitext(&#039;Members&#039;):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;		:tag(&#039;td&#039;):wikitext(membersTemplate):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;		:tag(&#039;td&#039;):wikitext(membersTemplate):done()&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;		:tag(&#039;th&#039;):attr(&#039;title&#039;, &#039;Ticks per action&#039;):wikitext(&#039;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[RuneScape clock#&lt;/del&gt;Length of a tick|Ticks&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;]]&lt;/del&gt;&#039;):done()&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;		:tag(&#039;th&#039;):attr(&#039;title&#039;, &#039;Ticks per action&#039;):wikitext(&#039;Length of a tick|Ticks&#039;):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;br /&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;br /&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;	local ticks_cell, has_ticks_ref_tag = generate_ticks_cell(frame, ticks, ticks_note)&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;	local ticks_cell, has_ticks_ref_tag = generate_ticks_cell(frame, ticks, ticks_note)&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>https://wiki.runerealm.org/index.php?title=Module:Recipe&amp;diff=33940&amp;oldid=prev</id>
		<title>Alex: Created page with &quot;--&lt;nowiki&gt;  local p = {}  -- convert some used globals to locals to improve performance local math = math local string = string local table = table local mw = mw local expr = mw.ext.ParserFunctions.expr  local coins = require(&#039;Module:Coins&#039;)._amount local yesno = require(&#039;Module:Yesno&#039;) local params = require(&#039;Module:Paramtest&#039;) local commas = require(&#039;Module:Addcommas&#039;) local geprice = require(&#039;Module:Exchange&#039;)._price local skillpic = require(&#039;Module:SCP&#039;)._main local...&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.runerealm.org/index.php?title=Module:Recipe&amp;diff=33940&amp;oldid=prev"/>
		<updated>2024-10-15T15:10:59Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;--&amp;lt;nowiki&amp;gt;  local p = {}  -- convert some used globals to locals to improve performance local math = math local string = string local table = table local mw = mw local expr = mw.ext.ParserFunctions.expr  local coins = require(&amp;#039;Module:Coins&amp;#039;)._amount local yesno = require(&amp;#039;Module:Yesno&amp;#039;) local params = require(&amp;#039;Module:Paramtest&amp;#039;) local commas = require(&amp;#039;Module:Addcommas&amp;#039;) local geprice = require(&amp;#039;Module:Exchange&amp;#039;)._price local skillpic = require(&amp;#039;Module:SCP&amp;#039;)._main local...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;--&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
-- convert some used globals to locals to improve performance&lt;br /&gt;
local math = math&lt;br /&gt;
local string = string&lt;br /&gt;
local table = table&lt;br /&gt;
local mw = mw&lt;br /&gt;
local expr = mw.ext.ParserFunctions.expr&lt;br /&gt;
&lt;br /&gt;
local coins = require(&amp;#039;Module:Coins&amp;#039;)._amount&lt;br /&gt;
local yesno = require(&amp;#039;Module:Yesno&amp;#039;)&lt;br /&gt;
local params = require(&amp;#039;Module:Paramtest&amp;#039;)&lt;br /&gt;
local commas = require(&amp;#039;Module:Addcommas&amp;#039;)&lt;br /&gt;
local geprice = require(&amp;#039;Module:Exchange&amp;#039;)._price&lt;br /&gt;
local skillpic = require(&amp;#039;Module:SCP&amp;#039;)._main&lt;br /&gt;
local editbutton = require(&amp;#039;Module:Edit button&amp;#039;)&lt;br /&gt;
local onmain = require(&amp;#039;Module:Mainonly&amp;#039;).on_main&lt;br /&gt;
local currencies = require(&amp;#039;Module:Currencies&amp;#039;)._amount&lt;br /&gt;
&lt;br /&gt;
local edit = editbutton(&amp;#039;? (edit)&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
-- Tools that need special handling&lt;br /&gt;
local toolsList = {&lt;br /&gt;
	[&amp;#039;Axe&amp;#039;] = &amp;#039;[[File:Bronze axe.png|link=Axe]]&amp;#039;,&lt;br /&gt;
	[&amp;#039;Watering can&amp;#039;] = &amp;#039;[[File:Watering can(8).png|link=Watering can]]&amp;#039;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local facilitiesIcons = {&lt;br /&gt;
	[&amp;#039;Altar (Zalcano)&amp;#039;] = &amp;#039;[[File:Altar (Zalcano\&amp;#039;s prison) icon.png|link=Altar (Zalcano)]]&amp;#039;,&lt;br /&gt;
    [&amp;#039;Anvil&amp;#039;] = &amp;#039;[[File:Anvil icon.png|link=Anvil]]&amp;#039;,&lt;br /&gt;
    [&amp;#039;Apothecary&amp;#039;] = &amp;#039;[[File:Apothecary icon.png|link=Apothecary]]&amp;#039;,&lt;br /&gt;
    [&amp;#039;Banner easel&amp;#039;] = &amp;#039;[[File:Banner easel icon.png|link=Banner easel]]&amp;#039;,&lt;br /&gt;
    [&amp;#039;Barbarian anvil&amp;#039;] = &amp;#039;[[File:Anvil icon.png|link=Anvil]]&amp;#039;,&lt;br /&gt;
    [&amp;#039;Bench with vice&amp;#039;] = &amp;#039;[[File:Bench with vice icon.png|link=Bench with vice]]&amp;#039;,&lt;br /&gt;
    [&amp;#039;Bench with lathe&amp;#039;] = &amp;#039;[[File:Bench with lathe icon.png|link=Bench with lathe]]&amp;#039;,&lt;br /&gt;
    [&amp;#039;Blast Furnace&amp;#039;] = &amp;#039;[[File:Furnace icon.png|link=Blast Furnace]]&amp;#039;,&lt;br /&gt;
    [&amp;#039;Blast furnace&amp;#039;] = &amp;#039;[[File:Furnace icon.png|link=Blast Furnace]]&amp;#039;,&lt;br /&gt;
    [&amp;#039;Big Compost Bin&amp;#039;] = &amp;#039;[[File:Farming patch icon.png|link=Big Compost Bin]]&amp;#039;,&lt;br /&gt;
    [&amp;#039;Brewery&amp;#039;] = &amp;#039;[[File:Brewery icon.png|link=Brewery]]&amp;#039;,&lt;br /&gt;
    [&amp;#039;Clay oven&amp;#039;] = &amp;#039;[[File:Cooking range icon.png|link=Clay oven]]&amp;#039;,&lt;br /&gt;
    [&amp;#039;Compost Bin&amp;#039;] = &amp;#039;[[File:Farming patch icon.png|link=Compost Bin]]&amp;#039;,&lt;br /&gt;
    [&amp;#039;Cooking range&amp;#039;] = &amp;#039;[[File:Cooking range icon.png|link=Cooking range]]&amp;#039;,&lt;br /&gt;
    [&amp;#039;Cooking range (2018 Easter event)&amp;#039;] = &amp;#039;[[File:Cooking range icon.png|link=Cooking range (2018 Easter event)]]&amp;#039;,&lt;br /&gt;
    [&amp;#039;Crafting table 1&amp;#039;] = &amp;#039;[[File:Crafting table 1 icon.png|link=Crafting table 1]]&amp;#039;,&lt;br /&gt;
    [&amp;#039;Crafting table 2&amp;#039;] = &amp;#039;[[File:Crafting table 2 icon.png|link=Crafting table 2]]&amp;#039;,&lt;br /&gt;
    [&amp;#039;Crafting table 3&amp;#039;] = &amp;#039;[[File:Crafting table 3 icon.png|link=Crafting table 3]]&amp;#039;,&lt;br /&gt;
    [&amp;#039;Crafting table 4&amp;#039;] = &amp;#039;[[File:Crafting table 4 icon.png|link=Crafting table 4]]&amp;#039;,&lt;br /&gt;
    [&amp;#039;Dairy churn&amp;#039;] = &amp;#039;[[File:Dairy churn icon.png|link=Dairy churn]]&amp;#039;,&lt;br /&gt;
    [&amp;#039;Dairy cow&amp;#039;] = &amp;#039;[[File:Dairy cow icon.png|link=Dairy cow]]&amp;#039;,&lt;br /&gt;
    [&amp;#039;Demon lectern&amp;#039;] = &amp;#039;[[File:Demon lectern icon.png|link=Demon lectern]]&amp;#039;,&lt;br /&gt;
    [&amp;#039;Eagle lectern&amp;#039;] = &amp;#039;[[File:Eagle lectern icon.png|link=Eagle lectern]]&amp;#039;,&lt;br /&gt;
    [&amp;#039;Eodan&amp;#039;] = &amp;#039;[[File:Tannery icon.png|link=Tannery]]&amp;#039;,&lt;br /&gt;
    [&amp;#039;Fancy Clothes Store&amp;#039;] = &amp;#039;[[File:Clothes shop icon.png|link=Fancy Clothes Store]]&amp;#039;,&lt;br /&gt;
    [&amp;#039;Farming patch&amp;#039;] = &amp;#039;[[File:Farming patch icon.png|link=Farming/Patch_locations]]&amp;#039;,&lt;br /&gt;
    [&amp;#039;Furnace&amp;#039;] = &amp;#039;[[File:Furnace icon.png|link=Furnace]]&amp;#039;,&lt;br /&gt;
    [&amp;#039;Furnace (Elemental Workshop)&amp;#039;] = &amp;#039;[[File:Furnace icon.png|link=Furnace (Elemental Workshop)]]&amp;#039;,&lt;br /&gt;
    [&amp;#039;Furnace (Zalcano)&amp;#039;] = &amp;#039;[[File:Furnace icon.png|link=Furnace (Zalcano)]]&amp;#039;,&lt;br /&gt;
    [&amp;#039;Loom&amp;#039;] = &amp;#039;[[File:Loom icon.png|link=Loom]]&amp;#039;,&lt;br /&gt;
    [&amp;#039;Lovakite furnace&amp;#039;] = &amp;#039;[[File:Furnace icon.png|link=Lovakite furnace]]&amp;#039;,&lt;br /&gt;
    [&amp;#039;Mahogany demon lectern&amp;#039;] = &amp;#039;[[File:Mahogany demon lectern icon.png|link=Mahogany demon lectern]]&amp;#039;,&lt;br /&gt;
    [&amp;#039;Mahogany eagle lectern&amp;#039;] = &amp;#039;[[File:Mahogany eagle lectern icon.png|link=Mahogany eagle lectern]]&amp;#039;,&lt;br /&gt;
    [&amp;#039;Metal Press&amp;#039;] = &amp;#039;[[File:Furnace icon.png|link=Metal Press]]&amp;#039;,&lt;br /&gt;
    [&amp;#039;Oak lectern&amp;#039;] = &amp;#039;[[File:Oak lectern icon.png|link=Oak lectern]]&amp;#039;,&lt;br /&gt;
    [&amp;#039;Oak workbench&amp;#039;] = &amp;#039;[[File:Oak workbench icon.png|link=Oak workbench]]&amp;#039;,&lt;br /&gt;
    [&amp;#039;Pluming stand&amp;#039;] = &amp;#039;[[File:Pluming stand icon.png|link=Pluming stand]]&amp;#039;,&lt;br /&gt;
    [&amp;#039;Potter\&amp;#039;s Wheel&amp;#039;] = &amp;#039;[[File:Pottery wheel icon.png|link=Potter\&amp;#039;s Wheel]]&amp;#039;,&lt;br /&gt;
    [&amp;#039;Pottery Oven&amp;#039;] = &amp;#039;[[File:Pottery wheel icon.png|link=Pottery Oven]]&amp;#039;,&lt;br /&gt;
    [&amp;#039;Sawmill&amp;#039;] = &amp;#039;[[File:Sawmill icon.png|link=Sawmill]]&amp;#039;,&lt;br /&gt;
    [&amp;#039;Sand pit&amp;#039;] = &amp;#039;[[File:Sandpit icon.png|link=Sand pit]]&amp;#039;,&lt;br /&gt;
    [&amp;#039;Sbott&amp;#039;] = &amp;#039;[[File:Tannery icon.png|link=Tannery]]&amp;#039;,&lt;br /&gt;
    [&amp;#039;Shield easel&amp;#039;] = &amp;#039;[[File:Shield easel icon.png|link=Shield easel]]&amp;#039;,&lt;br /&gt;
    [&amp;#039;Singing bowl&amp;#039;] = &amp;#039;[[File:Singing bowl icon.png|link=Singing bowl]]&amp;#039;,&lt;br /&gt;
    [&amp;#039;Spinning wheel&amp;#039;] = &amp;#039;[[File:Spinning wheel icon.png|link=Spinning wheel]]&amp;#039;,&lt;br /&gt;
    [&amp;#039;Steel framed workbench&amp;#039;] = &amp;#039;[[File:Steel framed workbench icon.png|link=Steel framed workbench]]&amp;#039;,&lt;br /&gt;
    [&amp;#039;Tannery&amp;#039;] = &amp;#039;[[File:Tannery icon.png|link=Tannery]]&amp;#039;,&lt;br /&gt;
    [&amp;#039;Taxidermist&amp;#039;] = &amp;#039;[[File:Taxidermist icon.png|link=Taxidermist]]&amp;#039;,&lt;br /&gt;
    [&amp;#039;Teak demon lectern&amp;#039;] = &amp;#039;[[File:Teak demon lectern icon.png|link=Teak demon lectern]]&amp;#039;,&lt;br /&gt;
    [&amp;#039;Teak eagle lectern&amp;#039;] = &amp;#039;[[File:Teak eagle lectern icon.png|link=Teak eagle lectern]]&amp;#039;,&lt;br /&gt;
    [&amp;#039;Thakkrad Sigmundson&amp;#039;] = &amp;#039;[[File:Tannery icon.png|link=Thakkrad Sigmundson]]&amp;#039;,&lt;br /&gt;
    [&amp;#039;Water&amp;#039;] = &amp;#039;[[File:Water source icon.png|link=Water]]&amp;#039;,&lt;br /&gt;
    [&amp;#039;Whetstone&amp;#039;] = &amp;#039;[[File:Whetstone icon.png|link=Whetstone]]&amp;#039;,&lt;br /&gt;
    [&amp;#039;Windmill&amp;#039;] = &amp;#039;[[File:Windmill icon.png|link=Windmill]]&amp;#039;,&lt;br /&gt;
    [&amp;#039;Woodcutting stump&amp;#039;] = &amp;#039;[[File:Woodcutting stump icon.png|link=Woodcutting stump]]&amp;#039;,&lt;br /&gt;
    [&amp;#039;Wooden workbench&amp;#039;] = &amp;#039;[[File:Wooden workbench icon.png|link=Wooden workbench]]&amp;#039;,&lt;br /&gt;
    [&amp;#039;Workbench (Guardians of the Rift)&amp;#039;] = &amp;#039;[[File:Workbench (Guardians of the Rift).png|30px|link=Workbench (Guardians of the Rift)]]&amp;#039;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	local args = frame:getParent().args&lt;br /&gt;
&lt;br /&gt;
	local function cost_to_number(cost_v, name, currencyName)&lt;br /&gt;
		if currencyName ~= nil then&lt;br /&gt;
			if cost_v == nil then&lt;br /&gt;
				return 1&lt;br /&gt;
			elseif tonumber(commas._strip(cost_v),10) then&lt;br /&gt;
				return tonumber(commas._strip(cost_v),10)&lt;br /&gt;
			elseif tonumber(expr(cost_v),10) then&lt;br /&gt;
				return expr(cost_v)&lt;br /&gt;
			end&lt;br /&gt;
		elseif cost_v == nil then&lt;br /&gt;
			if pcall(function () geprice(name) end) then&lt;br /&gt;
				return geprice(name)&lt;br /&gt;
			else&lt;br /&gt;
				return 0&lt;br /&gt;
			end&lt;br /&gt;
		elseif string.lower(cost_v) == &amp;#039;no&amp;#039; then&lt;br /&gt;
			return 0&lt;br /&gt;
		elseif tonumber(commas._strip(cost_v),10) then&lt;br /&gt;
			return tonumber(commas._strip(cost_v),10)&lt;br /&gt;
		elseif tonumber(expr(cost_v),10) then&lt;br /&gt;
			return expr(cost_v)&lt;br /&gt;
		end&lt;br /&gt;
		return 0&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local function mat_list(objType)&lt;br /&gt;
		local ret_list = {}&lt;br /&gt;
		for i=1,11,1 do&lt;br /&gt;
			local mat = args[objType..i]&lt;br /&gt;
			if mat and params.has_content(mat) then&lt;br /&gt;
				local name = mat&lt;br /&gt;
				local txt = params.default_to(args[objType..i..&amp;#039;txt&amp;#039;], nil)&lt;br /&gt;
				local qty = params.default_to(args[objType..i..&amp;#039;quantity&amp;#039;],&amp;#039;1&amp;#039;)&lt;br /&gt;
				local img = params.default_to(args[objType..i..&amp;#039;pic&amp;#039;], name)..&amp;#039;.png&amp;#039;&lt;br /&gt;
				local cost_v = args[objType..i..&amp;#039;cost&amp;#039;]&lt;br /&gt;
				local currencyName = params.default_to(args[objType..i..&amp;#039;currency&amp;#039;], nil)&lt;br /&gt;
				local itemnote = args[objType..i..&amp;#039;itemnote&amp;#039;] or nil&lt;br /&gt;
				local costnote = args[objType..i..&amp;#039;costnote&amp;#039;] or nil&lt;br /&gt;
				local qtynote = args[objType..i..&amp;#039;quantitynote&amp;#039;] or nil&lt;br /&gt;
				local subtxt = args[objType..i..&amp;#039;subtxt&amp;#039;] or nil&lt;br /&gt;
				table.insert(ret_list, {&lt;br /&gt;
					name = name,&lt;br /&gt;
					txt = txt,&lt;br /&gt;
					cost = cost_to_number(cost_v, name, currencyName),&lt;br /&gt;
					quantity = qty,&lt;br /&gt;
					image = string.format(&amp;#039;[[File:%s|link=%s]]&amp;#039;, img, mat),&lt;br /&gt;
					currency_name = currencyName,&lt;br /&gt;
					outputnote = itemnote,&lt;br /&gt;
					quantitynote = qtynote,&lt;br /&gt;
					subtxt = subtxt,&lt;br /&gt;
					costnote = costnote&lt;br /&gt;
				} )&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		return ret_list&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local function skill_list()&lt;br /&gt;
		local ret_list = {}&lt;br /&gt;
		for i=1,10,1 do&lt;br /&gt;
			local skill = args[&amp;#039;skill&amp;#039;..i]&lt;br /&gt;
			if skill and params.has_content(skill) then&lt;br /&gt;
				local name = skill&lt;br /&gt;
				local lvl = params.default_to(args[&amp;#039;skill&amp;#039;..i..&amp;#039;lvl&amp;#039;],&amp;#039;?&amp;#039;)&lt;br /&gt;
				local boost = params.default_to(args[&amp;#039;skill&amp;#039;..i..&amp;#039;boostable&amp;#039;],&amp;#039;&amp;#039;)&lt;br /&gt;
				local exp = commas._strip(params.default_to(args[&amp;#039;skill&amp;#039;..i..&amp;#039;exp&amp;#039;],&amp;#039;?&amp;#039;))&lt;br /&gt;
				table.insert(ret_list, {&lt;br /&gt;
					name = name,&lt;br /&gt;
					level = lvl,&lt;br /&gt;
					boostable = boost,&lt;br /&gt;
					experience = exp,&lt;br /&gt;
				} )&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		return ret_list&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local output = mat_list(&amp;#039;output&amp;#039;)&lt;br /&gt;
	local materials = mat_list(&amp;#039;mat&amp;#039;)&lt;br /&gt;
	local skills = skill_list()&lt;br /&gt;
&lt;br /&gt;
	local members = &amp;#039;&amp;#039;&lt;br /&gt;
	if params.has_content(args.members) then&lt;br /&gt;
		members = yesno(args.members, true)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local useSmw = true&lt;br /&gt;
	if params.has_content(args.smw) then&lt;br /&gt;
		useSmw = yesno(args.smw:lower(), true)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return p._main(frame, args, args.tools, skills, members, args.notes, materials, output, args.facilities, args.ticks, args.ticksnote, useSmw)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
-- Generates an array of table rows based on skills required for the recipe.&lt;br /&gt;
--&lt;br /&gt;
-- @param skills {array} List of skill requirements generated by skill_list function.&lt;br /&gt;
-- @return {array} List of html tr elements for each skill requirement. Empty table if skills is an empty table or nil.&lt;br /&gt;
-- @return {bool} True if any skill requirement, other than level 1, is missing a boostable value in skills. False otherwise.&lt;br /&gt;
--&lt;br /&gt;
local function generate_skills_rows(skills)&lt;br /&gt;
	local requirements = {}&lt;br /&gt;
	local unknown_boostable_flag = false&lt;br /&gt;
&lt;br /&gt;
	for i, v in ipairs(skills) do&lt;br /&gt;
&lt;br /&gt;
		local levelText = v.level == &amp;#039;?&amp;#039; and edit or v.level&lt;br /&gt;
		-- Determine which boostable flag to add&lt;br /&gt;
		local boostable = yesno(v.boostable:lower() or nil) -- If v.boostable can&amp;#039;t be lowered, boostable is nil. If it can, and isn&amp;#039;t an expected value, yesno returns nil, so boostable is nil either way.&lt;br /&gt;
		if boostable == nil and (tonumber(v.level) or 0) &amp;gt; 1 then&lt;br /&gt;
			levelText = levelText .. &amp;#039; &amp;lt;sup title=&amp;quot;Unknown whether this requirement is boostable&amp;quot; style=&amp;quot;cursor:help; text-decoration: underline dotted;&amp;quot;&amp;gt;?&amp;lt;/sup&amp;gt;&amp;#039;&lt;br /&gt;
			unknown_boostable_flag = true&lt;br /&gt;
		elseif boostable == false then&lt;br /&gt;
			levelText = levelText .. &amp;#039; &amp;lt;sup title=&amp;quot;This requirement is not boostable&amp;quot; style=&amp;quot;cursor:help; text-decoration: underline dotted;&amp;quot;&amp;gt;(nb)&amp;lt;/sup&amp;gt;&amp;#039;&lt;br /&gt;
		elseif boostable == true then&lt;br /&gt;
			levelText = levelText .. &amp;#039; &amp;lt;sup title=&amp;quot;This requirement is boostable&amp;quot; style=&amp;quot;cursor:help; text-decoration: underline dotted;&amp;quot;&amp;gt;(b)&amp;lt;/sup&amp;gt;&amp;#039;&lt;br /&gt;
		end -- if boostable is anything else, the skill level is probably 1 or unknown, so no boostable note is added&lt;br /&gt;
		&lt;br /&gt;
		local xp = v.experience == &amp;#039;?&amp;#039; and edit or v.experience&lt;br /&gt;
&lt;br /&gt;
		requirement = mw.html.create(&amp;#039;tr&amp;#039;)&lt;br /&gt;
		requirement&lt;br /&gt;
			:tag(&amp;#039;td&amp;#039;):attr(&amp;#039;colspan&amp;#039;, 2):wikitext(skillpic(v.name, nil, true)):done()&lt;br /&gt;
			:tag(&amp;#039;td&amp;#039;):wikitext(levelText):done()&lt;br /&gt;
			:tag(&amp;#039;td&amp;#039;):wikitext(tonumber(xp) ~= nil and commas._add(xp) or xp):done()&lt;br /&gt;
&lt;br /&gt;
		table.insert(requirements, requirement)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return requirements, unknown_boostable_flag&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
-- Generates a td element for the ticks required.&lt;br /&gt;
--&lt;br /&gt;
-- @param frame {table} Frame passed in to main.&lt;br /&gt;
-- @param ticks {string|number} One of {nil, &amp;#039;&amp;#039;, &amp;#039;NA&amp;#039;, &amp;#039;Varies&amp;#039;, [0-9]+} (case agnostic). Other strings will result in an error.&lt;br /&gt;
-- @param ticks_note {string} Custom note to be inserted into tick cell if ticks are varied or have a number value.&lt;br /&gt;
-- @return {html td element} A td element holding the number of ticks required, along with a note if applicable.&lt;br /&gt;
-- @return {bool} True if ticks_note was added to the td element. False otherwise.&lt;br /&gt;
--&lt;br /&gt;
local function generate_ticks_cell(frame, ticks, ticks_note)&lt;br /&gt;
	local has_ref_tag = false&lt;br /&gt;
	local ticks_cell = mw.html.create(&amp;#039;td&amp;#039;)&lt;br /&gt;
	local note = &amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
	-- Prepare a note if ticks_note is given&lt;br /&gt;
	if ticks_note ~= nil then&lt;br /&gt;
		note = frame:extensionTag{ name=&amp;#039;ref&amp;#039;, content = ticks_note, args = { group=&amp;#039;r&amp;#039; } }&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Handle cases where no ticks are added, NA is used, Varies is used, or a number is given (default).&lt;br /&gt;
	-- Breaks if passed a string for ticks since tonumber produces a nil value.&lt;br /&gt;
	if (ticks or &amp;#039;&amp;#039;) == &amp;#039;&amp;#039; then&lt;br /&gt;
		ticks_cell:wikitext(edit):done()&lt;br /&gt;
	elseif string.lower(ticks) == &amp;#039;na&amp;#039; then&lt;br /&gt;
		ticks_cell:addClass(&amp;#039;table-na&amp;#039;):css({ [&amp;#039;text-align&amp;#039;] = center }):wikitext(&amp;#039;N/A&amp;#039;):done()&lt;br /&gt;
	elseif string.lower(ticks) == &amp;#039;varies&amp;#039; then&lt;br /&gt;
		has_ref_tag = true&lt;br /&gt;
		ticks_cell:wikitext(&amp;#039;Varies&amp;#039; .. note):done()&lt;br /&gt;
	else&lt;br /&gt;
		local secs = tonumber(ticks, 10) * 0.6&lt;br /&gt;
		if(note ~= &amp;#039;&amp;#039;) then&lt;br /&gt;
			has_ref_tag = true&lt;br /&gt;
		end&lt;br /&gt;
		ticks_cell:attr(&amp;#039;title&amp;#039;, ticks .. &amp;#039; ticks (&amp;#039; .. secs .. &amp;#039;s) per action&amp;#039;):wikitext(ticks .. &amp;#039; (&amp;#039; .. secs .. &amp;#039;s)&amp;#039; .. note):done()&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return ticks_cell, has_ref_tag&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
-- Generates a tr element for the item described by item_data.&lt;br /&gt;
--&lt;br /&gt;
-- @param frame {table} Frame passed in to main.&lt;br /&gt;
-- @param item_data {table} A table representing a single item required or output by the recipe. Single member of a table produced by mat_list.&lt;br /&gt;
-- @return {html tr element} A tr element holding all information contained in item_data.&lt;br /&gt;
-- @return {int} Total cost of the given amount of this item.&lt;br /&gt;
-- @return {bool} True if either an item note, quantity note, or cost note was added to the tr element. False otherwise.&lt;br /&gt;
--&lt;br /&gt;
local function make_row(frame, item_data)&lt;br /&gt;
	local classOverride, mat_ttl&lt;br /&gt;
	local textAlign = &amp;#039;right&amp;#039;&lt;br /&gt;
	local has_ref_tag = false&lt;br /&gt;
&lt;br /&gt;
	if item_data.currency_name ~= nil then&lt;br /&gt;
		mat_ttl = currencies(item_data.quantity * item_data.cost, item_data.currency_name)&lt;br /&gt;
	elseif item_data.cost == 0 then&lt;br /&gt;
		mat_ttl = &amp;#039;N/A&amp;#039;&lt;br /&gt;
		classOverride = &amp;#039;table-na&amp;#039;&lt;br /&gt;
		textAlign = &amp;#039;center&amp;#039;&lt;br /&gt;
	else&lt;br /&gt;
		mat_ttl = coins(item_data.quantity * item_data.cost)&lt;br /&gt;
	end&lt;br /&gt;
	local name = item_data.txt and string.format(&amp;#039;[[%s|%s]]&amp;#039;, item_data.name, item_data.txt) or string.format(&amp;#039;[[%s]]&amp;#039;, item_data.name)&lt;br /&gt;
	local itemnote = item_data.outputnote and frame:extensionTag{ name = &amp;#039;ref&amp;#039;, content = item_data.outputnote, args = { group = &amp;#039;r&amp;#039; } } or &amp;#039;&amp;#039;&lt;br /&gt;
	if (itemnote ~= &amp;#039;&amp;#039;) then has_ref_tag = true end&lt;br /&gt;
	local quantitynote = item_data.quantitynote and frame:extensionTag{ name = &amp;#039;ref&amp;#039;, content = item_data.quantitynote, args = { group = &amp;#039;r&amp;#039; } } or &amp;#039;&amp;#039;&lt;br /&gt;
	if (quantitynote ~= &amp;#039;&amp;#039;) then has_ref_tag = true end&lt;br /&gt;
	local costnote&lt;br /&gt;
	if (item_data.costnote and string.lower(item_data.costnote) == &amp;#039;calculated&amp;#039;) then&lt;br /&gt;
		local class = string.gsub(name, &amp;#039;%W&amp;#039;, &amp;#039;&amp;#039;)&lt;br /&gt;
		costnote = frame:extensionTag{ name = &amp;#039;ref&amp;#039;, content = &amp;#039;Calculated value given in the cost field (generally based on GE prices of ingredients).&amp;#039;, args = { group = &amp;#039;r&amp;#039; } } or &amp;#039;&amp;#039;&lt;br /&gt;
	else&lt;br /&gt;
		costnote = item_data.costnote and frame:extensionTag{ name = &amp;#039;ref&amp;#039;, content = item_data.costnote, args = { group = &amp;#039;r&amp;#039; } } or &amp;#039;&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
	if (costnote ~= &amp;#039;&amp;#039;) then has_ref_tag = true end&lt;br /&gt;
	costnote = costnote_v or costnote&lt;br /&gt;
	return mw.html.create(&amp;#039;tr&amp;#039;)&lt;br /&gt;
		:tag(&amp;#039;td&amp;#039;):wikitext(item_data.image):done()&lt;br /&gt;
		:tag(&amp;#039;td&amp;#039;):wikitext(name .. itemnote):done()&lt;br /&gt;
		:tag(&amp;#039;td&amp;#039;):wikitext(commas._add(item_data.quantity) .. quantitynote):done()&lt;br /&gt;
		:tag(&amp;#039;td&amp;#039;):addClass(classOverride):css({ [&amp;#039;text-align&amp;#039;] = textAlign }):wikitext(mat_ttl .. costnote):done(),&lt;br /&gt;
			item_data.quantity * item_data.cost,&lt;br /&gt;
			has_ref_tag&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
-- Generates a list of tr elements describing all the items given.&lt;br /&gt;
--&lt;br /&gt;
-- @param frame {table} Frame passed in to main.&lt;br /&gt;
-- @param items {array} A list containing a all items required or output by the recipe. Produced by mat_list.&lt;br /&gt;
-- @return {array} A list of tr elements, holding one row for each item in items.&lt;br /&gt;
-- @return {table} A table of total prices for each currency used by members of items.&lt;br /&gt;
-- @return {bool} True if either an item note, quantity note, or cost note was added to any tr element. False otherwise.&lt;br /&gt;
--&lt;br /&gt;
local function generate_rows(frame, items)&lt;br /&gt;
&lt;br /&gt;
	local currency_costs = {&lt;br /&gt;
		[&amp;#039;Coins&amp;#039;] = 0 &lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	local has_ref_tag = false&lt;br /&gt;
	local rows = {}&lt;br /&gt;
	for i, v in ipairs(items) do&lt;br /&gt;
		local row, row_cost, has_row_note = make_row(frame, v)&lt;br /&gt;
		&lt;br /&gt;
		if row_cost ~= 0 then&lt;br /&gt;
			if v.currency_name ~= nil then&lt;br /&gt;
				currency_costs[v.currency_name] = (currency_costs[v.currency_name] and currency_costs[v.currency_name] or 0) + v.quantity * v.cost&lt;br /&gt;
			else&lt;br /&gt;
				currency_costs[&amp;#039;Coins&amp;#039;] = currency_costs[&amp;#039;Coins&amp;#039;] + v.quantity * v.cost&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		has_ref_tag = has_ref_tag or has_row_note&lt;br /&gt;
		table.insert(rows, row)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	return rows, currency_costs, has_ref_tag&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
-- Generates a tr element containing all of the total costs in the currencies for items in item_costs.&lt;br /&gt;
--&lt;br /&gt;
-- @param items {array} A list containing a all items required or output by the recipe. Produced by mat_list.&lt;br /&gt;
-- @param item_costs {table} A table of total prices for each currency used by members of items. Produced by generate_rows.&lt;br /&gt;
-- @return {html tr element} A tr element holding all costs found in item_costs.&lt;br /&gt;
--&lt;br /&gt;
function generate_total_cost_row(items, item_costs)&lt;br /&gt;
	local total_cost_row = mw.html.create(&amp;#039;tr&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
	if #items == 0 then&lt;br /&gt;
		total_cost_row:tag(&amp;#039;td&amp;#039;):attr(&amp;#039;colspan&amp;#039;,&amp;#039;5&amp;#039;)&lt;br /&gt;
			:css({ [&amp;#039;font-style&amp;#039;] = &amp;#039;italic&amp;#039;, [&amp;#039;text-align&amp;#039;] = &amp;#039;center&amp;#039; }):wikitext(&amp;#039;Materials unlisted &amp;#039;..editbutton()):done()&lt;br /&gt;
	else&lt;br /&gt;
		local total_cost_breakdown = &amp;#039;&amp;#039;&lt;br /&gt;
		for i, v in next, item_costs, nil do&lt;br /&gt;
			total_cost_breakdown = (string.len(total_cost_breakdown) == 0 and total_cost_breakdown or total_cost_breakdown .. &amp;#039;&amp;lt;br /&amp;gt;&amp;#039;) .. (i == &amp;#039;Coins&amp;#039; and coins(v) or currencies(v, i))&lt;br /&gt;
		end&lt;br /&gt;
		total_cost_row:tag(&amp;#039;th&amp;#039;):attr(&amp;#039;colspan&amp;#039;, 3):css({[&amp;#039;text-align&amp;#039;] = &amp;#039;right&amp;#039;}):wikitext(&amp;#039;Total cost&amp;#039;):done()&lt;br /&gt;
			:tag(&amp;#039;td&amp;#039;):css({[&amp;#039;text-align&amp;#039;] = &amp;#039;right&amp;#039;}):wikitext(total_cost_breakdown)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return total_cost_row&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
-- Generates a tr element containing the difference between output and material costs (in coins).&lt;br /&gt;
--&lt;br /&gt;
-- @param frame {table} Frame passed in to main.&lt;br /&gt;
-- @param ticks {string|number} The number of ticks required to create one output. String or nil values will result in an assumption of 5.&lt;br /&gt;
-- @param materials_coins_cost {number} The total cost in coins of the materials.&lt;br /&gt;
-- @param outputs_coins_cost {number} The total cost in coins of the outputs.&lt;br /&gt;
-- @return {html tr element} A tr element holding the profit from one conversion of materials into outputs.&lt;br /&gt;
-- @return {bool} True if a note was added to the profit indicating questionable profits. False otherwise.&lt;br /&gt;
--&lt;br /&gt;
-- FIXME: It&amp;#039;s not clear how the note field is supposed to be used. It&amp;#039;s not documented and along with has_ref_tag, doesn&amp;#039;t seem to actually ever get set to anything other than &amp;#039;&amp;#039; and false respectively.&lt;br /&gt;
function generate_profit_row(frame, ticks, materials_coins_cost, outputs_coins_cost)&lt;br /&gt;
	local profit = outputs_coins_cost - materials_coins_cost&lt;br /&gt;
	local note = &amp;#039;&amp;#039;&lt;br /&gt;
	local has_ref_tag = false&lt;br /&gt;
&lt;br /&gt;
	-- Find ticks per action. Assume 5 if nothing else is given.&lt;br /&gt;
	-- If it takes 0 ticks, set to 1/8 since 8 actions can be performed per tick.&lt;br /&gt;
	local ticks_per_action = tonumber(ticks) or 5&lt;br /&gt;
	if ticks_per_action == 0 then&lt;br /&gt;
		ticks_per_action = 1/8&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Create and populate the table row element&lt;br /&gt;
	local profit_row = mw.html.create(&amp;#039;tr&amp;#039;)&lt;br /&gt;
	profit_row&lt;br /&gt;
		:tag(&amp;#039;th&amp;#039;):attr(&amp;#039;colspan&amp;#039;, 3):css({[&amp;#039;text-align&amp;#039;] = &amp;#039;right&amp;#039;}):wikitext(&amp;#039;Profit&amp;#039;):done()&lt;br /&gt;
		:tag(&amp;#039;td&amp;#039;):css({[&amp;#039;text-align&amp;#039;] = &amp;#039;right&amp;#039;}):wikitext(coins(profit) .. note):done()&lt;br /&gt;
&lt;br /&gt;
	return profit_row, has_ref_tag&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
-- Main&lt;br /&gt;
--&lt;br /&gt;
function p._main(frame, args, tools, skills, members, notes, materials, output, facilities, ticks, ticks_note, useSmw)	&lt;br /&gt;
	local function toolImages(t)&lt;br /&gt;
		local images = {}&lt;br /&gt;
				&lt;br /&gt;
		if params.is_empty(t) then&lt;br /&gt;
			return &amp;#039;None&amp;#039;&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		local spl = mw.text.split(t, &amp;quot;,&amp;quot;)&lt;br /&gt;
		for _, image_i in ipairs(spl) do&lt;br /&gt;
			image_i = mw.text.trim(image_i)&lt;br /&gt;
			if toolsList[image_i] then&lt;br /&gt;
				table.insert(images, toolsList[image_i])&lt;br /&gt;
			else&lt;br /&gt;
				table.insert(images, string.format(&amp;quot;[[File:%s.png|link=%s]]&amp;quot;, image_i, image_i))&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		return table.concat(images)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local function facilityLinks(f)&lt;br /&gt;
		local links = {}&lt;br /&gt;
		&lt;br /&gt;
		if params.is_empty(f) then&lt;br /&gt;
			return &amp;#039;None&amp;#039;&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		local spl = mw.text.split(f, &amp;quot;,&amp;quot;)&lt;br /&gt;
		for _, link_i in ipairs(spl) do&lt;br /&gt;
			if facilitiesIcons[link_i] ~= nil then&lt;br /&gt;
				table.insert(links, string.format(&amp;quot;%s [[%s]]&amp;quot;, facilitiesIcons[link_i], link_i))&lt;br /&gt;
			else&lt;br /&gt;
				table.insert(links, string.format(&amp;quot;[[%s]]&amp;quot;, link_i))&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		return table.concat(links, &amp;quot;&amp;lt;br /&amp;gt;&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- START OF REQUIREMENTS TABLE&lt;br /&gt;
	-- This table contains skill reqs and xp, quest reqs, members req, and ticks&lt;br /&gt;
	local requirementsTable = mw.html.create(&amp;#039;table&amp;#039;)&lt;br /&gt;
			:addClass(&amp;#039;wikitable align-center-2 align-right-3&amp;#039;)&lt;br /&gt;
			:css({ width = &amp;#039;100%&amp;#039;,&lt;br /&gt;
				[&amp;#039;margin-bottom&amp;#039;] = &amp;#039;0&amp;#039; })&lt;br /&gt;
	&lt;br /&gt;
	requirementsTable:tag(&amp;#039;caption&amp;#039;):wikitext(&amp;quot;Requirements&amp;quot;):done()&lt;br /&gt;
	&lt;br /&gt;
	-- Skills&lt;br /&gt;
	local unknown_boostable_flag = false&lt;br /&gt;
&lt;br /&gt;
	if #skills ~= 0 then&lt;br /&gt;
&lt;br /&gt;
		local skill_requirements = mw.html.create(&amp;#039;tr&amp;#039;)&lt;br /&gt;
		skill_requirements&lt;br /&gt;
			:tag(&amp;#039;th&amp;#039;):attr(&amp;#039;colspan&amp;#039;, 2):wikitext(&amp;#039;Skill&amp;#039;):done()&lt;br /&gt;
			:tag(&amp;#039;th&amp;#039;):wikitext(&amp;#039;Level&amp;#039;):done()&lt;br /&gt;
			:tag(&amp;#039;th&amp;#039;):wikitext(&amp;#039;XP&amp;#039;):done()&lt;br /&gt;
		&lt;br /&gt;
		skill_requirement_rows, unknown_boostable_flag = generate_skills_rows(skills)&lt;br /&gt;
&lt;br /&gt;
		for _, row in ipairs(skill_requirement_rows) do&lt;br /&gt;
			skill_requirements:node(row)&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		requirementsTable:node(skill_requirements)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	-- Notes&lt;br /&gt;
	if notes ~= nil then&lt;br /&gt;
		requirementsTable:tag(&amp;#039;tr&amp;#039;)&lt;br /&gt;
			:tag(&amp;#039;td&amp;#039;):attr(&amp;#039;colspan&amp;#039;, 4):wikitext(notes):done()&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Members and Ticks row&lt;br /&gt;
	local members_and_ticks_row = mw.html.create(&amp;#039;tr&amp;#039;)&lt;br /&gt;
	-- lua var members has historically been either &amp;#039;Yes&amp;#039;, &amp;#039;No&amp;#039;, or &amp;#039;&amp;#039; at this point&lt;br /&gt;
	-- However it wasn&amp;#039;t quite obvious that there could be 3 values which led to the previous comments asking if yesno should be used.&lt;br /&gt;
	-- Now p.main() leaves the variable as either true, false, or &amp;#039;&amp;#039; instead of converting the true and false to strings &amp;#039;Yes&amp;#039; and &amp;#039;No&amp;#039; respectively.&lt;br /&gt;
	-- This makes it so we can more cleanly and obviously handle the 3 cases here without ambiguity about the string values and whether to use yesno or not.&lt;br /&gt;
	local membersTemplate = members and &amp;quot;[[File:Member icon.png|center|link=Members]]&amp;quot; or members == false and &amp;quot;[[File:Free-to-play icon.png|center|link=Free-to-play]]&amp;quot; or edit&lt;br /&gt;
&lt;br /&gt;
	members_and_ticks_row&lt;br /&gt;
		:tag(&amp;#039;th&amp;#039;):wikitext(&amp;#039;Members&amp;#039;):done()&lt;br /&gt;
		:tag(&amp;#039;td&amp;#039;):wikitext(membersTemplate):done()&lt;br /&gt;
		:tag(&amp;#039;th&amp;#039;):attr(&amp;#039;title&amp;#039;, &amp;#039;Ticks per action&amp;#039;):wikitext(&amp;#039;[[RuneScape clock#Length of a tick|Ticks]]&amp;#039;):done()&lt;br /&gt;
&lt;br /&gt;
	local ticks_cell, has_ticks_ref_tag = generate_ticks_cell(frame, ticks, ticks_note)&lt;br /&gt;
	members_and_ticks_row:node(ticks_cell)&lt;br /&gt;
	&lt;br /&gt;
	requirementsTable:node(members_and_ticks_row)&lt;br /&gt;
&lt;br /&gt;
	--Tools and Facilities row&lt;br /&gt;
	if params.has_content(tools) or params.has_content(facilities) then&lt;br /&gt;
		local toolImgs = toolImages(tools)&lt;br /&gt;
		local facilityLnks = facilityLinks(facilities)&lt;br /&gt;
		requirementsTable:tag(&amp;#039;tr&amp;#039;)&lt;br /&gt;
			:tag(&amp;#039;th&amp;#039;):wikitext(&amp;#039;Tools&amp;#039;):done()&lt;br /&gt;
			:tag(&amp;#039;td&amp;#039;):css({ [&amp;#039;text-align&amp;#039;] = &amp;#039;center&amp;#039; }):wikitext(toolImgs):done()&lt;br /&gt;
			:tag(&amp;#039;th&amp;#039;):wikitext(&amp;#039;Facilities&amp;#039;):done()&lt;br /&gt;
			:tag(&amp;#039;td&amp;#039;):css({ [&amp;#039;text-align&amp;#039;] = &amp;#039;center&amp;#039; }):wikitext(facilityLnks):done()&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
-- END OF REQUIREMENTS TABLE&lt;br /&gt;
----------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------------&lt;br /&gt;
-- START OF MATERIALS AND PRODUCTS TABLE&lt;br /&gt;
	-- Contains materials (item, qty, cost), total cost, products, and profit&lt;br /&gt;
&lt;br /&gt;
	-- All rows to be in the materials and products table should be appended to materialsTable&lt;br /&gt;
	local materialsTable = mw.html.create(&amp;#039;table&amp;#039;)&lt;br /&gt;
			:addClass(&amp;#039;wikitable align-center-1 align-right-3 align-right-4&amp;#039;)&lt;br /&gt;
			:css({ width = &amp;#039;100%&amp;#039;,&lt;br /&gt;
				[&amp;#039;margin-top&amp;#039;] = &amp;#039;0&amp;#039; })	&lt;br /&gt;
&lt;br /&gt;
	materialsTable:tag(&amp;#039;caption&amp;#039;):wikitext(&amp;quot;Materials&amp;quot;):done()&lt;br /&gt;
&lt;br /&gt;
	-- Table header&lt;br /&gt;
	materialsTable:tag(&amp;#039;tr&amp;#039;)&lt;br /&gt;
		:tag(&amp;#039;th&amp;#039;):attr(&amp;#039;colspan&amp;#039;, 2):wikitext(&amp;#039;Item&amp;#039;):done()&lt;br /&gt;
		:tag(&amp;#039;th&amp;#039;):wikitext(&amp;#039;Quantity&amp;#039;):done()&lt;br /&gt;
		:tag(&amp;#039;th&amp;#039;):wikitext(&amp;#039;Cost&amp;#039;):done()&lt;br /&gt;
&lt;br /&gt;
	-- Materials&lt;br /&gt;
	local material_rows, material_costs, has_material_ref_tag = generate_rows(frame, materials)&lt;br /&gt;
	for _, row in ipairs(material_rows) do&lt;br /&gt;
		materialsTable:node(row)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Total cost&lt;br /&gt;
	local total_cost_row = generate_total_cost_row(materials, material_costs)&lt;br /&gt;
	materialsTable:node(total_cost_row)&lt;br /&gt;
	&lt;br /&gt;
	-- Products&lt;br /&gt;
	local output_rows, output_cost, has_output_ref_tag = generate_rows(frame, output)&lt;br /&gt;
	for _, row in ipairs(output_rows) do&lt;br /&gt;
		materialsTable:node(row)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Profit&lt;br /&gt;
	local profit_row, has_profit_ref_tag&lt;br /&gt;
	if output_cost[&amp;#039;Coins&amp;#039;] &amp;gt; 0 then&lt;br /&gt;
		profit_row, has_profit_ref_tag = generate_profit_row(frame, ticks, material_costs[&amp;#039;Coins&amp;#039;], output_cost[&amp;#039;Coins&amp;#039;])&lt;br /&gt;
		materialsTable:node(profit_row)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
-- END OF MATERIALS AND PRODUCTS TABLE&lt;br /&gt;
----------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
	-- Append the two tables a parent div&lt;br /&gt;
	local parent = mw.html.create(&amp;#039;div&amp;#039;)&lt;br /&gt;
			:addClass(&amp;#039;recipe-table&amp;#039;)&lt;br /&gt;
			:cssText(&amp;#039;width:-moz-fit-content;width:fit-content;&amp;#039;)&lt;br /&gt;
	parent:node(requirementsTable)&lt;br /&gt;
	parent:node(materialsTable)&lt;br /&gt;
	&lt;br /&gt;
	-- Set smw stuff&lt;br /&gt;
	if useSmw then&lt;br /&gt;
		-- See the comment around line 484 (near the members and ticks row)&lt;br /&gt;
		-- The members lua var now is one of true, false, or &amp;#039;&amp;#039; to avoid ambiguity around string values &amp;#039;Yes&amp;#039; and &amp;#039;No&amp;#039;, and a not obvious possibility of the value &amp;#039;&amp;#039;&lt;br /&gt;
		-- Because string values are expected by smw, we convert the boolean values back to strings here&lt;br /&gt;
		members = members and &amp;#039;Yes&amp;#039; or members == false and &amp;#039;No&amp;#039; or &amp;#039;&amp;#039;&lt;br /&gt;
		local jsonObject = {skills = skills, members = members, materials = {}, output = output[1], ticks = ticks, facilities = facilities, tools = tools}&lt;br /&gt;
		local materialNames = {}&lt;br /&gt;
		for _, v in ipairs(materials) do&lt;br /&gt;
			table.insert(jsonObject.materials, {name = v.name, quantity = v.quantity})&lt;br /&gt;
			table.insert(materialNames, v.name)&lt;br /&gt;
		end&lt;br /&gt;
		local smwmap = {&lt;br /&gt;
			[&amp;#039;Uses material&amp;#039;] = materialNames,&lt;br /&gt;
			[&amp;#039;Uses tool&amp;#039;] = mw.text.split(tools or &amp;#039;&amp;#039;, &amp;#039;%s*,%s*&amp;#039;),&lt;br /&gt;
			[&amp;#039;Uses facility&amp;#039;] = mw.text.split(facilities or &amp;#039;&amp;#039;, &amp;#039;%s*,%s*&amp;#039;),&lt;br /&gt;
			[&amp;#039;Is members only&amp;#039;] = members,&lt;br /&gt;
			[&amp;#039;Production JSON&amp;#039;] = mw.text.jsonEncode(jsonObject),&lt;br /&gt;
			[&amp;#039;Is boostable&amp;#039;] = {},&lt;br /&gt;
			[&amp;#039;Uses skill&amp;#039;] = {},&lt;br /&gt;
		}&lt;br /&gt;
		for i, v in pairs(smwmap) do&lt;br /&gt;
			-- trim off any {{!}}foo&lt;br /&gt;
			if type(v) == &amp;#039;table&amp;#039; then&lt;br /&gt;
				for j, w in ipairs(v) do&lt;br /&gt;
					v[j] = mw.text.split(w, &amp;#039;|&amp;#039;)[1]&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		for _, s in ipairs(skills) do&lt;br /&gt;
			smwmap[s.name..&amp;#039; level&amp;#039;] = tonumber(s.level)&lt;br /&gt;
			smwmap[s.name..&amp;#039; experience&amp;#039;] = tonumber(s.experience)&lt;br /&gt;
			table.insert(smwmap[&amp;#039;Uses skill&amp;#039;], s.name)&lt;br /&gt;
			if yesno(s.boostable, false) then&lt;br /&gt;
				table.insert(smwmap[&amp;#039;Is boostable&amp;#039;], s.name)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		mw.smw.set(smwmap)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- If there are any ref tags, add a Reflist section&lt;br /&gt;
	local outro = &amp;#039;&amp;#039;&lt;br /&gt;
	local has_ref_tag = has_ticks_ref_tag or has_material_ref_tag or has_output_ref_tag or has_profit_ref_tag&lt;br /&gt;
	if has_ref_tag then&lt;br /&gt;
		outro = &amp;#039;&amp;lt;div class=&amp;quot;reflist&amp;quot;&amp;gt;\n&amp;#039; .. frame:extensionTag{ name=&amp;#039;references&amp;#039;, args = { group=&amp;#039;r&amp;#039; } } .. &amp;#039;&amp;lt;/div&amp;gt;&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Return div with tables + categories + reflist&lt;br /&gt;
	return tostring(parent) .. categories(args, skills, unknown_boostable_flag) .. outro&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function categories(args, skills, unknown_boostable_flag)&lt;br /&gt;
	if not onmain() then&lt;br /&gt;
		return &amp;#039;&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
	local cats = {}&lt;br /&gt;
	&lt;br /&gt;
	if unknown_boostable_flag then&lt;br /&gt;
		table.insert(cats, &amp;#039;[[Category:Recipes missing boostable]]&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local missinglvl = false&lt;br /&gt;
	local missingexp = false&lt;br /&gt;
	local nonnumexp = false&lt;br /&gt;
	for i, s in ipairs(skills) do&lt;br /&gt;
		if s.name then&lt;br /&gt;
			table.insert(cats, string.format(&amp;#039;[[Category:%s]]&amp;#039;, s.name))	&lt;br /&gt;
		end&lt;br /&gt;
		if string.find(s.level, &amp;#039;?&amp;#039;) then&lt;br /&gt;
			missinglvl = true&lt;br /&gt;
		end&lt;br /&gt;
		if string.find(s.experience, &amp;#039;?&amp;#039;) then&lt;br /&gt;
			missingexp = true&lt;br /&gt;
		elseif tonumber(s.experience) == nil then&lt;br /&gt;
			nonnumexp = true&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if missinglvl then&lt;br /&gt;
		table.insert(cats, &amp;#039;[[Category:Missing skill info values]]&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
	if missingexp then&lt;br /&gt;
		table.insert(cats, &amp;#039;[[Category:Needs experience info]]&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
	if nonnumexp then&lt;br /&gt;
		table.insert(cats, &amp;#039;[[Category:Pages with non-numeric experience quantity]]&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if (args.ticks or &amp;#039;&amp;#039;) == &amp;#039;&amp;#039; then&lt;br /&gt;
		table.insert(cats, &amp;#039;[[Category:Recipes missing ticks]]&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if args.tools ~= nil then&lt;br /&gt;
		table.insert(cats, &amp;#039;[[Category:Recipes that require a tool]]&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.facilities ~= nil then&lt;br /&gt;
		table.insert(cats, &amp;#039;[[Category:Recipes that use a facility]]&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return table.concat(cats,&amp;#039;&amp;#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
</feed>