Module:Skill pet calc

Module documentation
This documentation is transcluded from Template:No documentation/doc. [edit] [history] [purge]
This module does not have any documentation. Please consider adding documentation at Module:Skill pet calc/doc. [edit]
Module:Skill pet calc requires Module:Addcommas.
Module:Skill pet calc requires Module:Skill calc/Helpers.

local p = {}

local commas = require('Module:Addcommas')._add
local helpers = require('Module:Skill calc/Helpers')

local pets = {
	['Baby chinchompa'] = {
		['Grey chinchompa'] = { base = 131395, level = 53 },
		['Red chinchompa'] = { base = 98373, level = 63 },
		['Black chinchompa'] = { base = 82758, level = 73 }
	},
	['Beaver'] = {
		['Achey'] = { base = 317647, level = 1 },
		['Regular'] = { base = 317647, level = 1 },
		['Oak'] = { base = 361146, level = 15 },
		['Willow'] = { base = 289286, level = 30 },
		['Teak'] = { base = 264336, level = 35 },
		['Juniper'] = { base = 360000, level = 42 },
		['Maple'] = { base = 221918, level = 45 },
		['Hollow'] = { base = 214367, level = 45 },
		['Mahogany'] = { base = 220623, level = 50 },
		['Arctic pine'] = { base = 145758, level = 54 },
		['Yew'] = { base = 145013, level = 60 },
		['Blisterwood'] = { base = 289286, level = 62 },
		['Sulliusceps'] = { base = 343000, level = 65 },
		['Magic'] = { base = 72321, level = 75 },
		['Redwood'] = { base = 72321, level = 90 },
	},
	['Giant squirrel'] = {
		['Gnome Stronghold'] = { base = 35609, level = 1 },
		['Agility Pyramid'] = { base = 9901, level = 30 },
		['Penguin'] = { base = 9779, level = 30 },
		['Barbarian Outpost'] = { base = 44376, level = 35 },
		['Brimhaven Agility Arena'] = { base = 26404, level = 1 },
		['Ape Atoll'] = { base = 37720, level = 48 },
		['Wilderness'] = { base = 34666, level = 52 },
		['Werewolf'] = { base = 32597, level = 60 },
		['Dorgesh-Kaan'] = { base = 10561, level = 70 },
		['Prifddinas'] = { base = 25146, level = 75 },
		['Draynor Village Rooftop'] = { base = 33005, level = 10 },
		['Al Kharid Rooftop'] = { base = 26648, level = 20 },
		['Varrock Rooftop'] = { base = 24410, level = 30 },
		['Canifis Rooftop'] = { base = 36842, level = 40 },
		['Falador Rooftop'] = { base = 26806, level = 50 },
		['Seers\' Village Rooftop'] = { base = 35205, level = 60 },
		['Pollnivneach Rooftop'] = { base = 33422, level = 70 },
		['Rellekka Rooftop'] = { base = 31063, level = 80 },
		['East Ardougne Rooftop'] = { base = 34440, level = 90 },
	},
	['Heron'] = {
		['Shrimps'] = { base = 435165, level = 1 },
		['Anchovies'] = { base = 435165, level = 15 },
		['Karambwanji'] = { base = 443697, level = 5 },
		['Sardine'] = { base = 443697, level = 5 },
		['Herring'] = { base = 443697, level = 10 },
		['Big net fishing'] = { base = 382609, level = 16 },
		['Trout'] = { base = 461808, level = 20 },
		['Salmon'] = { base = 461808, level = 30 },
		['Pike'] = { base = 305792, level = 25 },
		['Rainbow fish'] = { base = 137739, level = 38 },
		['Tuna'] = { base = 128885, level = 35 },
		['Swordfish'] = { base = 128885, level = 50 },
		['Lobster'] = { base = 116129, level = 40 },
		['Aerial fishing'] = { base = 636833, level = 43 },
		['Monkfish'] = { base = 138583, level = 62 },
		['Karambwan'] = { base = 170874, level = 65 },
		['Heavy rod fishing'] = { base = 426954, level = 48 },
		['Shark'] = { base = 82243, level = 76 },
		['Infernal eel'] = { base = 160000, level = 80 },
		['Anglerfish'] = { base = 78649, level = 82 },
		['Minnow'] = { base = 977778, level = 82 },
		['Dark crab'] = { base = 149434, level = 85 },
		['Sacred eel'] = { base = 99000, level = 87 },
		['Fishing Trawler'] = { base = 5000, level = 15 },
	},
	['Rift guardian'] = {
		['Blood rune'] = { base = 804984, level = 77 },
		['Soul rune'] = { base = 782999, level = 90 },
		['Ourania Altar'] = { base = 1487213, level = 1 },
		['Everything else'] = { base = 1795758, level = 1 },
	},
	['Rock golem'] = {
		['Clay'] = { base = 741600, level = 1 },
		['Copper'] = { base = 741600, level = 1 },
		['Tin'] = { base = 741600, level = 1 },
		['Blurite'] = { base = 741600, level = 10 },
		['Limestone'] = { base = 741600, level = 10 },
		['Iron'] = { base = 741600, level = 15 },
		['Barronite rocks'] = { base = 741600, level = 14 },
		['Silver'] = { base = 741600, level = 20 },
		['Calcified rocks'] = { base = 741600, level = 41 },
		['Coal'] = { base = 290640, level = 30 },
		['Sandstone'] = { base = 741600, level = 35 },
		['Gold'] = { base = 296640, level = 40 },
		['Gem'] = { base = 211886, level = 40 },
		['Granite'] = { base = 741600, level = 45 },
		['Ash pile'] = { base = 741600, level = 22 },
		['Volcanic sulphur'] = { base = 710000, level = 42 },
		['Volcanic Mine'] = { base = 60000, level = 50 },
		['Mithril'] = { base = 148320, level = 55 },
		['Lovakite'] = { base = 245562, level = 65 },
		['Adamantite'] = { base = 59328, level = 70 },
		['Runite'] = { base = 42377, level = 85 },
		['Amethyst crystal'] = { base = 46350, level = 92 },
		['Blast mine'] = { base = 123600, level = 43 },
		['Motherlode Mine'] = { base = 247200, level = 30 },
		['Crashed Star (size 1)'] = { base = 521550, level = 10 },
		['Crashed Star (size 2)'] = { base = 521550, level = 20 },
		['Crashed Star (size 3)'] = { base = 521550, level = 30 },
		['Crashed Star (size 4)'] = { base = 521550, level = 40 },
		['Crashed Star (size 5)'] = { base = 521550, level = 50 },
		['Crashed Star (size 6)'] = { base = 521550, level = 60 },
		['Crashed Star (size 7)'] = { base = 521550, level = 70 },
		['Crashed Star (size 8)'] = { base = 521550, level = 80 },
		['Crashed Star (size 9)'] = { base = 521550, level = 90 },
	},
	['Rocky'] = {
		['Vegetable stall'] = { base = 206777, level = 2 },
		['Cake stall'] = { base = 124066, level = 5 },
		['Crafting stall'] = { base = 47718, level = 5 },
		['Monkey general stall'] = { base = 47718, level = 5 },
		['Silk stall'] = { base = 68926, level = 20 },
		['Wine stall'] = { base = 36490, level = 22 },
		['Fruit stall'] = { base = 124066, level = 25 },
		['Seed stall'] = { base = 36490, level = 27 },
		['Fur stall'] = { base = 36490, level = 35 },
		['Fish stall'] = { base = 36490, level = 42 },
		['Crossbow stall'] = { base = 36490, level = 49 },
		['Silver stall'] = { base = 36490, level = 50 },
		['Magic stall'] = { base = 36490, level = 65 },
		['Scimitar stall'] = { base = 36490, level = 65 },
		['Spice stall'] = { base = 36490, level = 65 },
		['Gem stall'] = { base = 36490, level = 75 },
		['Sorceress\'s Garden'] = { base = 10339, level = 1 },
		['Watchman'] = { base = 134625, level = 65 },
		['Paladin'] = { base = 127056, level = 70 },
		['Gnome'] = { base = 108718, level = 75 },
		['Hero'] = { base = 99175, level = 80 },
		['Elf'] = { base = 99175, level = 85 },
		['TzHaar-Hur'] = { base = 176743, level = 90 },
		['Remaining pickpockets'] = { base = 257211, level = 1 },
		['Pyramid Plunder (Room 1)'] = { base = 41355, level = 21 },
		['Pyramid Plunder (Room 2)'] = { base = 29540, level = 31 },
		['Pyramid Plunder (Room 3)'] = { base = 25847, level = 41 },
		['Pyramid Plunder (Room 4)'] = { base = 20678, level = 51 },
		['Pyramid Plunder (Room 5)'] = { base = 20678, level = 61 },
		['Pyramid Plunder (Room 6)'] = { base = 20678, level = 71 },
		['Pyramid Plunder (Room 7)'] = { base = 10339, level = 81 },
		['Pyramid Plunder (Room 8)'] = { base = 6893, level = 91 },
	},
	['Tangleroot'] = {
		['Potato'] = { base = 281040, level = 1 },
		['Marigolds'] = { base = 281040, level = 2 },
		['Barley'] = { base = 112416, level = 3 },
		['Hammerstone hops'] = { base = 112416, level = 4 },
		['Onion'] = { base = 281040, level = 5 },
		['Cabbage'] = { base = 281040, level = 7 },
		['Asgarnian hops'] = { base = 89933, level = 8 },
		['Guam'] = { base = 98364, level = 9 },
		['Redberries'] = { base = 44966, level = 10 },
		['Rosemary'] = { base = 281040, level = 11 },
		['Tomato'] = { base = 281040, level = 12 },
		['Jute fibre'] = { base = 89933, level = 13 },
		['Marrentill'] = { base = 98364, level = 14 },
		['Oak tree'] = { base = 22483, level = 15 },
		['Yanillian hops'] = { base = 74944, level = 16 },
		['Tarromin'] = { base = 98364, level = 19 },
		['Sweetcorn'] = { base = 224832, level = 20 },
		['Krandorian hops'] = { base = 64238, level = 21 },
		['Cadava berries'] = { base = 37472, level = 22 },
		['Giant seaweed'] = { base = 7500, level = 23 },
		['Nasturtiums'] = { base = 281040, level = 24 },
		['Woad leaf'] = { base = 281040, level = 25 },
		['Limpwurt root'] = { base = 224832, level = 26 },
		['Harralander'] = { base = 98364, level = 26 },
		['Apple tree'] = { base = 9000, level = 27 },
		['Wildblood hops'] = { base = 56208, level = 28 },
		['Goutweed'] = { base = 98364, level = 29 },
		['Willow tree'] = { base = 16059, level = 30 },
		['Strawberry'] = { base = 187360, level = 31 },
		['Ranarr'] = { base = 98364, level = 32 },
		['Banana tree'] = { base = 9000, level = 33 },
		['Tithe Farm'] = { base = 7494389, level = 34 },
		['Teak tree'] = { base = 5000, level = 35 },
		['Dwellberries'] = { base = 32119, level = 36 },
		['Grapes'] = { base = 385426, level = 36 },
		['Toadflax'] = { base = 98364, level = 38 },
		['Orange tree'] = { base = 9000, level = 39 },
		['Curry tree'] = { base = 9000, level = 42 },
		['Irit'] = { base = 98364, level = 44 },
		['Maple tree'] = { base = 14052, level = 45 },
		['Watermelon'] = { base = 160594, level = 47 },
		['Jangerberries'] = { base = 28104, level = 48 },
		['Avantoe'] = { base = 98364, level = 50 },
		['Pineapple plant'] = { base = 9000, level = 51 },
		['Mushroom'] = { base = 7500, level = 53 },
		['Cactus'] = { base = 7000, level = 55 },
		['Mahogany tree'] = { base = 5000, level = 55 },
		['Kwuarm'] = { base = 98364, level = 56 },
		['Papaya tree'] = { base = 9000, level = 57 },
		['White lily'] = { base = 281040, level = 58 },
		['White berries'] = { base = 28104, level = 59 },
		['Yew tree'] = { base = 11242, level = 60 },
		['Snape grass'] = { base = 173977, level = 61 },
		['Snapdragon'] = { base = 98364, level = 62 },
		['Cave nightshade'] = { base = 8000, level = 63 },
		['Potato cactus'] = { base = 160594, level = 64 },
		['Hespori'] = { base = 7000, level = 65 },
		['Cadantine'] = { base = 98364, level = 67 },
		['Palm tree'] = { base = 9000, level = 68 },
		['Poison ivy berries'] = { base = 28104, level = 70 },
		['Calquat tree'] = { base = 6000, level = 72 },
		['Lantadyme'] = { base = 98364, level = 73 },
		['Crystal tree'] = { base = 9000, level = 74 },
		['Magic tree'] = { base = 9368, level = 75 },
		['Dwarf weed'] = { base = 98364, level = 79 },
		['Dragonfruit tree'] = { base = 9000, level = 81 },
		['Spirit tree'] = { base = 5000, level = 83 },
		['Celastrus tree'] = { base = 9000, level = 85 },
		['Torstol'] = { base = 98364, level = 85 },
		['Redwood tree'] = { base = 5000, level = 90 },
	}
}

