Module:Calculator/Archaeology: Difference between revisions

From Melvor Idle
(First version)
 
(wip: partially add function to compare time for making a new map)
 
(One intermediate revision by the same user not shown)
Line 4: Line 4:
local TimeSpan = require('Module:TimeSpan')
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
return p

Latest revision as of 19:34, 17 April 2024

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