let modInfo = {
	name: "Progressbar Incremental",
	id: "nif/pbic",
	author: "Nif",
	pointsName: "points",
	modFiles: ["data/ranks.js", "data/levels.js", "data/progress.js", "data/super progress.js", "data/files.js", "data/integrals.js", "data/achievements.js", "data/tree.js"],

	discordName: "",
	discordLink: "",
	initialStartPoints: new Decimal (1), // Used for hard resets and new players
	offlineLimit: 1,  // In hours
}

// Set your version in num and name
let VERSION = {
	num: "1.0",
	name: "The first release.",
}

let changelog = `<h1>Changelog:</h1><br><br>
	<h3>v1.0</h3><br>
		- Added Progress, Super Progress, and File layers.<br>
		- Added bars Alpha to Lambda.<br>
		- Added ranks Alpha to Zeta.<br>
		- Added 3 buyables and 2 super buyables.<br>
		- Added 10 Filestones.<br>
		- Added 11 Directory upgrades.<br>
		- Added Integral reset.<br>
		- Current endgame: 1 integral.<br>`

let winText = `Download 100% complete.<br><br>You won! Congratulations!<br>More content coming soon...`

// If you add new functions anywhere inside of a layer, and those functions have an effect when called, add them here.
// (The ones here are examples, all official functions are already taken care of)
var doNotCallTheseFunctionsEveryTick = ["blowUpEverything"]

function getStartPoints(){
    return new Decimal(modInfo.initialStartPoints)
}

// Determines if it should show points/sec
function canGenPoints(){
	return getAlphaLevel().gte(0)
}

// Calculate points/sec!
function getPointGen() {
	if(!canGenPoints()) return new Decimal(0)
	// additive
	let gain = getAlphaEffect()
	gain = gain.add(getEtaEffect())
	// multiplicative
	gain = gain.mul(getBetaEffect())
	gain = gain.mul(getGammaEffect())
	gain = gain.mul(getDeltaEffect())
	gain = gain.mul(getZetaEffect())
	gain = gain.mul(getLambdaEffect())
	gain = gain.mul(tmp.ach.effect)
	if (hasMilestone('f', 0)) gain = gain.mul(getTotalLevel().add(1).log(5).add(1))
	// exponentiative
	if (gain.gte(1)) {
		gain = gain.pow(getEpsilonEffect())
		gain = gain.pow(getIotaEffect())
        gain = gain.pow(buyableEffect('sp', 12))
		if (hasMilestone('f', 3)) gain = gain.pow(2)
		if (hasUpgrade('f', 11)) gain = gain.pow(upgradeEffect('f', 11))
	}
	// softcaps
	gain = softcap(gain, getKappaEffect().mul(1000), d => d.add(1).log(Math.E).add(1).pow(2).sub(1).div(2))
	gain = softcap(gain, Decimal.pow(2, 128), _ => new Decimal(0), player.points)
	return gain
}

// You can add non-layer related variables that should to into "player" and be saved here, along with default values
function addedPlayerData() { return {
}}

// Display extra things at the top of the page
var displayThings = [
	"All exponentiative upgrades only take affect above 1.",
	() => getPointGen().gte(getKappaEffect().mul(1000)) ? "Your points per second are being logarithmically softcapped over " + getKappaEffect().mul(1000) + "/s" : ""
]

// Determines when the game "ends"
function isEndgame() {
	return player.i.points.gt(0)
}



// Less important things beyond this point!

// Style for the background, can be a function
var backgroundStyle = {

}

// You can change this if you have things that can be messed up by long tick lengths
function maxTickLength() {
	return(3600) // Default is 1 hour which is just arbitrarily large
}

// Use this if you need to undo inflation from an older version. If the version is older than the version that fixed the issue,
// you can cap their current resources with this.
function fixOldSave(oldVersion) {

}