<?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%3ABarrows_item_repair_calculator</id>
	<title>Module:Barrows item repair calculator - 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%3ABarrows_item_repair_calculator"/>
	<link rel="alternate" type="text/html" href="https://wiki.runerealm.org/index.php?title=Module:Barrows_item_repair_calculator&amp;action=history"/>
	<updated>2026-05-01T03:01:52Z</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:Barrows_item_repair_calculator&amp;diff=34421&amp;oldid=prev</id>
		<title>Alex: Created page with &quot;local p = {}  local coins = require(&#039;Module:Coins&#039;)._amount  local itemCost = { 	{&#039;Helmet&#039;, 60000}, 	{&#039;Body&#039;, 90000}, 	{&#039;Legs&#039;, 80000}, 	{&#039;Weapon&#039;, 100000}, }  function p.buildTable(npcCost, smithingCost) 	local ret = mw.html.create(&#039;table&#039;):addClass(&#039;wikitable align-center-1&#039;):done() 		ret:tag(&#039;tr&#039;):tag(&#039;th&#039;):wikitext( &#039;&lt;small&gt;Cost to repair&lt;br/&gt;Barrows equipment&lt;/small&gt;&#039;):done() 			:tag(&#039;th&#039;):wikitext(&#039;NPC&#039;):done() 			:tag(&#039;th&#039;):wikitext(&#039;Player-owned house&lt;br/...&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.runerealm.org/index.php?title=Module:Barrows_item_repair_calculator&amp;diff=34421&amp;oldid=prev"/>
		<updated>2024-10-16T23:00:37Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;local p = {}  local coins = require(&amp;#039;Module:Coins&amp;#039;)._amount  local itemCost = { 	{&amp;#039;Helmet&amp;#039;, 60000}, 	{&amp;#039;Body&amp;#039;, 90000}, 	{&amp;#039;Legs&amp;#039;, 80000}, 	{&amp;#039;Weapon&amp;#039;, 100000}, }  function p.buildTable(npcCost, smithingCost) 	local ret = mw.html.create(&amp;#039;table&amp;#039;):addClass(&amp;#039;wikitable align-center-1&amp;#039;):done() 		ret:tag(&amp;#039;tr&amp;#039;):tag(&amp;#039;th&amp;#039;):wikitext( &amp;#039;&amp;lt;small&amp;gt;Cost to repair&amp;lt;br/&amp;gt;&lt;a href=&quot;/index.php?title=Barrows_equipment&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Barrows equipment (page does not exist)&quot;&gt;Barrows equipment&lt;/a&gt;&amp;lt;/small&amp;gt;&amp;#039;):done() 			:tag(&amp;#039;th&amp;#039;):wikitext(&amp;#039;NPC&amp;#039;):done() 			:tag(&amp;#039;th&amp;#039;):wikitext(&amp;#039;&lt;a href=&quot;/index.php?title=Player-owned_house&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Player-owned house (page does not exist)&quot;&gt;Player-owned house&lt;/a&gt;&amp;lt;br/...&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 coins = require(&amp;#039;Module:Coins&amp;#039;)._amount&lt;br /&gt;
&lt;br /&gt;
local itemCost = {&lt;br /&gt;
	{&amp;#039;Helmet&amp;#039;, 60000},&lt;br /&gt;
	{&amp;#039;Body&amp;#039;, 90000},&lt;br /&gt;
	{&amp;#039;Legs&amp;#039;, 80000},&lt;br /&gt;
	{&amp;#039;Weapon&amp;#039;, 100000},&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function p.buildTable(npcCost, smithingCost)&lt;br /&gt;
	local ret = mw.html.create(&amp;#039;table&amp;#039;):addClass(&amp;#039;wikitable align-center-1&amp;#039;):done()&lt;br /&gt;
		ret:tag(&amp;#039;tr&amp;#039;):tag(&amp;#039;th&amp;#039;):wikitext( &amp;#039;&amp;lt;small&amp;gt;Cost to repair&amp;lt;br/&amp;gt;[[Barrows equipment]]&amp;lt;/small&amp;gt;&amp;#039;):done()&lt;br /&gt;
			:tag(&amp;#039;th&amp;#039;):wikitext(&amp;#039;NPC&amp;#039;):done()&lt;br /&gt;
			:tag(&amp;#039;th&amp;#039;):wikitext(&amp;#039;[[Player-owned house]]&amp;lt;br/&amp;gt;[[Armour stand]]&amp;#039;):done()&lt;br /&gt;
			:tag(&amp;#039;th&amp;#039;):wikitext(&amp;#039;Amount Saved&amp;#039;):done()&lt;br /&gt;
	&lt;br /&gt;
	local totalSaved = 0&lt;br /&gt;
	for i, item in ipairs(itemCost) do&lt;br /&gt;
		local saved = npcCost[i] - smithingCost[i]&lt;br /&gt;
		totalSaved = totalSaved + saved&lt;br /&gt;
		local row = mw.html.create(&amp;#039;tr&amp;#039;):tag(&amp;#039;th&amp;#039;):wikitext(item[1]):done()&lt;br /&gt;
				:tag(&amp;#039;td&amp;#039;):wikitext(coins(npcCost[i])):done()&lt;br /&gt;
				:tag(&amp;#039;td&amp;#039;):wikitext(coins(smithingCost[i])):done()&lt;br /&gt;
				:tag(&amp;#039;td&amp;#039;):wikitext(coins(saved)):done()&lt;br /&gt;
		ret:node(row)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	ret:tag(&amp;#039;tr&amp;#039;):tag(&amp;#039;th&amp;#039;):wikitext(&amp;#039;Total&amp;#039;):done()&lt;br /&gt;
		:tag(&amp;#039;td&amp;#039;):wikitext(coins(npcCost[1] + npcCost[2] + npcCost[3] + npcCost[4])):done()&lt;br /&gt;
		:tag(&amp;#039;td&amp;#039;):wikitext(coins(smithingCost[1] + smithingCost[2] + smithingCost[3] + smithingCost[4])):done()&lt;br /&gt;
		:tag(&amp;#039;td&amp;#039;):wikitext(coins(totalSaved)):done()&lt;br /&gt;
	return ret&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getSmithingCost(npcCost, boostedSmithing)&lt;br /&gt;
	local smithingDiscount = (1 - (boostedSmithing / 200))&lt;br /&gt;
	local ret = {}&lt;br /&gt;
	for i, cost in ipairs(npcCost) do&lt;br /&gt;
		table.insert(ret, math.ceil(cost * smithingDiscount))&lt;br /&gt;
	end&lt;br /&gt;
	return ret&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getNPCCost(degradedLevel, percentBeforeDegrade, maxRepairCost)&lt;br /&gt;
	if(degradedLevel == 0) then -- Fully degraded&lt;br /&gt;
		return maxRepairCost&lt;br /&gt;
	elseif((degradedLevel == 100) and (percentBeforeDegrade == 100)) then -- Not degraded&lt;br /&gt;
		return 0&lt;br /&gt;
	else&lt;br /&gt;
		-- Each tier has 250 charges of the total 1,000, the &amp;#039;&amp;#039;Check&amp;#039;&amp;#039; percentage is out of 250&lt;br /&gt;
		-- Low bound of possible charges at that percentage: math.floor(2.5 * math.ceil((100 * ((100 - degradedLevel) / 25)) + (100 - percentBeforeDegrade)))&lt;br /&gt;
		-- Low bound of cost of the above: ((maxRepairCost / 1000) * math.ceil(2.5 * ((100 * ((100 - degradedLevel) / 25)) + (100 - percentBeforeDegrade)))&lt;br /&gt;
		-- For the high bound:&lt;br /&gt;
		--  (maxRepairCost / 1000): The max price of an NPC repair for 1 charge of 1000 used&lt;br /&gt;
		--  (100 * ((100 - degradedLevel) / 25)): To account 100% not cleanly dividing 250, out of 400, Ahrom&amp;#039;s hood 75 will be 100&lt;br /&gt;
		--  (100 - percentBeforeDegrade): this ends up just being the percentage entered out of 400&lt;br /&gt;
		--  Add 1 charge to account for 0% charges used, which is 2 non-zero prices, multiplying wont equal 0 now&lt;br /&gt;
		--  For each percentage drained, with &amp;#039;&amp;#039;Check&amp;#039;&amp;#039;, an average of 2.5 charges exist, this module specifically outputs the max, so ceiling it and remove the extra 1 added&lt;br /&gt;
		return (maxRepairCost / 1000) * math.ceil(2.5 * ((100 * ((100 - degradedLevel) / 25)) + (100 - percentBeforeDegrade) + 1) - 1)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._main(args)&lt;br /&gt;
	local npcCost = {}&lt;br /&gt;
	for _, item in ipairs(itemCost) do&lt;br /&gt;
		table.insert(npcCost, p.getNPCCost(tonumber(args.degradedLevel), tonumber(args.percentBeforeDegrade), item[2]))&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local smithingCost = p.getSmithingCost(npcCost, tonumber(args.smithingLevel)+tonumber(args.boost))&lt;br /&gt;
	&lt;br /&gt;
	return p.buildTable(npcCost, smithingCost)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	--mw.logObject(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>