let modInfo = { name: "The Game Dev Tree", id: "gamedevtree", author: "thepaperpilot", pointsName: "hours of work", endgame: new Decimal("e50"), discordName: "The Paper Pilot Community Server", discordLink: "https://discord.gg/WzejVAx", changelogLink: "https://github.com/thepaperpilot/The-Modding-Tree/blob/gamedevtree/changelog.md", offlineLimit: 5, // In hours initialStartPoints: new Decimal (0) // Used for hard resets and new players } // Set your version in num and name let VERSION = { num: "1.0.4", name: "Version Bump [rebalanced,debuggedx3]", } // 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", "onStart"] function getStartPoints(){ return new Decimal(modInfo.initialStartPoints) } // Determines if it should show points/sec function canGenPoints(){ return true } // Calculate points/sec! function getPointGen() { if(!canGenPoints()) return new Decimal(0) let gain = layers.e.effect() gain = gain.pow(buyableEffect("c", 11)) gain = gain.mul(clickableEffect("r", 11)) gain = gain.mul(clickableEffect("r", 12)) gain = gain.mul(clickableEffect("r", 13)) gain = gain.mul(clickableEffect("r", 14)) gain = gain.mul(layers.f.effect().productivityMult) if (hasUpgrade("u", 11)) gain = gain.mul(2) if (hasUpgrade("u", 12)) gain = gain.mul(1.5) if (hasUpgrade("u", 22)) gain = gain.mul(upgradeEffect("u", 22)) for (let r = 1; r <= 2; r++) for (let c = 1; c <= 4; c++) if (hasUpgrade("c", r * 10 + c)) gain = gain.mul(2) // Apply productivity slow downs let slowDownModifier = player.points.add(gain.sqrt()).sub(player.e.total.times(layers.r.effect())).clampMin(0).div(buyableEffect("a", 12)).pow(buyableEffect("s", 12)).clampMin(1) gain = gain.divide(slowDownModifier.sqrt()) gain = gain.divide(slowDownModifier.sqrt().clampMin(10).log10().pow(2)) slowDownModifier = slowDownModifier.pow(buyableEffect("a", 22)) if (getClickableState("r", 11)) { gain = gain.divide(slowDownModifier.pow(.25)) } else if (getClickableState("r", 12)) { gain = gain.divide(slowDownModifier.pow(.25)) gain = gain.divide(slowDownModifier.pow(.125)) } else if (getClickableState("r", 13)) { gain = gain.divide(slowDownModifier.pow(.25)) gain = gain.divide(slowDownModifier.pow(.125)) gain = gain.divide(slowDownModifier.pow(.0625)) } else if (getClickableState("r", 14)) { gain = gain.divide(slowDownModifier.pow(.25)) gain = gain.divide(slowDownModifier.pow(.125)) gain = gain.divide(slowDownModifier.pow(.0625)) gain = gain.divide(slowDownModifier.pow(.03125)) } 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 { hqTree: true }} // Display extra things at the top of the page var displayThings = [ "
", () => player.points < 24 * 3 ? "
" : player.points < 24 * 365 * 3 ? `equivalent to ${format(player.points.div(24))} days of work` : player.points < 24 * 365 * 300 ? `equivalent to ${format(player.points.div(24 * 365))} years of work` : player.points < 24 * 365 * 3000000 ? `equivalent to ${format(player.points.div(24 * 365 * 100))} centuries of work` : player.points < 24 * 365 * 3000000000 ? `equivalent to ${format(player.points.div(24 * 365 * 1000000))} epochs of work` : new Decimal(24 * 365).times("3e1000").gte(player.points) ? `equivalent to ${format(player.points.div(24 * 365 * 1000000000))} eons of work` : `equivalent to heat death ^${format(player.points.log(new Decimal(24).mul(365).mul("1e1000")))} of work` ] // Determines when the game "ends" function isEndgame() { return hasUpgrade("d", 11) } // Less important things beyond this point! // You can change this if you have things that can be messed up by long tick lengths function maxTickLength() { return(3600000000) // Default is 1 hour which is just arbitrarily large }