Module:Calculator/Archaeology

From Melvor Idle
Revision as of 19:34, 17 April 2024 by Ricewind (talk | contribs) (wip: partially add function to compare time for making a new map)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Documentation for this module may be created at Module:Calculator/Archaeology/doc

local p = {}

local num = require('Module:Number')
local TimeSpan = require('Module:TimeSpan')

-- Constants
local CMapSize = 5760
local CMinInterval = .25
-- Estimate 50% to get item.
local CDropTreshold = .5

----------------------------------------------------------------
------------------------Lookup Functions------------------------
----------------------------------------------------------------
local function getExcavationItem(itemName)
	local item = {
		name,
		timeSave,
		isFlatTimeSave,
		rarity,
	}
	
	item.rarity = 1/2023
	return item
end	

local function getBagItem(itemName)
	local item = {
		name,
		timeSave,
		isFlatTimeSave,
	}
	
	return item
end


----------------------------------------------------------------
------------------------Public Functions------------------------
----------------------------------------------------------------

-- Calculates how much time a certain consumable saves (or loses) depending on the player's
-- excavation interval, success rate, item rarity, and item effect.
function p._consumableTimeSave(itemName, excavationInterval, successRate)
end

function p._newMapTimeSave(itemName, excavationInterval, successRate, cartographyInterval)
	excavationInterval	= num.toNumberOrError(excavationInterval)
	excavationInterval  = math.max(excavationInterval, CMinInterval)
	successRate 		= num.toNumberOrError(successRate)
	successRate 		= num.clamp(successRate, 0, 1)
	cartographyInterval = num.toNumberOrError(cartographyInterval)
	cartographyInterval = math.max(cartographyInterval, CMinInterval)
	
	local item = getExcavationItem(itemName)

	-- Estimates player time to get the item.
	local estimatedTime = num.getDropsForProbability(successRate * item.rarity, CDropTreshold) * excavationInterval
	
	-- Estimates time to make a new map and get the item.
	-- Assumes 100% success rate for now.
	local estimatedMapTime = num.getDropsForProbability(1 * item.rarity, CDropTreshold) * excavationInterval
		+ cartographyInterval * CMapSize
		
	mw.log(estimatedTime)
	mw.log(estimatedMapTime)
end

return p