From 4c4609e0b1356d1a6919b00bf4205995387cc5e8 Mon Sep 17 00:00:00 2001 From: liamkelly4123-jpg Date: Sat, 21 Feb 2026 11:49:32 -0500 Subject: [PATCH 01/18] Update mod.js --- js/mod.js | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/js/mod.js b/js/mod.js index 751e3dfff6..c5651799c4 100644 --- a/js/mod.js +++ b/js/mod.js @@ -1,18 +1,18 @@ let modInfo = { - name: "The ??? Tree", - author: "nobody", + name: "The Incremental Tree", + author: "liam", pointsName: "points", - modFiles: ["layers.js", "tree.js"], + modFiles: ["tree.js", "p.js], discordName: "", discordLink: "", - initialStartPoints: new Decimal (10), // Used for hard resets and new players - offlineLimit: 1, // In hours + initialStartPoints: new Decimal (0), // Used for hard resets and new players + offlineLimit: 1.5, // In hours } // Set your version in num and name let VERSION = { - num: "0.0", + num: "1.0", name: "Literally nothing", } @@ -75,4 +75,4 @@ function maxTickLength() { // 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){ -} \ No newline at end of file +} From fde053c3d164a2b558a49c5f15a7bdf166cc91ba Mon Sep 17 00:00:00 2001 From: liamkelly4123-jpg Date: Sat, 21 Feb 2026 11:50:15 -0500 Subject: [PATCH 02/18] Create p.js --- js/p.js | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 js/p.js diff --git a/js/p.js b/js/p.js new file mode 100644 index 0000000000..f9488fb9b0 --- /dev/null +++ b/js/p.js @@ -0,0 +1,28 @@ +addLayer("p", { + name: "prestige", // This is optional, only used in a few places, If absent it just uses the layer id. + symbol: "P", // This appears on the layer's node. Default is the id with the first letter capitalized + position: 0, // Horizontal position within a row. By default it uses the layer id and sorts in alphabetical order + startData() { return { + unlocked: true, + points: new Decimal(0), + }}, + color: "#4BDC13", + requires: new Decimal(10), // Can be a function that takes requirement increases into account + resource: "prestige points", // Name of prestige currency + baseResource: "points", // Name of resource prestige is based on + baseAmount() {return player.points}, // Get the current amount of baseResource + type: "normal", // normal: cost to gain currency depends on amount gained. static: cost depends on how much you already have + exponent: 0.5, // Prestige currency exponent + gainMult() { // Calculate the multiplier for main currency from bonuses + mult = new Decimal(1) + return mult + }, + gainExp() { // Calculate the exponent on main currency from bonuses + return new Decimal(1) + }, + row: 0, // Row the layer is in on the tree (0 is the first row) + hotkeys: [ + {key: "p", description: "P: Reset for prestige points", onPress(){if (canReset(this.layer)) doReset(this.layer)}}, + ], + layerShown(){return true} +}) From b03b61ab955cda0f163fb1ae1eb68099711e71a1 Mon Sep 17 00:00:00 2001 From: liamkelly4123-jpg Date: Sat, 21 Feb 2026 11:50:28 -0500 Subject: [PATCH 03/18] Update layers.js --- js/layers.js | 29 +---------------------------- 1 file changed, 1 insertion(+), 28 deletions(-) diff --git a/js/layers.js b/js/layers.js index f9488fb9b0..8b13789179 100644 --- a/js/layers.js +++ b/js/layers.js @@ -1,28 +1 @@ -addLayer("p", { - name: "prestige", // This is optional, only used in a few places, If absent it just uses the layer id. - symbol: "P", // This appears on the layer's node. Default is the id with the first letter capitalized - position: 0, // Horizontal position within a row. By default it uses the layer id and sorts in alphabetical order - startData() { return { - unlocked: true, - points: new Decimal(0), - }}, - color: "#4BDC13", - requires: new Decimal(10), // Can be a function that takes requirement increases into account - resource: "prestige points", // Name of prestige currency - baseResource: "points", // Name of resource prestige is based on - baseAmount() {return player.points}, // Get the current amount of baseResource - type: "normal", // normal: cost to gain currency depends on amount gained. static: cost depends on how much you already have - exponent: 0.5, // Prestige currency exponent - gainMult() { // Calculate the multiplier for main currency from bonuses - mult = new Decimal(1) - return mult - }, - gainExp() { // Calculate the exponent on main currency from bonuses - return new Decimal(1) - }, - row: 0, // Row the layer is in on the tree (0 is the first row) - hotkeys: [ - {key: "p", description: "P: Reset for prestige points", onPress(){if (canReset(this.layer)) doReset(this.layer)}}, - ], - layerShown(){return true} -}) + From f516c18dfdf9311afc82e9b62fe8660346e19660 Mon Sep 17 00:00:00 2001 From: liamkelly4123-jpg Date: Sat, 21 Feb 2026 23:22:00 +0000 Subject: [PATCH 04/18] upd1 --- js/layers.js | 1 - js/mod.js | 6 ++++-- js/p.js | 31 +++++++++++++++++++++++++++---- 3 files changed, 31 insertions(+), 7 deletions(-) delete mode 100644 js/layers.js diff --git a/js/layers.js b/js/layers.js deleted file mode 100644 index 8b13789179..0000000000 --- a/js/layers.js +++ /dev/null @@ -1 +0,0 @@ - diff --git a/js/mod.js b/js/mod.js index c5651799c4..fc689050dc 100644 --- a/js/mod.js +++ b/js/mod.js @@ -2,7 +2,7 @@ let modInfo = { name: "The Incremental Tree", author: "liam", pointsName: "points", - modFiles: ["tree.js", "p.js], + modFiles: ["tree.js", "p.js"], discordName: "", discordLink: "", @@ -12,7 +12,7 @@ let modInfo = { // Set your version in num and name let VERSION = { - num: "1.0", + num: "1", name: "Literally nothing", } @@ -42,6 +42,8 @@ function getPointGen() { return new Decimal(0) let gain = new Decimal(1) + if (hasUpgrade("p", 11)) gain = gain.times(2); + if (hasUpgrade("p", 12)) gain = gain.times(upgradeEffect("p", 12)); return gain } diff --git a/js/p.js b/js/p.js index f9488fb9b0..4ac1d24dcc 100644 --- a/js/p.js +++ b/js/p.js @@ -1,12 +1,12 @@ addLayer("p", { name: "prestige", // This is optional, only used in a few places, If absent it just uses the layer id. symbol: "P", // This appears on the layer's node. Default is the id with the first letter capitalized - position: 0, // Horizontal position within a row. By default it uses the layer id and sorts in alphabetical order + position: 1, // Horizontal position within a row. By default it uses the layer id and sorts in alphabetical order startData() { return { unlocked: true, points: new Decimal(0), }}, - color: "#4BDC13", + color: "#02e9fa", requires: new Decimal(10), // Can be a function that takes requirement increases into account resource: "prestige points", // Name of prestige currency baseResource: "points", // Name of resource prestige is based on @@ -20,9 +20,32 @@ addLayer("p", { gainExp() { // Calculate the exponent on main currency from bonuses return new Decimal(1) }, - row: 0, // Row the layer is in on the tree (0 is the first row) + row: 1, // Row the layer is in on the tree (0 is the first row) hotkeys: [ {key: "p", description: "P: Reset for prestige points", onPress(){if (canReset(this.layer)) doReset(this.layer)}}, ], - layerShown(){return true} + layerShown(){return true}, + upgrades: { + 11: { + title: "prestige - 01", + description: "double point gain", + cost: new Decimal(1), + + }, + 12: { + title: "prestige - 02", + description: "prestige points boost point gain", + cost: new Decimal(2), + unlocked() { return (hasUpgrade(this.layer, 11))}, + effect() { // Calculate bonuses from the upgrade. Can return a single value or an object with multiple values + let ret = player[this.layer].points.add(1).pow(0.45); + if (ret.gte("1e20")) ret = ret.sqrt().times("1e10") + return ret; + }, + effectDisplay() { return format(this.effect())+"x" }, // Add formatting to the effect + + }, + +}, + }) From 76c7a14b289b9d7e41bb4a2fc7bd234b26867ce5 Mon Sep 17 00:00:00 2001 From: liamkelly4123-jpg Date: Sat, 21 Feb 2026 23:28:29 +0000 Subject: [PATCH 05/18] upd1 --- js/mod.js | 2 ++ js/p.js | 8 ++++++++ 2 files changed, 10 insertions(+) diff --git a/js/mod.js b/js/mod.js index fc689050dc..f8717ed975 100644 --- a/js/mod.js +++ b/js/mod.js @@ -44,6 +44,8 @@ function getPointGen() { let gain = new Decimal(1) if (hasUpgrade("p", 11)) gain = gain.times(2); if (hasUpgrade("p", 12)) gain = gain.times(upgradeEffect("p", 12)); + if (hasUpgrade("p", 13)) gain = gain.times(2.4); + return gain } diff --git a/js/p.js b/js/p.js index 4ac1d24dcc..85101eb0a6 100644 --- a/js/p.js +++ b/js/p.js @@ -45,6 +45,14 @@ addLayer("p", { effectDisplay() { return format(this.effect())+"x" }, // Add formatting to the effect }, + 13: { + title: "prestige - 03", + description: "x2.4 point gain", + cost: new Decimal(5), + unlocked() { return (hasUpgrade(this.layer, 12))}, + + + }, }, From ead21cba8fb1ca566d24f5699f310e00a4e7f7a4 Mon Sep 17 00:00:00 2001 From: liamkelly4123-jpg Date: Sat, 21 Feb 2026 23:40:21 +0000 Subject: [PATCH 06/18] upd2 --- js/mod.js | 4 +++- js/p.js | 14 ++++++++++++-- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/js/mod.js b/js/mod.js index f8717ed975..007daab172 100644 --- a/js/mod.js +++ b/js/mod.js @@ -44,7 +44,9 @@ function getPointGen() { let gain = new Decimal(1) if (hasUpgrade("p", 11)) gain = gain.times(2); if (hasUpgrade("p", 12)) gain = gain.times(upgradeEffect("p", 12)); - if (hasUpgrade("p", 13)) gain = gain.times(2.4); + if (hasUpgrade("p", 13)) gain = gain.times(2.4); + if (hasUpgrade("p", 14)) gain = gain.times(2); + return gain } diff --git a/js/p.js b/js/p.js index 85101eb0a6..eb2a6613d0 100644 --- a/js/p.js +++ b/js/p.js @@ -14,11 +14,13 @@ addLayer("p", { type: "normal", // normal: cost to gain currency depends on amount gained. static: cost depends on how much you already have exponent: 0.5, // Prestige currency exponent gainMult() { // Calculate the multiplier for main currency from bonuses - mult = new Decimal(1) + mult = new Decimal(1); + if (hasUpgrade("p", 14)) mult = mult.times(2); return mult }, gainExp() { // Calculate the exponent on main currency from bonuses - return new Decimal(1) + exp = new Decimal(1); + return exp; }, row: 1, // Row the layer is in on the tree (0 is the first row) hotkeys: [ @@ -52,6 +54,14 @@ addLayer("p", { unlocked() { return (hasUpgrade(this.layer, 12))}, + }, + 14: { + title: "prestige - 04", + description: "double points and prestige points", + cost: new Decimal(15), + unlocked() { return (hasUpgrade(this.layer, 13))}, + + }, }, From 225c513fb750e6a601ae3c6d7982fb15953640d9 Mon Sep 17 00:00:00 2001 From: liamkelly4123-jpg Date: Sat, 21 Feb 2026 23:47:40 +0000 Subject: [PATCH 07/18] upd3 --- js/mod.js | 2 ++ js/p.js | 18 ++++++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/js/mod.js b/js/mod.js index 007daab172..da47252cb1 100644 --- a/js/mod.js +++ b/js/mod.js @@ -46,6 +46,8 @@ function getPointGen() { if (hasUpgrade("p", 12)) gain = gain.times(upgradeEffect("p", 12)); if (hasUpgrade("p", 13)) gain = gain.times(2.4); if (hasUpgrade("p", 14)) gain = gain.times(2); + if (hasUpgrade("p", 21)) gain = gain.times(3.5); + return gain diff --git a/js/p.js b/js/p.js index eb2a6613d0..c4cb440d1c 100644 --- a/js/p.js +++ b/js/p.js @@ -16,6 +16,8 @@ addLayer("p", { gainMult() { // Calculate the multiplier for main currency from bonuses mult = new Decimal(1); if (hasUpgrade("p", 14)) mult = mult.times(2); + if (hasUpgrade("p", 15)) mult = mult.times(3); + return mult }, gainExp() { // Calculate the exponent on main currency from bonuses @@ -62,6 +64,22 @@ addLayer("p", { unlocked() { return (hasUpgrade(this.layer, 13))}, + }, + 15: { + title: "prestige - 05", + description: "triple prestige points", + cost: new Decimal(100), + unlocked() { return (hasUpgrade(this.layer, 14))}, + + + }, + 21: { + title: "prestige - 06", + description: "x3.5 points", + cost: new Decimal(450), + unlocked() { return (hasUpgrade(this.layer, 15))}, + + }, }, From e849d61422b229873e444e12c776041ced5a5d89 Mon Sep 17 00:00:00 2001 From: liamkelly4123-jpg Date: Sat, 21 Feb 2026 23:54:52 +0000 Subject: [PATCH 08/18] upd4 --- js/p.js | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/js/p.js b/js/p.js index c4cb440d1c..af005bb1a6 100644 --- a/js/p.js +++ b/js/p.js @@ -16,7 +16,10 @@ addLayer("p", { gainMult() { // Calculate the multiplier for main currency from bonuses mult = new Decimal(1); if (hasUpgrade("p", 14)) mult = mult.times(2); - if (hasUpgrade("p", 15)) mult = mult.times(3); + if (hasUpgrade("p", 15)) mult = mult.times(3); + if (hasUpgrade("p", 22)) mult = mult.times(2.5); + + return mult }, @@ -80,6 +83,14 @@ addLayer("p", { unlocked() { return (hasUpgrade(this.layer, 15))}, + }, + 22: { + title: "prestige - 07", + description: "x2.5 prestige points", + cost: new Decimal(1300), + unlocked() { return (hasUpgrade(this.layer, 21))}, + + }, }, From f8b7710eec8faaaa78fdeef8b4d7989274d8cab2 Mon Sep 17 00:00:00 2001 From: liamkelly4123-jpg Date: Sun, 22 Feb 2026 00:07:30 +0000 Subject: [PATCH 09/18] up --- js/mod.js | 4 +++- js/p.js | 13 +++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/js/mod.js b/js/mod.js index da47252cb1..013b46fc47 100644 --- a/js/mod.js +++ b/js/mod.js @@ -46,7 +46,9 @@ function getPointGen() { if (hasUpgrade("p", 12)) gain = gain.times(upgradeEffect("p", 12)); if (hasUpgrade("p", 13)) gain = gain.times(2.4); if (hasUpgrade("p", 14)) gain = gain.times(2); - if (hasUpgrade("p", 21)) gain = gain.times(3.5); + if (hasUpgrade("p", 21)) gain = gain.times(3.5); + if (hasUpgrade("p", 23)) gain = gain.times(upgradeEffect("p", 23)); + diff --git a/js/p.js b/js/p.js index af005bb1a6..cacc2ae215 100644 --- a/js/p.js +++ b/js/p.js @@ -91,6 +91,19 @@ addLayer("p", { unlocked() { return (hasUpgrade(this.layer, 21))}, + }, + 23: { + title: "prestige - 08", + description: "prestige upgrades bought boosts points", + cost: new Decimal(5000), + unlocked() { return (hasUpgrade(this.layer, 22))}, + effect() { // Calculate bonuses from the upgrade. Can return a single value or an object with multiple values + let ret = player.p.upgrades.length /2.3; + return ret; + }, + effectDisplay() { return format(this.effect())+"x" }, // Add formatting to the effect + + }, }, From 475ca5f445751994e627246251087cdc5d5058bd Mon Sep 17 00:00:00 2001 From: liamkelly4123-jpg Date: Sun, 22 Feb 2026 00:12:09 +0000 Subject: [PATCH 10/18] up --- js/mod.js | 2 ++ js/p.js | 9 +++++++++ 2 files changed, 11 insertions(+) diff --git a/js/mod.js b/js/mod.js index 013b46fc47..73dcfd9c9f 100644 --- a/js/mod.js +++ b/js/mod.js @@ -48,6 +48,8 @@ function getPointGen() { if (hasUpgrade("p", 14)) gain = gain.times(2); if (hasUpgrade("p", 21)) gain = gain.times(3.5); if (hasUpgrade("p", 23)) gain = gain.times(upgradeEffect("p", 23)); + if (hasUpgrade("p", 24)) gain = gain.times(4); + diff --git a/js/p.js b/js/p.js index cacc2ae215..bf67e0aa8d 100644 --- a/js/p.js +++ b/js/p.js @@ -104,6 +104,15 @@ addLayer("p", { effectDisplay() { return format(this.effect())+"x" }, // Add formatting to the effect + }, + 24: { + title: "prestige - 09", + description: "x4 points", + cost: new Decimal(12000), + unlocked() { return (hasUpgrade(this.layer, 23))}, + + + }, }, From b84fa1a6cc3de3345e04879d6391165411fa0496 Mon Sep 17 00:00:00 2001 From: liamkelly4123-jpg Date: Sun, 22 Feb 2026 01:33:17 +0000 Subject: [PATCH 11/18] update 1 --- js/m.js | 47 +++++++++++++++++++++++++++++++++++++++++++++++ js/mod.js | 8 ++++---- js/p.js | 9 +++++++++ 3 files changed, 60 insertions(+), 4 deletions(-) create mode 100644 js/m.js diff --git a/js/m.js b/js/m.js new file mode 100644 index 0000000000..38f3dbaa07 --- /dev/null +++ b/js/m.js @@ -0,0 +1,47 @@ +addLayer("m", { + name: "matter", // This is optional, only used in a few places, If absent it just uses the layer id. + symbol: "M", // This appears on the layer's node. Default is the id with the first letter capitalized + branches: ["p"], + position: 1, // Horizontal position within a row. By default it uses the layer id and sorts in alphabetical order + startData() { return { + unlocked: false, + points: new Decimal(0), + best: new Decimal(0), + total: new Decimal(9), + }}, + color: "#fae902", + requires: new Decimal(2.5e6), // Can be a function that takes requirement increases into account + resource: "matter", // Name of prestige currency + baseResource: "points", // Name of resource prestige is based on + baseAmount() {return player.points}, // Get the current amount of baseResource + type: "normal", // normal: cost to gain currency depends on amount gained. static: cost depends on how much you already have + exponent: 0.3, // Prestige currency exponent + gainMult() { // Calculate the multiplier for main currency from bonuses + mult = new Decimal(1); + + + + + return mult + }, + gainExp() { // Calculate the exponent on main currency from bonuses + exp = new Decimal(1); + return exp; + }, + row: 2, // Row the layer is in on the tree (0 is the first row) + hotkeys: [ + {key: "m", description: "M: Reset for matter", onPress(){if (canReset(this.layer)) doReset(this.layer)}}, + ], + layerShown(){return hasUpgrade("p", 25) || player.m.unlocked}, + upgrades: { + 11: { + title: "matter - 01", + description: "quadruple point gain", + cost: new Decimal(1), + + }, + + +}, + +}) diff --git a/js/mod.js b/js/mod.js index 73dcfd9c9f..c28be2b4dd 100644 --- a/js/mod.js +++ b/js/mod.js @@ -2,7 +2,7 @@ let modInfo = { name: "The Incremental Tree", author: "liam", pointsName: "points", - modFiles: ["tree.js", "p.js"], + modFiles: ["tree.js", "p.js", "m.js"], discordName: "", discordLink: "", @@ -48,10 +48,10 @@ function getPointGen() { if (hasUpgrade("p", 14)) gain = gain.times(2); if (hasUpgrade("p", 21)) gain = gain.times(3.5); if (hasUpgrade("p", 23)) gain = gain.times(upgradeEffect("p", 23)); - if (hasUpgrade("p", 24)) gain = gain.times(4); - - + if (hasUpgrade("p", 24)) gain = gain.times(4); + if (hasUpgrade("p", 25)) gain = gain.times(3.4); + if (hasUpgrade("m", 11)) gain = gain.times(4); return gain diff --git a/js/p.js b/js/p.js index bf67e0aa8d..2c57dad72e 100644 --- a/js/p.js +++ b/js/p.js @@ -113,6 +113,15 @@ addLayer("p", { + }, + 25: { + title: "prestige - 10", + description: "unlock matter and x3.4 points", + cost: new Decimal(35000), + unlocked() { return (hasUpgrade(this.layer, 24))}, + + + }, }, From 45932f276cfd1f4cceb94b0deae9b3facb8d8001 Mon Sep 17 00:00:00 2001 From: liamkelly4123-jpg Date: Sun, 22 Feb 2026 15:16:40 +0000 Subject: [PATCH 12/18] update 2 --- js/m.js | 123 +++++++++++++++++++++++++++++++++++++++++++++++++++++- js/mod.js | 30 +++++++++++-- js/p.js | 16 +++++++ js/pt.js | 67 +++++++++++++++++++++++++++++ 4 files changed, 230 insertions(+), 6 deletions(-) create mode 100644 js/pt.js diff --git a/js/m.js b/js/m.js index 38f3dbaa07..fb22eb7b9d 100644 --- a/js/m.js +++ b/js/m.js @@ -7,7 +7,7 @@ addLayer("m", { unlocked: false, points: new Decimal(0), best: new Decimal(0), - total: new Decimal(9), + total: new Decimal(0), }}, color: "#fae902", requires: new Decimal(2.5e6), // Can be a function that takes requirement increases into account @@ -18,14 +18,21 @@ addLayer("m", { exponent: 0.3, // Prestige currency exponent gainMult() { // Calculate the multiplier for main currency from bonuses mult = new Decimal(1); - + if (hasUpgrade("m", 12)) mult = mult.times(4); + if (hasUpgrade("m", 21)) mult = mult.times(3); + if (hasUpgrade("m", 25)) mult = mult.times(5); + if (hasUpgrade("m", 31) && hasUpgrade("p", 23)) mult = mult.times(upgradeEffect("p", 23)); + if (hasUpgrade("m", 34)) mult = mult.times(3); + + return mult }, gainExp() { // Calculate the exponent on main currency from bonuses exp = new Decimal(1); + if (hasUpgrade("m", 15)) exp = exp.times(1.3); return exp; }, row: 2, // Row the layer is in on the tree (0 is the first row) @@ -40,6 +47,118 @@ addLayer("m", { cost: new Decimal(1), }, + 12: { + title: "matter - 02", + description: "x4 matter gain, raise prestige - 02 to 1.2", + cost: new Decimal(1), + unlocked() { return (hasUpgrade(this.layer, 11))}, + + + }, + 13: { + title: "matter - 03", + description: "x3 prestige points, x1.5 points", + cost: new Decimal(15), + unlocked() { return (hasUpgrade(this.layer, 12))}, + + + }, + 14: { + title: "matter - 04", + description: "add 0.1 to prestige gain exp", + cost: new Decimal(40), + unlocked() { return (hasUpgrade(this.layer, 13))}, + + + }, + 15: { + title: "matter - 05", + description: "raise matter to ^1.3, x4 points", + cost: new Decimal(50), + unlocked() { return (hasUpgrade(this.layer, 14))}, + + + }, + 21: { + title: "matter - 06", + description: "x2.6 prestige points, x3 matter", + cost: new Decimal(250), + unlocked() { return (hasUpgrade(this.layer, 15))}, + + + }, + 22: { + title: "matter - 07", + description: "raise points to 1.1", + cost: new Decimal(2000), + unlocked() { return (hasUpgrade(this.layer, 21))}, + + + }, + 23: { + title: "matter - 08", + description: "prestige - 08 is applied twice", + cost: new Decimal(8000), + unlocked() { return (hasUpgrade(this.layer, 22))}, + + + }, + 24: { + title: "matter - 09", + description: "raise prestige points to 1.1", + cost: new Decimal(12000), + unlocked() { return (hasUpgrade(this.layer, 23))}, + + + }, + 25: { + title: "matter - 10", + description: "x5 matter and points", + cost: new Decimal(25000), + unlocked() { return (hasUpgrade(this.layer, 24))}, + + + }, + 31: { + title: "matter - 11", + description: "prestige - 08 is applied to matter gain", + cost: new Decimal(600000), + unlocked() { return (hasUpgrade(this.layer, 25))}, + + + }, + 32: { + title: "matter - 12", + description: "raise points to 1.08", + cost: new Decimal(2.5e6), + unlocked() { return (hasUpgrade(this.layer, 31))}, + + + }, + 33: { + title: "matter - 13", + description: "raise prestige points to 1.1", + cost: new Decimal(15e6), + unlocked() { return (hasUpgrade(this.layer, 32))}, + + + }, + 34: { + title: "matter - 14", + description: "x4 matter and prestige points", + cost: new Decimal(40e6), + unlocked() { return (hasUpgrade(this.layer, 33))}, + + + }, + 35: { + title: "matter - 15", + description: "unlock protons and x4 points", + cost: new Decimal(400e6), + unlocked() { return (hasUpgrade(this.layer, 34))}, + + + }, }, diff --git a/js/mod.js b/js/mod.js index c28be2b4dd..7ed6151438 100644 --- a/js/mod.js +++ b/js/mod.js @@ -2,7 +2,7 @@ let modInfo = { name: "The Incremental Tree", author: "liam", pointsName: "points", - modFiles: ["tree.js", "p.js", "m.js"], + modFiles: ["tree.js", "p.js", "m.js", "pt.js"], discordName: "", discordLink: "", @@ -12,8 +12,8 @@ let modInfo = { // Set your version in num and name let VERSION = { - num: "1", - name: "Literally nothing", + num: "2", + name: "protons and upgrades", } let changelog = `

Changelog:


@@ -52,6 +52,25 @@ function getPointGen() { if (hasUpgrade("p", 25)) gain = gain.times(3.4); if (hasUpgrade("m", 11)) gain = gain.times(4); + if (hasUpgrade("m", 13)) gain = gain.times(1.5); + if (hasUpgrade("m", 15)) gain = gain.times(4); + if (hasUpgrade("m", 23) && hasUpgrade("p", 23)) gain = gain.times(upgradeEffect("p", 23)); + if (hasUpgrade("m", 25)) gain = gain.times(5); + if (hasUpgrade("m", 35)) gain = gain.times(4); + + if (hasUpgrade("pt", 11)) gain = gain.times(8); + if (hasUpgrade("pt", 13)) gain = gain.times(15); + + + + + + + if (hasUpgrade("m", 22)) gain = gain.pow(1.1); + if (hasUpgrade("m", 32)) gain = gain.pow(1.08); + + + return gain @@ -63,11 +82,14 @@ function addedPlayerData() { return { // Display extra things at the top of the page var displayThings = [ + function() {if (true) return "reach 1e25 points to reach the endgame!"}, + + ] // Determines when the game "ends" function isEndgame() { - return player.points.gte(new Decimal("e280000000")) + return player.points.gte(new Decimal("1e25")) } diff --git a/js/p.js b/js/p.js index 2c57dad72e..2828bb38b2 100644 --- a/js/p.js +++ b/js/p.js @@ -19,12 +19,27 @@ addLayer("p", { if (hasUpgrade("p", 15)) mult = mult.times(3); if (hasUpgrade("p", 22)) mult = mult.times(2.5); + if (hasUpgrade("m", 13)) mult = mult.times(3); + if (hasUpgrade("m", 21)) mult = mult.times(2.6); + if (hasUpgrade("m", 34)) mult = mult.times(4); + + if (hasUpgrade("pt", 12)) mult = mult.times(10); + + + + + return mult }, gainExp() { // Calculate the exponent on main currency from bonuses exp = new Decimal(1); + if (hasUpgrade("m", 14)) exp = exp.add(0.1); + if (hasUpgrade("m", 24)) exp = exp.times(1.1); + if (hasUpgrade("m", 33)) exp = exp.times(1.1); + + return exp; }, row: 1, // Row the layer is in on the tree (0 is the first row) @@ -46,6 +61,7 @@ addLayer("p", { unlocked() { return (hasUpgrade(this.layer, 11))}, effect() { // Calculate bonuses from the upgrade. Can return a single value or an object with multiple values let ret = player[this.layer].points.add(1).pow(0.45); + if (hasUpgrade("m", 12)) ret = ret.pow(1.2); if (ret.gte("1e20")) ret = ret.sqrt().times("1e10") return ret; }, diff --git a/js/pt.js b/js/pt.js new file mode 100644 index 0000000000..1d833357ea --- /dev/null +++ b/js/pt.js @@ -0,0 +1,67 @@ +addLayer("pt", { + name: "proton", // This is optional, only used in a few places, If absent it just uses the layer id. + symbol: "PT", // This appears on the layer's node. Default is the id with the first letter capitalized + branches: ["p"], + position: 2, // Horizontal position within a row. By default it uses the layer id and sorts in alphabetical order + startData() { return { + unlocked: false, + points: new Decimal(0), + best: new Decimal(0), + total: new Decimal(0), + }}, + color: "#fa0202", + requires: new Decimal(5e19), // Can be a function that takes requirement increases into account + resource: "protons", // Name of prestige currency + baseResource: "points", // Name of resource prestige is based on + baseAmount() {return player.points}, // Get the current amount of baseResource + type: "normal", // normal: cost to gain currency depends on amount gained. static: cost depends on how much you already have + exponent: 0.5, // Prestige currency exponent + gainMult() { // Calculate the multiplier for main currency from bonuses + mult = new Decimal(1); + + + + + + + + return mult + }, + gainExp() { // Calculate the exponent on main currency from bonuses + exp = new Decimal(1); + + + return exp; + }, + row: 2, // Row the layer is in on the tree (0 is the first row) + hotkeys: [ + {key: "P", description: "SHIFT + P: Reset for protons", onPress(){if (canReset(this.layer)) doReset(this.layer)}}, + ], + layerShown(){return hasUpgrade("m", 35) || player.pt.unlocked}, + upgrades: { + 11: { + title: "proton - 01", + description: "x8 points", + cost: new Decimal(1), + + }, + 12: { + title: "proton - 02", + description: "x10 prestige points", + cost: new Decimal(5), + unlocked() { return (hasUpgrade(this.layer, 11))}, + + + }, + 13: { + title: "proton - 03", + description: "x15 points", + cost: new Decimal(20), + unlocked() { return (hasUpgrade(this.layer, 12))}, + + + }, + +}, + +}) From 575c92f0802327fcfba7db63518ba279af0110fc Mon Sep 17 00:00:00 2001 From: liamkelly4123-jpg Date: Sun, 22 Feb 2026 15:40:46 +0000 Subject: [PATCH 13/18] update 2.1 --- js/m.js | 36 ++++++++++++++++++------------------ js/mod.js | 20 +++++++++++++++----- js/p.js | 20 ++++++++++---------- js/pt.js | 6 +++--- 4 files changed, 46 insertions(+), 36 deletions(-) diff --git a/js/m.js b/js/m.js index fb22eb7b9d..a54b8e7291 100644 --- a/js/m.js +++ b/js/m.js @@ -42,21 +42,21 @@ addLayer("m", { layerShown(){return hasUpgrade("p", 25) || player.m.unlocked}, upgrades: { 11: { - title: "matter - 01", + title: "this should help get back here", description: "quadruple point gain", cost: new Decimal(1), }, 12: { - title: "matter - 02", - description: "x4 matter gain, raise prestige - 02 to 1.2", + title: "EXPONENT, kinda", + description: "x4 matter gain, raise 'snergized' to 1.2", cost: new Decimal(1), unlocked() { return (hasUpgrade(this.layer, 11))}, }, 13: { - title: "matter - 03", + title: "2 in 1", description: "x3 prestige points, x1.5 points", cost: new Decimal(15), unlocked() { return (hasUpgrade(this.layer, 12))}, @@ -64,7 +64,7 @@ addLayer("m", { }, 14: { - title: "matter - 04", + title: "real exponents!", description: "add 0.1 to prestige gain exp", cost: new Decimal(40), unlocked() { return (hasUpgrade(this.layer, 13))}, @@ -72,7 +72,7 @@ addLayer("m", { }, 15: { - title: "matter - 05", + title: "more real exponents!", description: "raise matter to ^1.3, x4 points", cost: new Decimal(50), unlocked() { return (hasUpgrade(this.layer, 14))}, @@ -80,7 +80,7 @@ addLayer("m", { }, 21: { - title: "matter - 06", + title: "pretty good boost", description: "x2.6 prestige points, x3 matter", cost: new Decimal(250), unlocked() { return (hasUpgrade(this.layer, 15))}, @@ -88,7 +88,7 @@ addLayer("m", { }, 22: { - title: "matter - 07", + title: "lots of points", description: "raise points to 1.1", cost: new Decimal(2000), unlocked() { return (hasUpgrade(this.layer, 21))}, @@ -96,15 +96,15 @@ addLayer("m", { }, 23: { - title: "matter - 08", - description: "prestige - 08 is applied twice", + title: "basically squared", + description: "'upgrade synergy' is applied twice", cost: new Decimal(8000), unlocked() { return (hasUpgrade(this.layer, 22))}, }, 24: { - title: "matter - 09", + title: "'synergied' will be better", description: "raise prestige points to 1.1", cost: new Decimal(12000), unlocked() { return (hasUpgrade(this.layer, 23))}, @@ -112,7 +112,7 @@ addLayer("m", { }, 25: { - title: "matter - 10", + title: "that's alot!", description: "x5 matter and points", cost: new Decimal(25000), unlocked() { return (hasUpgrade(this.layer, 24))}, @@ -120,15 +120,15 @@ addLayer("m", { }, 31: { - title: "matter - 11", - description: "prestige - 08 is applied to matter gain", + title: "there's MORE?!", + description: "'upgrade synergy' is applied to matter gain", cost: new Decimal(600000), unlocked() { return (hasUpgrade(this.layer, 25))}, }, 32: { - title: "matter - 12", + title: "even more points", description: "raise points to 1.08", cost: new Decimal(2.5e6), unlocked() { return (hasUpgrade(this.layer, 31))}, @@ -136,7 +136,7 @@ addLayer("m", { }, 33: { - title: "matter - 13", + title: "..and prestige points", description: "raise prestige points to 1.1", cost: new Decimal(15e6), unlocked() { return (hasUpgrade(this.layer, 32))}, @@ -144,7 +144,7 @@ addLayer("m", { }, 34: { - title: "matter - 14", + title: "..and matter", description: "x4 matter and prestige points", cost: new Decimal(40e6), unlocked() { return (hasUpgrade(this.layer, 33))}, @@ -152,7 +152,7 @@ addLayer("m", { }, 35: { - title: "matter - 15", + title: "..and layers!", description: "unlock protons and x4 points", cost: new Decimal(400e6), unlocked() { return (hasUpgrade(this.layer, 34))}, diff --git a/js/mod.js b/js/mod.js index 7ed6151438..872dc01a0a 100644 --- a/js/mod.js +++ b/js/mod.js @@ -12,16 +12,26 @@ let modInfo = { // Set your version in num and name let VERSION = { - num: "2", + num: "2.1", name: "protons and upgrades", } let changelog = `

Changelog:


-

v0.0


- - Added things.
- - Added stuff.` +

v2.1


+ - Added upgrade names
-let winText = `Congratulations! You have reached the end and beaten this game, but for now...` +

v2


+ - Added a lot of upgrades
+ - Added protons
+ + + + + + +




- you found me!` + +let winText = `Message from the dev: thank's for playing and beating my game! I hope you enjoyed it. Please comment any suggestions you have for a future update!` // 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) diff --git a/js/p.js b/js/p.js index 2828bb38b2..d638b972b4 100644 --- a/js/p.js +++ b/js/p.js @@ -49,13 +49,13 @@ addLayer("p", { layerShown(){return true}, upgrades: { 11: { - title: "prestige - 01", + title: "you gotta start somewhere", description: "double point gain", cost: new Decimal(1), }, 12: { - title: "prestige - 02", + title: "synergized", description: "prestige points boost point gain", cost: new Decimal(2), unlocked() { return (hasUpgrade(this.layer, 11))}, @@ -69,7 +69,7 @@ addLayer("p", { }, 13: { - title: "prestige - 03", + title: "a bit better", description: "x2.4 point gain", cost: new Decimal(5), unlocked() { return (hasUpgrade(this.layer, 12))}, @@ -77,7 +77,7 @@ addLayer("p", { }, 14: { - title: "prestige - 04", + title: "double trouble", description: "double points and prestige points", cost: new Decimal(15), unlocked() { return (hasUpgrade(this.layer, 13))}, @@ -85,7 +85,7 @@ addLayer("p", { }, 15: { - title: "prestige - 05", + title: "finale row 1 upgrade", description: "triple prestige points", cost: new Decimal(100), unlocked() { return (hasUpgrade(this.layer, 14))}, @@ -93,7 +93,7 @@ addLayer("p", { }, 21: { - title: "prestige - 06", + title: "better boosts for row 2", description: "x3.5 points", cost: new Decimal(450), unlocked() { return (hasUpgrade(this.layer, 15))}, @@ -101,7 +101,7 @@ addLayer("p", { }, 22: { - title: "prestige - 07", + title: "more prestige", description: "x2.5 prestige points", cost: new Decimal(1300), unlocked() { return (hasUpgrade(this.layer, 21))}, @@ -109,7 +109,7 @@ addLayer("p", { }, 23: { - title: "prestige - 08", + title: "upgrade synergy", description: "prestige upgrades bought boosts points", cost: new Decimal(5000), unlocked() { return (hasUpgrade(this.layer, 22))}, @@ -122,7 +122,7 @@ addLayer("p", { }, 24: { - title: "prestige - 09", + title: "quadrupled!", description: "x4 points", cost: new Decimal(12000), unlocked() { return (hasUpgrade(this.layer, 23))}, @@ -131,7 +131,7 @@ addLayer("p", { }, 25: { - title: "prestige - 10", + title: "finale prestige upgrade", description: "unlock matter and x3.4 points", cost: new Decimal(35000), unlocked() { return (hasUpgrade(this.layer, 24))}, diff --git a/js/pt.js b/js/pt.js index 1d833357ea..5bfa977e59 100644 --- a/js/pt.js +++ b/js/pt.js @@ -40,13 +40,13 @@ addLayer("pt", { layerShown(){return hasUpgrade("m", 35) || player.pt.unlocked}, upgrades: { 11: { - title: "proton - 01", + title: "even more boost", description: "x8 points", cost: new Decimal(1), }, 12: { - title: "proton - 02", + title: "oom increase", description: "x10 prestige points", cost: new Decimal(5), unlocked() { return (hasUpgrade(this.layer, 11))}, @@ -54,7 +54,7 @@ addLayer("pt", { }, 13: { - title: "proton - 03", + title: "that's a lot more points!", description: "x15 points", cost: new Decimal(20), unlocked() { return (hasUpgrade(this.layer, 12))}, From fb8dedb85e2e018e5e17358bd5266c49167e8c55 Mon Sep 17 00:00:00 2001 From: liamkelly4123-jpg Date: Sun, 22 Feb 2026 15:53:56 +0000 Subject: [PATCH 14/18] update 2.1 --- js/p.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/p.js b/js/p.js index d638b972b4..c2bebe9739 100644 --- a/js/p.js +++ b/js/p.js @@ -6,7 +6,7 @@ addLayer("p", { unlocked: true, points: new Decimal(0), }}, - color: "#02e9fa", + color: "#029ffa", requires: new Decimal(10), // Can be a function that takes requirement increases into account resource: "prestige points", // Name of prestige currency baseResource: "points", // Name of resource prestige is based on From d6a310f84c6b03639d07603f6336edd68dc11776 Mon Sep 17 00:00:00 2001 From: liamkelly4123-jpg Date: Sun, 22 Feb 2026 16:16:11 +0000 Subject: [PATCH 15/18] fix1 --- js/technical/systemComponents.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/js/technical/systemComponents.js b/js/technical/systemComponents.js index d81bf4199c..0509c7da1e 100644 --- a/js/technical/systemComponents.js +++ b/js/technical/systemComponents.js @@ -139,8 +139,8 @@ var systemComponents = {


{{modInfo.discordName}}
- The Modding Tree Discord
- Main Prestige Tree server
+ The Modding Tree Discord
+ Main Prestige Tree server


Time Played: {{ formatTime(player.timePlayed) }}

Hotkeys


From 3347365afea29a8e664493ce6be4350c513dc1aa Mon Sep 17 00:00:00 2001 From: liamkelly4123-jpg Date: Mon, 23 Feb 2026 19:17:54 +0000 Subject: [PATCH 16/18] update 3 --- js/e.js | 70 +++++++++++++++++++ js/m.js | 118 +++++++++++++++++++++++++++++++- js/mod.js | 47 +++++++++++-- js/n.js | 57 ++++++++++++++++ js/p.js | 12 +++- js/pt.js | 196 +++++++++++++++++++++++++++++++++++++++++++++++++++++- 6 files changed, 492 insertions(+), 8 deletions(-) create mode 100644 js/e.js create mode 100644 js/n.js diff --git a/js/e.js b/js/e.js new file mode 100644 index 0000000000..13f5da76b3 --- /dev/null +++ b/js/e.js @@ -0,0 +1,70 @@ +addLayer("e", { + name: "energy", // This is optional, only used in a few places, If absent it just uses the layer id. + symbol: "E", // This appears on the layer's node. Default is the id with the first letter capitalized + branches: ["m"], + position: 1, // Horizontal position within a row. By default it uses the layer id and sorts in alphabetical order + startData() { return { + unlocked: false, + points: new Decimal(0), + best: new Decimal(0), + total: new Decimal(0), + }}, + color: "#faab02", + requires: new Decimal(1e200), // Can be a function that takes requirement increases into account + resource: "energy", // Name of prestige currency + baseResource: "protons", // Name of resource prestige is based on + baseAmount() {return player.pt.points}, // Get the current amount of baseResource + type: "normal", // normal: cost to gain currency depends on amount gained. static: cost depends on how much you already have + exponent: 0.02, // Prestige currency exponent + gainMult() { // Calculate the multiplier for main currency from bonuses + mult = new Decimal(1); + + + + + + + + return mult + }, + gainExp() { // Calculate the exponent on main currency from bonuses + exp = new Decimal(1); + + + return exp; + }, + row: 3, // Row the layer is in on the tree (0 is the first row) + hotkeys: [ + {key: "e", description: "E: Reset for energy", onPress(){if (canReset(this.layer)) doReset(this.layer)}}, + ], + layerShown(){return hasUpgrade("pt", 35) || player.e.unlocked}, + upgrades: { + 11: { + title: "big boosts", + description: "x1,000,000 points and ^1.03 points", + cost: new Decimal(1), + + }, + 12: { + title: "prestige factory", + description: "generate prestige points. also x1e25 matter", + cost: new Decimal(5), + unlocked() { return (hasUpgrade(this.layer, 11))}, + + + + }, + 13: { + title: "upgrade unlock", + description: "unlock 2 new rows of matter upgrades and x1,000 matter", + cost: new Decimal(16), + unlocked() { return (hasUpgrade(this.layer, 12))}, + + + }, + + + + }, + +}) diff --git a/js/m.js b/js/m.js index a54b8e7291..5bd27cc182 100644 --- a/js/m.js +++ b/js/m.js @@ -16,6 +16,8 @@ addLayer("m", { baseAmount() {return player.points}, // Get the current amount of baseResource type: "normal", // normal: cost to gain currency depends on amount gained. static: cost depends on how much you already have exponent: 0.3, // Prestige currency exponent + softcap: new Decimal("1e1000"), + softcapPower: new Decimal(0.25), gainMult() { // Calculate the multiplier for main currency from bonuses mult = new Decimal(1); if (hasUpgrade("m", 12)) mult = mult.times(4); @@ -23,6 +25,14 @@ addLayer("m", { if (hasUpgrade("m", 25)) mult = mult.times(5); if (hasUpgrade("m", 31) && hasUpgrade("p", 23)) mult = mult.times(upgradeEffect("p", 23)); if (hasUpgrade("m", 34)) mult = mult.times(3); + if (hasUpgrade("pt", 23)) mult = mult.times(100000); + if (hasUpgrade("e", 12)) mult = mult.times(1e25); + if (hasUpgrade("e", 13)) mult = mult.times(1000); + if (hasUpgrade("m", 41)) mult = mult.times(upgradeEffect("m", 41)); + + + + @@ -32,7 +42,17 @@ addLayer("m", { }, gainExp() { // Calculate the exponent on main currency from bonuses exp = new Decimal(1); - if (hasUpgrade("m", 15)) exp = exp.times(1.3); + if (hasUpgrade("pt", 15)) exp = exp.add(0.2); + +if (hasUpgrade("m", 15)) exp = exp.times(1.3); +if (hasUpgrade("pt", 32)) exp = exp.times(1.35); +if (hasUpgrade("m", 52)) exp = exp.times(1.3); +if (hasUpgrade("m", 53)) exp = exp.times(0.95); +if (hasUpgrade("m", 54)) exp = exp.times(1.07); + + + + return exp; }, row: 2, // Row the layer is in on the tree (0 is the first row) @@ -158,6 +178,102 @@ addLayer("m", { unlocked() { return (hasUpgrade(this.layer, 34))}, + }, + 41: { + title: "matter generated matter", + description: "matter boosts itself", + cost: new Decimal("1e340"), + unlocked() { return (hasUpgrade("e", 13)) && hasUpgrade("m", 35)}, + effect() { // Calculate bonuses from the upgrade. Can return a single value or an object with multiple values + let ret = player.m.points.add(1).pow(0.25); + if (hasUpgrade("m", 43)) ret = ret.pow(1.25); + if (ret.gte("1e500")) ret = ret.sqrt().times("1e250") + return ret; + }, + effectDisplay() { return format(this.effect())+"x" }, // Add formatting to the effect + + + }, + 42: { + title: "more protons", + description: "x1e30 protons", + cost: new Decimal("1e1025"), + unlocked() { return (hasUpgrade("e", 13)) && hasUpgrade("m", 41)}, + + + + }, + 43: { + title: "more matter", + description: "raise 'matter generated matter' to 1.25", + cost: new Decimal("1e1029"), + unlocked() { return (hasUpgrade("e", 13)) && hasUpgrade("m", 42)}, + + + + }, + 44: { + title: "more points", + description: "^1.025 points", + cost: new Decimal("1e1074"), + unlocked() { return (hasUpgrade("e", 13)) && hasUpgrade("m", 43)}, + + + + }, + 45: { + title: "more prestige points", + description: "^1.1 prestige points", + cost: new Decimal("1e1083"), + unlocked() { return (hasUpgrade("e", 13)) && hasUpgrade("m", 44)}, + + + + }, + 51: { + title: "point increase", + description: "^1.08 points", + cost: new Decimal("1e1100"), + unlocked() { return (hasUpgrade("e", 13)) && hasUpgrade("m", 45)}, + + + + }, + 52: { + title: "super matter", + description: "^1.3 matter", + cost: new Decimal("1e1144"), + unlocked() { return (hasUpgrade("e", 13)) && hasUpgrade("m", 51)}, + + + + }, + 53: { + title: "antimatter?", + description: "^0.95 matter BUT x1e70 points", + cost: new Decimal("1e1327"), + unlocked() { return (hasUpgrade("e", 13)) && hasUpgrade("m", 52)}, + + + + }, + 54: { + title: "hyper matter", + description: "^1.07 matter", + cost: new Decimal("1e1367"), + unlocked() { return (hasUpgrade("e", 13)) && hasUpgrade("m", 53)}, + + + + }, + 55: { + title: "omega matter!", + description: "unlock a row of proton upgrades and ^1.08 protons", + cost: new Decimal("1e1435"), + unlocked() { return (hasUpgrade("e", 13)) && hasUpgrade("m", 54)}, + + + }, diff --git a/js/mod.js b/js/mod.js index 872dc01a0a..f3fb0a7a2e 100644 --- a/js/mod.js +++ b/js/mod.js @@ -2,7 +2,7 @@ let modInfo = { name: "The Incremental Tree", author: "liam", pointsName: "points", - modFiles: ["tree.js", "p.js", "m.js", "pt.js"], + modFiles: ["tree.js", "p.js", "m.js", "pt.js", "e.js", "n.js"], discordName: "", discordLink: "", @@ -12,11 +12,17 @@ let modInfo = { // Set your version in num and name let VERSION = { - num: "2.1", - name: "protons and upgrades", + num: "3", + name: "rows and layers", } let changelog = `

Changelog:


+

v3


+ - Added 24(?) upgrades
+ - Added 1 milestone
+ - Added 2 layers
+ +

v2.1


- Added upgrade names
@@ -70,6 +76,24 @@ function getPointGen() { if (hasUpgrade("pt", 11)) gain = gain.times(8); if (hasUpgrade("pt", 13)) gain = gain.times(15); + if (hasUpgrade("pt", 14)) gain = gain.times(upgradeEffect("pt", 14)); + if (hasUpgrade("pt", 21)) gain = gain.times(upgradeEffect("pt", 21)); + if (hasUpgrade("pt", 22)) gain = gain.times(10000); + if (hasUpgrade("pt", 31)) gain = gain.times(1e15); + if (hasUpgrade("pt", 35)) gain = gain.times(1000); + + if (hasUpgrade("e", 11)) gain = gain.times(1e6); + + if (hasUpgrade("m", 53)) gain = gain.times(1e70); + if (hasUpgrade("pt", 44)) gain = gain.times(1.64e37); + + + + + + + + @@ -79,6 +103,19 @@ function getPointGen() { if (hasUpgrade("m", 22)) gain = gain.pow(1.1); if (hasUpgrade("m", 32)) gain = gain.pow(1.08); + if (hasUpgrade("pt", 25)) gain = gain.pow(1.12); + + if (hasUpgrade("e", 11)) gain = gain.pow(1.03); + + if (hasUpgrade("m", 44)) gain = gain.pow(1.025); + if (hasUpgrade("m", 51)) gain = gain.pow(1.08); + if (hasUpgrade("pt", 43)) gain = gain.pow(1.03); + + if (hasUpgrade("n", 11)) gain = gain.pow(1.01); + + + + @@ -92,14 +129,14 @@ function addedPlayerData() { return { // Display extra things at the top of the page var displayThings = [ - function() {if (true) return "reach 1e25 points to reach the endgame!"}, + function() {if (true) return "endgame: 1e4900 points"}, ] // Determines when the game "ends" function isEndgame() { - return player.points.gte(new Decimal("1e25")) + return player.points.gte(new Decimal("1e4900")) } diff --git a/js/n.js b/js/n.js new file mode 100644 index 0000000000..243d4a5820 --- /dev/null +++ b/js/n.js @@ -0,0 +1,57 @@ +addLayer("n", { + name: "neutron", // This is optional, only used in a few places, If absent it just uses the layer id. + symbol: "N", // This appears on the layer's node. Default is the id with the first letter capitalized + branches: ["m", "pt"], + position: 2, // Horizontal position within a row. By default it uses the layer id and sorts in alphabetical order + startData() { return { + unlocked: false, + points: new Decimal(0), + best: new Decimal(0), + total: new Decimal(0), + }}, + color: "#0206fa", + requires: new Decimal("1e5445"), // Can be a function that takes requirement increases into account + resource: "neutrons", // Name of prestige currency + baseResource: "protons", // Name of resource prestige is based on + baseAmount() {return player.pt.points}, // Get the current amount of baseResource + type: "normal", // normal: cost to gain currency depends on amount gained. static: cost depends on how much you already have + exponent: 0.0008, // Prestige currency exponent + gainMult() { // Calculate the multiplier for main currency from bonuses + mult = new Decimal(1); + + + + + + + + + return mult + }, + gainExp() { // Calculate the exponent on main currency from bonuses + exp = new Decimal(1); + + + + + + return exp; + }, + row: 3, // Row the layer is in on the tree (0 is the first row) + hotkeys: [ + {key: "n", description: "N: Reset for neutrons", onPress(){if (canReset(this.layer)) doReset(this.layer)}}, + ], + layerShown(){return hasMilestone("pt", 1) || player.n.unlocked}, + + upgrades: { + 11: { + title: "small, but effective", + description: "^1.01 points", + cost: new Decimal(1), + + }, + + +}, + +}) diff --git a/js/p.js b/js/p.js index c2bebe9739..1e5dbe7ca4 100644 --- a/js/p.js +++ b/js/p.js @@ -23,7 +23,11 @@ addLayer("p", { if (hasUpgrade("m", 21)) mult = mult.times(2.6); if (hasUpgrade("m", 34)) mult = mult.times(4); - if (hasUpgrade("pt", 12)) mult = mult.times(10); + if (hasUpgrade("pt", 12)) mult = mult.times(10); + if (hasUpgrade("pt", 24)) mult = mult.times(1e12); + if (hasUpgrade("pt", 41)) mult = mult.times(1e80); + + @@ -38,6 +42,8 @@ addLayer("p", { if (hasUpgrade("m", 14)) exp = exp.add(0.1); if (hasUpgrade("m", 24)) exp = exp.times(1.1); if (hasUpgrade("m", 33)) exp = exp.times(1.1); + if (hasUpgrade("m", 45)) exp = exp.times(1.1); + return exp; @@ -47,6 +53,8 @@ addLayer("p", { {key: "p", description: "P: Reset for prestige points", onPress(){if (canReset(this.layer)) doReset(this.layer)}}, ], layerShown(){return true}, + autoUpgrade() {return hasUpgrade("pt", 22)}, + passiveGeneration() {return hasUpgrade("e", 12)}, upgrades: { 11: { title: "you gotta start somewhere", @@ -62,6 +70,8 @@ addLayer("p", { effect() { // Calculate bonuses from the upgrade. Can return a single value or an object with multiple values let ret = player[this.layer].points.add(1).pow(0.45); if (hasUpgrade("m", 12)) ret = ret.pow(1.2); + if (hasUpgrade("pt", 33)) ret = ret.pow(1.5); + if (ret.gte("1e20")) ret = ret.sqrt().times("1e10") return ret; }, diff --git a/js/pt.js b/js/pt.js index 5bfa977e59..4c27d04d9d 100644 --- a/js/pt.js +++ b/js/pt.js @@ -19,6 +19,8 @@ addLayer("pt", { gainMult() { // Calculate the multiplier for main currency from bonuses mult = new Decimal(1); +if (hasUpgrade("m", 42)) mult = mult.times(1e30); +if (hasUpgrade("pt", 43)) mult = mult.times(2); @@ -29,7 +31,13 @@ addLayer("pt", { }, gainExp() { // Calculate the exponent on main currency from bonuses exp = new Decimal(1); - + if (hasUpgrade("pt", 34)) exp = exp.times(1.3); + if (hasUpgrade("m", 55)) exp = exp.times(1.08); + if (hasUpgrade("pt", 42)) exp = exp.times(1.4); + if (hasUpgrade("pt", 45)) exp = exp.times(1.2); + + + return exp; }, @@ -38,6 +46,14 @@ addLayer("pt", { {key: "P", description: "SHIFT + P: Reset for protons", onPress(){if (canReset(this.layer)) doReset(this.layer)}}, ], layerShown(){return hasUpgrade("m", 35) || player.pt.unlocked}, + milestones: { + 1: { + requirementDescription: "1e5445 protons", + effectDescription: "unlock neutrons", + done() { return player.pt.points.gte("1e5445") }, + }, + +}, upgrades: { 11: { title: "even more boost", @@ -60,6 +76,184 @@ addLayer("pt", { unlocked() { return (hasUpgrade(this.layer, 12))}, + }, + 14: { + title: "matter is finally usefull!", + description: "matter boosts points", + cost: new Decimal(50), + unlocked() { return (hasUpgrade(this.layer, 13))}, + effect() { // Calculate bonuses from the upgrade. Can return a single value or an object with multiple values + let ret = player.m.points.add(1).pow(0.35); + if (ret.gte("1e40")) ret = ret.sqrt().times("1e20") + return ret; + }, + effectDisplay() { return format(this.effect())+"x" }, // Add formatting to the effect + + + }, + 15: { + title: "exp increase", + description: "increase matter exp by 0.2", + cost: new Decimal(25e6), + unlocked() { return (hasUpgrade(this.layer, 14))}, + + + + }, + 21: { + title: "protons are usefull, too", + description: "protons boost points", + cost: new Decimal(1e9), + unlocked() { return (hasUpgrade(this.layer, 15))}, + effect() { // Calculate bonuses from the upgrade. Can return a single value or an object with multiple values + let ret = player.pt.points.add(1).pow(0.35); + if (ret.gte("1e30")) ret = ret.sqrt().times("1e15") + return ret; + }, + effectDisplay() { return format(this.effect())+"x" }, // Add formatting to the effect + + + + }, + 22: { + title: "upgrade-bot", + description: "autobuy prestige upgrades and x10,000 points", + cost: new Decimal(1e16), + unlocked() { return (hasUpgrade(this.layer, 21))}, + + + + + }, + 23: { + title: "huge boost", + description: "x100,000 matter", + cost: new Decimal(1e23), + unlocked() { return (hasUpgrade(this.layer, 22))}, + + + + + }, + 24: { + title: "presstige boost", + description: "x1e12 prestige points", + cost: new Decimal(1e27), + unlocked() { return (hasUpgrade(this.layer, 23))}, + + + + + }, + 25: { + title: "op boost", + description: "^1.12 point gain", + cost: new Decimal(1e34), + unlocked() { return (hasUpgrade(this.layer, 24))}, + + + + + }, + 31: { + title: "boosted", + description: "x1e15 points", + cost: new Decimal(1e50), + unlocked() { return (hasUpgrade(this.layer, 25))}, + + + + + }, + 32: { + title: "op exp", + description: "^1.35 matter", + cost: new Decimal(1e82), + unlocked() { return (hasUpgrade(this.layer, 31))}, + + + + + }, + 33: { + title: "better prestige", + description: "'synergized' is raised to 1.5", + cost: new Decimal(1e96), + unlocked() { return (hasUpgrade(this.layer, 32))}, + + + + + }, + 34: { + title: "proton exp", + description: "^1.3 protons", + cost: new Decimal(1e133), + unlocked() { return (hasUpgrade(this.layer, 33))}, + + + + + }, + 35: { + title: "powered up", + description: "unlock energy and x1,000 points", + cost: new Decimal(1e191), + unlocked() { return (hasUpgrade(this.layer, 34))}, + + + + + }, + 41: { + title: "proton prestige", + description: "x1e80 prestige points", + cost: new Decimal("1e1259"), + unlocked() { return (hasUpgrade("m", 55)) && hasUpgrade("pt", 35)}, + + + + + }, + 42: { + title: "protonic", + description: "^1.4 protons", + cost: new Decimal("1e1432"), + unlocked() { return (hasUpgrade("m", 55)) && hasUpgrade("pt", 41)}, + + + + + }, + 43: { + title: "generic proton", + description: "x2 protons and ^1.03 points", + cost: new Decimal("1e2670"), + unlocked() { return (hasUpgrade("m", 55)) && hasUpgrade("pt", 42)}, + + + + + }, + 44: { + title: "random boost", + description: "x1.64e37 points", + cost: new Decimal("1e3062"), + unlocked() { return (hasUpgrade("m", 55)) && hasUpgrade("pt", 43)}, + + + + + }, + 45: { + title: "protonic 2", + description: "^1.2 protons", + cost: new Decimal("1e3342"), + unlocked() { return (hasUpgrade("m", 55)) && hasUpgrade("pt", 44)}, + + + + }, }, From 0ae5476527023f4589ef8b62ecac6dc38b2b4095 Mon Sep 17 00:00:00 2001 From: liamkelly4123-jpg Date: Tue, 3 Mar 2026 01:34:51 +0000 Subject: [PATCH 17/18] V3.0.1 --- js/mod.js | 3 ++- js/n.js | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/js/mod.js b/js/mod.js index f3fb0a7a2e..e86f2001bc 100644 --- a/js/mod.js +++ b/js/mod.js @@ -12,7 +12,7 @@ let modInfo = { // Set your version in num and name let VERSION = { - num: "3", + num: "3.0.1", name: "rows and layers", } @@ -21,6 +21,7 @@ let changelog = `

Changelog:


- Added 24(?) upgrades
- Added 1 milestone
- Added 2 layers
+

v2.1


diff --git a/js/n.js b/js/n.js index 243d4a5820..60735f7be8 100644 --- a/js/n.js +++ b/js/n.js @@ -9,7 +9,7 @@ addLayer("n", { best: new Decimal(0), total: new Decimal(0), }}, - color: "#0206fa", + color: "#0845ec", requires: new Decimal("1e5445"), // Can be a function that takes requirement increases into account resource: "neutrons", // Name of prestige currency baseResource: "protons", // Name of resource prestige is based on From e721385a02400ed100a793e0a1e39d24cdd69e14 Mon Sep 17 00:00:00 2001 From: liamkelly4123-jpg Date: Wed, 4 Mar 2026 21:56:21 +0000 Subject: [PATCH 18/18] version 4.0.0 --- js/e.js | 9 +++- js/m.js | 16 ++++++- js/mod.js | 34 +++++++++++--- js/n.js | 122 ++++++++++++++++++++++++++++++++++++++++++++++-- js/p.js | 54 ++++++++++++++++++++-- js/pt.js | 49 ++++++++++++++++++++ js/q.js | 98 +++++++++++++++++++++++++++++++++++++++ js/r.js | 135 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 8 files changed, 500 insertions(+), 17 deletions(-) create mode 100644 js/q.js create mode 100644 js/r.js diff --git a/js/e.js b/js/e.js index 13f5da76b3..dfa9132174 100644 --- a/js/e.js +++ b/js/e.js @@ -62,7 +62,14 @@ addLayer("e", { }, - + 14: { + title: "been a very long time", + description: "x1e75,000 points", + cost: new Decimal("1e46000"), + unlocked() { return (hasUpgrade("q", 15))}, + + + }, }, diff --git a/js/m.js b/js/m.js index 5bd27cc182..6e7a21fcb3 100644 --- a/js/m.js +++ b/js/m.js @@ -29,6 +29,9 @@ addLayer("m", { if (hasUpgrade("e", 12)) mult = mult.times(1e25); if (hasUpgrade("e", 13)) mult = mult.times(1000); if (hasUpgrade("m", 41)) mult = mult.times(upgradeEffect("m", 41)); + if (hasUpgrade("n", 14)) mult = mult.times(1e100); + if (hasUpgrade("n", 21)) mult = mult.times(1e300); + if (hasUpgrade("r", 11)) mult = mult.times(1e20); @@ -42,14 +45,21 @@ addLayer("m", { }, gainExp() { // Calculate the exponent on main currency from bonuses exp = new Decimal(1); - if (hasUpgrade("pt", 15)) exp = exp.add(0.2); + if (hasUpgrade("pt", 15)) exp = exp.add(0.2); + if (hasUpgrade("pt", 53)) exp = exp.add(0.02); if (hasUpgrade("m", 15)) exp = exp.times(1.3); if (hasUpgrade("pt", 32)) exp = exp.times(1.35); if (hasUpgrade("m", 52)) exp = exp.times(1.3); if (hasUpgrade("m", 53)) exp = exp.times(0.95); if (hasUpgrade("m", 54)) exp = exp.times(1.07); +if (hasUpgrade("p", 32)) exp = exp.times(1.04); +if (hasUpgrade("pt", 51)) exp = exp.times(1.07); +if (hasUpgrade("q", 13)) exp = exp.times(upgradeEffect('q', 13)); +if (inChallenge("n", 21)) exp = exp.times(0.15); +if (hasChallenge("n", 21)) exp = exp.times(1.03); +if (hasChallenge("r", 12)) exp = exp.times(1.04); @@ -60,6 +70,10 @@ if (hasUpgrade("m", 54)) exp = exp.times(1.07); {key: "m", description: "M: Reset for matter", onPress(){if (canReset(this.layer)) doReset(this.layer)}}, ], layerShown(){return hasUpgrade("p", 25) || player.m.unlocked}, + passiveGeneration() {return hasUpgrade("n", 12) || hasUpgrade('r', 13) ? 1:0}, + autoUpgrade() {return hasChallenge("n", 21) || hasUpgrade('r', 12)}, + deactivated() {return (inChallenge('r', 12))}, + upgrades: { 11: { title: "this should help get back here", diff --git a/js/mod.js b/js/mod.js index e86f2001bc..f6d9e55688 100644 --- a/js/mod.js +++ b/js/mod.js @@ -2,7 +2,7 @@ let modInfo = { name: "The Incremental Tree", author: "liam", pointsName: "points", - modFiles: ["tree.js", "p.js", "m.js", "pt.js", "e.js", "n.js"], + modFiles: ["tree.js", "p.js", "m.js", "pt.js", "e.js", "n.js", 'r.js', 'q.js'], discordName: "", discordLink: "", @@ -12,11 +12,16 @@ let modInfo = { // Set your version in num and name let VERSION = { - num: "3.0.1", - name: "rows and layers", + num: "4.0.0", + name: "science", } let changelog = `

Changelog:


+

v4.0.0


+ - Added about 30 upgrades
+ - Added 10 challenges
+ - Added 2 new layers
+

v3


- Added 24(?) upgrades
- Added 1 milestone
@@ -88,9 +93,16 @@ function getPointGen() { if (hasUpgrade("m", 53)) gain = gain.times(1e70); if (hasUpgrade("pt", 44)) gain = gain.times(1.64e37); + if (hasUpgrade("n", 12)) gain = gain.times(1e75); + if (hasUpgrade("n", 13)) gain = gain.times(1e40); + if (hasUpgrade("n", 14)) gain = gain.times(1e100); + if (hasUpgrade("pt", 52)) gain = gain.times("1e2500"); + if (hasUpgrade("r", 11)) gain = gain.times("1e100"); + if (hasUpgrade("r", 13)) gain = gain.times("1e100"); + if (hasUpgrade("r", 22)) gain = gain.times("1e50"); - + if (hasUpgrade("e", 14)) gain = gain.times("1e75000"); @@ -113,13 +125,23 @@ function getPointGen() { if (hasUpgrade("pt", 43)) gain = gain.pow(1.03); if (hasUpgrade("n", 11)) gain = gain.pow(1.01); +if (hasChallenge('n', 11)) gain = gain.pow(1.04) +if (hasChallenge('n', 31)) gain = gain.pow(1.05) + if (hasUpgrade("r", 14)) gain = gain.pow(1.04); + if (hasUpgrade("n", 23)) gain = gain.pow(1.03); +if (hasChallenge('r', 22)) gain = gain.pow(1.03) +if (hasChallenge('n', 32)) gain = gain.pow(1.03) + if (hasUpgrade("q", 11)) gain = gain.pow(upgradeEffect('q', 11)); +if (inChallenge('n', 11)) gain = gain.pow(0.12) +if (inChallenge('n', 32)) gain = gain.pow(0.5) +if (inChallenge('r', 22)) gain = gain.sub(gain).add(0.5) return gain } @@ -130,14 +152,14 @@ function addedPlayerData() { return { // Display extra things at the top of the page var displayThings = [ - function() {if (true) return "endgame: 1e4900 points"}, + function() {if (true) return "endgame: e6,657,830 points"}, ] // Determines when the game "ends" function isEndgame() { - return player.points.gte(new Decimal("1e4900")) + return player.points.gte(new Decimal("e6,657,830")) } diff --git a/js/n.js b/js/n.js index 60735f7be8..6619d06c72 100644 --- a/js/n.js +++ b/js/n.js @@ -19,7 +19,8 @@ addLayer("n", { gainMult() { // Calculate the multiplier for main currency from bonuses mult = new Decimal(1); - +if (hasUpgrade('p', 35)) mult = mult.times(10000) +if (hasUpgrade('pt', 55)) mult = mult.times(10e6) @@ -30,7 +31,7 @@ addLayer("n", { }, gainExp() { // Calculate the exponent on main currency from bonuses exp = new Decimal(1); - + if (hasUpgrade('r', 15)) exp = exp.times(1.2) @@ -42,7 +43,13 @@ addLayer("n", { {key: "n", description: "N: Reset for neutrons", onPress(){if (canReset(this.layer)) doReset(this.layer)}}, ], layerShown(){return hasMilestone("pt", 1) || player.n.unlocked}, - + passiveGeneration() {return hasUpgrade("r", 15) ? 1:0}, +doReset(resettingLayer) { + let keep = []; + + if (hasUpgrade("q", 15)) keep.push("upgrades", "challenges") + if (layers[resettingLayer].row > this.row) layerDataReset("n", keep) + }, upgrades: { 11: { title: "small, but effective", @@ -50,8 +57,113 @@ addLayer("n", { cost: new Decimal(1), }, - - + 12: { + title: "QOL upgrade", + description: "generate matter and protons and x1e75 points", + cost: new Decimal(2), + unlocked() {return(hasUpgrade('n', 11))} + }, + 13: { + title: "challenged", + description: "Unlock a challenge and X1e40 points", + cost: new Decimal(36), + unlocked() {return(hasUpgrade('n', 11))} + + }, + 14: { + title: "multi-boost", + description: "X1e100 points and matter", + cost: new Decimal(12000), + unlocked() {return(hasChallenge('n', 11))} + + }, + 15: { + title: "prestigefull", + description: "unlock a second challenge and x1e140 prestige points", + cost: new Decimal(800000), + unlocked() {return(hasChallenge('n', 11))} + + }, + 21: { + title: "matterfull", + description: "unlock a third challenge and x1e300 matter", + cost: new Decimal(2e32), + unlocked() {return(hasChallenge('n', 12))} + + }, + 22: { + title: "protonfull", + description: "unlock a forth challenge and x1e450 protons", + cost: new Decimal(2e64), + unlocked() {return(hasChallenge('n', 21))} + + }, + 23: { + title: "pointfully", + description: "^1.03 points", + cost: new Decimal(1e143), + unlocked() {return(hasUpgrade('r', 15))} + + }, + 24: { + title: "powerfully", + description: "^1.06 protons", + cost: new Decimal(4e168), + unlocked() {return(hasUpgrade('r', 15))} + + }, }, +challenges: { + 11: { + name: "pointless", + challengeDescription: "gain ^0.12 points", + goalDescription: "get 1e25 points", + rewardDescription: "gain ^1.04 points and unlock 2 new N upgrades", + canComplete: function() {return player.points.gte("1e25")}, + unlocked() {return (hasUpgrade('n', 13))} + }, + 12: { + name: "prestigeless", + challengeDescription: "gain ^0.2 prestige points", + goalDescription: "get 1e260 prestige points", + rewardDescription: "gain ^1.05 prestige points and unlock a new row of prestige upgrades", + canComplete: function() {return player.p.points.gte("1e260")}, + unlocked() {return (hasUpgrade('n', 15))} + }, + 21: { + name: "matterless", + challengeDescription: "gain ^0.15 matter", + goalDescription: "get 3e275 matter", + rewardDescription: "gain ^1.03 matter and autobuy M upgrades and unlock new P upgrades", + canComplete: function() {return player.m.points.gte("3e275")}, + unlocked() {return (hasUpgrade('n', 21))} + }, + 22: { + name: "protonless", + challengeDescription: "gain ^0.25 protons", + goalDescription: "get 1e699 protons", + rewardDescription: "gain ^1.06 protons and unlock the fifth and final 'less' challenge", + canComplete: function() {return player.pt.points.gte("1e699")}, + unlocked() {return (hasUpgrade('n', 22))} + }, + 31: { + name: "layerless", + challengeDescription: "all 4 'less' challenges are active at once", + goalDescription: "get 2e64 points", + rewardDescription: "gain ^1.05 points and unlock research points", + canComplete: function() {return player.points.gte("2e64")}, + countsAs: [11, 12, 21, 22], + unlocked() {return (hasChallenge('n', 22))}, + }, + 32: { + name: "layerless^2", + challengeDescription: "all 4 'less' challenges are active at once, and ^0.5 points", + goalDescription: "get 1e67 points... no pun intended", + rewardDescription: "^1.03 points and unlock quarks", + canComplete: function() {return player.points.gte("1e67")}, + countsAs: [11, 12, 21, 22], + unlocked() {return (hasUpgrade('r', 22))}, + }, +} }) diff --git a/js/p.js b/js/p.js index 1e5dbe7ca4..5a29a8455b 100644 --- a/js/p.js +++ b/js/p.js @@ -27,6 +27,9 @@ addLayer("p", { if (hasUpgrade("pt", 24)) mult = mult.times(1e12); if (hasUpgrade("pt", 41)) mult = mult.times(1e80); + if (hasUpgrade("n", 15)) mult = mult.times(1e140); + if (hasUpgrade("p", 31)) mult = mult.times("1e500"); + if (hasUpgrade("p", 34)) mult = mult.times("1e1000"); @@ -40,21 +43,27 @@ addLayer("p", { gainExp() { // Calculate the exponent on main currency from bonuses exp = new Decimal(1); if (hasUpgrade("m", 14)) exp = exp.add(0.1); + if (hasUpgrade("pt", 53)) exp = exp.add(0.02); + if (hasUpgrade("m", 24)) exp = exp.times(1.1); if (hasUpgrade("m", 33)) exp = exp.times(1.1); if (hasUpgrade("m", 45)) exp = exp.times(1.1); + if (hasUpgrade("q", 12)) exp = exp.times(upgradeEffect('q', 12)); - +if (inChallenge('n', 12)) exp = exp.times(0.2) +if (hasChallenge('n', 12)) exp = exp.times(1.05) +if (hasChallenge('r', 11)) exp = exp.times(1.08) return exp; }, row: 1, // Row the layer is in on the tree (0 is the first row) hotkeys: [ - {key: "p", description: "P: Reset for prestige points", onPress(){if (canReset(this.layer)) doReset(this.layer)}}, + {key: "r", description: "R: Reset for research points", onPress(){if (canReset(this.layer)) doReset(this.layer)}}, ], layerShown(){return true}, - autoUpgrade() {return hasUpgrade("pt", 22)}, - passiveGeneration() {return hasUpgrade("e", 12)}, + autoUpgrade() {return hasUpgrade("pt", 22) || hasUpgrade('r', 11)}, + passiveGeneration() {return hasUpgrade("r", 11) ? 1:0}, + deactivated() {return (inChallenge('r', 11))}, upgrades: { 11: { title: "you gotta start somewhere", @@ -73,6 +82,8 @@ addLayer("p", { if (hasUpgrade("pt", 33)) ret = ret.pow(1.5); if (ret.gte("1e20")) ret = ret.sqrt().times("1e10") + if (ret.gte("1e10000")) ret = ret.sqrt().times("1e5000") + return ret; }, effectDisplay() { return format(this.effect())+"x" }, // Add formatting to the effect @@ -148,6 +159,41 @@ addLayer("p", { + }, + 31: { + title: "been a while", + description: "x1e500 prestige points", + cost: new Decimal("1e11900"), + unlocked() {return(hasChallenge('n', 12))} + + }, + 32: { + title: "mattery", + description: "^1.04 matter", + cost: new Decimal("1e17400"), + unlocked() {return(hasChallenge('n', 12))} + + }, + 33: { + title: "protonic 3", + description: "^1.07 protons", + cost: new Decimal("1e18070"), + unlocked() {return(hasChallenge('n', 12))} + + }, + 34: { + title: "that's alot!", + description: "x1e1000 prestige points", + cost: new Decimal("1e24770"), + unlocked() {return(hasChallenge('n', 12))} + + }, + 35: { + title: "neutronic", + description: "x10,000 neutrons", + cost: new Decimal("1e27568"), + unlocked() {return(hasChallenge('n', 12))} + }, }, diff --git a/js/pt.js b/js/pt.js index 4c27d04d9d..c97e16a0f8 100644 --- a/js/pt.js +++ b/js/pt.js @@ -21,6 +21,9 @@ addLayer("pt", { if (hasUpgrade("m", 42)) mult = mult.times(1e30); if (hasUpgrade("pt", 43)) mult = mult.times(2); +if (hasUpgrade("n", 22)) mult = mult.times("1e450"); +if (hasUpgrade("r", 12)) mult = mult.times("1e400"); +if (hasUpgrade("r", 21)) mult = mult.times("777777"); @@ -35,9 +38,16 @@ if (hasUpgrade("pt", 43)) mult = mult.times(2); if (hasUpgrade("m", 55)) exp = exp.times(1.08); if (hasUpgrade("pt", 42)) exp = exp.times(1.4); if (hasUpgrade("pt", 45)) exp = exp.times(1.2); + if (hasUpgrade("p", 33)) exp = exp.times(1.07); + if (hasUpgrade("pt", 54)) exp = exp.pow(1.08); +if (hasUpgrade('n', 24)) exp = exp.times(1.06) + if (hasUpgrade("q", 14)) exp = exp.times(upgradeEffect('q', 14)); +if (inChallenge('n', 22)) exp = exp.times(0.25) +if (hasChallenge('n', 22)) exp = exp.times(1.06) +if (hasChallenge('r', 21)) exp = exp.times(1.025) return exp; }, @@ -46,6 +56,10 @@ if (hasUpgrade("pt", 43)) mult = mult.times(2); {key: "P", description: "SHIFT + P: Reset for protons", onPress(){if (canReset(this.layer)) doReset(this.layer)}}, ], layerShown(){return hasUpgrade("m", 35) || player.pt.unlocked}, + passiveGeneration() {return hasUpgrade("n", 12) || hasUpgrade('r', 11) ? 1:0}, + autoUpgrade() {return hasUpgrade('r', 12)}, + deactivated() {return (inChallenge('r', 21))}, + milestones: { 1: { requirementDescription: "1e5445 protons", @@ -255,6 +269,41 @@ if (hasUpgrade("pt", 43)) mult = mult.times(2); }, + 51: { + title: "matteric", + description: "^1.07 matter", + cost: new Decimal("1e41555"), + unlocked() {return(hasChallenge('n', 21))} + + }, + 52: { + title: "mega boost", + description: "x1e2500 points", + cost: new Decimal("1e42414"), + unlocked() {return(hasChallenge('n', 21))} + + }, + 53: { + title: "exp addition", + description: "+^0.02 prestige points and matter", + cost: new Decimal("1e59475"), + unlocked() {return(hasChallenge('n', 21))} + + }, + 54: { + title: "exp exp?", + description: "^1.08 proton exp", + cost: new Decimal("1e60785"), + unlocked() {return(hasChallenge('n', 21))} + + }, + 55: { + title: "neutronic 2", + description: "x10,000,000 neutrons", + cost: new Decimal("1e72226"), + unlocked() {return(hasChallenge('n', 21))} + + }, }, diff --git a/js/q.js b/js/q.js new file mode 100644 index 0000000000..36924ebfb7 --- /dev/null +++ b/js/q.js @@ -0,0 +1,98 @@ +addLayer("q", { + name: "quarks", // This is optional, only used in a few places, If absent it just uses the layer id. + symbol: "Q", // This appears on the layer's node. Default is the id with the first letter capitalized + branches: ["e", 'n'], + position: 2, // Horizontal position within a row. By default it uses the layer id and sorts in alphabetical order + startData() { return { + unlocked: false, + points: new Decimal(0), + best: new Decimal(0), + total: new Decimal(0), + }}, + color: "#b41a1a", + requires: new Decimal("1e652930"), // Can be a function that takes requirement increases into account + resource: "quarks", // Name of prestige currency + baseResource: "points", // Name of resource prestige is based on + baseAmount() {return player.points}, // Get the current amount of baseResource + type: "normal", // normal: cost to gain currency depends on amount gained. static: cost depends on how much you already have + exponent: 0.00003, // Prestige currency exponent + + + gainMult() { // Calculate the multiplier for main currency from bonuses + mult = new Decimal(1); + + + + + + + + + + + return mult + }, + gainExp() { // Calculate the exponent on main currency from bonuses + exp = new Decimal(1); + + + + + return exp; + }, + row: 4, // Row the layer is in on the tree (0 is the first row) + hotkeys: [ + {key: "q", description: "Q: Reset for quarks", onPress(){if (canReset(this.layer)) doReset(this.layer)}}, + ], + layerShown(){return hasUpgrade("p", 25) || player.q.unlocked}, + + upgrades: { + 11: { + title: "bottom quark", + description: "^1.002 points per Q upgrade bought", + cost: new Decimal(1), + effect() { // Calculate bonuses from the upgrade. Can return a single value or an object with multiple values + let ret = new Decimal.pow(1.002, player.q.upgrades.length); + return ret; + }, + effectDisplay() { return "^" + format(this.effect())+"" }, // Add formatting to the effect + }, + 12: { + title: "top quark", + description: "^1.0015 prestige points per Q upgrade bought", + cost: new Decimal(58), + effect() { // Calculate bonuses from the upgrade. Can return a single value or an object with multiple values + let ret = new Decimal.pow(1.0015, player.q.upgrades.length); + return ret; + }, + effectDisplay() { return "^" + format(this.effect())+"" }, // Add formatting to the effect + }, + 13: { + title: "strange quark", + description: "^1.0012 matter per Q upgrade bought", + cost: new Decimal(14500), + effect() { // Calculate bonuses from the upgrade. Can return a single value or an object with multiple values + let ret = new Decimal.pow(1.0012, player.q.upgrades.length); + return ret; + }, + effectDisplay() { return "^" + format(this.effect())+"" }, // Add formatting to the effect + }, + 14: { + title: "weird quark", + description: "^1.001 protons per Q upgrade bought", + cost: new Decimal(33.5e6), + effect() { // Calculate bonuses from the upgrade. Can return a single value or an object with multiple values + let ret = new Decimal.pow(1.001, player.q.upgrades.length); + return ret; + }, + effectDisplay() { return "^" + format(this.effect())+"" }, // Add formatting to the effect + }, + 15: { + title: "super-charged quark", + description: "keep N upgrades and challenges on any reset and unlock a new E upgrade", + cost: new Decimal(4.5e15), + + }, +}, + +}) diff --git a/js/r.js b/js/r.js new file mode 100644 index 0000000000..1c97953e59 --- /dev/null +++ b/js/r.js @@ -0,0 +1,135 @@ +addLayer("r", { + name: "research", // This is optional, only used in a few places, If absent it just uses the layer id. + symbol: "R", // This appears on the layer's node. Default is the id with the first letter capitalized + branches: ["p"], + position: 1, // Horizontal position within a row. By default it uses the layer id and sorts in alphabetical order + startData() { return { + unlocked: false, + points: new Decimal(0), + best: new Decimal(0), + total: new Decimal(0), + }}, + color: "#2bfa02", + requires: new Decimal("1e74000"), // Can be a function that takes requirement increases into account + resource: "research points", // Name of prestige currency + baseResource: "points", // Name of resource prestige is based on + baseAmount() {return player.points}, // Get the current amount of baseResource + type: "normal", // normal: cost to gain currency depends on amount gained. static: cost depends on how much you already have + exponent: 0.0005, // Prestige currency exponent + softcap: new Decimal("100"), + softcapPower: new Decimal(0.05), + + gainMult() { // Calculate the multiplier for main currency from bonuses + mult = new Decimal(1); + + + + + + + + + + + return mult + }, + gainExp() { // Calculate the exponent on main currency from bonuses + exp = new Decimal(1); + + + + + return exp; + }, + row: 4, // Row the layer is in on the tree (0 is the first row) + hotkeys: [ + {key: "m", description: "M: Reset for matter", onPress(){if (canReset(this.layer)) doReset(this.layer)}}, + ], + layerShown(){return hasUpgrade("p", 25) || player.m.unlocked}, + + upgrades: { + 11: { + title: "row 4!", + description: "x1e100 points and x1e20 matter. generate prestige points and protons and autobuy P upgrades", + cost: new Decimal(1), + + }, + 12: { + title: "getting faster", + description: "autobuy M and PT upgrades and x1e400 protons", + cost: new Decimal(2), + unlocked() {return hasUpgrade('r', 11)} + + }, + 13: { + title: "automating", + description: "generate matter and x1e100 points", + cost: new Decimal(18), + unlocked() {return hasUpgrade('r', 12)} + + }, + 14: { + title: "simple boost", + description: "^1.04 points", + cost: new Decimal(47), + unlocked() {return hasUpgrade('r', 13)} + + }, + 15: { + title: "neutronic 3", + description: "generate neutrons, ^1.2 neutrons, and unlock 2 new N upgrades", + cost: new Decimal(263), + unlocked() {return hasUpgrade('r', 14)} + + }, + 21: { + title: "science", + description: "unlock the first research challenge and x777,777 protons", + cost: new Decimal(3445), + unlocked() {return hasUpgrade('r', 15)} + + }, + 22: { + title: "labatory", + description: "unlock the real last N challenge and x1e50 points", + cost: new Decimal(90e6), + unlocked() {return hasChallenge('r', 22)} + + }, +}, +challenges: { + 11: { + name: "useless prestige", + challengeDescription: "the prestige layer is deactivated", + goalDescription: "get 1e1086 points", + rewardDescription: "^1.08 prestige points and unlock the next challenge", + canComplete: function() {return player.points.gte("1e1086")}, + unlocked() {return (hasUpgrade('r', 21))} + }, + 12: { + name: "useless matter", + challengeDescription: "the matter layer is deactivated", + goalDescription: "get 3e860 points", + rewardDescription: "^1.04 matter and unlock the next challenge", + canComplete: function() {return player.points.gte("3e860")}, + unlocked() {return (hasChallenge('r', 11))} + }, + 21: { + name: "useless protons", + challengeDescription: "the proton layer is deactivated", + goalDescription: "get 2e379 points", + rewardDescription: "^1.025 protons and unlock the next challenge", + canComplete: function() {return player.points.gte("2e379")}, + unlocked() {return (hasChallenge('r', 12))} + }, + 22: { + name: "useless points", + challengeDescription: "point gain is always 0.5", + goalDescription: "get 50 prestige points", + rewardDescription: "^1.03 points and unlock the next upgrade", + canComplete: function() {return player.p.points.gte("50")}, + unlocked() {return (hasChallenge('r', 21))} + }, +}, + +})