<?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%3ABarbarian_fishing</id>
	<title>Module:Barbarian fishing - 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%3ABarbarian_fishing"/>
	<link rel="alternate" type="text/html" href="https://wiki.runerealm.org/index.php?title=Module:Barbarian_fishing&amp;action=history"/>
	<updated>2026-05-03T16:02:11Z</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:Barbarian_fishing&amp;diff=34084&amp;oldid=prev</id>
		<title>Alex: Created page with &quot;-- -- Invoked by Calculator:Fishing/Barbarian fishing/Template -- Implements Calculator:Fishing/Template/Barbarian_Fishing -- local p = {} local addCommas = require(&#039;Module:Addcommas&#039;)._add local paramTest = require( &#039;Module:Paramtest&#039; ) local skillPic = require(&#039;Module:SCP&#039;)._main local yesNo = require(&#039;Module:Yesno&#039;)  function p.invoke_main(frame) 	return p.main(frame:getParent().args) end  function p.main(args) 	local agilityLvl, fishingLvl, strengthLvl, anglerHat, an...&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.runerealm.org/index.php?title=Module:Barbarian_fishing&amp;diff=34084&amp;oldid=prev"/>
		<updated>2024-10-15T21:42:07Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;-- -- Invoked by Calculator:Fishing/Barbarian fishing/Template -- Implements Calculator:Fishing/Template/Barbarian_Fishing -- local p = {} local addCommas = require(&amp;#039;Module:Addcommas&amp;#039;)._add local paramTest = require( &amp;#039;Module:Paramtest&amp;#039; ) local skillPic = require(&amp;#039;Module:SCP&amp;#039;)._main local yesNo = require(&amp;#039;Module:Yesno&amp;#039;)  function p.invoke_main(frame) 	return p.main(frame:getParent().args) end  function p.main(args) 	local agilityLvl, fishingLvl, strengthLvl, anglerHat, an...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;--&lt;br /&gt;
-- Invoked by Calculator:Fishing/Barbarian fishing/Template&lt;br /&gt;
-- Implements Calculator:Fishing/Template/Barbarian_Fishing&lt;br /&gt;
--&lt;br /&gt;
local p = {}&lt;br /&gt;
local addCommas = require(&amp;#039;Module:Addcommas&amp;#039;)._add&lt;br /&gt;
local paramTest = require( &amp;#039;Module:Paramtest&amp;#039; )&lt;br /&gt;
local skillPic = require(&amp;#039;Module:SCP&amp;#039;)._main&lt;br /&gt;
local yesNo = require(&amp;#039;Module:Yesno&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
function p.invoke_main(frame)&lt;br /&gt;
	return p.main(frame:getParent().args)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.main(args)&lt;br /&gt;
	local agilityLvl, fishingLvl, strengthLvl, anglerHat, anglerTop, anglerWaders, anglerBoots, threeTick = paramTest.defaults{&lt;br /&gt;
		{ tonumber(args.agilityLevel), 1 },&lt;br /&gt;
		{ tonumber(args.fishingLevel), 1 },&lt;br /&gt;
		{ tonumber(args.strengthLevel), 1 },&lt;br /&gt;
		{ args.anglerHat, &amp;#039;no&amp;#039; },&lt;br /&gt;
		{ args.anglerTop, &amp;#039;no&amp;#039; },&lt;br /&gt;
		{ args.anglerWaders, &amp;#039;no&amp;#039; },&lt;br /&gt;
		{ args.anglerBoots, &amp;#039;no&amp;#039; },&lt;br /&gt;
		{ args.threeTick, &amp;#039;no&amp;#039; }&lt;br /&gt;
	}&lt;br /&gt;
	anglerHat = yesNo(anglerHat)&lt;br /&gt;
	anglerTop = yesNo(anglerTop)&lt;br /&gt;
	anglerWaders = yesNo(anglerWaders)&lt;br /&gt;
	anglerBoots = yesNo(anglerBoots)&lt;br /&gt;
	threeTick = yesNo(threeTick)&lt;br /&gt;
	&lt;br /&gt;
	local anglersBonus = 0&lt;br /&gt;
	&lt;br /&gt;
	if(anglerHat and anglerTop and anglerWaders and anglerBoots) then&lt;br /&gt;
		anglersBonus = anglersBonus + .025&lt;br /&gt;
	else&lt;br /&gt;
		anglersBonus = anglerHat and anglersBonus + .004 or anglersBonus;&lt;br /&gt;
		anglersBonus = anglerTop and anglersBonus + .008 or anglersBonus;&lt;br /&gt;
		anglersBonus = anglerWaders and anglersBonus + .006 or anglersBonus;&lt;br /&gt;
		anglersBonus = anglerBoots and anglersBonus + .002 or anglersBonus;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local attemptsPerHour = threeTick and 2000 or 1200;&lt;br /&gt;
	&lt;br /&gt;
	return p._calculateFishPerHour(agilityLvl, fishingLvl, strengthLvl, attemptsPerHour, anglersBonus)&lt;br /&gt;
	&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._calculateFishPerHour(agilityLevel, fishingLevel, strengthLevel, attemptsPerHour, anglersBonus)&lt;br /&gt;
	local chanceCatchSturgeon = 0&lt;br /&gt;
	local chanceCatchSalmon = 0&lt;br /&gt;
	local chanceCatchTrout = 0&lt;br /&gt;
	local offset = 0&lt;br /&gt;
	-- Sturgeon&lt;br /&gt;
	if(canFish(agilityLevel, fishingLevel, strengthLevel, 45, 70, 45)) then&lt;br /&gt;
		chanceCatchSturgeon = chanceToCatch(fishingLevel, 8, 64, offset)&lt;br /&gt;
		offset = chanceCatchSturgeon&lt;br /&gt;
	end&lt;br /&gt;
	-- Salmon&lt;br /&gt;
	if(canFish(agilityLevel, fishingLevel, strengthLevel, 30, 58, 30)) then&lt;br /&gt;
		chanceCatchSalmon = chanceToCatch(fishingLevel, 16, 96, offset)&lt;br /&gt;
		offset = offset + chanceCatchSalmon&lt;br /&gt;
	end&lt;br /&gt;
	-- Trout&lt;br /&gt;
	if(canFish(agilityLevel, fishingLevel, strengthLevel, 15, 48, 15)) then&lt;br /&gt;
		chanceCatchTrout = chanceToCatch(fishingLevel, 32, 192, offset)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local totalSturgeon = math.floor((attemptsPerHour) * (chanceCatchSturgeon))&lt;br /&gt;
	local totalSalmon = math.floor((attemptsPerHour) * (chanceCatchSalmon))&lt;br /&gt;
	local totalTrout = math.floor((attemptsPerHour) * (chanceCatchTrout))&lt;br /&gt;
	&lt;br /&gt;
	local sturgeonFishingExp = anglersBonus &amp;gt; 0 and math.floor(totalSturgeon * 80 * (1 + anglersBonus)) or totalSturgeon * 80;&lt;br /&gt;
	local sturgeonAgilityStrengthExp = totalSturgeon * 7&lt;br /&gt;
	&lt;br /&gt;
	local salmonFishingExp = anglersBonus &amp;gt; 0 and math.floor(totalSalmon * 70 * (1 + anglersBonus)) or totalSalmon * 70;&lt;br /&gt;
	local salmonAgilityStrengthExp = totalSalmon * 6&lt;br /&gt;
	&lt;br /&gt;
	local troutFishingExp = anglersBonus &amp;gt; 0 and math.floor(totalTrout * 50 * (1 + anglersBonus)) or totalTrout * 50;&lt;br /&gt;
	local troutAgilityStrengthExp = totalTrout * 5&lt;br /&gt;
	&lt;br /&gt;
	local f = string.format&lt;br /&gt;
	local ret = {&amp;#039;{| class=&amp;quot;wikitable&amp;quot;&amp;#039;}&lt;br /&gt;
	table.insert(ret, &amp;#039;|-&amp;#039; )&lt;br /&gt;
	table.insert(ret, &amp;#039;!colspan=&amp;quot;2&amp;quot;|Fish&amp;#039;)&lt;br /&gt;
	table.insert(ret, &amp;#039;!% of catch&amp;#039;)&lt;br /&gt;
	table.insert(ret, &amp;#039;!# caught/hr&amp;#039;)&lt;br /&gt;
	table.insert(ret, f(&amp;#039;!%s Exp/hr&amp;#039;, skillPic(&amp;#039;Fishing&amp;#039;)))&lt;br /&gt;
	table.insert(ret, f(&amp;#039;!%s/%s Exp/hr&amp;#039;, skillPic(&amp;#039;Strength&amp;#039;), skillPic(&amp;#039;Agility&amp;#039;)))&lt;br /&gt;
	table.insert(ret, &amp;#039;|-&amp;#039;)&lt;br /&gt;
	table.insert(ret, &amp;#039;|[[File:Leaping sturgeon.png]]&amp;#039;)&lt;br /&gt;
	table.insert(ret, &amp;#039;|[[Leaping Sturgeon]]&amp;#039;)&lt;br /&gt;
	table.insert(ret, f(&amp;#039;|%.2f %%&amp;#039;, chanceCatchSturgeon * 100))&lt;br /&gt;
	table.insert(ret, f(&amp;#039;|%s&amp;#039;, addCommas(totalSturgeon)))&lt;br /&gt;
	table.insert(ret, f(&amp;#039;|%s&amp;#039;, addCommas(sturgeonFishingExp)))&lt;br /&gt;
	table.insert(ret, f(&amp;#039;|%s&amp;#039;, addCommas(sturgeonAgilityStrengthExp)))&lt;br /&gt;
	table.insert(ret, &amp;#039;|-&amp;#039;)&lt;br /&gt;
	table.insert(ret, &amp;#039;|[[File:Leaping salmon.png]]&amp;#039;)&lt;br /&gt;
	table.insert(ret, &amp;#039;|[[Leaping Salmon]]&amp;#039;)&lt;br /&gt;
	table.insert(ret, f(&amp;#039;|%.2f %%&amp;#039;, chanceCatchSalmon * 100))&lt;br /&gt;
	table.insert(ret, f(&amp;#039;|%s&amp;#039;, addCommas(totalSalmon)))&lt;br /&gt;
	table.insert(ret, f(&amp;#039;|%s&amp;#039;, addCommas(salmonFishingExp)))&lt;br /&gt;
	table.insert(ret, f(&amp;#039;|%s&amp;#039;, addCommas(salmonAgilityStrengthExp)))&lt;br /&gt;
	table.insert(ret, &amp;#039;|-&amp;#039;)&lt;br /&gt;
	table.insert(ret, &amp;#039;|[[File:Leaping trout.png]]&amp;#039;)&lt;br /&gt;
	table.insert(ret, &amp;#039;|[[Leaping trout]]&amp;#039;)&lt;br /&gt;
	table.insert(ret, f(&amp;#039;|%.2f %%&amp;#039;, chanceCatchTrout * 100))&lt;br /&gt;
	table.insert(ret, f(&amp;#039;|%s&amp;#039;, addCommas(totalTrout)))&lt;br /&gt;
	table.insert(ret, f(&amp;#039;|%s&amp;#039;, addCommas(troutFishingExp)))&lt;br /&gt;
	table.insert(ret, f(&amp;#039;|%s&amp;#039;, addCommas(troutAgilityStrengthExp)))&lt;br /&gt;
	table.insert(ret, &amp;#039;|-&amp;#039;)&lt;br /&gt;
	table.insert(ret, &amp;#039;!colspan=&amp;quot;2&amp;quot;|Totals&amp;#039;)&lt;br /&gt;
	table.insert(ret, f(&amp;#039;|%.2f %%&amp;#039;, (chanceCatchSturgeon + chanceCatchSalmon + chanceCatchTrout) * 100))&lt;br /&gt;
	table.insert(ret, f(&amp;#039;|%s&amp;#039;, addCommas(totalSturgeon + totalSalmon + totalTrout)))&lt;br /&gt;
	table.insert(ret, f(&amp;#039;|%s&amp;#039;, addCommas(sturgeonFishingExp + salmonFishingExp + troutFishingExp)))&lt;br /&gt;
	table.insert(ret, f(&amp;#039;|%s&amp;#039;, addCommas(sturgeonAgilityStrengthExp + salmonAgilityStrengthExp + troutAgilityStrengthExp)))&lt;br /&gt;
	table.insert(ret, &amp;#039;|}&amp;#039;)&lt;br /&gt;
	&lt;br /&gt;
	return table.concat(ret, &amp;quot;\n&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function canFish(agilityLevel, fishingLevel, strengthLevel, requiredAgilityLevel, requiredFishingLevel, requiredStrengthLevel)&lt;br /&gt;
	return ((agilityLevel &amp;gt;= requiredAgilityLevel) and (fishingLevel &amp;gt;= requiredFishingLevel) and (strengthLevel &amp;gt;= requiredStrengthLevel))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function chanceToCatch(level, baseChance, highChance, offset)&lt;br /&gt;
	return ((baseChance / 255) + (((level - 1) * (highChance - baseChance) / 98) / 255)) * (1 - offset)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
</feed>