Module:Heart of the Mountain

-- local p = {}

local getArgs = require('Module:Arguments').getArgs require('Module:LibraryUtil') local string = require('Module:String')

local title = mw.title.getCurrentTitle.fullText local lang = mw.language.getContentLanguage

-- Time offset from UTC time: Hypixel's Server Timezone local serverTimeOffset = require('Module:HypixelServerTime') .. ' hours'

-- Invoked directly by Template:Calculator/HotM_perk_powder function p.calcPowderCostForLevel(frame) local args = getArgs(frame) local perk = args[1] or args['perk'] local target = args[2] or args['target'] or args['to'] assertTrue(perk, 'perk must be specified', 0) assertTrue(target, 'Must specify a target level', 0) return p._calcPowderCostForLevel(perk, target) end

function p._calcPowderCostForLevel(perk, target) checkType(1, perk, 'string') checkType(2, target, 'number', true) perk = perk:lower local functionData = { ['crystallized'] =			function(n) return math.floor(math.pow(n+1, 3.4)) end, ['daily powder'] =			function(n) return 182 + 18 * n end, ['efficient miner'] =       function(n) return math.floor(math.pow(n+1, 2.6)) end, ['luck of the cave'] =		function(n) return math.floor(math.pow(n+1, 3.07)) end, ['mining fortune'] =		function(n) return math.floor(math.pow(n+1, 3.05)) end, ['mining speed'] =			function(n) return math.floor(math.pow(n+1, 3)) end, ['orbiter']	=				function(n) return 70 * n end, ['peak of the mountain'] =	function(n) return 25000 * n end, ['quick forge']	=			function(n) return math.floor(math.pow(n+1, 4)) end, ['seasoned mineman'] =		function(n) return math.floor(math.pow(n+1, 2.3)) end, ['titanium insanium'] = 	function(n) return math.floor(math.pow(n+1, 3.1)) end, }	local calc = functionData[perk] assertTrue(calc, 'Invalid perk name specified %q', 0, perk) local powder = 0 for i = 2,target,1 do 		powder = powder + calc(i) end return powder end

-- Invoked directly by Fetchur -- Not really HotM related, but semi related and didn't feel like making a new module function p.currentFetchurFetchQuest(frame) local args = getArgs(frame) -- Fetch Quest is based on current date local date = args[1] or args.date or lang:formatDate('Y-m-d', serverTimeOffset) return p._questItem(date) end

function p._questItem(date) local items = { { 'Yellow Stained Glass', 20, name='Yellow Stained Glass' }, { 'Compass', 1, name='Compass' }, { 'Mithril', 20, name='Mithril' }, { 'Firework Rocket', 1, name='Firework Rocket' }, { 'Cheap Coffee', 1, name='Cheap Coffee or Decent Coffee' }, { 'Oak Door', 1, name='Any Wooden Door or Iron Door' }, { 'Rabbit\'s Foot', 3, name='Rabbit\'s Foot' }, { 'Superboom TNT', 1, name='Superboom TNT' }, { 'Pumpkin', 1, name='Pumpkin' }, { 'Flint and Steel', 1, name='Flint and Steel' }, { 'Nether Quartz Ore', 50, name='Nether Quartz Ore' }, { 'Red Wool', 50, name='Red Wool' }, }	local day = tonumber(lang:formatDate('j',date)) local i = day%(#items) if i == 0 then i = #items end local item = items[i] return mw.html.create('div') :addClass('article-fetchur-request') :tag('span'):addClass('custom-widgetbox-gold') :tag('span') :addClass('plainlinks') :wikitext(lang:formatDate('l', serverTimeOffset), '\'s Request',						' (', string.fullUrl(title, { action='purge' }, 'refresh'), ')'					) :done :tag('hr'):done :wikitext(item[2], 'x', ' ', string.makeImage(item[1], { ext='png', size='x24px', link=item[1] }), ' ', item.name or item[1]) :done :done :done end

return p