<?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%3AItemDropsLineUpdated</id>
	<title>Module:ItemDropsLineUpdated - 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%3AItemDropsLineUpdated"/>
	<link rel="alternate" type="text/html" href="https://wiki.runerealm.org/index.php?title=Module:ItemDropsLineUpdated&amp;action=history"/>
	<updated>2026-05-03T05:44:27Z</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:ItemDropsLineUpdated&amp;diff=34188&amp;oldid=prev</id>
		<title>Alex: Created page with &quot;-- &lt;pre&gt; local p = {}  local yesno = require(&#039;Module:Yesno&#039;) local params = require(&#039;Module:Paramtest&#039;) local commas = require(&#039;Module:Addcommas&#039;) local npcs = require(&#039;Module:NPCQuery&#039;)  local raritybg = { 	[&#039;always&#039;] = &#039;#AFEEEE&#039;, 	[&#039;common&#039;] = &#039;#56E156&#039;, 	[&#039;uncommon&#039;] = &#039;#FFED4C&#039;, 	[&#039;rare&#039;] = &#039;#FF863C&#039;, 	[&#039;very rare&#039;] = &#039;#FF6262&#039;, 	[&#039;random&#039;] = &#039;#FFA3FF&#039;, 	[&#039;varies&#039;] = &#039;#FFA3FF&#039;, 	[&#039;discontinued&#039;] = &#039;#DBFF4C&#039; }  local raritysort = { 	[&#039;always&#039;] = &#039;1&#039;, 	[&#039;common&#039;] = &#039;2&#039;...&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.runerealm.org/index.php?title=Module:ItemDropsLineUpdated&amp;diff=34188&amp;oldid=prev"/>
		<updated>2024-10-15T23:22:32Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;-- &amp;lt;pre&amp;gt; local p = {}  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 npcs = require(&amp;#039;Module:NPCQuery&amp;#039;)  local raritybg = { 	[&amp;#039;always&amp;#039;] = &amp;#039;#AFEEEE&amp;#039;, 	[&amp;#039;common&amp;#039;] = &amp;#039;#56E156&amp;#039;, 	[&amp;#039;uncommon&amp;#039;] = &amp;#039;#FFED4C&amp;#039;, 	[&amp;#039;rare&amp;#039;] = &amp;#039;#FF863C&amp;#039;, 	[&amp;#039;very rare&amp;#039;] = &amp;#039;#FF6262&amp;#039;, 	[&amp;#039;random&amp;#039;] = &amp;#039;#FFA3FF&amp;#039;, 	[&amp;#039;varies&amp;#039;] = &amp;#039;#FFA3FF&amp;#039;, 	[&amp;#039;discontinued&amp;#039;] = &amp;#039;#DBFF4C&amp;#039; }  local raritysort = { 	[&amp;#039;always&amp;#039;] = &amp;#039;1&amp;#039;, 	[&amp;#039;common&amp;#039;] = &amp;#039;2&amp;#039;...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;-- &amp;lt;pre&amp;gt;&lt;br /&gt;
local p = {}&lt;br /&gt;
&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 npcs = require(&amp;#039;Module:NPCQuery&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
local raritybg = {&lt;br /&gt;
	[&amp;#039;always&amp;#039;] = &amp;#039;#AFEEEE&amp;#039;,&lt;br /&gt;
	[&amp;#039;common&amp;#039;] = &amp;#039;#56E156&amp;#039;,&lt;br /&gt;
	[&amp;#039;uncommon&amp;#039;] = &amp;#039;#FFED4C&amp;#039;,&lt;br /&gt;
	[&amp;#039;rare&amp;#039;] = &amp;#039;#FF863C&amp;#039;,&lt;br /&gt;
	[&amp;#039;very rare&amp;#039;] = &amp;#039;#FF6262&amp;#039;,&lt;br /&gt;
	[&amp;#039;random&amp;#039;] = &amp;#039;#FFA3FF&amp;#039;,&lt;br /&gt;
	[&amp;#039;varies&amp;#039;] = &amp;#039;#FFA3FF&amp;#039;,&lt;br /&gt;
	[&amp;#039;discontinued&amp;#039;] = &amp;#039;#DBFF4C&amp;#039;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local raritysort = {&lt;br /&gt;
	[&amp;#039;always&amp;#039;] = &amp;#039;1&amp;#039;,&lt;br /&gt;
	[&amp;#039;common&amp;#039;] = &amp;#039;2&amp;#039;,&lt;br /&gt;
	[&amp;#039;uncommon&amp;#039;] = &amp;#039;3&amp;#039;,&lt;br /&gt;
	[&amp;#039;rare&amp;#039;] = &amp;#039;4&amp;#039;,&lt;br /&gt;
	[&amp;#039;very rare&amp;#039;] = &amp;#039;5&amp;#039;,&lt;br /&gt;
	[&amp;#039;varies&amp;#039;] = &amp;#039;6&amp;#039;,&lt;br /&gt;
	[&amp;#039;random&amp;#039;] = &amp;#039;6&amp;#039;,&lt;br /&gt;
	[&amp;#039;discontinued&amp;#039;] = &amp;#039;7&amp;#039;&lt;br /&gt;
}&lt;br /&gt;
local membersort = {&lt;br /&gt;
	[&amp;#039;yes&amp;#039;] = &amp;#039;1&amp;#039;,&lt;br /&gt;
	[&amp;#039;no&amp;#039;] = &amp;#039;2&amp;#039;,&lt;br /&gt;
	[&amp;#039;no?&amp;#039;] = &amp;#039;2&amp;#039;,&lt;br /&gt;
	[&amp;#039;yes?&amp;#039;] = &amp;#039;1&amp;#039;,&lt;br /&gt;
	[&amp;#039;&amp;#039;] = &amp;#039;3&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;
	-- Params and defaults&lt;br /&gt;
	local name = params.default_to(args.Monster,&amp;#039;monster&amp;#039;)&lt;br /&gt;
	local namenotes = args.Namenotes or &amp;#039;&amp;#039;&lt;br /&gt;
	local combat = params.default_to(args.Combat,nil)&lt;br /&gt;
	local cbnotes = args.cbnotes or &amp;#039;&amp;#039;&lt;br /&gt;
	local quantity = params.default_to(args.Quantity,&amp;#039;Unknown&amp;#039;)&lt;br /&gt;
	local quantitynotes = args.Quantitynotes or &amp;#039;&amp;#039;&lt;br /&gt;
	local member = args.Member or npcs.NPCisMember(name)&lt;br /&gt;
	local rarity = params.default_to(args.Rarity,&amp;#039;Unknown&amp;#039;)&lt;br /&gt;
	local raritynotes = (args.Raritynotes or args.raritynotes) or &amp;#039;&amp;#039;&lt;br /&gt;
	rarity = params.ucflc(rarity)&lt;br /&gt;
	quantity = quantity:lower()&lt;br /&gt;
&lt;br /&gt;
	-- Table row&lt;br /&gt;
	return p._main(name,namenotes,combat,cbnotes,quantity,quantitynotes,rarity,raritynotes,member)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._main(name,namenotes,combat,cbnotes,quantity,quantitynotes,rarity,raritynotes,member)&lt;br /&gt;
	local rare_bg = raritybg[rarity:lower()] or &amp;#039;#FFFFFF&amp;#039;&lt;br /&gt;
	local rare_sort = raritysort[rarity:lower()] or &amp;#039;8&amp;#039;&lt;br /&gt;
	    local member_sort = membersort[member:lower()] or &amp;#039;8&amp;#039;&lt;br /&gt;
	-- Clean up the lists&lt;br /&gt;
	quantity = qty(quantity)&lt;br /&gt;
	combat = cmb(combat)&lt;br /&gt;
	-- Table row creation&lt;br /&gt;
	local ret = &amp;#039;\n|- style=&amp;quot;text-align:center;white-space:nowrap;&amp;quot;&amp;#039; .. &lt;br /&gt;
		&amp;#039;\n| style=&amp;quot;text-align:left;white-space:nowrap;&amp;quot; | [[&amp;#039; .. name .. &amp;#039;]] &amp;#039; .. namenotes ..&lt;br /&gt;
		&amp;#039;\n| &amp;#039; .. combat .. &amp;#039; &amp;#039; .. cbnotes ..&lt;br /&gt;
		&amp;#039;\n| &amp;#039; .. quantity .. &amp;#039; &amp;#039; .. quantitynotes ..&lt;br /&gt;
		&amp;#039;\n| style=&amp;quot;background:&amp;#039; .. rare_bg .. &amp;#039;;&amp;quot;&amp;#039; ..&lt;br /&gt;
			-- display none is used to create a sort key to let&lt;br /&gt;
			-- rarity sorting work properly&lt;br /&gt;
			&amp;#039; | &amp;lt;span style=&amp;quot;display:none;white-space:nowrap;&amp;quot;&amp;gt;&amp;#039; .. rare_sort ..&lt;br /&gt;
			&amp;#039;; &amp;lt;/span&amp;gt;&amp;#039; .. rarity .. &amp;#039; &amp;#039; .. raritynotes ..&lt;br /&gt;
			&amp;#039;\n| &amp;lt;span style=&amp;quot;display:none;&amp;quot;&amp;gt;&amp;#039; .. member_sort ..&lt;br /&gt;
			&amp;#039;; &amp;lt;/span&amp;gt;&amp;#039; .. member .. &amp;#039;\n|-\n&amp;#039;&lt;br /&gt;
	return ret&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function qty(quantity)&lt;br /&gt;
	-- if no quantity is given, return unknown&lt;br /&gt;
	if not quantity or quantity == &amp;#039;unknown&amp;#039; then&lt;br /&gt;
		return &amp;#039;Unknown&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
	-- en dashes are the proper dash for number ranges&lt;br /&gt;
	-- replace all hyphens and em dashes with en&lt;br /&gt;
	-- strip *all* whitespace&lt;br /&gt;
	-- change &amp;#039;(noted)&amp;#039; to &amp;#039;n&amp;#039; for parsing&lt;br /&gt;
	quantity = mw.ustring.gsub(quantity,&amp;#039;[-—]&amp;#039;,&amp;#039;–&amp;#039;)&lt;br /&gt;
		:gsub(&amp;#039;%s&amp;#039;,&amp;#039;&amp;#039;)&lt;br /&gt;
		:gsub(&amp;#039;%(noted%)&amp;#039;,&amp;#039;$n&amp;#039;)&lt;br /&gt;
	-- split list into table&lt;br /&gt;
	local vals = mw.text.split(quantity,&amp;#039;,&amp;#039;)&lt;br /&gt;
	-- recreate the quantity string to ensure consistent formatting&lt;br /&gt;
	local numstr = &amp;#039;&amp;#039;&lt;br /&gt;
	for i, v in ipairs(vals) do&lt;br /&gt;
		local clean = v:gsub(&amp;#039;$n&amp;#039;,&amp;#039;&amp;#039;)&lt;br /&gt;
		if mw.ustring.find(v,&amp;#039;–&amp;#039;) then&lt;br /&gt;
			local splitvals = mw.text.split(clean,&amp;#039;–&amp;#039;)&lt;br /&gt;
			local a = tonumber(splitvals[1])&lt;br /&gt;
			local b = tonumber(splitvals[2])&lt;br /&gt;
			local smaller,larger&lt;br /&gt;
			if a &amp;gt; b then&lt;br /&gt;
				smaller = b&lt;br /&gt;
				larger = a&lt;br /&gt;
			else&lt;br /&gt;
				smaller = a&lt;br /&gt;
				larger = b&lt;br /&gt;
			end&lt;br /&gt;
			numstr = numstr .. commas._add(smaller) .. &amp;#039;–&amp;#039; .. commas._add(larger)&lt;br /&gt;
			if v:find(&amp;#039;$n&amp;#039;) then&lt;br /&gt;
				numstr = numstr .. &amp;#039; (noted)&amp;#039;&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			local a = tonumber(clean)&lt;br /&gt;
			if a then&lt;br /&gt;
				numstr = numstr .. commas._add(a)&lt;br /&gt;
			end&lt;br /&gt;
			if v:find(&amp;#039;$n&amp;#039;) then&lt;br /&gt;
				numstr = numstr .. &amp;#039; (noted)&amp;#039;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		-- To prevent any possible confusion with formatted numbers&lt;br /&gt;
		-- elements should be separated with semicolons followed by a space&lt;br /&gt;
		numstr = numstr .. &amp;#039;; &amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
	-- removes the final separator, because it&amp;#039;s redundant&lt;br /&gt;
	numstr = numstr:sub(1,-3)&lt;br /&gt;
	if numstr:find(&amp;#039;%d&amp;#039;) then&lt;br /&gt;
		return numstr&lt;br /&gt;
	else&lt;br /&gt;
		return &amp;#039;Unknown&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function cmb(levels)&lt;br /&gt;
	-- if no level is given, return unknown&lt;br /&gt;
	if not levels then&lt;br /&gt;
		return &amp;#039;Unknown&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
	-- en dashes are the proper dash for number ranges&lt;br /&gt;
	-- replace all hyphens and em dashes with en&lt;br /&gt;
	-- strip *all* whitespace&lt;br /&gt;
	levels = mw.ustring.gsub(levels,&amp;#039;[-—]&amp;#039;,&amp;#039;–&amp;#039;)&lt;br /&gt;
		:gsub(&amp;#039;%s&amp;#039;,&amp;#039;&amp;#039;)&lt;br /&gt;
		:gsub(&amp;#039;%(&amp;#039;,&amp;#039; (&amp;#039;)&lt;br /&gt;
	-- split list into table&lt;br /&gt;
	local vals = mw.text.split(levels,&amp;#039;,&amp;#039;)&lt;br /&gt;
	-- recreate the list string to ensure consistent formatting&lt;br /&gt;
	local numstr = &amp;#039;&amp;#039;&lt;br /&gt;
	for i, v in ipairs(vals) do&lt;br /&gt;
		-- To prevent any possible confusion with formatted numbers&lt;br /&gt;
		-- elements should be separated with semicolons followed by a space&lt;br /&gt;
		numstr = numstr .. v .. &amp;#039;; &amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
	-- removes the final separator, because it&amp;#039;s redundant&lt;br /&gt;
	numstr = numstr:sub(1,-3)&lt;br /&gt;
	return numstr&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
</feed>