<?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%3AUsed_in_recommended_equipment</id>
	<title>Module:Used in recommended equipment - 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%3AUsed_in_recommended_equipment"/>
	<link rel="alternate" type="text/html" href="https://wiki.runerealm.org/index.php?title=Module:Used_in_recommended_equipment&amp;action=history"/>
	<updated>2026-04-30T23:52:49Z</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:Used_in_recommended_equipment&amp;diff=38443&amp;oldid=prev</id>
		<title>Alex at 10:24, 17 October 2024</title>
		<link rel="alternate" type="text/html" href="https://wiki.runerealm.org/index.php?title=Module:Used_in_recommended_equipment&amp;diff=38443&amp;oldid=prev"/>
		<updated>2024-10-17T10:24:07Z</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 12:24, 17 October 2024&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 72:&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 72:&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 newData = {}&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 newData = {}&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;	&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; 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;	-- Split &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;mw.&lt;/del&gt;pages that have multiple recommended equipment templates into separate table entries&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;	-- Split pages that have multiple recommended equipment templates into separate table entries&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;	--  Rename the first parameter to name for clarity and ease of use&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;	--  Rename the first parameter to name for clarity and ease of use&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;	-- It will only return tables that contain links to the arg inputs&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;	-- It will only return tables that contain links to the arg inputs&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:Used_in_recommended_equipment&amp;diff=35211&amp;oldid=prev</id>
		<title>Alex at 23:13, 16 October 2024</title>
		<link rel="alternate" type="text/html" href="https://wiki.runerealm.org/index.php?title=Module:Used_in_recommended_equipment&amp;diff=35211&amp;oldid=prev"/>
		<updated>2024-10-16T23:13:21Z</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 01:13, 17 October 2024&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 72:&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 72:&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 newData = {}&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 newData = {}&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;	&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; 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;	-- Split pages that have multiple recommended equipment templates into separate table entries&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;	-- Split &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;mw.&lt;/ins&gt;pages that have multiple recommended equipment templates into separate table entries&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;	--  Rename the first parameter to name for clarity and ease of use&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;	--  Rename the first parameter to name for clarity and ease of use&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;	-- It will only return tables that contain links to the arg inputs&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;	-- It will only return tables that contain links to the arg inputs&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:Used_in_recommended_equipment&amp;diff=491&amp;oldid=prev</id>
		<title>Alex: Created page with &quot;local p = {}  local contains = require(&#039;Module:Array&#039;).contains local pagesWithCats = require(&#039;Module:PageListTools&#039;).pageswithcats local paramTest = require(&#039;Module:Paramtest&#039;)  local ask = mw.smw.ask local decode = mw.text.jsonDecode local html = mw.html local title = mw.title local trim = mw.text.trim  function buildRow(positions, page, tableStyle) 	local row = html.create(&#039;tr&#039;) 	row:tag(&#039;td&#039;):attr(&#039;data-sort-value&#039;, string.sub(positions, 1, 1)):wikitext(positions):do...&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.runerealm.org/index.php?title=Module:Used_in_recommended_equipment&amp;diff=491&amp;oldid=prev"/>
		<updated>2024-10-11T22:36:09Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;local p = {}  local contains = require(&amp;#039;Module:Array&amp;#039;).contains local pagesWithCats = require(&amp;#039;Module:PageListTools&amp;#039;).pageswithcats local paramTest = require(&amp;#039;Module:Paramtest&amp;#039;)  local ask = mw.smw.ask local decode = mw.text.jsonDecode local html = mw.html local title = mw.title local trim = mw.text.trim  function buildRow(positions, page, tableStyle) 	local row = html.create(&amp;#039;tr&amp;#039;) 	row:tag(&amp;#039;td&amp;#039;):attr(&amp;#039;data-sort-value&amp;#039;, string.sub(positions, 1, 1)):wikitext(positions):do...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
local contains = require(&amp;#039;Module:Array&amp;#039;).contains&lt;br /&gt;
local pagesWithCats = require(&amp;#039;Module:PageListTools&amp;#039;).pageswithcats&lt;br /&gt;
local paramTest = require(&amp;#039;Module:Paramtest&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
local ask = mw.smw.ask&lt;br /&gt;
local decode = mw.text.jsonDecode&lt;br /&gt;
local html = mw.html&lt;br /&gt;
local title = mw.title&lt;br /&gt;
local trim = mw.text.trim&lt;br /&gt;
&lt;br /&gt;
function buildRow(positions, page, tableStyle)&lt;br /&gt;
	local row = html.create(&amp;#039;tr&amp;#039;)&lt;br /&gt;
	row:tag(&amp;#039;td&amp;#039;):attr(&amp;#039;data-sort-value&amp;#039;, string.sub(positions, 1, 1)):wikitext(positions):done()&lt;br /&gt;
		:tag(&amp;#039;td&amp;#039;):wikitext(&amp;#039;[[&amp;#039; .. page .. &amp;#039;]]&amp;#039; .. (paramTest.has_content(tableStyle) and &amp;#039; &amp;lt;small&amp;gt;(&amp;#039; .. tableStyle .. &amp;#039;)&amp;lt;/small&amp;gt;&amp;#039; or &amp;#039;&amp;#039;)):done()&lt;br /&gt;
	&lt;br /&gt;
	return row&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function createHeader()&lt;br /&gt;
	local tabl = html.create(&amp;#039;table&amp;#039;):addClass(&amp;#039;wikitable mw-collapsible mw-collapsed sortable align-center-1 align-left-2 autosort=1,a&amp;#039;)&lt;br /&gt;
	tabl:tag(&amp;#039;tr&amp;#039;):tag(&amp;#039;th&amp;#039;):wikitext(&amp;#039;Rank&amp;#039;):done()&lt;br /&gt;
		:tag(&amp;#039;th&amp;#039;):wikitext(&amp;#039;Method&amp;#039;):done()&lt;br /&gt;
		&lt;br /&gt;
	return tabl&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Returns the input item&amp;#039;s page name and slot type&lt;br /&gt;
function loadItemData(item)&lt;br /&gt;
	local query = {&lt;br /&gt;
		&amp;#039;[[&amp;#039; .. item .. &amp;#039;]]&amp;#039;,&lt;br /&gt;
		&amp;#039;?=#-&amp;#039;,&lt;br /&gt;
		&amp;#039;?All Equipment slot = slot&amp;#039;,&lt;br /&gt;
		limit = 1,&lt;br /&gt;
		offset = 0,&lt;br /&gt;
	}&lt;br /&gt;
	local t1 = os.clock()&lt;br /&gt;
	local itemData = ask(query)&lt;br /&gt;
	local t2 = os.clock()&lt;br /&gt;
	--assert(itemData ~= nil and #itemData &amp;gt; 0, &amp;#039;SMW query failed&amp;#039;)&lt;br /&gt;
	mw.log(string.format(&amp;#039;SMW: entries %d, time elapsed: %.3f ms.&amp;#039;, #itemData, (t2 - t1) * 1000))&lt;br /&gt;
&lt;br /&gt;
	return itemData[1][1], itemData[1].slot&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Returns true for the exact string `Amulet of glory` will only yield uncharged amulet of glory links&lt;br /&gt;
function stringContains(items, str)&lt;br /&gt;
	for _, item in ipairs(items) do&lt;br /&gt;
		local escapedString = string.gsub(item, &amp;quot;([^%w])&amp;quot;, &amp;quot;%%%1&amp;quot;)&lt;br /&gt;
		if(string.find(str, &amp;#039;%[&amp;#039; .. escapedString .. &amp;#039;[%|%]]&amp;#039;)) then&lt;br /&gt;
			return true&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function loadData(items)&lt;br /&gt;
	local query = {&lt;br /&gt;
		&amp;#039;[[Recommended Equipment JSON::+]]&amp;#039;,&lt;br /&gt;
		&amp;#039;?=#-&amp;#039;,&lt;br /&gt;
		&amp;#039;?Recommended Equipment JSON = json&amp;#039;,&lt;br /&gt;
		limit = 500,&lt;br /&gt;
		offset = 0,&lt;br /&gt;
	}&lt;br /&gt;
	local t1 = os.clock()&lt;br /&gt;
	local smwData = ask(query)&lt;br /&gt;
	local t2 = os.clock()&lt;br /&gt;
	assert(smwData ~= nil and #smwData &amp;gt; 0, &amp;#039;SMW query failed&amp;#039;)&lt;br /&gt;
	mw.log(string.format(&amp;#039;SMW: entries %d, time elapsed: %.3f ms.&amp;#039;, #smwData, (t2 - t1) * 1000))&lt;br /&gt;
	&lt;br /&gt;
	local newData = {}&lt;br /&gt;
	&lt;br /&gt;
	-- Split pages that have multiple recommended equipment templates into separate table entries&lt;br /&gt;
	--  Rename the first parameter to name for clarity and ease of use&lt;br /&gt;
	-- It will only return tables that contain links to the arg inputs&lt;br /&gt;
	for _, page in ipairs(smwData) do&lt;br /&gt;
		if(type(page.json) == &amp;#039;table&amp;#039;) then&lt;br /&gt;
			for _, equipmentTable in ipairs(page.json) do&lt;br /&gt;
				if(stringContains(items, equipmentTable)) then&lt;br /&gt;
					table.insert(newData, { name = page[1], json = decode(equipmentTable)})&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		elseif(stringContains(items, page.json)) then&lt;br /&gt;
			table.insert(newData, { name = page[1], json = decode(page.json)})&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return newData&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._main(args)&lt;br /&gt;
	-- CSV lists should only be used for things in the same slot that are functionally identical&lt;br /&gt;
	--  This is primarily for redirect/generic linking, e.g. like `God blessing` when referring to any of the blessings&lt;br /&gt;
	local itemStr = paramTest.default_to(args[1], title.getCurrentTitle().text)&lt;br /&gt;
	local items = {}&lt;br /&gt;
	for str in string.gmatch(itemStr, &amp;#039;([^,]+)&amp;#039;) do&lt;br /&gt;
		table.insert(items, trim(str))&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local data = loadData(items)&lt;br /&gt;
	&lt;br /&gt;
	-- Only using the primary page for slot/special info, others should never impact it&lt;br /&gt;
	local itemPage, itemSlot = loadItemData(items[1])&lt;br /&gt;
	&lt;br /&gt;
	local ret = createHeader()&lt;br /&gt;
	local rowCount = 0&lt;br /&gt;
	local retSpecial&lt;br /&gt;
	local rowCountSpecial = 0&lt;br /&gt;
	&lt;br /&gt;
	local itemHasSpecial = false&lt;br /&gt;
	if(contains(pagesWithCats({ &amp;#039;[[Category:Weapons with Special attacks]]&amp;#039; }), itemPage)) then&lt;br /&gt;
		itemHasSpecial = true&lt;br /&gt;
		retSpecial = createHeader()&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	for _, equipmentTable in ipairs(data) do&lt;br /&gt;
		local slotRowsToTraverse = {}&lt;br /&gt;
		if(equipmentTable.json[&amp;quot;Recommended Equipment&amp;quot;][itemSlot] ~= nil) then&lt;br /&gt;
			table.insert(slotRowsToTraverse, itemSlot)&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		-- Weapon and 2h are used interchangably, so include both in the search.&lt;br /&gt;
		if(itemSlot == &amp;#039;weapon&amp;#039; and equipmentTable.json[&amp;quot;Recommended Equipment&amp;quot;][&amp;#039;2h&amp;#039;] ~= nil) then&lt;br /&gt;
			table.insert(slotRowsToTraverse, &amp;#039;2h&amp;#039;)&lt;br /&gt;
		elseif(itemSlot == &amp;#039;2h&amp;#039; and equipmentTable.json[&amp;quot;Recommended Equipment&amp;quot;][&amp;#039;weapon&amp;#039;] ~= nil) then&lt;br /&gt;
			table.insert(slotRowsToTraverse, &amp;#039;weapon&amp;#039;)&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if(itemHasSpecial and equipmentTable.json[&amp;quot;Recommended Equipment&amp;quot;][&amp;#039;special&amp;#039;] ~= nil) then&lt;br /&gt;
			table.insert(slotRowsToTraverse, &amp;#039;special&amp;#039;)&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		-- Darts exist as weapons or ammo (and are included with blowpipe in weapon)&lt;br /&gt;
		if(string.sub(itemPage, -4) == &amp;#039;dart&amp;#039; and equipmentTable.json[&amp;quot;Recommended Equipment&amp;quot;][&amp;#039;ammo&amp;#039;] ~= nil) then&lt;br /&gt;
			table.insert(slotRowsToTraverse, &amp;#039;ammo&amp;#039;)&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		for _, slotRowName in ipairs(slotRowsToTraverse) do&lt;br /&gt;
			local positions = &amp;#039;&amp;#039;&lt;br /&gt;
			for i, slotEntry in ipairs(equipmentTable.json[&amp;quot;Recommended Equipment&amp;quot;][slotRowName]) do&lt;br /&gt;
				if(stringContains(items, slotEntry)) then&lt;br /&gt;
					if(positions == &amp;#039;&amp;#039;) then&lt;br /&gt;
						positions = positions .. i&lt;br /&gt;
					else&lt;br /&gt;
						positions = positions .. &amp;#039;, &amp;#039; .. i&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			if(positions ~= &amp;#039;&amp;#039; and slotRowName ~= &amp;#039;special&amp;#039;) then&lt;br /&gt;
				ret:node(buildRow(positions, equipmentTable.name, equipmentTable.json.style))&lt;br /&gt;
				rowCount = rowCount + 1&lt;br /&gt;
			elseif(positions ~= &amp;#039;&amp;#039; and slotRowName == &amp;#039;special&amp;#039;) then&lt;br /&gt;
				retSpecial:node(buildRow(positions, equipmentTable.name, equipmentTable.json.style))&lt;br /&gt;
				rowCountSpecial = rowCountSpecial + 1&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if rowCount == 0 and rowCountSpecial == 0 then&lt;br /&gt;
        do return &amp;#039;Not used in any recommended equipment.&amp;#039; end&lt;br /&gt;
    end&lt;br /&gt;
	&lt;br /&gt;
	return (rowCount &amp;gt; 0 and tostring(ret) or &amp;#039;&amp;#039;) .. (rowCountSpecial &amp;gt; 0 and tostring(&amp;#039;\n===Special attack===\n&amp;#039;) .. tostring(retSpecial) or &amp;#039;&amp;#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	local args = frame:getParent().args&lt;br /&gt;
	return p._main(args)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
</feed>