function p.main(frame)
	local args = frame:getParent().args
	local level = args.level
	local pet = args.pet
	local actionsPerHour = args.actionsPerHour or 1
	local petData = pets[pet]
	
	local ret = mw.html.create('table'):addClass('wikitable sortable sticky-header align-center-2 align-center-3 align-center-4 autosort=2,a')
	ret:tag('tr')
		:tag('th'):wikitext('Method')
		:tag('th'):wikitext('Level')
		:tag('th'):wikitext('Chance per action')
		:tag('th'):wikitext('Chance per hour<br />with APH')
	
	for i, v in next, petData, nil do
		ret:node(make_row(v, i, level, actionsPerHour))
	end
	
	return tostring(ret)
end

function make_row(data, method, level, actionsPerHour)
	local doNotCalculate = ({ Minnow = true, ['Fishing Trawler'] = true })[method]
	local chancePerAction = doNotCalculate and data.base or tonumber(data.base) - (tonumber(level) * 25)
	local chancePerHour = helpers.jagexFloor(1/(1-math.pow(1-1/chancePerAction, actionsPerHour)), 2)
	
	return mw.html.create('tr')
		:tag('td'):wikitext(method):done()
		:tag('td'):wikitext(data.level):done()
		:tag('td'):attr('data-sort-value', 1/chancePerAction):wikitext('1/' .. commas(chancePerAction)):done()
		:tag('td'):attr('data-sort-value', 1/chancePerHour):wikitext('1/' .. commas(chancePerHour)):done()
end

return p