<?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%3ALeagueBoostedDrop</id>
	<title>Module:LeagueBoostedDrop - 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%3ALeagueBoostedDrop"/>
	<link rel="alternate" type="text/html" href="https://wiki.runerealm.org/index.php?title=Module:LeagueBoostedDrop&amp;action=history"/>
	<updated>2026-05-03T03:28:45Z</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:LeagueBoostedDrop&amp;diff=35030&amp;oldid=prev</id>
		<title>Alex: Created page with &quot;local p = {}; local lang = mw.language.getContentLanguage()  local rarity_class = { 	{ 1, &#039;table-bg-blue&#039; }, 	{ 1/25, &#039;table-bg-green&#039; }, 	{ 1/99.99, &#039;table-bg-yellow&#039; }, 	{ 1/999.99, &#039;table-bg-orange&#039; }, 	{ 1/9999999, &#039;table-bg-red&#039; } }  function get_rarity_class(val) 	for i,v in ipairs(rarity_class) do 		curr = v 		if val &gt;= v[1] then 			break 		end 	end 	return curr[2] end  function sigfig(n, f) 	f = math.floor(f-1) 	if n == 0 then return 0 end 	local m = math.floor(m...&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.runerealm.org/index.php?title=Module:LeagueBoostedDrop&amp;diff=35030&amp;oldid=prev"/>
		<updated>2024-10-16T23:12:36Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;local p = {}; local lang = mw.language.getContentLanguage()  local rarity_class = { 	{ 1, &amp;#039;table-bg-blue&amp;#039; }, 	{ 1/25, &amp;#039;table-bg-green&amp;#039; }, 	{ 1/99.99, &amp;#039;table-bg-yellow&amp;#039; }, 	{ 1/999.99, &amp;#039;table-bg-orange&amp;#039; }, 	{ 1/9999999, &amp;#039;table-bg-red&amp;#039; } }  function get_rarity_class(val) 	for i,v in ipairs(rarity_class) do 		curr = v 		if val &amp;gt;= v[1] then 			break 		end 	end 	return curr[2] end  function sigfig(n, f) 	f = math.floor(f-1) 	if n == 0 then return 0 end 	local m = math.floor(m...&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;
local lang = mw.language.getContentLanguage()&lt;br /&gt;
&lt;br /&gt;
local rarity_class = {&lt;br /&gt;
	{ 1, &amp;#039;table-bg-blue&amp;#039; },&lt;br /&gt;
	{ 1/25, &amp;#039;table-bg-green&amp;#039; },&lt;br /&gt;
	{ 1/99.99, &amp;#039;table-bg-yellow&amp;#039; },&lt;br /&gt;
	{ 1/999.99, &amp;#039;table-bg-orange&amp;#039; },&lt;br /&gt;
	{ 1/9999999, &amp;#039;table-bg-red&amp;#039; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function get_rarity_class(val)&lt;br /&gt;
	for i,v in ipairs(rarity_class) do&lt;br /&gt;
		curr = v&lt;br /&gt;
		if val &amp;gt;= v[1] then&lt;br /&gt;
			break&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return curr[2]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sigfig(n, f)&lt;br /&gt;
	f = math.floor(f-1)&lt;br /&gt;
	if n == 0 then return 0 end&lt;br /&gt;
	local m = math.floor(math.log10(n))&lt;br /&gt;
	local v = n / (10^(m-f))&lt;br /&gt;
	v = math.floor(v) * 10^(m-f)&lt;br /&gt;
	return v&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function commas(n)&lt;br /&gt;
	if tonumber(n) then&lt;br /&gt;
		return lang:formatNum(tonumber(n))&lt;br /&gt;
	else&lt;br /&gt;
		return n&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
p.commas = commas&lt;br /&gt;
&lt;br /&gt;
function expr(t)&lt;br /&gt;
	t = t:gsub(&amp;#039;,&amp;#039;, &amp;#039;&amp;#039;)&lt;br /&gt;
	local err, val = pcall(mw.ext.ParserFunctions.expr, t)&lt;br /&gt;
	if err then&lt;br /&gt;
		return tonumber(val)&lt;br /&gt;
	else&lt;br /&gt;
		return false&lt;br /&gt;
	end&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;
function p._main(args)&lt;br /&gt;
	local Image = args[&amp;#039;Image&amp;#039;]			-- only used if Name is blank, or wish to override default image. Can provide multiple images comma-delimited&lt;br /&gt;
	local Name = args[&amp;#039;Name&amp;#039;]			-- name of item or drop&lt;br /&gt;
	local OptName = args[&amp;#039;OptName&amp;#039;] 	-- intended to be used when links are formatted differently, e.x. when they are multiple sources&lt;br /&gt;
	local Source = args[&amp;#039;Source&amp;#039;]		-- source of drop&lt;br /&gt;
	local OptSource = args[&amp;#039;OptSource&amp;#039;] -- intended to be used when links are formatted differently, e.x. when they are multiple sources&lt;br /&gt;
	local Rarity = {args[&amp;#039;Rarity&amp;#039;]}		-- base rarity of drop&lt;br /&gt;
	local Tiers = args[&amp;#039;Tiers&amp;#039;]			-- Optional parameter to determine quantity of rarity tiers to create on table row, including base rarity (default is 3)&lt;br /&gt;
	local Columns = args[&amp;#039;Columns&amp;#039;]		-- Optional parameter to create a total number of columns if greater than Tiers&lt;br /&gt;
	local Unfloored = args[&amp;#039;Unfloored&amp;#039;] -- Optional parameter to prevent rarity from being floored after the multiplier is applied&lt;br /&gt;
&lt;br /&gt;
	local rv1, rv2 = string.match(Rarity[1]:gsub(&amp;#039;,&amp;#039;,&amp;#039;&amp;#039;), &amp;#039;([%d%.]+)/([%d%.]+)&amp;#039;)&lt;br /&gt;
	if rv1 and rv2 then&lt;br /&gt;
		Rarity[1] = rv1/rv2&lt;br /&gt;
	else&lt;br /&gt;
		Rarity[1] = expr(Rarity)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local TotalTiers&lt;br /&gt;
	if Tiers == isNothing then&lt;br /&gt;
		TotalTiers = 3&lt;br /&gt;
		else&lt;br /&gt;
			TotalTiers = tonumber(Tiers)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local TotalColumns&lt;br /&gt;
	if Columns == isNothing then&lt;br /&gt;
		TotalColumns = 0&lt;br /&gt;
		else&lt;br /&gt;
			TotalColumns = tonumber(Columns)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	for index=2,TotalTiers do&lt;br /&gt;
		local Multi = args[&amp;quot;Multi&amp;quot;..index-1] -- Optional change to tier rarity multiplier, default to tier number&lt;br /&gt;
		if Multi == isNothing then&lt;br /&gt;
			Rarity[index] = Rarity[1] * (index);&lt;br /&gt;
			else&lt;br /&gt;
				Rarity[index] = Rarity[1] * Multi&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local rare_class = {};	-- assign colors for rarity&lt;br /&gt;
	local rare_text = {};&lt;br /&gt;
	for index,rarity in ipairs(Rarity) do&lt;br /&gt;
		local Denominator = sigfig((1/Rarity[index] + 0.001), 5)&lt;br /&gt;
		if Unfloored ~= nil then&lt;br /&gt;
			rare_text[index] = &amp;#039;1/&amp;#039; .. commas(string.format(&amp;#039;%.1f&amp;#039;, Denominator))&lt;br /&gt;
			rare_class[index] = get_rarity_class(1/Denominator)&lt;br /&gt;
		elseif math.floor(Denominator) == 1 then&lt;br /&gt;
			rare_text[index] = &amp;quot;Always&amp;quot;&lt;br /&gt;
			rare_class[index] = get_rarity_class(1)&lt;br /&gt;
		else&lt;br /&gt;
			rare_text[index] = &amp;#039;1/&amp;#039; .. commas(math.floor(Denominator))&lt;br /&gt;
			rare_class[index] = get_rarity_class(1/math.floor(Denominator))&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	--Use Name as image link, or Image exactly as written&lt;br /&gt;
	if Image == isNothing then&lt;br /&gt;
		image = mw.ustring.format(&amp;#039;[[File:%s.png]]&amp;#039;, Name)&lt;br /&gt;
		else&lt;br /&gt;
		image = &amp;#039;&amp;#039;&lt;br /&gt;
		for img in string.gmatch(Image, &amp;#039; *([^,]+) *&amp;#039;) do&lt;br /&gt;
			image = image .. mw.ustring.format(&amp;#039;[[File:%s.png]]&amp;#039;, img)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	--Use Name as link, or OptName exactly as written&lt;br /&gt;
	if Name == isNothing then&lt;br /&gt;
		Name = OptName&lt;br /&gt;
		else&lt;br /&gt;
		Name = mw.ustring.format(&amp;#039;[[%s]]&amp;#039;, Name)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	--Use Source as link, or OptSource exactly as written if Source is empty&lt;br /&gt;
	if Source == isNothing then&lt;br /&gt;
		Source = OptSource&lt;br /&gt;
		else&lt;br /&gt;
		Source = mw.ustring.format(&amp;#039;[[%s]]&amp;#039;, Source)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	--create rows for table	&lt;br /&gt;
	local ret = mw.html.create(&amp;#039;tr&amp;#039;)&lt;br /&gt;
		:tag(&amp;#039;td&amp;#039;)&lt;br /&gt;
			:addClass(&amp;#039;inventory-image&amp;#039;)&lt;br /&gt;
			:wikitext(image)&lt;br /&gt;
		:done()&lt;br /&gt;
		:tag(&amp;#039;td&amp;#039;)&lt;br /&gt;
			:css(&amp;#039;text-align&amp;#039;,&amp;#039;left&amp;#039;)&lt;br /&gt;
			:addClass(&amp;#039;item-col&amp;#039;)&lt;br /&gt;
			:wikitext(Name)&lt;br /&gt;
		:done()&lt;br /&gt;
		:tag(&amp;#039;td&amp;#039;)&lt;br /&gt;
			:css(&amp;#039;text-align&amp;#039;,&amp;#039;center&amp;#039;)&lt;br /&gt;
			:addClass(&amp;#039;source-col&amp;#039;)&lt;br /&gt;
			:wikitext(Source)&lt;br /&gt;
		:done()&lt;br /&gt;
	for index=1,TotalTiers do&lt;br /&gt;
		ret = ret&lt;br /&gt;
			:tag(&amp;#039;td&amp;#039;)&lt;br /&gt;
				:addClass(rare_class[index])&lt;br /&gt;
				:wikitext(rare_text[index])&lt;br /&gt;
				:attr(&amp;#039;data-sort-value&amp;#039;,1/Rarity[index])&lt;br /&gt;
			:done()&lt;br /&gt;
	end&lt;br /&gt;
	for index=TotalTiers+1,TotalColumns do&lt;br /&gt;
		ret = ret&lt;br /&gt;
			:tag(&amp;#039;td&amp;#039;)&lt;br /&gt;
				:addClass(&amp;#039;table-na nohighlight&amp;#039;)&lt;br /&gt;
				:css(&amp;#039;text-align&amp;#039;,&amp;#039;center&amp;#039;)&lt;br /&gt;
				:wikitext(&amp;quot;N/A&amp;quot;)&lt;br /&gt;
				:attr(&amp;#039;data-sort-value&amp;#039;,0)&lt;br /&gt;
			:done()&lt;br /&gt;
	end&lt;br /&gt;
	return tostring(ret)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p;&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
</feed>