Módulo:Stats

De Coromon Wiki
Ir a la navegación Ir a la búsqueda

La documentación para este módulo puede ser creada en Módulo:Stats/doc

local p = {}

-- might put base stats into a database and access them here later idk

function p.statAtLevel (frame)
	
	local lvl = frame.args[1] or frame.args["Niv"]
	local baseStat = frame.args[2] or frame.args["baseStat"]
	local statType = frame.args[3] or frame.args["statType"]
	
	local stat = p.getStatAtLevel (tonumber(lvl), p.convertToBaseStat(baseStat, statType), statType)
	return stat ~= nil and stat or "''N/D''"
end

function p.getStatAtLevel (lvl, baseStat, statType)
	
	if lvl == nil or baseStat == nil then
		return nil
	end
	
	local baseValue = statType == "PV" and 10 + lvl or statType == "PE" and 20 or 5
	return baseValue + math.floor(lvl/99 * baseStat)
end

function p.rate (frame)
	
	local from = frame.args[1] or frame.args["from"]
	local to = frame.args[2] or frame.args["to"]
	local baseStat = frame.args[3] or frame.args["baseStat"]
	local statType = frame.args[4] or frame.args["statType"]
	
	local rate = p.getRate(tonumber(from), tonumber(to), p.convertToBaseStat(baseStat, statType), statType)
	return rate ~= nil and rate or "''N/D''"
end

function p.getRate (from, to, baseStat, statType)
	
	local lowStat = p.getStatAtLevel(from, baseStat, statType)
	local highStat = p.getStatAtLevel(to, baseStat, statType)
	
	return lowStat ~= nil and highStat ~= nil and string.format("%.2f", (highStat-lowStat)/(to - from)) or nil
end

function p.convertToBaseStat (str, statType)
	
	return tonumber(str) ~= nil and tonumber(str) or statType == "PE" and 34 or nil
end
	
return p