diff --git a/css/style.css b/css/style.css index a7c31c6..ab4c40f 100644 --- a/css/style.css +++ b/css/style.css @@ -28,6 +28,55 @@ html, body { height: 100%; } +::-webkit-scrollbar { + width: 15px; +} + +::-webkit-scrollbar-track { + background: black; + border: 2px solid #7a7a7a; +} + +::-webkit-scrollbar-thumb { + background: linear-gradient(0deg, #343434 0%, #3B3B3B 50%, #424242 100%); + border: 2px solid #7a7a7a; + height: 50px; +} +::-webkit-scrollbar-thumb:hover { + background: linear-gradient(0deg, #3B3B3B 0%, #424242 50%, #545454 100%); + border: 2px solid #7a7a7a; + height: 50px; +} + +::-webkit-scrollbar-button:single-button { + background-color: #3B3B3B; + border: 2px solid #7a7a7a; + + display: block; + background-size: 9px; + background-repeat: no-repeat; +} +::-webkit-scrollbar-button:single-button:hover { + background-color: #424242; + border: 2px solid #7a7a7a; + + display: block; + background-size: 9px; + background-repeat: no-repeat; +} +::-webkit-scrollbar-button:single-button:vertical:decrement { + height: 16px; + width: 16px; + background-position: center 4px; + background-image: url("data:image/svg+xml;utf8,"); +} +::-webkit-scrollbar-button:single-button:vertical:increment { + height: 16px; + width: 16px; + background-position: center 4px; + background-image: url("data:image/svg+xml;utf8,"); +} + td { padding: 0 } @@ -751,59 +800,59 @@ button > * { font-size: 24px; text-shadow: 0px 0px 5px #000000; } - + .Title-Text-M { font-size: 28px; text-shadow: 0px 0px 0px #000000; } - + .Title-Text-L { font-size: 32px; text-shadow: 0px 0px 0px #000000; } - + /*Buyable or clickable texts*/ .Body-Text-4XS { font-size: 10px; } - + .Body-Text-3XS { font-size: 12px; } - + .Body-Text-XXS { font-size: 14px; } - + .Body-Text-XS { font-size: 16px; } - + .Body-Text-S { font-size: 18px; text-shadow: 0px 0px 0px #000000; } - + .Body-Text-M { font-size: 20px; text-shadow: 0px 0px 0px #000000; } - + .Body-Text-L { font-size: 22px; text-shadow: 0px 0px 0px #000000; } - + .Body-Text-XL { font-size: 24px; text-shadow: 0px 0px 10px #000000; } - + .Body-Text-XXL { font-size: 26px; text-shadow: 0px 0px 10px #000000; } - + .st-dialog { position: fixed; top: 50%; @@ -819,7 +868,7 @@ button > * { display: none; transition: opacity 2s ease; } - + .st-dialog.appear { opacity: 1; } @@ -835,7 +884,7 @@ button > * { align-items: center; justify-content: center; } - + .modal-content { background: #ccc; padding: 20px; @@ -843,7 +892,7 @@ button > * { text-align: center; color: #000; /* Set text color to black */ } - + .big-title-text { font-size: 100px; } @@ -869,6 +918,21 @@ button > * { z-index: 1; /* Spawn area stays below other elements */ } +/* Spawn Area when new layout is active */ +.menu-spawn-area { + width: calc(80vw - 266px); /* Set width relative to viewport width */ + height: 50vh; /* Set height relative to viewport height */ + opacity: 90%; + position: absolute; + bottom: 10vh; /* Distance from the bottom of the viewport */ + left: calc(50% + 133px); /* Center horizontally */ + transform: translateX(-50%); /* Ensure it's centered */ + border: 2px solid black; + box-sizing: border-box; + overflow: hidden; /* Ensure content stays within bounds */ + z-index: 1; /* Spawn area stays below other elements */ +} + /* Specific styles for each spawn area */ #spawn-area { background-color: #074317; @@ -930,10 +994,10 @@ button > * { pointer-events: none; /* This ensures the mouse events pass through the wisps */ /* You can customize further styles like box-shadow, animation, etc. */ } - + /* Styling for the large green circle */ -#mainCircle { +.mainCircle { width: 80px; height: 80px; background-color: green; @@ -946,13 +1010,27 @@ button > * { border: 2px solid black; /* Add a black border */ } +/* Styling for the large green circle when Sidebar Layout is enabled.*/ +.menuMainCircle { + width: 80px; + height: 80px; + background-color: green; + border-radius: 50%; + position: absolute; + top: 50%; + left: calc(50% + 133px); + transform: translate(-50%, -50%); + z-index: 10; /* Ensure the circle appears above the spawn area */ + border: 2px solid black; /* Add a black border */ +} + /* Styling for the smaller circles (the projectiles) */ .smallCircle { width: 20px; height: 20px; background-color: green; border-radius: 50%; - + position: absolute; animation: moveInLine 2s linear infinite; } @@ -965,4 +1043,4 @@ button > * { 100% { transform: translate(100vw, 100vh); /* Move outside the viewport */ } -} \ No newline at end of file +} diff --git a/css/system-style.css b/css/system-style.css index 5943ae0..a4197e2 100644 --- a/css/system-style.css +++ b/css/system-style.css @@ -9,6 +9,213 @@ text-size-adjust: none; } +.titleHeader { + position: absolute; + width: 272px; + height: 60px; + display: flex; + justify-content: center; + align-items: center; + color: rgba(255, 255, 255, 0.75); + font-size:20px; + z-index:10000; + background: linear-gradient(45deg, #8a00a9, #0061ff); + border: 2px solid #7a7a7a; +} +.layerMenu { + position: absolute; + z-index:1000; + width: 200px; + top: 62px; + justify-content: auto; + user-select: none; + height:calc(100% - 64px); + left:60px; + background: #0f0f0f; + display: block; + overflow-y: scroll; + overflow-x: hidden; + flex-direction: column; + border-bottom: 2px solid #7a7a7a; +} +.menuButton { + width: 175px; + height: 50px; + justify-content: auto; + margin-bottom: 10px; + color: rgba(0, 0, 0, 0.9); + font-size:16px; + z-index:10000; + cursor: pointer; + pointer-events: auto; + background: #a3a3a3; + border: var(--hqProperty1); + border-radius: 15px; + border-color: rgba(0, 0, 0, 0.125); + transition: all 0s; +} +.menuButton:hover { + box-shadow: var(--hqProperty2a), 0 0 20px var(--points); +} +.contentMenu { + position: absolute; + z-index:1001; + width: 77px; + top: 62px; + justify-content: auto; + user-select: none; + height:calc(100% - 64px); + left:50px; + background: #0f0f0f; + display: flex; + flex-grow:1; + overflow-y: scroll; + overflow-x: hidden; + flex-direction: column; + border-bottom: 2px solid #7a7a7a; +} +.uniMenu { + z-index:1001; + width: 60px; + justify-content: auto; + flex: 1 0 auto; + height:auto; + left:0px; + background: #0f0f0f; + display: block; + overflow-y: hidden; + overflow-x: hidden; + flex-direction: column; + border-left: 2px solid #7a7a7a; + border-right: 4px solid #7a7a7a; + border-top: 2px solid #7a7a7a; + border-bottom: 2px solid #7a7a7a; +} +.uniButton { + width: 50px; + height: 50px; + margin-bottom: 10px; + color: rgba(0, 0, 0, 0.9); + font-size:20px; + z-index:10000; + cursor: pointer; + pointer-events: auto; + background: #a3a3a3; + border: var(--hqProperty1); + border-radius: 15px; + border-color: rgba(0, 0, 0, 0.125); + transition: all 0s; +} +.uniButton:hover { + box-shadow: var(--hqProperty2a), 0 0 20px var(--points); +} +.metaMenu { + z-index:1001; + width: 60px; + height: auto; + justify-content: auto; + background: #0f0f0f; + display: block; + flex: none; + overflow-y: hidden; + overflow-x: hidden; + flex-direction: column; + border-left: 2px solid #7a7a7a; + border-right: 4px solid #7a7a7a; +} +.miscMenu { + z-index:1001; + width: 60px; + height: 60px; + background: #0f0f0f; + display: block; + flex: none; + overflow-y: hidden; + overflow-x: hidden; + border-left: 2px solid #7a7a7a; + border-right: 4px solid #7a7a7a; + border-top: 2px solid #7a7a7a; +} +.miscButton { + width: 50px; + height: 50px; + margin-top: 5px; + z-index:10000; + cursor: pointer; + pointer-events: auto; + transition: all 0.5s; +} +.miscButton:hover { + transform: rotate(180deg) +} +.backButton { + width: 50px; + position: absolute; + left:0px; + top:0px; + height: 50px; + justify-content: auto; + user-select: none; + margin-bottom: 5px; + color: white; + font-size:25px; + z-index:10000; + cursor: pointer; + pointer-events: auto; + background: #0f0f0f; + border: 2px solid #7a7a7a; + transition: all 0.5s; + vertical-align:baseline; +} +.contentHeader { + width: 60px; + height: 36px; + display: flex; + justify-content: center; + align-items: center; + color: rgba(255, 255, 255, 0.9); + font-size:18px; + z-index:10000; + background: linear-gradient(90deg, #555555 0%, #454545 50%, #555555 100%); + border-bottom: 2px solid #7a7a7a; + margin-bottom: 10px; + transition: all 0s; +} +.menuHeader { + width: 185px; + height: 36px; + display: flex; + justify-content: center; + align-items: center; + color: rgba(255, 255, 255, 0.9); + font-size:18px; + z-index:10000; + background: linear-gradient(90deg, #3e3e3e 0%, #262626 50%, #3e3e3e 100%); + border-top: 2px solid #7a7a7a; + border-bottom: 2px solid #7a7a7a; + border-left: 0px solid #3e3e3e; + border-right: 0px solid #3e3e3e; + margin-bottom: 10px; + transition: all 0s; +} +.uniHeader { + width: 185px; + height: 36px; + display: flex; + justify-content: center; + align-items: center; + color: rgba(255, 255, 255, 0.9); + font-size:18px; + line-height:1; + z-index:10000; + background: linear-gradient(90deg, #555555 0%, #3e3e3e 50%, #555555 100%); + border-top: 2px solid #7a7a7a; + border-bottom: 2px solid #7a7a7a; + border-left: 0px solid #3e3e3e; + border-right: 0px solid #3e3e3e; + margin-bottom: 10px; + transition: all 0s; +} *:focus { outline: none; @@ -168,10 +375,10 @@ ul { transition-duration: 0s } -.tooltipBox { +.tooltipBox { position: relative; } - + .tooltipBox:hover .tooltip{ opacity: 1; } @@ -179,7 +386,7 @@ ul { .forceTooltip .tooltip{ opacity: 1; } - + .respecCheckbox { display: inline-block; } @@ -248,4 +455,3 @@ button > * { background-image: none !important; --background: transparent !important; } - diff --git a/index.html b/index.html index 1f5926b..88a3306 100644 --- a/index.html +++ b/index.html @@ -41,6 +41,114 @@
+
Celestial
Incremental
+
+ +
+
UNI
+ + + + +
+ +
+
META
+ + + +
+ +
+ +
+
+
+ +
Universe 1
Overworld
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Universe 2
Antimatter World
+ + + + + + + + + + + + + + + +
Alt-Universe 1
Cantepocalypse
+ + + + + + + + + + + + + + + + + +
Universe 3
Singularity
+ COMING SOON!!! + + +
Check Back
+ + + + + + + + + + + + + + + + +
+
diff --git a/js/Cantepocalypse/altRanks.js b/js/Cantepocalypse/altRanks.js index 16935ac..cd0032c 100644 --- a/js/Cantepocalypse/altRanks.js +++ b/js/Cantepocalypse/altRanks.js @@ -58,7 +58,7 @@ 1: { title() { return "

Return" }, canClick() { return true }, - unlocked() { return true }, + unlocked() { return options.newMenu == false }, onClick() { player.tab = "cp" }, @@ -113,16 +113,16 @@ display() { return "Time: " + formatTime(player.cp.replicantiPointsTimer) + "/" + formatTime(player.cp.replicantiPointsTimerReq); }, - }, + }, }, upgrades: { }, buyables: { - + }, milestones: { - + }, challenges: { }, @@ -154,7 +154,7 @@ }, }, - }, + }, tabFormat: [ ["raw-html", function () { return "You have

" + format(player.cp.replicantiPoints) + "

replicanti points." }, { "color": "white", "font-size": "20px", "font-family": "monospace" }], @@ -166,4 +166,4 @@ layerShown() { return player.startedGame == true && hasUpgrade("cp", 11) } }) -// hai icecreamdude-senpai :3 \ No newline at end of file +// hai icecreamdude-senpai :3 diff --git a/js/Cantepocalypse/anonymity.js b/js/Cantepocalypse/anonymity.js index f00382c..ae73b35 100644 --- a/js/Cantepocalypse/anonymity.js +++ b/js/Cantepocalypse/anonymity.js @@ -35,7 +35,7 @@ 1: { title() { return "

Return" }, canClick() { return true }, - unlocked() { return true }, + unlocked() { return options.newMenu == false }, onClick() { player.tab = "cp" }, @@ -260,7 +260,7 @@ }, tabFormat: [ - ["raw-html", function () { return "You have

" + format(player.cp.replicantiPoints) + "

replicanti." }, { "color": "white", "font-size": "20px", "font-family": "monospace" }], + ["raw-html", function () { return "You have

" + format(player.cp.replicantiPoints) + "

replicanti points." }, { "color": "white", "font-size": "20px", "font-family": "monospace" }], ["raw-html", function () { return "Replicanti Mult: " + format(player.cp.replicantiPointsMult, 4) + "x" }, { "color": "white", "font-size": "16px", "font-family": "monospace" }], ["row", [["bar", "replicantiBar"]]], ["row", [["clickable", 1]]], diff --git a/js/Cantepocalypse/cantepocalypse.js b/js/Cantepocalypse/cantepocalypse.js index 4f1df5a..938a822 100644 --- a/js/Cantepocalypse/cantepocalypse.js +++ b/js/Cantepocalypse/cantepocalypse.js @@ -7,6 +7,7 @@ addLayer("cp", { startData() { return { unlocked: true, unlockedPortal: false, + cantepocalypseActive: false, replicantiPoints: new Decimal(1), replicantiPointsMult: new Decimal(0), @@ -37,6 +38,12 @@ addLayer("cp", { update(delta) { let onepersec = new Decimal(1) + if (player.tab == "cp" && player.cap.cantepocalypsePrep == true) { + player.cp.cantepocalypsePrep = false + player.cp.cantepocalypseActive = true + if (options.newMenu == true) showTab("a1u") + } + if (player.subtabs["cp"]['stuff'] == 'Portal') { player.po.lastUniverse = 'cp' @@ -117,7 +124,7 @@ addLayer("cp", { 1: { title() { return "

Return" }, canClick() { return true }, - unlocked() { return true }, + unlocked() { return options.newMenu == false }, onClick() { player.tab = "po" }, @@ -218,6 +225,9 @@ addLayer("cp", { unlocked() { return true }, description: "Unlocks THE PORTAL.", cost: new Decimal(1e90), + onPurchase() { + player.cp.cantepocalypseActive = false + }, currencyLocation() { return player.cp }, currencyDisplayName: "Replicanti Points", currencyInternalName: "replicantiPoints", @@ -261,10 +271,10 @@ addLayer("cp", { [ ["blank", "25px"], ["raw-html", function () { return "Softcap starts at

" + format(player.cp.replicantiSoftcapStart) + "

." }, { "color": "white", "font-size": "20px", "font-family": "monospace" }], - ["raw-html", function () { return "Softcap divides replicanti mult by

/" + format(player.cp.replicantiSoftcapEffect) + "

." }, { "color": "white", "font-size": "20px", "font-family": "monospace" }], - ["blank", "25px"], - ["raw-html", function () { return player.cp.replicantiPoints.gte(player.cp.replicantiSoftcap2Start) ? "Second softcap starts at

" + format(player.cp.replicantiSoftcap2Start) + "

." : ""}, { "color": "#ff4545", "font-size": "20px", "font-family": "monospace" }], -["raw-html", function () { return player.cp.replicantiPoints.gte(player.cp.replicantiSoftcap2Start) ? "Second softcap divides replicanti mult by

/" + format(player.cp.replicantiSoftcap2Effect) + "

." : ""}, { "color": "#ff4545", "font-size": "20px", "font-family": "monospace" }], + ["raw-html", function () { return "Softcap divides replicanti mult by

/" + format(player.cp.replicantiSoftcapEffect) + "

." }, { "color": "white", "font-size": "20px", "font-family": "monospace" }], + ["blank", "25px"], + ["raw-html", function () { return player.cp.replicantiPoints.gte(player.cp.replicantiSoftcap2Start) ? "Second softcap starts at

" + format(player.cp.replicantiSoftcap2Start) + "

." : ""}, { "color": "#ff4545", "font-size": "20px", "font-family": "monospace" }], + ["raw-html", function () { return player.cp.replicantiPoints.gte(player.cp.replicantiSoftcap2Start) ? "Second softcap divides replicanti mult by

/" + format(player.cp.replicantiSoftcap2Effect) + "

." : ""}, { "color": "#ff4545", "font-size": "20px", "font-family": "monospace" }], ] }, diff --git a/js/Cantepocalypse/grassSkip.js b/js/Cantepocalypse/grassSkip.js index 79ed756..9c72fc7 100644 --- a/js/Cantepocalypse/grassSkip.js +++ b/js/Cantepocalypse/grassSkip.js @@ -5,7 +5,7 @@ position: 0, // Horizontal position within a row. By default it uses the layer id and sorts in alphabetical order startData() { return { unlocked: true, - + grassSkip: new Decimal(0), grassSkipToGet: new Decimal(0), grassSkipReq: new Decimal(1e40), @@ -19,6 +19,7 @@ //milestone milestone2Effect: new Decimal(1), + milestone8Effect: new Decimal(1), } }, automate() { @@ -57,6 +58,11 @@ player.gs.grassSkippersEffect = player.gs.grassSkippers.pow(0.275).add(1) player.gs.milestone2Effect = player.cp.replicantiPoints.plus(1).log10().pow(1.35).add(1) + if (player.gs.grassSkip.gte(15)) { + player.gs.milestone8Effect = player.gs.grassSkip.sub(10).div(5).pow(0.9).add(1) + } else { + player.gs.milestone8Effect = player.gs.grassSkip.div(15).add(1) + } if (player.subtabs["oi"]['stuff'] == 'REMEMBERANCE CORES') { @@ -111,7 +117,7 @@ } for (let i = 0; i < player.an.upgrades.length; i++) { - if (+player.an.upgrades[i] < 23) { + if (+player.an.upgrades[i] < 24) { player.an.upgrades.splice(i, 1); i--; } @@ -121,7 +127,7 @@ 1: { title() { return "

Return" }, canClick() { return true }, - unlocked() { return true }, + unlocked() { return options.newMenu == false }, onClick() { player.tab = "cp" }, @@ -171,7 +177,7 @@ display() { return "Time: " + formatTime(player.cp.replicantiPointsTimer) + "/" + formatTime(player.cp.replicantiPointsTimerReq); }, - }, + }, }, upgrades: { }, @@ -198,7 +204,7 @@ setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(1)) } else { - + let max = Decimal.affordGeometricSeries(player.gs.grassSkippers, base, growth, getBuyableAmount(this.layer, this.id)) let cost = Decimal.sumGeometricSeries(max, base, growth, getBuyableAmount(this.layer, this.id)).floor() player.gs.grassSkippers = player.gs.grassSkippers.sub(cost) @@ -230,7 +236,7 @@ setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(1)) } else { - + let max = Decimal.affordGeometricSeries(player.gs.grassSkippers, base, growth, getBuyableAmount(this.layer, this.id)) let cost = Decimal.sumGeometricSeries(max, base, growth, getBuyableAmount(this.layer, this.id)).floor() player.gs.grassSkippers = player.gs.grassSkippers.sub(cost) @@ -262,7 +268,7 @@ setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(1)) } else { - + let max = Decimal.affordGeometricSeries(player.gs.grassSkippers, base, growth, getBuyableAmount(this.layer, this.id)) let cost = Decimal.sumGeometricSeries(max, base, growth, getBuyableAmount(this.layer, this.id)).floor() player.gs.grassSkippers = player.gs.grassSkippers.sub(cost) @@ -294,7 +300,7 @@ setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(1)) } else { - + let max = Decimal.affordGeometricSeries(player.gs.grassSkippers, base, growth, getBuyableAmount(this.layer, this.id)) let cost = Decimal.sumGeometricSeries(max, base, growth, getBuyableAmount(this.layer, this.id)).floor() player.gs.grassSkippers = player.gs.grassSkippers.sub(cost) @@ -326,7 +332,7 @@ setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(1)) } else { - + let max = Decimal.affordGeometricSeries(player.gs.grassSkippers, base, growth, getBuyableAmount(this.layer, this.id)) let cost = Decimal.sumGeometricSeries(max, base, growth, getBuyableAmount(this.layer, this.id)).floor() player.gs.grassSkippers = player.gs.grassSkippers.sub(cost) @@ -358,7 +364,7 @@ setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(1)) } else { - + let max = Decimal.affordGeometricSeries(player.gs.grassSkippers, base, growth, getBuyableAmount(this.layer, this.id)) let cost = Decimal.sumGeometricSeries(max, base, growth, getBuyableAmount(this.layer, this.id)).floor() player.gs.grassSkippers = player.gs.grassSkippers.sub(cost) @@ -390,7 +396,7 @@ setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(1)) } else { - + let max = Decimal.affordGeometricSeries(player.gs.grassSkippers, base, growth, getBuyableAmount(this.layer, this.id)) let cost = Decimal.sumGeometricSeries(max, base, growth, getBuyableAmount(this.layer, this.id)).floor() player.gs.grassSkippers = player.gs.grassSkippers.sub(cost) @@ -422,7 +428,7 @@ setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(1)) } else { - + let max = Decimal.affordGeometricSeries(player.gs.grassSkippers, base, growth, getBuyableAmount(this.layer, this.id)) let cost = Decimal.sumGeometricSeries(max, base, growth, getBuyableAmount(this.layer, this.id)).floor() player.gs.grassSkippers = player.gs.grassSkippers.sub(cost) @@ -436,7 +442,7 @@ milestones: { 11: { requirementDescription: "

Grass-Skip 1", - effectDescription: "Unlock Grass-Skippers", + effectDescription: "Unlock Grass-Skippers", done() { return player.gs.grassSkip.gte(1) }, style: { width: '800px', "min-height": '75px' }, }, @@ -476,7 +482,12 @@ done() { return player.gs.grassSkip.gte(15) }, style: { width: '800px', "min-height": '75px' }, }, - + 18: { + requirementDescription: "

Grass-Skip 20", + effectDescription() { return "Grass-Skips boost pollinator gain. Currently: " + format(player.gs.milestone8Effect)+"x" }, + done() { return player.gs.grassSkip.gte(15) }, + style: { width: '800px', "min-height": '75px' }, + }, }, challenges: { }, @@ -502,6 +513,7 @@ ["row", [["milestone", 15]]], ["row", [["milestone", 16]]], ["row", [["milestone", 17]]], + ["row", [["milestone", 18]]], ] }, "Grass-Skippers": { @@ -515,13 +527,13 @@ ["raw-html", function () { return "Your grass-skippers are boosting rank, tier, and tetr points by x

" + format(player.gs.grassSkippersEffect) + "

." }, { "color": "white", "font-size": "20px", "font-family": "monospace" }], ["blank", "25px"], ["row", [["clickable", 2], ["clickable", 3]]], - ["blank", "25px"], + ["blank", "25px"], ["row", [["buyable", 11], ["buyable", 12], ["buyable", 13], ["buyable", 14]]], ["row", [["buyable", 15], ["buyable", 16], ["buyable", 17], ["buyable", 18]]], ] }, }, - }, + }, tabFormat: [ ["raw-html", function () { return "You have

" + format(player.cp.replicantiPoints) + "

replicanti points." }, { "color": "white", "font-size": "20px", "font-family": "monospace" }], @@ -531,4 +543,4 @@ ["microtabs", "stuff", { 'border-width': '0px' }], ], layerShown() { return player.startedGame == true && hasUpgrade("cp", 17) } -}) \ No newline at end of file +}) diff --git a/js/Cantepocalypse/oil.js b/js/Cantepocalypse/oil.js index 9080520..52b339a 100644 --- a/js/Cantepocalypse/oil.js +++ b/js/Cantepocalypse/oil.js @@ -39,7 +39,7 @@ }, tooltip: "Oil", branches: ["rt", "rm", "cb", "m"], - color: "#28242c", + color: "#3c3642", update(delta) { let onepersec = new Decimal(1) @@ -146,7 +146,7 @@ 1: { title() { return "

Return (A1)" }, canClick() { return true }, - unlocked() { return true }, + unlocked() { return options.newMenu == false }, onClick() { player.tab = "cp" }, @@ -155,7 +155,7 @@ 2: { title() { return "

Return (U1)" }, canClick() { return true }, - unlocked() { return hasUpgrade("cp", 18) }, + unlocked() { return (hasUpgrade("cp", 18) && options.newMenu == false) }, onClick() { player.tab = "i" }, @@ -644,7 +644,7 @@ }, tabFormat: [ - ["raw-html", function () { return "You have

" + format(player.cp.replicantiPoints) + "

replicanti." }, { "color": "white", "font-size": "20px", "font-family": "monospace" }], + ["raw-html", function () { return "You have

" + format(player.cp.replicantiPoints) + "

replicanti points." }, { "color": "white", "font-size": "20px", "font-family": "monospace" }], ["raw-html", function () { return "Replicanti Mult: " + format(player.cp.replicantiPointsMult, 4) + "x" }, { "color": "white", "font-size": "16px", "font-family": "monospace" }], ["row", [["bar", "replicantiBar"]]], ["row", [["clickable", 1], ["clickable", 2]]], diff --git a/js/Cantepocalypse/perks.js b/js/Cantepocalypse/perks.js index e4b5728..b44e0f5 100644 --- a/js/Cantepocalypse/perks.js +++ b/js/Cantepocalypse/perks.js @@ -46,7 +46,7 @@ 1: { title() { return "

Return" }, canClick() { return true }, - unlocked() { return true }, + unlocked() { return options.newMenu == false }, onClick() { player.tab = "cp" }, @@ -86,7 +86,7 @@ display() { return "Time: " + formatTime(player.cp.replicantiPointsTimer) + "/" + formatTime(player.cp.replicantiPointsTimerReq); }, - }, + }, }, upgrades: { @@ -114,7 +114,7 @@ setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(1)) } else { - + let max = Decimal.affordGeometricSeries(player.pr.perkPoints, base, growth, getBuyableAmount(this.layer, this.id)) let cost = Decimal.sumGeometricSeries(max, base, growth, getBuyableAmount(this.layer, this.id)).floor() if (!hasMilestone("gs", 13)) player.pr.perkPoints = player.pr.perkPoints.sub(cost) @@ -146,7 +146,7 @@ setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(1)) } else { - + let max = Decimal.affordGeometricSeries(player.pr.perkPoints, base, growth, getBuyableAmount(this.layer, this.id)) let cost = Decimal.sumGeometricSeries(max, base, growth, getBuyableAmount(this.layer, this.id)).floor() if (!hasMilestone("gs", 13)) player.pr.perkPoints = player.pr.perkPoints.sub(cost) @@ -178,7 +178,7 @@ setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(1)) } else { - + let max = Decimal.affordGeometricSeries(player.pr.perkPoints, base, growth, getBuyableAmount(this.layer, this.id)) let cost = Decimal.sumGeometricSeries(max, base, growth, getBuyableAmount(this.layer, this.id)).floor() if (!hasMilestone("gs", 13)) player.pr.perkPoints = player.pr.perkPoints.sub(cost) @@ -210,7 +210,7 @@ setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(1)) } else { - + let max = Decimal.affordGeometricSeries(player.pr.perkPoints, base, growth, getBuyableAmount(this.layer, this.id)) let cost = Decimal.sumGeometricSeries(max, base, growth, getBuyableAmount(this.layer, this.id)).floor() if (!hasMilestone("gs", 13)) player.pr.perkPoints = player.pr.perkPoints.sub(cost) @@ -242,7 +242,7 @@ setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(1)) } else { - + let max = Decimal.affordGeometricSeries(player.pr.perkPoints, base, growth, getBuyableAmount(this.layer, this.id)) let cost = Decimal.sumGeometricSeries(max, base, growth, getBuyableAmount(this.layer, this.id)).floor() if (!hasMilestone("gs", 13)) player.pr.perkPoints = player.pr.perkPoints.sub(cost) @@ -274,7 +274,7 @@ setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(1)) } else { - + let max = Decimal.affordGeometricSeries(player.pr.perkPoints, base, growth, getBuyableAmount(this.layer, this.id)) let cost = Decimal.sumGeometricSeries(max, base, growth, getBuyableAmount(this.layer, this.id)).floor() if (!hasMilestone("gs", 13)) player.pr.perkPoints = player.pr.perkPoints.sub(cost) @@ -306,7 +306,7 @@ setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(1)) } else { - + let max = Decimal.affordGeometricSeries(player.cp.replicantiPoints, base, growth, getBuyableAmount(this.layer, this.id)) let cost = Decimal.sumGeometricSeries(max, base, growth, getBuyableAmount(this.layer, this.id)).floor() if (!hasMilestone("gs", 13)) player.cp.replicantiPoints = player.cp.replicantiPoints.sub(cost) @@ -338,7 +338,7 @@ setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(1)) } else { - + let max = Decimal.affordGeometricSeries(player.cp.replicantiPoints, base, growth, getBuyableAmount(this.layer, this.id)) let cost = Decimal.sumGeometricSeries(max, base, growth, getBuyableAmount(this.layer, this.id)).floor() if (!hasMilestone("gs", 13)) player.cp.replicantiPoints = player.cp.replicantiPoints.sub(cost) @@ -350,7 +350,7 @@ }, }, milestones: { - + }, challenges: { }, @@ -369,21 +369,21 @@ ["raw-html", function () { return "Chance to gain perk points:

" + format(player.pr.perkPointsChance.mul(100)) + "

%" }, { "color": "white", "font-size": "16px", "font-family": "monospace" }], ["blank", "25px"], ["row", [["clickable", 2], ["clickable", 3]]], - ["blank", "25px"], + ["blank", "25px"], ["row", [["buyable", 11], ["buyable", 12], ["buyable", 13], ["buyable", 14]]], ["row", [["buyable", 15], ["buyable", 16], ["buyable", 17], ["buyable", 18]]], ] }, }, - }, + }, tabFormat: [ - ["raw-html", function () { return "You have

" + format(player.cp.replicantiPoints) + "

replicanti." }, { "color": "white", "font-size": "20px", "font-family": "monospace" }], + ["raw-html", function () { return "You have

" + format(player.cp.replicantiPoints) + "

replicanti points." }, { "color": "white", "font-size": "20px", "font-family": "monospace" }], ["raw-html", function () { return "Replicanti Mult: " + format(player.cp.replicantiPointsMult, 4) + "x" }, { "color": "white", "font-size": "16px", "font-family": "monospace" }], ["row", [["bar", "replicantiBar"]]], ["row", [["clickable", 1]]], ["microtabs", "stuff", { 'border-width': '0px' }], ], layerShown() { return player.startedGame == true && hasUpgrade("cp", 12) } -}) \ No newline at end of file +}) diff --git a/js/Cantepocalypse/repliGrass.js b/js/Cantepocalypse/repliGrass.js index 4ca58b7..b5a400d 100644 --- a/js/Cantepocalypse/repliGrass.js +++ b/js/Cantepocalypse/repliGrass.js @@ -113,7 +113,7 @@ 1: { title() { return "

Return" }, canClick() { return true }, - unlocked() { return true }, + unlocked() { return options.newMenu == false }, onClick() { player.tab = "cp" }, @@ -152,7 +152,7 @@ return format(getBuyableAmount(this.layer, this.id), 0) + "
Repli-Grass Mult." }, display() { - return "which are adding +" + format(tmp[this.layer].buyables[this.id].effect) + " to the repli-leaf multiplier.\n\ + return "which are adding +" + format(tmp[this.layer].buyables[this.id].effect) + " to the repli-grass multiplier.\n\ Cost: " + format(tmp[this.layer].buyables[this.id].cost) + " Repli-Grass." }, buy() { @@ -165,7 +165,7 @@ setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(1)) } else { - + let max = Decimal.affordGeometricSeries(player.rg.repliGrass, base, growth, getBuyableAmount(this.layer, this.id)) let cost = Decimal.sumGeometricSeries(max, base, growth, getBuyableAmount(this.layer, this.id)).floor() player.rg.repliGrass = player.rg.repliGrass.sub(cost) @@ -394,7 +394,7 @@ }, }, milestones: { - + }, challenges: { }, @@ -414,7 +414,7 @@ ["raw-html", function () { return "Repli-Grass boosts replicanti point mult by x" + format(player.rg.repliGrassEffect2) + "." }, { "color": "white", "font-size": "24px", "font-family": "monospace" }], ["raw-html", function () { return player.rg.repliGrass.gte(player.rg.repliGrassSoftcapStart) ? "After " + formatWhole(player.rg.repliGrassSoftcapStart) + " repli-grass, repli-grass mult is divided by " + format(player.rg.repliGrassSoftcapEffect) + "." : "" }, { "color": "red", "font-size": "16px", "font-family": "monospace" }], ["blank", "25px"], - ["raw-html", function () { return "
" }, { "color": "white", "font-size": "24px", "font-family": "monospace" }], + ["raw-html", function () { return options.newMenu ? "" : "
" }, { "color": "white", "font-size": "24px", "font-family": "monospace" }], ] }, "Buyables": { @@ -424,13 +424,13 @@ [ ["blank", "25px"], ["row", [["clickable", 2], ["clickable", 3]]], - ["blank", "25px"], + ["blank", "25px"], ["row", [["buyable", 11], ["buyable", 12], ["buyable", 13], ["buyable", 14]]], ["row", [["buyable", 15], ["buyable", 16], ["buyable", 17], ["buyable", 18]]], ] }, }, - }, + }, tabFormat: [ ["raw-html", function () { return "You have

" + format(player.rg.repliGrass) + "

repli-grass." }, { "color": "white", "font-size": "24px", "font-family": "monospace" }], @@ -575,4 +575,4 @@ window.addEventListener('load', function() { // This function will be executed after the page is reloaded // You can perform any necessary tasks here layers.rg.loadRepliGrass(); -}); \ No newline at end of file +}); diff --git a/js/Cantepocalypse/repliTrees.js b/js/Cantepocalypse/repliTrees.js index 7ccad6e..1e58c5f 100644 --- a/js/Cantepocalypse/repliTrees.js +++ b/js/Cantepocalypse/repliTrees.js @@ -50,10 +50,10 @@ if (hasUpgrade("an", 21)) player.rt.repliLeavesTimerReq = player.rt.repliLeavesTimerReq.sub(1.5) player.rt.repliLeavesTimerReq = player.rt.repliLeavesTimerReq.div(buyableEffect("rt", 12)) - player.rt.repliTreesSoftcapStart = new Decimal(10) - player.rt.repliTreesSoftcapStart = player.rt.repliTreesSoftcapStart.mul(buyableEffect("rt", 18)) - player.rt.repliTreesSoftcapStart = player.rt.repliTreesSoftcapStart.mul(buyableEffect("rg", 18)) - player.rt.repliTreesSoftcapStart = player.rt.repliTreesSoftcapStart.mul(player.oi.oilEffect) + player.rt.repliTreeSoftcapStart = new Decimal(10) + player.rt.repliTreeSoftcapStart = player.rt.repliTreeSoftcapStart.mul(buyableEffect("rt", 18)) + player.rt.repliTreeSoftcapStart = player.rt.repliTreeSoftcapStart.mul(buyableEffect("rg", 18)) + player.rt.repliTreeSoftcapStart = player.rt.repliTreeSoftcapStart.mul(player.oi.oilEffect) player.rt.repliTreeSoftcapEffect = player.rt.repliTrees.sub(player.rt.repliTreeSoftcapStart).pow(1.25).div(10).add(1) if (player.rt.repliTrees.gte(player.rt.repliTreeSoftcapStart)) @@ -95,7 +95,7 @@ 1: { title() { return "

Return" }, canClick() { return true }, - unlocked() { return true }, + unlocked() { return options.newMenu == false }, onClick() { player.tab = "cp" }, @@ -430,7 +430,7 @@ ["raw-html", function () { return "

You have " + formatWhole(player.rt.repliTrees) + "

repli-trees, which boost anonymity gain by x" + format(player.rt.repliTreesEffect) + "."}], ["raw-html", function () { return "

You will gain " + format(player.rt.repliTreesToGet, 1) + "

repli-trees." }], ["raw-html", function () { return "

Repli-Leaves mult: x" + format(player.rt.repliLeavesMult, 4) + "

." }], - ["raw-html", function () { return player.rt.repliTrees.gte(player.rt.repliTreesSoftcapStart) ? "After " + formatWhole(player.rt.repliTreeSoftcapStart) + " repli-trees, repli-leaf mult is divided by " + format(player.rt.repliTreeSoftcapEffect) + " (Based on repli-trees)" : "" }, { "color": "red", "font-size": "16px", "font-family": "monospace" }], + ["raw-html", function () { return player.rt.repliTrees.gte(player.rt.repliTreeSoftcapStart) ? "After " + formatWhole(player.rt.repliTreeSoftcapStart) + " repli-trees, repli-leaf mult is divided by " + format(player.rt.repliTreeSoftcapEffect) + " (Based on repli-trees)" : "" }, { "color": "red", "font-size": "16px", "font-family": "monospace" }], ["blank", "25px"], ["row", [["bar", "repliTreeBar"]]], ["row", [["bar", "replileafBar"]]], diff --git a/js/Gwa Temple/gwaTemple.js b/js/Gwa Temple/gwaTemple.js index 93a55e7..95bf6cc 100644 --- a/js/Gwa Temple/gwaTemple.js +++ b/js/Gwa Temple/gwaTemple.js @@ -21,7 +21,7 @@ 1: { title() { return "

Return" }, canClick() { return true }, - unlocked() { return true }, + unlocked() { return options.newMenu == false }, onClick() { player.tab = "i" }, @@ -52,11 +52,11 @@ }, }, - }, + }, tabFormat: [ ["row", [["clickable", 1]]], ["microtabs", "stuff", { 'border-width': '0px' }], ], layerShown() { return player.startedGame == true && hasUpgrade("i", 1)} -}) \ No newline at end of file +}) diff --git a/js/Singularity/singularity.js b/js/Singularity/singularity.js index 06af930..2ccc0eb 100644 --- a/js/Singularity/singularity.js +++ b/js/Singularity/singularity.js @@ -17,7 +17,7 @@ addLayer("s", { "border-color": "#800000", } }, - + tooltip: "Universe 3 - Domain of Singularity", color: "white", update(delta) { @@ -35,7 +35,7 @@ addLayer("s", { 1: { title() { return "

Return" }, canClick() { return true }, - unlocked() { return true }, + unlocked() { return options.newMenu == false }, onClick() { player.tab = "po" }, @@ -76,10 +76,10 @@ addLayer("s", { }, "Settings": settingsMicrotab, }, - }, + }, tabFormat: [ - ["microtabs", "stuff", { 'border-width': '0px' }], + ["microtabs", "stuff", { 'border-width': '0px' }], ], layerShown() { return player.startedGame == true && player.ca.defeatedCante} }) diff --git a/js/antimatterDimensions.js b/js/antimatterDimensions.js index af42ff1..14fa8a8 100644 --- a/js/antimatterDimensions.js +++ b/js/antimatterDimensions.js @@ -10,39 +10,17 @@ antimatterEffect: new Decimal(1), antimatterPerSecond: new Decimal(0), - dimensionsUnlocked: [true, true, true, true, false, false, false, false], + // Dimension Stuff dimensionAmounts: [new Decimal(0),new Decimal(0),new Decimal(0),new Decimal(0),new Decimal(0),new Decimal(0),new Decimal(0),new Decimal(0),], dimensionsPerSecond: [new Decimal(0),new Decimal(0),new Decimal(0),new Decimal(0),new Decimal(0),new Decimal(0),new Decimal(0),new Decimal(0),], - dimensionCosts: [new Decimal(10),new Decimal(100),new Decimal(10000),new Decimal(1e6),new Decimal(1e9),new Decimal(1e13),new Decimal(1e18),new Decimal(1e24),], - dimensionsPurchased: [new Decimal(0),new Decimal(0),new Decimal(0),new Decimal(0),new Decimal(0),new Decimal(0),new Decimal(0),new Decimal(0),], - dimensionMult: [new Decimal(1),new Decimal(1),new Decimal(1),new Decimal(1),new Decimal(1),new Decimal(1),new Decimal(1),new Decimal(1),], - dimensionText: ["", "", "", "", "", "", "", ""], tickspeedMult: new Decimal(1.1), - //dimb - dimBoostPause: new Decimal(0), - dimBoostAmount: new Decimal(0), - dimBoostReq: new Decimal(2), - dimBoostDimCost: new Decimal(3), //index - dimBoostEffect: new Decimal(1), - dimBoostMult: new Decimal(2), - dimBoostText: "", - - //galxy - galaxyPause: new Decimal(0), - galaxyAmount: new Decimal(0), - galaxyReq: new Decimal(4), - galaxyDimCost: new Decimal(7), //index - galaxyEffect: new Decimal(1), - galaxyBase: new Decimal(0.02), - galaxyText: "", - galaxyLimit: new Decimal(16), - - extraDimsGalaxiesLocked: true, //6 dims, 1 galaxy - //pause revCrunchPause: new Decimal(0), + + //buymax + dimMax: false, } }, automate() { @@ -65,32 +43,20 @@ player.ad.antimatter = new Decimal(0) } - if (!hasUpgrade("bi", 22)) player.ad.antimatterEffect = player.points.pow(3).plus(1).log10().pow(player.ad.antimatter.plus(1).log10().pow(0.24)).mul(player.ad.antimatter.div(player.ad.antimatter.mul(2).add(1))).add(1) - if (hasUpgrade("bi", 22)) player.ad.antimatterEffect = player.points.pow(player.points.plus(1).log10().pow(2)).plus(1).log10().pow(player.ad.antimatter.plus(1).log10().pow(0.24)).mul(player.ad.antimatter.div(player.ad.antimatter.mul(2).add(1))).add(1) + // Antimatter Effect Calculations + if (!hasUpgrade("bi", 22) && player.ad.antimatter.gte(0)) player.ad.antimatterEffect = player.points.pow(3).plus(1).log10().pow(player.ad.antimatter.plus(1).log10().pow(0.24)).mul(player.ad.antimatter.div(player.ad.antimatter.mul(2).add(1))).add(1) + if (hasUpgrade("bi", 22) && player.ad.antimatter.gte(0)) player.ad.antimatterEffect = player.points.pow(player.points.plus(1).log10().pow(2)).plus(1).log10().pow(player.ad.antimatter.plus(1).log10().pow(0.24)).mul(player.ad.antimatter.div(player.ad.antimatter.mul(2).add(1))).add(1) if (inChallenge("tad", 11)) player.ad.antimatterEffect = player.ad.antimatterEffect.pow(buyableEffect("de", 18)) if (hasUpgrade("bi", 108)) player.ad.antimatterEffect = player.ad.antimatterEffect.pow(1.6) if (hasUpgrade("bi", 113)) player.ad.antimatterEffect = player.ad.antimatterEffect.pow(3) - player.ad.dimensionText = [ - "1st dimension (" + format(player.ad.dimensionMult[0]) + "x): " + format(player.ad.dimensionAmounts[0]) + " (+" + format(player.ad.dimensionsPerSecond[0]) + "/s)", - "2nd dimension (" + format(player.ad.dimensionMult[1]) + "x): " + format(player.ad.dimensionAmounts[1]) + " (+" + format(player.ad.dimensionsPerSecond[1]) + "/s)", - "3rd dimension (" + format(player.ad.dimensionMult[2]) + "x): " + format(player.ad.dimensionAmounts[2]) + " (+" + format(player.ad.dimensionsPerSecond[2]) + "/s)", - "4th dimension (" + format(player.ad.dimensionMult[3]) + "x): " + format(player.ad.dimensionAmounts[3]) + " (+" + format(player.ad.dimensionsPerSecond[3]) + "/s)", - "5th dimension (" + format(player.ad.dimensionMult[4]) + "x): " + format(player.ad.dimensionAmounts[4]) + " (+" + format(player.ad.dimensionsPerSecond[4]) + "/s)", - "6th dimension (" + format(player.ad.dimensionMult[5]) + "x): " + format(player.ad.dimensionAmounts[5]) + " (+" + format(player.ad.dimensionsPerSecond[5]) + "/s)", - "7th dimension (" + format(player.ad.dimensionMult[6]) + "x): " + format(player.ad.dimensionAmounts[6]) + " (+" + format(player.ad.dimensionsPerSecond[6]) + "/s)", - "8th dimension (" + format(player.ad.dimensionMult[7]) + "x): " + format(player.ad.dimensionAmounts[7]), - ] - + // Antimatter Per Second Calculations player.ad.antimatter = player.ad.antimatter.add(player.ad.antimatterPerSecond.mul(delta)) - player.ad.antimatterPerSecond = player.ad.dimensionAmounts[0].mul(player.ad.dimensionMult[0]) + player.ad.antimatterPerSecond = player.ad.dimensionAmounts[0].mul(buyableEffect("ad", 11)) player.ad.antimatterPerSecond = player.ad.antimatterPerSecond.mul(buyableEffect("ad", 1)) - if (hasUpgrade("ad", 12)) player.ad.antimatterPerSecond = player.ad.antimatterPerSecond.mul(upgradeEffect("ad", 12)) - player.ad.antimatterPerSecond = player.ad.antimatterPerSecond.mul(player.ad.dimBoostEffect) - if (hasUpgrade("ip", 12)) player.ad.antimatterPerSecond = player.ad.antimatterPerSecond.mul(upgradeEffect("ip", 12)) - if (hasUpgrade("ad", 17)) player.ad.antimatterPerSecond = player.ad.antimatterPerSecond.mul(upgradeEffect("ad", 17)) + player.ad.antimatterPerSecond = player.ad.antimatterPerSecond.mul(buyableEffect("ad", 2)) player.ad.antimatterPerSecond = player.ad.antimatterPerSecond.mul(buyableEffect("gh", 23)) player.ad.antimatterPerSecond = player.ad.antimatterPerSecond.mul(buyableEffect("gh", 24)) player.ad.antimatterPerSecond = player.ad.antimatterPerSecond.mul(player.cb.commonPetEffects[5][0]) @@ -98,6 +64,9 @@ player.ad.antimatterPerSecond = player.ad.antimatterPerSecond.mul(buyableEffect("ip", 14)) player.ad.antimatterPerSecond = player.ad.antimatterPerSecond.mul(buyableEffect("ta", 36)) player.ad.antimatterPerSecond = player.ad.antimatterPerSecond.mul(buyableEffect("bi", 13)) + if (hasUpgrade("ad", 12)) player.ad.antimatterPerSecond = player.ad.antimatterPerSecond.mul(upgradeEffect("ad", 12)) + if (hasUpgrade("ip", 12)) player.ad.antimatterPerSecond = player.ad.antimatterPerSecond.mul(upgradeEffect("ip", 12)) + if (hasUpgrade("ad", 17)) player.ad.antimatterPerSecond = player.ad.antimatterPerSecond.mul(upgradeEffect("ad", 17)) if (inChallenge("tad", 11)) player.ad.antimatterPerSecond = player.ad.antimatterPerSecond.pow(0.55) if (inChallenge("tad", 11)) player.ad.antimatterPerSecond = player.ad.antimatterPerSecond.mul(buyableEffect("de", 12)) if (inChallenge("tad", 11)) player.ad.antimatterPerSecond = player.ad.antimatterPerSecond.mul(buyableEffect("de", 18)) @@ -109,37 +78,35 @@ player.ad.antimatterPerSecond = player.ad.antimatterPerSecond.mul(player.id.infinityPowerEffect) player.ad.antimatterPerSecond = player.ad.antimatterPerSecond.mul(player.h.ragePowerEffect) - if (player.ad.antimatter.gt(1e300) && player.ad.extraDimsGalaxiesLocked) player.ad.antimatterPerSecond = player.ad.antimatterPerSecond.pow(0.1) - if (player.ad.antimatter.gt(1e300) && !player.ad.extraDimsGalaxiesLocked && !hasUpgrade("bi", 21)) player.ad.antimatterPerSecond = player.ad.antimatterPerSecond.pow(Decimal.div(1, Decimal.div(player.ad.antimatter.plus(1).log10(), 310))) - if (player.ad.antimatter.gt(1e300) && !player.ad.extraDimsGalaxiesLocked && hasUpgrade("bi", 21)) player.ad.antimatterPerSecond = player.ad.antimatterPerSecond.pow(Decimal.div(1, Decimal.div(player.ad.antimatter.plus(1).log10(), 355))) + if (player.ad.antimatter.gt(1e300) && !hasChallenge("ip", 18)) player.ad.antimatterPerSecond = player.ad.antimatterPerSecond.pow(0.1) + if (player.ad.antimatter.gt(1e300) && hasChallenge("ip", 18) && !hasUpgrade("bi", 21)) player.ad.antimatterPerSecond = player.ad.antimatterPerSecond.pow(Decimal.div(1, Decimal.div(player.ad.antimatter.plus(1).log10(), 310))) + if (player.ad.antimatter.gt(1e300) && hasChallenge("ip", 18) && hasUpgrade("bi", 21)) player.ad.antimatterPerSecond = player.ad.antimatterPerSecond.pow(Decimal.div(1, Decimal.div(player.ad.antimatter.plus(1).log10(), 355))) player.ad.antimatterPerSecond = player.ad.antimatterPerSecond.mul(buyableEffect("ta", 37)) if (hasUpgrade("ip", 43)) player.ad.antimatterPerSecond = player.ad.antimatterPerSecond.mul(upgradeEffect("ip", 43)) player.ad.antimatterPerSecond = player.ad.antimatterPerSecond.mul(buyableEffect("rm", 31)) - for (let i = 0; i < player.ad.dimensionAmounts.length; i++) - { + // Calculate Dimension Amounts + for (let i = 0; i < player.ad.dimensionAmounts.length; i++) { player.ad.dimensionAmounts[i] = player.ad.dimensionAmounts[i].add(player.ad.dimensionsPerSecond[i].mul(delta)) - player.ad.dimensionMult[i] = Decimal.pow(2, player.ad.dimensionsPurchased[i]) } - for (let i = 0; i < player.ad.dimensionAmounts.length-1; i++) - { - player.ad.dimensionsPerSecond[i] = player.ad.dimensionAmounts[i+1].mul(player.ad.dimensionMult[i+1].div(10)) + for (let i = 0; i < player.ad.dimensionAmounts.length-1; i++) { + player.ad.dimensionsPerSecond[i] = player.ad.dimensionAmounts[i+1].mul(buyableEffect("ad", i+12).div(10)) //mults player.ad.dimensionsPerSecond[i] = player.ad.dimensionsPerSecond[i].mul(buyableEffect("ad", 1)) - player.ad.dimensionsPerSecond[i] = player.ad.dimensionsPerSecond[i].mul(player.ad.dimBoostEffect) + player.ad.dimensionsPerSecond[i] = player.ad.dimensionsPerSecond[i].mul(buyableEffect("ad", 2)) player.ad.dimensionsPerSecond[i] = player.ad.dimensionsPerSecond[i].mul(buyableEffect("gh", 23)) - if (hasUpgrade("ad", 17)) player.ad.dimensionsPerSecond[i] = player.ad.dimensionsPerSecond[i].mul(upgradeEffect("ad", 17)) player.ad.dimensionsPerSecond[i] = player.ad.dimensionsPerSecond[i].mul(player.cb.rarePetEffects[4][0]) - if (player.ad.antimatter.gt(1e300) && player.ad.extraDimsGalaxiesLocked) player.ad.dimensionsPerSecond[i] = player.ad.dimensionsPerSecond[i].pow(0.1) - if (player.ad.antimatter.gt(1e300) && !player.ad.extraDimsGalaxiesLocked && !hasUpgrade("bi", 21)) player.ad.dimensionsPerSecond[i] = player.ad.dimensionsPerSecond[i].pow(0.96) - if (player.ad.antimatter.gt(1e300) && !player.ad.extraDimsGalaxiesLocked && hasUpgrade("bi", 21)) player.ad.dimensionsPerSecond[i] = player.ad.dimensionsPerSecond[i].pow(0.975) + if (hasUpgrade("ad", 17)) player.ad.dimensionsPerSecond[i] = player.ad.dimensionsPerSecond[i].mul(upgradeEffect("ad", 17)) + if (player.ad.antimatter.gt(1e300) && !hasChallenge("ip", 18)) player.ad.dimensionsPerSecond[i] = player.ad.dimensionsPerSecond[i].pow(0.1) + if (player.ad.antimatter.gt(1e300) && hasChallenge("ip", 18) && !hasUpgrade("bi", 21)) player.ad.dimensionsPerSecond[i] = player.ad.dimensionsPerSecond[i].pow(0.96) + if (player.ad.antimatter.gt(1e300) && hasChallenge("ip", 18) && hasUpgrade("bi", 21)) player.ad.dimensionsPerSecond[i] = player.ad.dimensionsPerSecond[i].pow(0.975) player.ad.dimensionsPerSecond[i] = player.ad.dimensionsPerSecond[i].mul(player.ta.dimensionPowerEffects[i]) player.ad.dimensionsPerSecond[i] = player.ad.dimensionsPerSecond[i].mul(buyableEffect("ip", 14)) player.ad.dimensionsPerSecond[i] = player.ad.dimensionsPerSecond[i].mul(buyableEffect("ta", 36)) - if (hasUpgrade("ip", 43)) player.ad.dimensionsPerSecond[i] = player.ad.dimensionsPerSecond[i].mul(upgradeEffect("ip", 43)) player.ad.dimensionsPerSecond[i] = player.ad.dimensionsPerSecond[i].mul(buyableEffect("bi", 13)) + if (hasUpgrade("ip", 43)) player.ad.dimensionsPerSecond[i] = player.ad.dimensionsPerSecond[i].mul(upgradeEffect("ip", 43)) if (inChallenge("tad", 11)) player.ad.dimensionsPerSecond[i] = player.ad.dimensionsPerSecond[i].pow(0.55) if (inChallenge("tad", 11)) player.ad.dimensionsPerSecond[i] = player.ad.dimensionsPerSecond[i].mul(buyableEffect("de", 12)) player.ad.dimensionsPerSecond[i] = player.ad.dimensionsPerSecond[i].mul(buyableEffect("tad", 13)) @@ -159,97 +126,18 @@ if (hasUpgrade("ip", 13)) player.ad.dimensionsPerSecond[6] = player.ad.dimensionsPerSecond[6].mul(upgradeEffect("ip", 13)) player.ad.dimensionsPerSecond[6] = player.ad.dimensionsPerSecond[6].mul(player.cb.commonPetEffects[5][1]) - player.ad.dimensionCosts = [new Decimal(10),new Decimal(100),new Decimal(10000),new Decimal(1e6),new Decimal(1e9),new Decimal(1e13),new Decimal(1e18),new Decimal(1e24),] - - player.ad.dimensionCosts[0] = player.ad.dimensionCosts[0].mul(Decimal.pow(1e3, player.ad.dimensionsPurchased[0])) - player.ad.dimensionCosts[1] = player.ad.dimensionCosts[1].mul(Decimal.pow(1e4, player.ad.dimensionsPurchased[1])) - player.ad.dimensionCosts[2] = player.ad.dimensionCosts[2].mul(Decimal.pow(1e5, player.ad.dimensionsPurchased[2])) - player.ad.dimensionCosts[3] = player.ad.dimensionCosts[3].mul(Decimal.pow(1e6, player.ad.dimensionsPurchased[3])) - player.ad.dimensionCosts[4] = player.ad.dimensionCosts[4].mul(Decimal.pow(1e8, player.ad.dimensionsPurchased[4])) - player.ad.dimensionCosts[5] = player.ad.dimensionCosts[5].mul(Decimal.pow(1e10, player.ad.dimensionsPurchased[5])) - player.ad.dimensionCosts[6] = player.ad.dimensionCosts[6].mul(Decimal.pow(1e12, player.ad.dimensionsPurchased[6])) - player.ad.dimensionCosts[7] = player.ad.dimensionCosts[7].mul(Decimal.pow(1e15, player.ad.dimensionsPurchased[7])) - - if (player.ad.dimBoostAmount.gte(1)) player.ad.dimensionsUnlocked[4] = true - if (player.ad.dimBoostAmount.gte(2)) player.ad.dimensionsUnlocked[5] = true - if (player.ad.dimBoostAmount.gte(3)) player.ad.dimensionsUnlocked[6] = true - if (player.ad.dimBoostAmount.gte(4)) player.ad.dimensionsUnlocked[7] = true - - //tickspeed + // Tickspeed Multiplier player.ad.tickspeedMult = new Decimal(1.125) - player.ad.tickspeedMult = player.ad.tickspeedMult.add(player.ad.galaxyEffect) + player.ad.tickspeedMult = player.ad.tickspeedMult.add(buyableEffect("ad", 3)) player.ad.tickspeedMult = player.ad.tickspeedMult.add(buyableEffect("ca", 22)) if (hasUpgrade("ev1", 12)) player.ad.tickspeedMult = player.ad.tickspeedMult.mul(upgradeEffect("ev1", 12)) - //dimboost - - if (player.ad.dimBoostAmount.gt(4)) - { - player.ad.dimBoostReq = player.ad.dimBoostAmount.sub(4).mul(2).add(2) - } else - { - player.ad.dimBoostReq = new Decimal(2) - } - if (player.ad.dimBoostAmount.lte(4)) - { - player.ad.dimBoostDimCost = player.ad.dimBoostAmount.add(3) - } else - { - player.ad.dimBoostDimCost = new Decimal(7) - } - - player.ad.dimBoostMult = new Decimal(2) - player.ad.dimBoostMult = player.ad.dimBoostMult.mul(buyableEffect("ca", 21)) - if (hasUpgrade("ev2", 11)) player.ad.dimBoostMult = player.ad.dimBoostMult.mul(upgradeEffect("ev2", 11)) - player.ad.dimBoostEffect = Decimal.pow(player.ad.dimBoostMult, player.ad.dimBoostAmount) - - if (player.ad.dimBoostDimCost.eq(3)) player.ad.dimBoostText = "Req: " + player.ad.dimBoostReq + " 4th dimensions." - if (player.ad.dimBoostDimCost.eq(4)) player.ad.dimBoostText = "Req: " + player.ad.dimBoostReq + " 5th dimensions." - if (player.ad.dimBoostDimCost.eq(5)) player.ad.dimBoostText = "Req: " + player.ad.dimBoostReq + " 6th dimensions." - if (player.ad.dimBoostDimCost.eq(6)) player.ad.dimBoostText = "Req: " + player.ad.dimBoostReq + " 7th dimensions." - if (player.ad.dimBoostDimCost.eq(7)) player.ad.dimBoostText = "Req: " + player.ad.dimBoostReq + " 8th dimensions." - - if (player.ad.dimBoostPause.gt(0)) - { - if (!hasUpgrade("bi", 112)) layers.ad.dimBoostReset() - } - player.ad.dimBoostPause = player.ad.dimBoostPause.sub(1) - - //galaxy - - player.ad.galaxyDimCost = new Decimal(7) - player.ad.galaxyReq = player.ad.galaxyAmount.add(1).mul(4) - - player.ad.galaxyBase = new Decimal(0.01) - player.ad.galaxyBase = player.ad.galaxyBase.mul(player.ca.galaxyDustEffect) - player.ad.galaxyEffect = player.ad.galaxyBase.mul(player.ad.galaxyAmount.add(player.ca.replicantiGalaxies)) - - player.ad.galaxyText = "Req: " + player.ad.galaxyReq + " 8th dimensions." - - if (player.ad.galaxyPause.gt(0)) - { - if (!hasUpgrade("bi", 112)) layers.ad.galaxyReset() - } - player.ad.galaxyPause = player.ad.galaxyPause.sub(1) - - - player.ad.galaxyLimit = new Decimal(16) - if (player.ad.galaxyAmount.gt(player.ad.galaxyLimit)) - { - player.ad.galaxyAmount = player.ad.galaxyLimit - } - - - if (!hasChallenge("ip", 18)) player.ad.extraDimsGalaxiesLocked = true - if (hasChallenge("ip", 18)) player.ad.extraDimsGalaxiesLocked = false - if (!hasUpgrade("ad", 11)) - { + if (!hasUpgrade("ad", 11)) { player.ad.antimatter = new Decimal(0) } player.ad.revCrunchPause = player.ad.revCrunchPause.sub(1) - if (player.ad.revCrunchPause.gt(0)) - { + if (player.ad.revCrunchPause.gt(0)) { layers.revc.reverseCrunch(); } }, @@ -258,7 +146,7 @@ 1: { title() { return "

Return" }, canClick() { return true }, - unlocked() { return true }, + unlocked() { return options.newMenu == false }, onClick() { player.tab = "in" }, @@ -266,19 +154,19 @@ }, 2: { title() { return "Buy Max On" }, - canClick() { return player.buyMax == false }, + canClick() { return player.ad.dimMax == false }, unlocked() { return true }, onClick() { - player.buyMax = true + player.ad.dimMax = true }, style: { width: '75px', "min-height": '50px', } }, 3: { title() { return "Buy Max Off" }, - canClick() { return player.buyMax == true }, + canClick() { return player.ad.dimMax == true }, unlocked() { return true }, onClick() { - player.buyMax = false + player.ad.dimMax = false }, style: { width: '75px', "min-height": '50px', } }, @@ -287,7 +175,7 @@ canClick() { return true }, unlocked() { return true }, onClick() { - player.buyMax = true + player.ad.dimMax = true buyBuyable("ad", 1) buyBuyable("ad", 11) buyBuyable("ad", 12) @@ -300,26 +188,6 @@ }, style: { width: '125px', "min-height": '50px', } }, - 11: { - title() { return "

" + formatWhole(player.ad.dimBoostAmount) + " Dimension Boosts

" + player.ad.dimBoostText + "
x" + format(player.ad.dimBoostEffect) + " to dimensions." }, - canClick() { return player.ad.extraDimsGalaxiesLocked ? player.ad.dimensionAmounts[player.ad.dimBoostDimCost].gte(player.ad.dimBoostReq) && (player.ad.dimBoostAmount.lt(6)) : player.ad.dimensionAmounts[player.ad.dimBoostDimCost].gte(player.ad.dimBoostReq)}, - unlocked() { return true }, - onClick() { - player.ad.dimBoostAmount = player.ad.dimBoostAmount.add(1) - if (!hasUpgrade("bi", 25)) player.ad.dimBoostPause = new Decimal(6) - }, - style: { width: '300px', "min-height": '75px' }, - }, - 12: { - title() { return "

" + formatWhole(player.ad.galaxyAmount) + " Antimatter Galaxies

" + player.ad.galaxyText + " +" + format(player.ad.galaxyEffect) + " to tickspeed base." }, - canClick() { return player.ad.extraDimsGalaxiesLocked ? player.ad.dimensionAmounts[player.ad.galaxyDimCost].gte(player.ad.galaxyReq) && (player.ad.galaxyAmount.lt(1)) && !player.ad.galaxyAmount.gte(player.ad.galaxyLimit) : player.ad.dimensionAmounts[player.ad.galaxyDimCost].gte(player.ad.galaxyReq) && !player.ad.galaxyAmount.gte(player.ad.galaxyLimit) }, - unlocked() { return true }, - onClick() { - player.ad.galaxyAmount = player.ad.galaxyAmount.add(1) - if (!hasUpgrade("bi", 25)) player.ad.galaxyPause = new Decimal(6) - }, - style: { width: '300px', "min-height": '75px' }, - }, 13: { title() { return "

REVERSE BREAK INFINITY" }, canClick() { return true }, @@ -358,7 +226,7 @@ for (let i = 0; i < player.ad.dimensionAmounts.length; i++) { player.ad.dimensionAmounts[i] = new Decimal(0) - player.ad.dimensionsPurchased[i] = new Decimal(0) + player.ad.buyables[11+i] = new Decimal(0) } }, @@ -371,15 +239,10 @@ for (let i = 0; i < player.ad.dimensionAmounts.length; i++) { player.ad.dimensionAmounts[i] = new Decimal(0) - player.ad.dimensionsPurchased[i] = new Decimal(0) + player.ad.buyables[11+i] = new Decimal(0) } - player.ad.dimensionsUnlocked[4] = false - player.ad.dimensionsUnlocked[5] = false - player.ad.dimensionsUnlocked[6] = false - player.ad.dimensionsUnlocked[7] = false - - player.ad.dimBoostAmount = new Decimal(0) + player.ad.buyables[2] = new Decimal(0) }, bars: { }, @@ -523,262 +386,353 @@ }, buyables: { 1: { - cost(x) { return new Decimal(10).pow(x || getBuyableAmount(this.layer, this.id)).mul(1000) }, - effect(x) { return new Decimal.pow(player.ad.tickspeedMult, getBuyableAmount(this.layer, this.id)) }, + costBase() { return new Decimal(1000) }, + costGrowth() { return new Decimal(10) }, + currency() { return player.ad.antimatter}, + pay(amt) { player.ad.antimatter = this.currency().sub(amt) }, + effect(x) { return player.ad.tickspeedMult.pow(getBuyableAmount(this.layer, this.id)) }, unlocked() { return true }, - canAfford() { return player.ad.antimatter.gte(this.cost()) }, + cost(x) { return this.costGrowth().pow(x || getBuyableAmount(this.layer, this.id)).mul(this.costBase()) }, + canAfford() { return this.currency().gte(this.cost()) }, title() { return format(buyableEffect("ad", 1)) + "x to dimensions (x" + format(player.ad.tickspeedMult, 3) + ".)
Tickspeed Cost: " + format(tmp[this.layer].buyables[this.id].cost) + " AM." }, buy() { - let base = new Decimal(1000) - let growth = 10 - if (player.buyMax == false && !hasUpgrade("bi", 105)) - { - let buyonecost = new Decimal(growth).pow(getBuyableAmount(this.layer, this.id)).mul(base) - if (!hasUpgrade("bi", 105)) player.ad.antimatter = player.ad.antimatter.sub(buyonecost) - setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(1)) - } else - { + if (player.ad.dimMax == false && !hasUpgrade("bi", 105)) { + let buyonecost = new Decimal(this.costGrowth()).pow(getBuyableAmount(this.layer, this.id)).mul(this.costBase()) + this.pay(buyonecost) - let max = Decimal.affordGeometricSeries(player.ad.antimatter, base, growth, getBuyableAmount(this.layer, this.id)) - let cost = Decimal.sumGeometricSeries(max, base, growth, getBuyableAmount(this.layer, this.id)) - if (!hasUpgrade("bi", 105)) player.ad.antimatter = player.ad.antimatter.sub(cost) + setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(1)) + } else { + let max = Decimal.affordGeometricSeries(this.currency(), this.costBase(), this.costGrowth(), getBuyableAmount(this.layer, this.id)) + let cost = Decimal.sumGeometricSeries(max, this.costBase(), this.costGrowth(), getBuyableAmount(this.layer, this.id)) + if (!hasUpgrade("bi", 105)) this.pay(cost) - setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(max)) - } + setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(max)) + } }, style: { width: '400px', height: '50px', } }, + 2: { + purchaseLimit() { return !hasChallenge("ip", 18) ? new Decimal(6) : new Decimal(Infinity) }, + currency() { + if (getBuyableAmount(this.layer, this.id).eq(0)) { + return player.ad.dimensionAmounts[3] + } else if (getBuyableAmount(this.layer, this.id).eq(1)) { + return player.ad.dimensionAmounts[4] + } else if (getBuyableAmount(this.layer, this.id).eq(2)) { + return player.ad.dimensionAmounts[5] + } else if (getBuyableAmount(this.layer, this.id).eq(3)) { + return player.ad.dimensionAmounts[6] + } else { + return player.ad.dimensionAmounts[7] + } + }, + effect(x) { + let mult = new Decimal(2).mul(buyableEffect("ca", 21)) + if (hasUpgrade("ev2", 11)) mult = mult.mul(upgradeEffect("ev2", 11)) + return mult.pow(getBuyableAmount(this.layer, this.id)) + }, + unlocked() { return true }, + cost(x) { + if (getBuyableAmount(this.layer, this.id).lt(4)) { + return new Decimal(2) + } else { + return getBuyableAmount(this.layer, this.id).sub(4).mul(2).add(2) + } + }, + canAfford() { return this.currency().gte(this.cost()) }, + title() { + if (hasChallenge("ip", 18)) { + return "

" + getBuyableAmount(this.layer, this.id) + " Dimension Boosts" + } else { + return "

" + getBuyableAmount(this.layer, this.id) + "/" + this.purchaseLimit() + " Dimension Boosts" + } + }, + display() { + let dimtext = "" + if (getBuyableAmount(this.layer, this.id).eq(0)) { + dimtext = " 4th dimensions." + } else if (getBuyableAmount(this.layer, this.id).eq(1)) { + dimtext = " 5th dimensions." + } else if (getBuyableAmount(this.layer, this.id).eq(2)) { + dimtext = " 6th dimensions." + } else if (getBuyableAmount(this.layer, this.id).eq(3)) { + dimtext = " 7th dimensions." + } else { + dimtext = " 8th dimensions." + } + return "

Which gives x" + format(tmp[this.layer].buyables[this.id].effect) + " to dimensions.\n\ + Req: " + format(tmp[this.layer].buyables[this.id].cost) + dimtext + }, + buy() { + if (!hasUpgrade("bi", 112)) layers.ad.dimBoostReset() + + setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(1)) + }, + style: { width: '300px', height: '75px', } + }, + 3: { + costBase() { return new Decimal(1) }, + costMult() { return new Decimal(4) }, + effectBase() {return new Decimal(0.01)}, + purchaseLimit() { return !hasChallenge("ip", 18) ? new Decimal(1) : new Decimal(16) }, + currency() { return player.ad.dimensionAmounts[7]}, + effect(x) { return this.effectBase().mul(player.ca.galaxyDustEffect).mul(getBuyableAmount(this.layer, this.id).add(player.ca.replicantiGalaxies)) }, + unlocked() { return true }, + cost(x) { return (x || getBuyableAmount(this.layer, this.id)).add(this.costBase()).mul(this.costMult())}, + canAfford() { return this.currency().gte(this.cost()) }, + title() { + return "

" + getBuyableAmount(this.layer, this.id) + "/" + this.purchaseLimit() + " Antimatter Galaxies" + }, + display() { + return "

Which gives +" + format(tmp[this.layer].buyables[this.id].effect) + " to tickspeed base.\n\ + Req: " + format(tmp[this.layer].buyables[this.id].cost) + " 8th dimensions." + }, + buy() { + if (!hasUpgrade("bi", 112)) layers.ad.galaxyReset() + + setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(1)) + }, + style: { width: '300px', height: '75px', } + }, 11: { - cost(x) { return player.ad.dimensionCosts[0] }, - unlocked() { return player.ad.dimensionsUnlocked[0] }, - canAfford() { return player.ad.antimatter.gte(this.cost()) }, + costBase() { return new Decimal(10) }, + costGrowth() { return new Decimal(1e3) }, + currency() { return player.ad.antimatter}, + pay(amt) { player.ad.antimatter = this.currency().sub(amt) }, + effect(x) { return new Decimal(2).pow(getBuyableAmount(this.layer, this.id)) }, + unlocked() { return true }, + cost(x) { return this.costGrowth().pow(x || getBuyableAmount(this.layer, this.id)).mul(this.costBase()) }, + canAfford() { return this.currency().gte(this.cost()) }, title() { return "Cost: " + format(tmp[this.layer].buyables[this.id].cost) + " AM" }, buy() { - let base = new Decimal(10) - let growth = 1e3 - if (player.buyMax == false && !hasUpgrade("bi", 105)) - { - let buyonecost = new Decimal(growth).pow(player.ad.dimensionsPurchased[0]).mul(base) - if (!hasUpgrade("bi", 105)) player.ad.antimatter = player.ad.antimatter.sub(buyonecost) - player.ad.dimensionsPurchased[0] = player.ad.dimensionsPurchased[0].add(1) - player.ad.dimensionAmounts[0] = player.ad.dimensionAmounts[0].add(1) - } else - { + if (player.ad.dimMax == false && !hasUpgrade("bi", 105)) { + let buyonecost = new Decimal(this.costGrowth()).pow(getBuyableAmount(this.layer, this.id)).mul(this.costBase()) + this.pay(buyonecost) - let max = Decimal.affordGeometricSeries(player.ad.antimatter, base, growth, player.ad.dimensionsPurchased[0]) - let cost = Decimal.sumGeometricSeries(max, base, growth, player.ad.dimensionsPurchased[0]) - if (!hasUpgrade("bi", 105)) player.ad.antimatter = player.ad.antimatter.sub(cost) + setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(1)) + player.ad.dimensionAmounts[0] = player.ad.dimensionAmounts[0].add(1) + } else { + let max = Decimal.affordGeometricSeries(this.currency(), this.costBase(), this.costGrowth(), getBuyableAmount(this.layer, this.id)) + let cost = Decimal.sumGeometricSeries(max, this.costBase(), this.costGrowth(), getBuyableAmount(this.layer, this.id)) + if (!hasUpgrade("bi", 105)) this.pay(cost) - player.ad.dimensionsPurchased[0] = player.ad.dimensionsPurchased[0].add(max) - player.ad.dimensionAmounts[0] = player.ad.dimensionAmounts[0].add(max) - } + setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(max)) + player.ad.dimensionAmounts[0] = player.ad.dimensionAmounts[0].add(max) + } }, style: { width: '175px', height: '50px', } }, 12: { - cost(x) { return player.ad.dimensionCosts[1] }, - unlocked() { return player.ad.dimensionsUnlocked[1] }, - canAfford() { return player.ad.antimatter.gte(this.cost()) }, + costBase() { return new Decimal(100) }, + costGrowth() { return new Decimal(1e4) }, + currency() { return player.ad.antimatter}, + pay(amt) { player.ad.antimatter = this.currency().sub(amt) }, + effect(x) { return new Decimal(2).pow(getBuyableAmount(this.layer, this.id)) }, + unlocked() { return true }, + cost(x) { return this.costGrowth().pow(x || getBuyableAmount(this.layer, this.id)).mul(this.costBase()) }, + canAfford() { return this.currency().gte(this.cost()) }, title() { return "Cost: " + format(tmp[this.layer].buyables[this.id].cost) + " AM" }, buy() { - let base = new Decimal(100) - let growth = 1e4 - if (player.buyMax == false && !hasUpgrade("bi", 105)) - { - let buyonecost = new Decimal(growth).pow(player.ad.dimensionsPurchased[1]).mul(base) - if (!hasUpgrade("bi", 105)) player.ad.antimatter = player.ad.antimatter.sub(buyonecost) - player.ad.dimensionsPurchased[1] = player.ad.dimensionsPurchased[1].add(1) - player.ad.dimensionAmounts[1] = player.ad.dimensionAmounts[1].add(1) - } else - { + if (player.ad.dimMax == false && !hasUpgrade("bi", 105)) { + let buyonecost = new Decimal(this.costGrowth()).pow(getBuyableAmount(this.layer, this.id)).mul(this.costBase()) + this.pay(buyonecost) - let max = Decimal.affordGeometricSeries(player.ad.antimatter, base, growth, player.ad.dimensionsPurchased[1]) - let cost = Decimal.sumGeometricSeries(max, base, growth, player.ad.dimensionsPurchased[1]) - if (!hasUpgrade("bi", 105)) player.ad.antimatter = player.ad.antimatter.sub(cost) + setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(1)) + player.ad.dimensionAmounts[1] = player.ad.dimensionAmounts[1].add(1) + } else { + let max = Decimal.affordGeometricSeries(this.currency(), this.costBase(), this.costGrowth(), getBuyableAmount(this.layer, this.id)) + let cost = Decimal.sumGeometricSeries(max, this.costBase(), this.costGrowth(), getBuyableAmount(this.layer, this.id)) + if (!hasUpgrade("bi", 105)) this.pay(cost) - player.ad.dimensionsPurchased[1] = player.ad.dimensionsPurchased[1].add(max) - player.ad.dimensionAmounts[1] = player.ad.dimensionAmounts[1].add(max) - } + setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(max)) + player.ad.dimensionAmounts[1] = player.ad.dimensionAmounts[1].add(max) + } }, style: { width: '175px', height: '50px', } }, 13: { - cost(x) { return player.ad.dimensionCosts[2] }, - unlocked() { return player.ad.dimensionsUnlocked[2] }, - canAfford() { return player.ad.antimatter.gte(this.cost()) }, + costBase() { return new Decimal(1e4) }, + costGrowth() { return new Decimal(1e5) }, + currency() { return player.ad.antimatter}, + pay(amt) { player.ad.antimatter = this.currency().sub(amt) }, + effect(x) { return new Decimal(2).pow(getBuyableAmount(this.layer, this.id)) }, + unlocked() { return true }, + cost(x) { return this.costGrowth().pow(x || getBuyableAmount(this.layer, this.id)).mul(this.costBase()) }, + canAfford() { return this.currency().gte(this.cost()) }, title() { return "Cost: " + format(tmp[this.layer].buyables[this.id].cost) + " AM" }, buy() { - let base = new Decimal(1e4) - let growth = 1e5 - if (player.buyMax == false && !hasUpgrade("bi", 105)) - { - let buyonecost = new Decimal(growth).pow(player.ad.dimensionsPurchased[2]).mul(base) - if (!hasUpgrade("bi", 105)) player.ad.antimatter = player.ad.antimatter.sub(buyonecost) - player.ad.dimensionsPurchased[2] = player.ad.dimensionsPurchased[2].add(1) - player.ad.dimensionAmounts[2] = player.ad.dimensionAmounts[2].add(1) - } else - { + if (player.ad.dimMax == false && !hasUpgrade("bi", 105)) { + let buyonecost = new Decimal(this.costGrowth()).pow(getBuyableAmount(this.layer, this.id)).mul(this.costBase()) + this.pay(buyonecost) - let max = Decimal.affordGeometricSeries(player.ad.antimatter, base, growth, player.ad.dimensionsPurchased[2]) - let cost = Decimal.sumGeometricSeries(max, base, growth, player.ad.dimensionsPurchased[2]) - if (!hasUpgrade("bi", 105)) player.ad.antimatter = player.ad.antimatter.sub(cost) + setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(1)) + player.ad.dimensionAmounts[2] = player.ad.dimensionAmounts[2].add(1) + } else { + let max = Decimal.affordGeometricSeries(this.currency(), this.costBase(), this.costGrowth(), getBuyableAmount(this.layer, this.id)) + let cost = Decimal.sumGeometricSeries(max, this.costBase(), this.costGrowth(), getBuyableAmount(this.layer, this.id)) + if (!hasUpgrade("bi", 105)) this.pay(cost) - player.ad.dimensionsPurchased[2] = player.ad.dimensionsPurchased[2].add(max) - player.ad.dimensionAmounts[2] = player.ad.dimensionAmounts[2].add(max) - } + setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(max)) + player.ad.dimensionAmounts[2] = player.ad.dimensionAmounts[2].add(max) + } }, style: { width: '175px', height: '50px', } }, 14: { - cost(x) { return player.ad.dimensionCosts[3] }, - unlocked() { return player.ad.dimensionsUnlocked[3] }, - canAfford() { return player.ad.antimatter.gte(this.cost()) }, + costBase() { return new Decimal(1e6) }, + costGrowth() { return new Decimal(1e6) }, + currency() { return player.ad.antimatter}, + pay(amt) { player.ad.antimatter = this.currency().sub(amt) }, + effect(x) { return new Decimal(2).pow(getBuyableAmount(this.layer, this.id)) }, + unlocked() { return true }, + cost(x) { return this.costGrowth().pow(x || getBuyableAmount(this.layer, this.id)).mul(this.costBase()) }, + canAfford() { return this.currency().gte(this.cost()) }, title() { return "Cost: " + format(tmp[this.layer].buyables[this.id].cost) + " AM" }, buy() { - let base = new Decimal(1e6) - let growth = 1e6 - if (player.buyMax == false && !hasUpgrade("bi", 105)) - { - let buyonecost = new Decimal(growth).pow(player.ad.dimensionsPurchased[3]).mul(base) - if (!hasUpgrade("bi", 105)) player.ad.antimatter = player.ad.antimatter.sub(buyonecost) - player.ad.dimensionsPurchased[3] = player.ad.dimensionsPurchased[3].add(1) - player.ad.dimensionAmounts[3] = player.ad.dimensionAmounts[3].add(1) - } else - { + if (player.ad.dimMax == false && !hasUpgrade("bi", 105)) { + let buyonecost = new Decimal(this.costGrowth()).pow(getBuyableAmount(this.layer, this.id)).mul(this.costBase()) + this.pay(buyonecost) - let max = Decimal.affordGeometricSeries(player.ad.antimatter, base, growth, player.ad.dimensionsPurchased[3]) - let cost = Decimal.sumGeometricSeries(max, base, growth, player.ad.dimensionsPurchased[3]) - if (!hasUpgrade("bi", 105)) player.ad.antimatter = player.ad.antimatter.sub(cost) + setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(1)) + player.ad.dimensionAmounts[3] = player.ad.dimensionAmounts[3].add(1) + } else { + let max = Decimal.affordGeometricSeries(this.currency(), this.costBase(), this.costGrowth(), getBuyableAmount(this.layer, this.id)) + let cost = Decimal.sumGeometricSeries(max, this.costBase(), this.costGrowth(), getBuyableAmount(this.layer, this.id)) + if (!hasUpgrade("bi", 105)) this.pay(cost) - player.ad.dimensionsPurchased[3] = player.ad.dimensionsPurchased[3].add(max) - player.ad.dimensionAmounts[3] = player.ad.dimensionAmounts[3].add(max) - } + setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(max)) + player.ad.dimensionAmounts[3] = player.ad.dimensionAmounts[3].add(max) + } }, style: { width: '175px', height: '50px', } }, 15: { - cost(x) { return player.ad.dimensionCosts[4] }, - unlocked() { return player.ad.dimensionsUnlocked[4] }, - canAfford() { return player.ad.antimatter.gte(this.cost()) }, + costBase() { return new Decimal(1e9) }, + costGrowth() { return new Decimal(1e8) }, + currency() { return player.ad.antimatter}, + pay(amt) { player.ad.antimatter = this.currency().sub(amt) }, + effect(x) { return new Decimal(2).pow(getBuyableAmount(this.layer, this.id)) }, + unlocked() { return getBuyableAmount("ad", 2).gte(1) }, + cost(x) { return this.costGrowth().pow(x || getBuyableAmount(this.layer, this.id)).mul(this.costBase()) }, + canAfford() { return this.currency().gte(this.cost()) }, title() { return "Cost: " + format(tmp[this.layer].buyables[this.id].cost) + " AM" }, buy() { - let base = new Decimal(1e9) - let growth = 1e8 - if (player.buyMax == false && !hasUpgrade("bi", 105)) - { - let buyonecost = new Decimal(growth).pow(player.ad.dimensionsPurchased[4]).mul(base) - if (!hasUpgrade("bi", 105)) player.ad.antimatter = player.ad.antimatter.sub(buyonecost) - player.ad.dimensionsPurchased[4] = player.ad.dimensionsPurchased[4].add(1) - player.ad.dimensionAmounts[4] = player.ad.dimensionAmounts[4].add(1) - } else - { + if (player.ad.dimMax == false && !hasUpgrade("bi", 105)) { + let buyonecost = new Decimal(this.costGrowth()).pow(getBuyableAmount(this.layer, this.id)).mul(this.costBase()) + this.pay(buyonecost) - let max = Decimal.affordGeometricSeries(player.ad.antimatter, base, growth, player.ad.dimensionsPurchased[4]) - let cost = Decimal.sumGeometricSeries(max, base, growth, player.ad.dimensionsPurchased[4]) - if (!hasUpgrade("bi", 105)) player.ad.antimatter = player.ad.antimatter.sub(cost) + setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(1)) + player.ad.dimensionAmounts[4] = player.ad.dimensionAmounts[4].add(1) + } else { + let max = Decimal.affordGeometricSeries(this.currency(), this.costBase(), this.costGrowth(), getBuyableAmount(this.layer, this.id)) + let cost = Decimal.sumGeometricSeries(max, this.costBase(), this.costGrowth(), getBuyableAmount(this.layer, this.id)) + if (!hasUpgrade("bi", 105)) this.pay(cost) - player.ad.dimensionsPurchased[4] = player.ad.dimensionsPurchased[4].add(max) - player.ad.dimensionAmounts[4] = player.ad.dimensionAmounts[4].add(max) - } + setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(max)) + player.ad.dimensionAmounts[4] = player.ad.dimensionAmounts[4].add(max) + } }, style: { width: '175px', height: '50px', } }, 16: { - cost(x) { return player.ad.dimensionCosts[5] }, - unlocked() { return player.ad.dimensionsUnlocked[5] }, - canAfford() { return player.ad.antimatter.gte(this.cost()) }, + costBase() { return new Decimal(1e13) }, + costGrowth() { return new Decimal(1e10) }, + currency() { return player.ad.antimatter}, + pay(amt) { player.ad.antimatter = this.currency().sub(amt) }, + effect(x) { return new Decimal(2).pow(getBuyableAmount(this.layer, this.id)) }, + unlocked() { return getBuyableAmount("ad", 2).gte(2) }, + cost(x) { return this.costGrowth().pow(x || getBuyableAmount(this.layer, this.id)).mul(this.costBase()) }, + canAfford() { return this.currency().gte(this.cost()) }, title() { return "Cost: " + format(tmp[this.layer].buyables[this.id].cost) + " AM" }, buy() { - let base = new Decimal(1e13) - let growth = 1e10 - if (player.buyMax == false && !hasUpgrade("bi", 105)) - { - let buyonecost = new Decimal(growth).pow(player.ad.dimensionsPurchased[5]).mul(base) - if (!hasUpgrade("bi", 105)) player.ad.antimatter = player.ad.antimatter.sub(buyonecost) - player.ad.dimensionsPurchased[5] = player.ad.dimensionsPurchased[5].add(1) - player.ad.dimensionAmounts[5] = player.ad.dimensionAmounts[5].add(1) - } else - { + if (player.ad.dimMax == false && !hasUpgrade("bi", 105)) { + let buyonecost = new Decimal(this.costGrowth()).pow(getBuyableAmount(this.layer, this.id)).mul(this.costBase()) + this.pay(buyonecost) - let max = Decimal.affordGeometricSeries(player.ad.antimatter, base, growth, player.ad.dimensionsPurchased[5]) - let cost = Decimal.sumGeometricSeries(max, base, growth, player.ad.dimensionsPurchased[5]) - if (!hasUpgrade("bi", 105)) player.ad.antimatter = player.ad.antimatter.sub(cost) + setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(1)) + player.ad.dimensionAmounts[5] = player.ad.dimensionAmounts[5].add(1) + } else { + let max = Decimal.affordGeometricSeries(this.currency(), this.costBase(), this.costGrowth(), getBuyableAmount(this.layer, this.id)) + let cost = Decimal.sumGeometricSeries(max, this.costBase(), this.costGrowth(), getBuyableAmount(this.layer, this.id)) + if (!hasUpgrade("bi", 105)) this.pay(cost) - player.ad.dimensionsPurchased[5] = player.ad.dimensionsPurchased[5].add(max) - player.ad.dimensionAmounts[5] = player.ad.dimensionAmounts[5].add(max) - } + setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(max)) + player.ad.dimensionAmounts[5] = player.ad.dimensionAmounts[5].add(max) + } }, style: { width: '175px', height: '50px', } }, 17: { - cost(x) { return player.ad.dimensionCosts[6] }, - unlocked() { return player.ad.dimensionsUnlocked[6] }, - canAfford() { return player.ad.antimatter.gte(this.cost()) }, + costBase() { return new Decimal(1e18) }, + costGrowth() { return new Decimal(1e12) }, + currency() { return player.ad.antimatter}, + pay(amt) { player.ad.antimatter = this.currency().sub(amt) }, + effect(x) { return new Decimal(2).pow(getBuyableAmount(this.layer, this.id)) }, + unlocked() { return getBuyableAmount("ad", 2).gte(3) }, + cost(x) { return this.costGrowth().pow(x || getBuyableAmount(this.layer, this.id)).mul(this.costBase()) }, + canAfford() { return this.currency().gte(this.cost()) }, title() { return "Cost: " + format(tmp[this.layer].buyables[this.id].cost) + " AM" }, buy() { - let base = new Decimal(1e18) - let growth = 1e12 - if (player.buyMax == false && !hasUpgrade("bi", 105)) - { - let buyonecost = new Decimal(growth).pow(player.ad.dimensionsPurchased[6]).mul(base) - if (!hasUpgrade("bi", 105)) player.ad.antimatter = player.ad.antimatter.sub(buyonecost) - player.ad.dimensionsPurchased[6] = player.ad.dimensionsPurchased[6].add(1) - player.ad.dimensionAmounts[6] = player.ad.dimensionAmounts[6].add(1) - } else - { + if (player.ad.dimMax == false && !hasUpgrade("bi", 105)) { + let buyonecost = new Decimal(this.costGrowth()).pow(getBuyableAmount(this.layer, this.id)).mul(this.costBase()) + this.pay(buyonecost) - let max = Decimal.affordGeometricSeries(player.ad.antimatter, base, growth, player.ad.dimensionsPurchased[6]) - let cost = Decimal.sumGeometricSeries(max, base, growth, player.ad.dimensionsPurchased[6]) - if (!hasUpgrade("bi", 105)) player.ad.antimatter = player.ad.antimatter.sub(cost) + setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(1)) + player.ad.dimensionAmounts[6] = player.ad.dimensionAmounts[6].add(1) + } else { + let max = Decimal.affordGeometricSeries(this.currency(), this.costBase(), this.costGrowth(), getBuyableAmount(this.layer, this.id)) + let cost = Decimal.sumGeometricSeries(max, this.costBase(), this.costGrowth(), getBuyableAmount(this.layer, this.id)) + if (!hasUpgrade("bi", 105)) this.pay(cost) - player.ad.dimensionsPurchased[6] = player.ad.dimensionsPurchased[6].add(max) - player.ad.dimensionAmounts[6] = player.ad.dimensionAmounts[6].add(max) - } + setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(max)) + player.ad.dimensionAmounts[6] = player.ad.dimensionAmounts[6].add(max) + } }, style: { width: '175px', height: '50px', } }, 18: { - cost(x) { return player.ad.dimensionCosts[7] }, - unlocked() { return player.ad.dimensionsUnlocked[7] }, - canAfford() { return player.ad.antimatter.gte(this.cost()) }, + costBase() { return new Decimal(1e24) }, + costGrowth() { return new Decimal(1e15) }, + currency() { return player.ad.antimatter}, + pay(amt) { player.ad.antimatter = this.currency().sub(amt) }, + effect(x) { return new Decimal(2).pow(getBuyableAmount(this.layer, this.id)) }, + unlocked() { return getBuyableAmount("ad", 2).gte(4) }, + cost(x) { return this.costGrowth().pow(x || getBuyableAmount(this.layer, this.id)).mul(this.costBase()) }, + canAfford() { return this.currency().gte(this.cost()) }, title() { return "Cost: " + format(tmp[this.layer].buyables[this.id].cost) + " AM" }, buy() { - let base = new Decimal(1e24) - let growth = 1e15 - if (player.buyMax == false && !hasUpgrade("bi", 105)) - { - let buyonecost = new Decimal(growth).pow(player.ad.dimensionsPurchased[7]).mul(base) - if (!hasUpgrade("bi", 105)) player.ad.antimatter = player.ad.antimatter.sub(buyonecost) - player.ad.dimensionsPurchased[7] = player.ad.dimensionsPurchased[7].add(1) - player.ad.dimensionAmounts[7] = player.ad.dimensionAmounts[7].add(1) - } else - { + if (player.ad.dimMax == false && !hasUpgrade("bi", 105)) { + let buyonecost = new Decimal(this.costGrowth()).pow(getBuyableAmount(this.layer, this.id)).mul(this.costBase()) + this.pay(buyonecost) - let max = Decimal.affordGeometricSeries(player.ad.antimatter, base, growth, player.ad.dimensionsPurchased[7]) - let cost = Decimal.sumGeometricSeries(max, base, growth, player.ad.dimensionsPurchased[7]) - if (!hasUpgrade("bi", 105)) player.ad.antimatter = player.ad.antimatter.sub(cost) + setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(1)) + player.ad.dimensionAmounts[7] = player.ad.dimensionAmounts[7].add(1) + } else { + let max = Decimal.affordGeometricSeries(this.currency(), this.costBase(), this.costGrowth(), getBuyableAmount(this.layer, this.id)) + let cost = Decimal.sumGeometricSeries(max, this.costBase(), this.costGrowth(), getBuyableAmount(this.layer, this.id)) + if (!hasUpgrade("bi", 105)) this.pay(cost) - player.ad.dimensionsPurchased[7] = player.ad.dimensionsPurchased[7].add(max) - player.ad.dimensionAmounts[7] = player.ad.dimensionAmounts[7].add(max) - } + setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(max)) + player.ad.dimensionAmounts[7] = player.ad.dimensionAmounts[7].add(max) + } }, style: { width: '175px', height: '50px', } }, @@ -811,22 +765,19 @@ ["blank", "25px"], ["row", [["buyable", 1], ["clickable", 2], ["clickable", 3], ["clickable", 4]]], ["blank", "25px"], - ["row", [["raw-html", function () { return player.ad.dimensionsUnlocked[0] ? player.ad.dimensionText[0] + "    " : ""}, { "color": "white", "font-size": "24px", "font-family": "monospace" }], ["buyable", 11]]], - ["row", [["raw-html", function () { return player.ad.dimensionsUnlocked[1] ? player.ad.dimensionText[1] + "    " : ""}, { "color": "white", "font-size": "24px", "font-family": "monospace" }], ["buyable", 12]]], - ["row", [["raw-html", function () { return player.ad.dimensionsUnlocked[2] ? player.ad.dimensionText[2] + "    " : ""}, { "color": "white", "font-size": "24px", "font-family": "monospace" }], ["buyable", 13]]], - ["row", [["raw-html", function () { return player.ad.dimensionsUnlocked[3] ? player.ad.dimensionText[3] + "    " : ""}, { "color": "white", "font-size": "24px", "font-family": "monospace" }], ["buyable", 14]]], - ["row", [["raw-html", function () { return player.ad.dimensionsUnlocked[4] ? player.ad.dimensionText[4] + "    " : ""}, { "color": "white", "font-size": "24px", "font-family": "monospace" }], ["buyable", 15]]], - ["row", [["raw-html", function () { return player.ad.dimensionsUnlocked[5] ? player.ad.dimensionText[5] + "    " : ""}, { "color": "white", "font-size": "24px", "font-family": "monospace" }], ["buyable", 16]]], - ["row", [["raw-html", function () { return player.ad.dimensionsUnlocked[6] ? player.ad.dimensionText[6] + "    " : ""}, { "color": "white", "font-size": "24px", "font-family": "monospace" }], ["buyable", 17]]], - ["row", [["raw-html", function () { return player.ad.dimensionsUnlocked[7] ? player.ad.dimensionText[7] + "    " : ""}, { "color": "white", "font-size": "24px", "font-family": "monospace" }], ["buyable", 18]]], - ["blank", "25px"], - ["row", [["clickable", 11], ["clickable", 12]]], + ["row", [["raw-html", function () { return "1st dimension (" + format(buyableEffect("ad", "11")) + "x): " + format(player.ad.dimensionAmounts[0]) + " (+" + format(player.ad.dimensionsPerSecond[0]) + "/s)    "}, { "color": "white", "font-size": "24px", "font-family": "monospace" }], ["buyable", 11]]], + ["row", [["raw-html", function () { return "2nd dimension (" + format(buyableEffect("ad", "12")) + "x): " + format(player.ad.dimensionAmounts[1]) + " (+" + format(player.ad.dimensionsPerSecond[1]) + "/s)    "}, { "color": "white", "font-size": "24px", "font-family": "monospace" }], ["buyable", 12]]], + ["row", [["raw-html", function () { return "3rd dimension (" + format(buyableEffect("ad", "13")) + "x): " + format(player.ad.dimensionAmounts[2]) + " (+" + format(player.ad.dimensionsPerSecond[2]) + "/s)    "}, { "color": "white", "font-size": "24px", "font-family": "monospace" }], ["buyable", 13]]], + ["row", [["raw-html", function () { return "4th dimension (" + format(buyableEffect("ad", "14")) + "x): " + format(player.ad.dimensionAmounts[3]) + " (+" + format(player.ad.dimensionsPerSecond[3]) + "/s)    "}, { "color": "white", "font-size": "24px", "font-family": "monospace" }], ["buyable", 14]]], + ["row", [["raw-html", function () { return getBuyableAmount("ad", 2).gte(1) ? "5th dimension (" + format(buyableEffect("ad", "15")) + "x): " + format(player.ad.dimensionAmounts[4]) + " (+" + format(player.ad.dimensionsPerSecond[4]) + "/s)    " : ""}, { "color": "white", "font-size": "24px", "font-family": "monospace" }], ["buyable", 15]]], + ["row", [["raw-html", function () { return getBuyableAmount("ad", 2).gte(2) ? "6th dimension (" + format(buyableEffect("ad", "16")) + "x): " + format(player.ad.dimensionAmounts[5]) + " (+" + format(player.ad.dimensionsPerSecond[5]) + "/s)    " : ""}, { "color": "white", "font-size": "24px", "font-family": "monospace" }], ["buyable", 16]]], + ["row", [["raw-html", function () { return getBuyableAmount("ad", 2).gte(3) ? "7th dimension (" + format(buyableEffect("ad", "17")) + "x): " + format(player.ad.dimensionAmounts[6]) + " (+" + format(player.ad.dimensionsPerSecond[6]) + "/s)    " : ""}, { "color": "white", "font-size": "24px", "font-family": "monospace" }], ["buyable", 17]]], + ["row", [["raw-html", function () { return getBuyableAmount("ad", 2).gte(4) ? "8th dimension (" + format(buyableEffect("ad", "18")) + "x): " + format(player.ad.dimensionAmounts[7]) + "    " : ""}, { "color": "white", "font-size": "24px", "font-family": "monospace" }], ["buyable", 18]]], ["blank", "25px"], - ["raw-html", function () { return "Antimatter galaxy limit: " + formatWhole(player.ad.galaxyLimit) }, { "color": "white", "font-size": "24px", "font-family": "monospace" }], + ["row", [["buyable", 2], ["buyable", 3]]], ["blank", "25px"], - ["raw-html", function () { return player.ad.extraDimsGalaxiesLocked ? "You are capped at 6 dimension boosts and 1 galaxy (for now)" : "" }, { "color": "white", "font-size": "24px", "font-family": "monospace" }], - ["raw-html", function () { return player.ad.extraDimsGalaxiesLocked ? "Progress gets halted at 1e300 antimatter." : "" }, { "color": "white", "font-size": "24px", "font-family": "monospace" }], - ["raw-html", function () { return !player.ad.extraDimsGalaxiesLocked ? "Progress gets softcapped at 1e300 antimatter." : "" }, { "color": "white", "font-size": "24px", "font-family": "monospace" }], + ["raw-html", function () { return !hasChallenge("ip", 18) ? "Progress gets halted at 1e300 antimatter." : "" }, { "color": "white", "font-size": "24px", "font-family": "monospace" }], + ["raw-html", function () { return hasChallenge("ip", 18) ? "Progress gets softcapped at 1e300 antimatter." : "" }, { "color": "white", "font-size": "24px", "font-family": "monospace" }], ] }, diff --git a/js/breakInfinity.js b/js/breakInfinity.js index b8e3f4d..de8b4a6 100644 --- a/js/breakInfinity.js +++ b/js/breakInfinity.js @@ -9,13 +9,19 @@ brokenInfinities: new Decimal(0), brokenInfinitiesToGet: new Decimal(0), - autocrunchToggle: false, - autocrunchInput: new Decimal(0), - autocrunchAmount: new Decimal(0), + // IAC: Infinity Autocruch + IACtoggle: false, + IACinput: new Decimal(0), + IACamount: new Decimal(1), + IACtype: false, // False: Amount ; True: Time + IACtime: new Decimal(0), - autoreverseCrunchInput: new Decimal(0), - autoreverseCrunchAmount: new Decimal(0), - autoreverseCrunchToggle: false, + // NAC: Negative Infinity Autocrunch + NACinput: new Decimal(0), + NACamount: new Decimal(1), + NACtoggle: false, + NACtype: false, // False: Amount ; True: Time + NACtime: new Decimal(0), } }, automate() { @@ -33,13 +39,13 @@ "border-color": "#2B7F0A", }; }, - + tooltip: "Break Infinity", color: "#2B7F0A", update(delta) { let onepersec = new Decimal(1) - + // Broken Infinities Calculations player.bi.brokenInfinitiesToGet = player.in.infinities player.bi.brokenInfinitiesToGet = player.bi.brokenInfinitiesToGet.mul(buyableEffect("bi", 12)) player.bi.brokenInfinitiesToGet = player.bi.brokenInfinitiesToGet.mul(buyableEffect("tad", 12)) @@ -50,52 +56,91 @@ if (hasUpgrade("bi", 25)) player.bi.brokenInfinities = player.bi.brokenInfinities.add(player.bi.brokenInfinitiesToGet.mul(Decimal.mul(0.04, delta))) - if (player.bi.autocrunchInput.gte(1)) player.bi.autocrunchAmount = player.bi.autocrunchInput - if (player.bi.autocrunchInput.lt(1)) player.bi.autocrunchAmount = new Decimal(1) + // Set Autocrunch Values + if (player.bi.IACinput.gte(1) && !player.bi.IACtype) player.bi.IACamount = player.bi.IACinput + if (player.bi.IACinput.lt(1) && !player.bi.IACtype) player.bi.IACamount = new Decimal(1) + if (player.bi.IACinput.gte(0) && player.bi.IACtype) player.bi.IACamount = player.bi.IACinput + if (player.bi.IACinput.lt(0) && player.bi.IACtype) player.bi.IACamount = new Decimal(1) - if (player.bi.autoreverseCrunchInput.gte(1)) player.bi.autoreverseCrunchAmount = player.bi.autoreverseCrunchInput - if (player.bi.autoreverseCrunchInput.lt(1)) player.bi.autoreverseCrunchAmount = new Decimal(1) + // Set Negative Autocrunch Values + if (player.bi.NACinput.gte(1) && !player.bi.NACtype) player.bi.NACamount = player.bi.NACinput + if (player.bi.NACinput.lt(1) && !player.bi.NACtype) player.bi.NACamount = new Decimal(1) + if (player.bi.NACinput.gte(0) && player.bi.NACtype) player.bi.NACamount = player.bi.NACinput + if (player.bi.NACinput.lt(0) && player.bi.NACtype) player.bi.NACamount = new Decimal(1) - if (player.in.infinityPointsToGet.gte(player.bi.autocrunchAmount) && player.bi.autocrunchToggle && player.points.gte(1e308)) - { - if (inChallenge("tad", 11)) - { - if (player.bi.brokenInfinities.gt(player.tad.shatteredInfinitiesToGet) && player.po.hex && !player.po.dice && !player.po.rocketFuel && inChallenge("tad", 11) && player.tad.currentConversion.eq(0)) - { + // Autocrunch Functionality + if (player.in.infinityPointsToGet.gte(player.bi.IACamount) && player.bi.IACtoggle && !player.bi.IACtype && player.points.gte(1e308)) { + if (inChallenge("tad", 11)) { + if (player.bi.brokenInfinities.gt(player.tad.shatteredInfinitiesToGet) && player.po.hex && !player.po.dice && !player.po.rocketFuel && player.tad.currentConversion.eq(0)) { player.tad.shatteredInfinities = player.tad.shatteredInfinities.add(player.tad.shatteredInfinitiesToGet) player.bi.brokenInfinities = player.bi.brokenInfinities.sub(player.tad.shatteredInfinitiesToGet) } - if (player.bi.brokenInfinities.gt(player.tad.disfiguredInfinitiesToGet) && !player.po.hex && !player.po.dice && player.po.rocketFuel && inChallenge("tad", 11) && player.tad.currentConversion.eq(1)) - { + if (player.bi.brokenInfinities.gt(player.tad.disfiguredInfinitiesToGet) && !player.po.hex && !player.po.dice && player.po.rocketFuel && player.tad.currentConversion.eq(1)) { player.tad.disfiguredInfinities = player.tad.disfiguredInfinities.add(player.tad.disfiguredInfinitiesToGet) player.bi.brokenInfinities = player.bi.brokenInfinities.sub(player.tad.disfiguredInfinitiesToGet) } - if (player.bi.brokenInfinities.gt(player.tad.corruptedInfinitiesToGet) && !player.po.hex && player.po.dice && !player.po.rocketFuel && inChallenge("tad", 11) && player.tad.currentConversion.eq(2)) - { + if (player.bi.brokenInfinities.gt(player.tad.corruptedInfinitiesToGet) && !player.po.hex && player.po.dice && !player.po.rocketFuel && player.tad.currentConversion.eq(2)) { player.tad.corruptedInfinities = player.tad.corruptedInfinities.add(player.tad.corruptedInfinitiesToGet) player.bi.brokenInfinities = player.bi.brokenInfinities.sub(player.tad.corruptedInfinitiesToGet) } } - if (hasUpgrade("bi", 14)) - { + if (hasUpgrade("bi", 14)) { if (player.po.dice) player.om.diceMasteryPoints = player.om.diceMasteryPoints.add(player.om.diceMasteryPointsToGet) if (player.po.rocketFuel) player.om.rocketFuelMasteryPoints = player.om.rocketFuelMasteryPoints.add(player.om.rocketFuelMasteryPointsToGet) if (player.po.hex) player.om.hexMasteryPoints = player.om.hexMasteryPoints.add(player.om.hexMasteryPointsToGet) } - if (!hasMilestone("ip", 21)) - { + if (!hasMilestone("ip", 21)) { player.tab = "bigc" - } else if (hasMilestone("ip", 21)) - { + } else { layers.bigc.crunch() } } - - if (player.ta.negativeInfinityPointsToGet.gte(player.bi.autoreverseCrunchAmount) && player.bi.autoreverseCrunchToggle && player.ad.antimatter.gte(1e308)) - { + + if (player.bi.IACtoggle && player.bi.IACtype) { + player.bi.IACtime = player.bi.IACtime.add(onepersec.mul(delta)); + if (player.bi.IACtime.gte(player.bi.IACamount) && player.points.gte(1e308)) { + player.bi.IACtime = new Decimal(0) + if (inChallenge("tad", 11)) { + if (player.bi.brokenInfinities.gt(player.tad.shatteredInfinitiesToGet) && player.po.hex && !player.po.dice && !player.po.rocketFuel && player.tad.currentConversion.eq(0)) { + player.tad.shatteredInfinities = player.tad.shatteredInfinities.add(player.tad.shatteredInfinitiesToGet) + player.bi.brokenInfinities = player.bi.brokenInfinities.sub(player.tad.shatteredInfinitiesToGet) + } + if (player.bi.brokenInfinities.gt(player.tad.disfiguredInfinitiesToGet) && !player.po.hex && !player.po.dice && player.po.rocketFuel && player.tad.currentConversion.eq(1)) { + player.tad.disfiguredInfinities = player.tad.disfiguredInfinities.add(player.tad.disfiguredInfinitiesToGet) + player.bi.brokenInfinities = player.bi.brokenInfinities.sub(player.tad.disfiguredInfinitiesToGet) + } + if (player.bi.brokenInfinities.gt(player.tad.corruptedInfinitiesToGet) && !player.po.hex && player.po.dice && !player.po.rocketFuel && player.tad.currentConversion.eq(2)) { + player.tad.corruptedInfinities = player.tad.corruptedInfinities.add(player.tad.corruptedInfinitiesToGet) + player.bi.brokenInfinities = player.bi.brokenInfinities.sub(player.tad.corruptedInfinitiesToGet) + } + } + if (hasUpgrade("bi", 14)) { + if (player.po.dice) player.om.diceMasteryPoints = player.om.diceMasteryPoints.add(player.om.diceMasteryPointsToGet) + if (player.po.rocketFuel) player.om.rocketFuelMasteryPoints = player.om.rocketFuelMasteryPoints.add(player.om.rocketFuelMasteryPointsToGet) + if (player.po.hex) player.om.hexMasteryPoints = player.om.hexMasteryPoints.add(player.om.hexMasteryPointsToGet) + } + if (!hasMilestone("ip", 21)) { + player.tab = "bigc" + } else { + layers.bigc.crunch() + } + } + } + + // Negative Autocrunch Functionality + if (player.ta.negativeInfinityPointsToGet.gte(player.bi.NACamount) && player.bi.NACtoggle && !player.bi.NACtype && player.ad.antimatter.gte(1e308)) { layers.revc.reverseCrunch() player.ta.negativeInfinityPoints = player.ta.negativeInfinityPoints.add(player.ta.negativeInfinityPointsToGet) } + + if (player.bi.NACtoggle && player.bi.NACtype) { + player.bi.NACtime = player.bi.NACtime.add(onepersec.mul(delta)); + if (player.bi.NACtime.gte(player.bi.NACamount) && player.ad.antimatter.gte(1e308)) { + player.bi.NACtime = new Decimal(0) + layers.revc.reverseCrunch() + player.ta.negativeInfinityPoints = player.ta.negativeInfinityPoints.add(player.ta.negativeInfinityPointsToGet) + } + } }, breakInfinities() { @@ -106,7 +151,7 @@ 1: { title() { return "

Return" }, canClick() { return true }, - unlocked() { return true }, + unlocked() { return options.newMenu == false }, onClick() { player.tab = "in" }, @@ -161,38 +206,74 @@ 14: { title() { return "

Autocrunch Toggle: On" }, canClick() { return true }, - unlocked() { return player.bi.autocrunchToggle }, + unlocked() { return player.bi.IACtoggle }, onClick() { - player.bi.autocrunchToggle = false + player.bi.IACtoggle = false }, - style: { width: '300px', "min-height": '120px' }, + style: { width: '300px', "min-height": '80px' }, }, 15: { title() { return "

Autocrunch Toggle: Off" }, canClick() { return true }, - unlocked() { return !player.bi.autocrunchToggle }, + unlocked() { return !player.bi.IACtoggle }, onClick() { - player.bi.autocrunchToggle = true + player.bi.IACtoggle = true }, - style: { width: '300px', "min-height": '120px' }, + style: { width: '300px', "min-height": '80px' }, }, 16: { title() { return "

Auto Reverse Crunch Toggle: On" }, canClick() { return true }, - unlocked() { return player.bi.autoreverseCrunchToggle }, + unlocked() { return player.bi.NACtoggle }, onClick() { - player.bi.autoreverseCrunchToggle = false + player.bi.NACtoggle = false }, - style: { width: '300px', "min-height": '120px' }, + style: { width: '300px', "min-height": '80px' }, }, 17: { title() { return "

Auto Reverse Crunch Toggle: Off" }, canClick() { return true }, - unlocked() { return !player.bi.autoreverseCrunchToggle }, + unlocked() { return !player.bi.NACtoggle }, onClick() { - player.bi.autoreverseCrunchToggle = true + player.bi.NACtoggle = true }, - style: { width: '300px', "min-height": '120px' }, + style: { width: '300px', "min-height": '80px' }, + }, + 18: { + title() { return "Amount" }, + canClick() { return player.bi.IACtype }, + unlocked() { return true }, + onClick() { + player.bi.IACtype = false + }, + style: { width: '150px', "min-height": '40px' }, + }, + 19: { + title() { return "Time" }, + canClick() { return !player.bi.IACtype }, + unlocked() { return true }, + onClick() { + player.bi.IACtype = true + }, + style: { width: '150px', "min-height": '40px' }, + }, + 21: { + title() { return "Amount" }, + canClick() { return player.bi.NACtype }, + unlocked() { return true }, + onClick() { + player.bi.NACtype = false + }, + style: { width: '150px', "min-height": '40px' }, + }, + 22: { + title() { return "Time" }, + canClick() { return !player.bi.NACtype }, + unlocked() { return true }, + onClick() { + player.bi.NACtype = true + }, + style: { width: '150px', "min-height": '40px' }, }, }, bars: { @@ -268,13 +349,13 @@ { title: "BI IP Upgrade VII", unlocked() { return true }, - description: "Total hex runs boost code experience gain.", + description: "Total hex runs boost pollinator gain.", cost: new Decimal(1e12), currencyLocation() { return player.in }, currencyDisplayName: "Infinity Points", currencyInternalName: "infinityPoints", effect() { - return player.ip.hexRuns.mul(1.02).add(1) + return player.ip.hexRuns.add(1).log10().add(1) }, effectDisplay() { return format(upgradeEffect(this.layer, this.id))+"x" }, // Add formatting to the effect style: { width: '125px', height: '100px', } @@ -551,7 +632,7 @@ setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(1)) } else { - + let max = Decimal.affordGeometricSeries(player.bi.brokenInfinities, base, growth, getBuyableAmount(this.layer, this.id)) let cost = Decimal.sumGeometricSeries(max, base, growth, getBuyableAmount(this.layer, this.id)) if (!hasUpgrade("bi", 109)) player.bi.brokenInfinities = player.bi.brokenInfinities.sub(cost) @@ -583,7 +664,7 @@ setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(1)) } else { - + let max = Decimal.affordGeometricSeries(player.bi.brokenInfinities, base, growth, getBuyableAmount(this.layer, this.id)) let cost = Decimal.sumGeometricSeries(max, base, growth, getBuyableAmount(this.layer, this.id)) if (!hasUpgrade("bi", 109)) player.bi.brokenInfinities = player.bi.brokenInfinities.sub(cost) @@ -615,7 +696,7 @@ setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(1)) } else { - + let max = Decimal.affordGeometricSeries(player.bi.brokenInfinities, base, growth, getBuyableAmount(this.layer, this.id)) let cost = Decimal.sumGeometricSeries(max, base, growth, getBuyableAmount(this.layer, this.id)) if (!hasUpgrade("bi", 109)) player.bi.brokenInfinities = player.bi.brokenInfinities.sub(cost) @@ -646,7 +727,7 @@ ["row", [["clickable", 11]]], ["blank", "25px"], ["row", [["clickable", 2], ["clickable", 3]]], - ["blank", "25px"], + ["blank", "25px"], ["row", [["buyable", 11], ["buyable", 12], ["buyable", 13]]], ] @@ -673,12 +754,13 @@ }, "Autocruncher(s)": { buttonStyle() { return { 'color': 'white' } }, - unlocked() { return hasMilestone("ip", 26) }, + unlocked() { return hasMilestone("ip", 27) }, content: [ ["blank", "25px"], - ["raw-html", function () { return "Autocrunch amount: " + formatWhole(player.bi.autocrunchAmount) + " infinity points on reset." }, { "color": "white", "font-size": "24px", "font-family": "monospace" }], - ["text-input", "autocrunchInput", { + ["raw-html", function () { return !player.bi.IACtype ? "Autocrunch amount: " + formatWhole(player.bi.IACamount) + " infinity points on reset." : ""}, { "color": "white", "font-size": "24px", "font-family": "monospace" }], + ["raw-html", function () { return player.bi.IACtype ? "Autocrunch time: " + formatTime(player.bi.IACtime) + "/" + formatTime(player.bi.IACamount) + " until reset." : ""}, { "color": "white", "font-size": "24px", "font-family": "monospace" }], + ["text-input", "IACinput", { color: "var(--color)", width: "400px", "font-family": "Calibri", @@ -688,10 +770,12 @@ background: "var(--background)", }], ["blank", "25px"], + ["row", [["clickable", 18], ["clickable", 19]]], ["row", [["clickable", 14], ["clickable", 15]]], ["blank", "25px"], - ["raw-html", function () { return "Autocrunch amount: " + formatWhole(player.bi.autoreverseCrunchAmount) + " negative infinity points on reset." }, { "color": "white", "font-size": "24px", "font-family": "monospace" }], - ["text-input", "autoreverseCrunchInput", { + ["raw-html", function () { return !player.bi.NACtype ? "Autocrunch amount: " + formatWhole(player.bi.NACamount) + " negative infinity points on reset." : ""}, { "color": "white", "font-size": "24px", "font-family": "monospace" }], + ["raw-html", function () { return player.bi.NACtype ? "Autocrunch time: " + formatTime(player.bi.NACtime) + "/" + formatTime(player.bi.NACamount) + " until reset." : ""}, { "color": "white", "font-size": "24px", "font-family": "monospace" }], + ["text-input", "NACinput", { color: "var(--color)", width: "400px", "font-family": "Calibri", @@ -701,12 +785,13 @@ background: "var(--background)", }], ["blank", "25px"], + ["row", [["clickable", 21], ["clickable", 22]]], ["row", [["clickable", 16], ["clickable", 17]]], ] }, }, - }, + }, tabFormat: [ ["raw-html", function () { return "You have

" + formatWhole(player.in.infinities) + "

infinities." }, { "color": "white", "font-size": "24px", "font-family": "monospace" }], @@ -715,4 +800,4 @@ ["microtabs", "stuff", { 'border-width': '0px' }], ], layerShown() { return player.startedGame == true && player.in.unlockedInfinity && hasUpgrade("ta", 21)} -}) \ No newline at end of file +}) diff --git a/js/cante.js b/js/cante.js index 9aa0a24..f5b6428 100644 --- a/js/cante.js +++ b/js/cante.js @@ -141,7 +141,7 @@ 1: { title() { return "

Return" }, canClick() { return true }, - unlocked() { return true }, + unlocked() { return options.newMenu == false }, onClick() { player.tab = "in" }, @@ -219,8 +219,13 @@ unlocked() { return true }, onClick() { player.ca.defeatedCante = true - player.tab = 'po' - player.subtabs["po"]['stuff'] = 'Portals' + if (options.newMenu) { + player.tab = 'ca' + player.microtabs["ca"]['stuff'] = 'Main' + } else { + player.tab = 'po' + player.subtabs["po"]['stuff'] = 'Portals' + } }, style: { width: '500px', "min-height": '200px',}, }, diff --git a/js/cantepocalypsePuzzle.js b/js/cantepocalypsePuzzle.js index 762c241..b9eed00 100644 --- a/js/cantepocalypsePuzzle.js +++ b/js/cantepocalypsePuzzle.js @@ -27,6 +27,7 @@ addLayer("cap", { quizLower: new Decimal(0), cantepocalypseUnlock: false, + cantepocalypsePrep: false, } }, automate() { @@ -38,7 +39,7 @@ addLayer("cap", { "border-color": "#0f354c", }; }, - + tooltip: "Cante, the Celestial of Replicanti", color: "#727884", update(delta) { @@ -58,7 +59,7 @@ addLayer("cap", { player.cap.reqDisplay = "Answer questions about your journey so far." } - if (hasUpgrade("i", 31) && hasUpgrade("i", 32) && hasUpgrade("i", 33) && hasUpgrade("i", 34)) + if (hasUpgrade("i", 37) && hasUpgrade("i", 38) && hasUpgrade("i", 39) && hasUpgrade("i", 41)) { player.cap.passingReqs[0] = true } @@ -71,8 +72,8 @@ addLayer("cap", { player.cap.quizQuestions = ["log10(infinity points) + check back level", "log10(celestial points)/pet points", "(cante energy/cante energy req) * cante cores", "log10(negative infinity points) + cante cores^4", - "pet points - (check back level * log10(infinities))", - "log10(broken infinities) + infinities on reset + (evolution shards * paragon shards)", + "pet points - (check back level * log10(infinities))", + "log10(broken infinities) + infinities on reset + (evolution shards * paragon shards)", "log1000(celestial points) + log100(celestial points) + log10(steel)", ""] if (player.cap.quizIndex.eq(7)) @@ -85,7 +86,11 @@ addLayer("cap", { player.subtabs["cap"]['stuff'] = 'CANTEPOCALYPSE' } - player.cap.quizAnswers = + if (player.subtab = 'CANTEPOCALYPSE') { + cantepocalypsePrep: true + } + + player.cap.quizAnswers = [ player.in.infinityPoints.plus(1).log10().add(player.cb.level).abs(), player.points.plus(1).log10().div(player.cb.petPoints.add(0.01)).abs(), @@ -129,7 +134,7 @@ addLayer("cap", { 1: { title() { return "

Return" }, canClick() { return true }, - unlocked() { return true }, + unlocked() { return options.newMenu == false }, onClick() { player.tab = "ca" }, @@ -210,7 +215,7 @@ addLayer("cap", { }, }, bars: { - + }, upgrades: { }, @@ -229,63 +234,63 @@ addLayer("cap", { unlocked() { return player.ca.unlockedCante && !player.cap.cantepocalypseUnlock }, content: [ - ["raw-html", function () { return "You must pass 4 puzzles in order to start the ???." }, { "color": "white", "font-size": "16px", "font-family": "monospace" }], - ["raw-html", function () { return "You are currently solving puzzle " + formatWhole(player.cap.reqSelect.add(1)) + "." }, { "color": "white", "font-size": "16px", "font-family": "monospace" }], - ["blank", "25px"], - ["raw-html", function () { return player.cap.reqDisplay }, { "color": "white", "font-size": "24px", "font-family": "monospace" }], - ["blank", "25px"], - ["row", [["clickable", 11], ["clickable", 12], ["clickable", 13], ["clickable", 14]]], - ["blank", "25px"], - ["row", [["clickable", 15]]], - ["raw-html", function () { return "A button will appear below when you have passed the requirements for the puzzle." }, { "color": "white", "font-size": "16px", "font-family": "monospace" }], - ["raw-html", function () { return "Having trouble figuring out what to do? Join the discord server. (Cheating hehe)" }, { "color": "white", "font-size": "16px", "font-family": "monospace" }], - ["blank", "25px"], - ["row", [["clickable", 16]]], - ] + ["raw-html", function () { return "You must pass 4 puzzles in order to start the ???." }, { "color": "white", "font-size": "16px", "font-family": "monospace" }], + ["raw-html", function () { return "You are currently solving puzzle " + formatWhole(player.cap.reqSelect.add(1)) + "." }, { "color": "white", "font-size": "16px", "font-family": "monospace" }], + ["blank", "25px"], + ["raw-html", function () { return player.cap.reqDisplay }, { "color": "white", "font-size": "24px", "font-family": "monospace" }], + ["blank", "25px"], + ["row", [["clickable", 11], ["clickable", 12], ["clickable", 13], ["clickable", 14]]], + ["blank", "25px"], + ["row", [["clickable", 15]]], + ["raw-html", function () { return "A button will appear below when you have passed the requirements for the puzzle." }, { "color": "white", "font-size": "16px", "font-family": "monospace" }], + ["raw-html", function () { return "Having trouble figuring out what to do? Join the discord server. (Cheating hehe)" }, { "color": "white", "font-size": "16px", "font-family": "monospace" }], + ["blank", "25px"], + ["row", [["clickable", 16]]], + ] }, "QUIZ": { buttonStyle() { return { 'color': 'white' } }, unlocked() { return player.cap.reqSelect.eq(3) && !player.cap.passingReqs[3] }, content: [ - ["blank", "25px"], - ["raw-html", function () { return "If the answer is close enough it can work." }, { "color": "white", "font-size": "16px", "font-family": "monospace" }], - ["raw-html", function () { return "All answers are converted to positive." }, { "color": "white", "font-size": "16px", "font-family": "monospace" }], - ["raw-html", function () { return "Your answer: " + format(player.cap.quizNumber) }, { "color": "white", "font-size": "16px", "font-family": "monospace" }], - ["blank", "25px"], - ["raw-html", function () { return player.cap.quizQuestions[player.cap.quizIndex] }, { "color": "white", "font-size": "24px", "font-family": "monospace" }], - ["text-input", "quizInput", { - color: "var(--color)", - width: "400px", - "font-family": "Calibri", - "text-align": "left", - "font-size": "32px", - border: "2px solid #ffffff17", - background: "var(--background)", - }], - ["blank", "25px"], - ["row", [["clickable", 17]]], - ["blank", "25px"], - ["raw-html", function () { return player.cap.quizText }, { "color": "white", "font-size": "16px", "font-family": "monospace" }], - ] + ["blank", "25px"], + ["raw-html", function () { return "If the answer is close enough it can work." }, { "color": "white", "font-size": "16px", "font-family": "monospace" }], + ["raw-html", function () { return "All answers are converted to positive." }, { "color": "white", "font-size": "16px", "font-family": "monospace" }], + ["raw-html", function () { return "Your answer: " + format(player.cap.quizNumber) }, { "color": "white", "font-size": "16px", "font-family": "monospace" }], + ["blank", "25px"], + ["raw-html", function () { return player.cap.quizQuestions[player.cap.quizIndex] }, { "color": "white", "font-size": "24px", "font-family": "monospace" }], + ["text-input", "quizInput", { + color: "var(--color)", + width: "400px", + "font-family": "Calibri", + "text-align": "left", + "font-size": "32px", + border: "2px solid #ffffff17", + background: "var(--background)", + }], + ["blank", "25px"], + ["row", [["clickable", 17]]], + ["blank", "25px"], + ["raw-html", function () { return player.cap.quizText }, { "color": "white", "font-size": "16px", "font-family": "monospace" }], + ] }, "CANTEPOCALYPSE": { buttonStyle() { return { 'color': 'white' } }, unlocked() { return player.cap.cantepocalypseUnlock }, content: [ - ["blank", "25px"], - ["raw-html", function () { return "THERE IS NO RETURN..." }, { "color": "white", "font-size": "16px", "font-family": "monospace" }], - ["blank", "25px"], - ["tree", tree], - ] + ["blank", "25px"], + ["raw-html", function () { return "THERE IS NO RETURN..." }, { "color": "white", "font-size": "16px", "font-family": "monospace" }], + ["blank", "25px"], + ["tree", tree], + ] }, }, - - }, - tabFormat: [ - + }, + + tabFormat: [ + ["row", [["clickable", 1]]], ["microtabs", "stuff", { 'border-width': '0px' }], ], diff --git a/js/checkback.js b/js/checkback.js index d29e3c7..a1454dd 100644 --- a/js/checkback.js +++ b/js/checkback.js @@ -13,6 +13,7 @@ addLayer("cb", { xpMult: new Decimal(1), req: new Decimal(4), effectActivate: false, + xpBuyableMax: false, buttonUnlocks: [true, false, false, false, false, false, false], buttonTimersMax: [new Decimal(60),new Decimal(180),new Decimal(300),new Decimal(5),new Decimal(1200),new Decimal(3600),new Decimal(14400),new Decimal(86400),], @@ -119,6 +120,11 @@ addLayer("cb", { //paragon paragonShards: new Decimal(0), + //pity system + pityEvoCurrent: new Decimal(0), + pityParaCurrent: new Decimal(0), + pityMax: new Decimal(200), + //autom totalAutomationShards: new Decimal(0), automationShards: new Decimal(0), @@ -143,6 +149,7 @@ addLayer("cb", { canteEnergyXPBoostButtonBase: [new Decimal(10), new Decimal(30)], canteEnergyPetPointButtonBase: [new Decimal(0.12), new Decimal(0.05), new Decimal(0.8), new Decimal(7), new Decimal(0.3),new Decimal(1),new Decimal(0.002),], + time: new Decimal(0) // Offline Time } }, automate() { @@ -155,6 +162,10 @@ addLayer("cb", { update(delta) { let onepersec = new Decimal(1) + if (player.cb.time.gt(0)) { + layers.cb.offlineCooldown() + } + if (player.cb.totalxp == 5.1 && player.cb.level > 1) { player.cb.totalxp = layers.cb.levelToXP(player.cb.level).add(player.cb.xp) @@ -748,6 +759,20 @@ addLayer("cb", { player.cb.canteEnergyPetButtonBase = [new Decimal(1.6), new Decimal(3), new Decimal(5.5), new Decimal(9), new Decimal(7), new Decimal(14),] player.cb.canteEnergyXPBoostButtonBase = [new Decimal(10), new Decimal(30)] player.cb.canteEnergyPetPointButtonBase = [new Decimal(0.12), new Decimal(0.05), new Decimal(0.8), new Decimal(7), new Decimal(0.3),new Decimal(1),new Decimal(0.002),] + + player.cb.pityMax = new Decimal(200).sub(buyableEffect("cb", 16)) + + if (player.cb.pityEvoCurrent.gte(player.cb.pityMax)) { + player.cb.evolutionShards = player.cb.evolutionShards.add(1) + player.cb.pityEvoCurrent = new Decimal(0) + callAlert("You gained an Evolution Shard! (Pity)", "resources/evoShard.png"); + } + if (player.cb.pityParaCurrent.gte(player.cb.pityMax)) { + player.cb.paragonShards = player.cb.paragonShards.add(1) + player.cb.pityParaCurrent = new Decimal(0) + callAlert("You gained a PARAGON SHARD! (Pity)", "resources/paragonShard.png"); + } + }, levelToXP(quantity) { @@ -807,6 +832,63 @@ addLayer("cb", { player.cb.xp = player.cb.xp.add(leftover) } }, + offlineCooldown() { + let time = player.cb.time + player.cb.time = new Decimal(0) + + // XP Buttons + for (let i = 0; i < player.cb.buttonTimers.length; i++) { + player.cb.buttonTimers[i] = player.cb.buttonTimers[i].sub(time) + } + + // Pet Buttons + for (let i = 0; i < player.cb.petButtonTimers.length; i++) { + player.cb.petButtonTimers[i] = player.cb.petButtonTimers[i].sub(time) + } + + // Pet Point Buttons + for (let i = 0; i < player.cb.rarePetButtonTimers.length; i++) { + player.cb.rarePetButtonTimers[i] = player.cb.rarePetButtonTimers[i].sub(time) + } + + // XP Boost Buttons + for (let i = 0; i < player.cb.XPBoostTimers.length; i++) { + player.cb.XPBoostTimers[i] = player.cb.XPBoostTimers[i].sub(time) + } + + // Automation Timers (only triggers once) + for (let i = 0; i < player.cb.buttonAutomationTimers.length; i++) { + if (player.cb.buttonAutomationAllocation[i].gt(0)) player.cb.buttonAutomationTimers[i] = player.cb.buttonAutomationTimers[i].sub(time) + } + + // Pet Shop + player.ps.priceResetTimer = player.ps.priceResetTimer.sub(time) + + // Epic Fragmentation Timer + player.epic.bannerResetTimer = player.epic.bannerResetTimer.sub(time) + + // Epic Pet Timers + for (let i = 0; i < player.ep0.dotknightPointButtonTimers.length; i++) { + player.ep0.dotknightPointButtonTimers[i] = player.ep0.dotknightPointButtonTimers[i].sub(time) + } + for (let i = 0; i < player.ep1.dragonPointButtonTimers.length; i++) { + player.ep1.dragonPointButtonTimers[i] = player.ep1.dragonPointButtonTimers[i].sub(time) + } + for (let i = 0; i < player.ep2.cookiePointButtonTimers.length; i++) { + player.ep2.cookiePointButtonTimers[i] = player.ep2.cookiePointButtonTimers[i].sub(time) + } + + // Daily Reward (Insane Face Evo) + player.ev2.cooldown = player.ev2.cooldown.sub(time) + + // Shard Buttons (Marcel Evo) + for (let i = 0; i < player.ev8.evoButtonTimers.length; i++) { + player.ev8.evoButtonTimers[i] = player.ev8.evoButtonTimers[i].sub(time) + } + for (let i = 0; i < player.ev8.paragonButtonTimers.length; i++) { + player.ev8.paragonButtonTimers[i] = player.ev8.paragonButtonTimers[i].sub(time) + } + }, sacrificeCommonPet(index) { rarityBase = new Decimal(1) @@ -851,7 +933,7 @@ addLayer("cb", { 1: { title() { return "

Return" }, canClick() { return true }, - unlocked() { return true }, + unlocked() { return options.newMenu == false }, onClick() { player.tab = "i" }, @@ -869,19 +951,19 @@ addLayer("cb", { }, 3: { title() { return "Buy Max On" }, - canClick() { return player.buyMax == false }, + canClick() { return player.cb.xpBuyableMax == false }, unlocked() { return true }, onClick() { - player.buyMax = true + player.cb.xpBuyableMax = true }, style: { width: '75px', "min-height": '50px', } }, 4: { title() { return "Buy Max Off" }, - canClick() { return player.buyMax == true }, + canClick() { return player.cb.xpBuyableMax == true }, unlocked() { return true }, onClick() { - player.buyMax = false + player.cb.xpBuyableMax = false }, style: { width: '75px', "min-height": '50px', } }, @@ -907,10 +989,12 @@ addLayer("cb", { if (player.cb.highestLevel.gt(35)) { let random = getRandomInt(200) - if (random == 1) - { + if (random == 1) { player.cb.evolutionShards = player.cb.evolutionShards.add(1); + player.cb.pityEvoCurrent = new Decimal(0); callAlert("You gained an Evolution Shard! (0.5%)", "resources/evoShard.png"); + } else { + player.cb.pityEvoCurrent = player.cb.pityEvoCurrent.add(0.5); } } if (player.ca.unlockedCante) player.ca.canteEnergy = player.ca.canteEnergy.add(player.cb.canteEnergyXPButtonBase[0].mul(player.ca.canteEnergyMult)) @@ -930,10 +1014,12 @@ addLayer("cb", { if (player.cb.highestLevel.gt(35)) { let random = getRandomInt(100) - if (random == 1) - { + if (random == 1) { player.cb.evolutionShards = player.cb.evolutionShards.add(1); + player.cb.pityEvoCurrent = new Decimal(0); callAlert("You gained an Evolution Shard! (1%)", "resources/evoShard.png"); + } else { + player.cb.pityEvoCurrent = player.cb.pityEvoCurrent.add(1); } } if (player.ca.unlockedCante) player.ca.canteEnergy = player.ca.canteEnergy.add(player.cb.canteEnergyXPButtonBase[1].mul(player.ca.canteEnergyMult)) @@ -953,10 +1039,12 @@ addLayer("cb", { if (player.cb.highestLevel.gt(35)) { let random = getRandomInt(50) - if (random == 1) - { + if (random == 1) { player.cb.evolutionShards = player.cb.evolutionShards.add(1); + player.cb.pityEvoCurrent = new Decimal(0); callAlert("You gained an Evolution Shard! (2%)", "resources/evoShard.png"); + } else { + player.cb.pityEvoCurrent = player.cb.pityEvoCurrent.add(2); } } if (player.ca.unlockedCante) player.ca.canteEnergy = player.ca.canteEnergy.add(player.cb.canteEnergyXPButtonBase[2].mul(player.ca.canteEnergyMult)) @@ -976,10 +1064,12 @@ addLayer("cb", { if (player.cb.highestLevel.gt(35)) { let random = getRandomInt(500) - if (random == 1) - { + if (random == 1) { player.cb.evolutionShards = player.cb.evolutionShards.add(1); + player.cb.pityEvoCurrent = new Decimal(0); callAlert("You gained an Evolution Shard! (0.2%)", "resources/evoShard.png"); + } else { + player.cb.pityEvoCurrent = player.cb.pityEvoCurrent.add(0.2); } } if (player.ca.unlockedCante) player.ca.canteEnergy = player.ca.canteEnergy.add(player.cb.canteEnergyXPButtonBase[3].mul(player.ca.canteEnergyMult)) @@ -1011,10 +1101,12 @@ addLayer("cb", { if (player.cb.highestLevel.gt(35)) { let random = getRandomInt(20) - if (random == 1) - { + if (random == 1) { player.cb.evolutionShards = player.cb.evolutionShards.add(1); + player.cb.pityEvoCurrent = new Decimal(0); callAlert("You gained an Evolution Shard! (5%)", "resources/evoShard.png"); + } else { + player.cb.pityEvoCurrent = player.cb.pityEvoCurrent.add(5); } } if (player.ca.unlockedCante) player.ca.canteEnergy = player.ca.canteEnergy.add(player.cb.canteEnergyXPButtonBase[4].mul(player.ca.canteEnergyMult)) @@ -1082,10 +1174,12 @@ addLayer("cb", { if (player.cb.highestLevel.gt(35)) { let random = getRandomInt(5) - if (random == 1) - { + if (random == 1) { player.cb.evolutionShards = player.cb.evolutionShards.add(1); + player.cb.pityEvoCurrent = new Decimal(0); callAlert("You gained an Evolution Shard! (20%)", "resources/evoShard.png"); + } else { + player.cb.pityEvoCurrent = player.cb.pityEvoCurrent.add(20); } } if (player.ca.unlockedCante) player.ca.canteEnergy = player.ca.canteEnergy.add(player.cb.canteEnergyXPButtonBase[5].mul(player.ca.canteEnergyMult)) @@ -1118,10 +1212,12 @@ addLayer("cb", { if (player.cb.highestLevel.gt(35)) { let random = getRandomInt(2) - if (random == 1) - { + if (random == 1) { player.cb.evolutionShards = player.cb.evolutionShards.add(1); + player.cb.pityEvoCurrent = new Decimal(0); callAlert("You gained an Evolution Shard! (50%)", "resources/evoShard.png"); + } else { + player.cb.pityEvoCurrent = player.cb.pityEvoCurrent.add(50); } } if (player.ca.unlockedCante) player.ca.canteEnergy = player.ca.canteEnergy.add(player.cb.canteEnergyXPButtonBase[6].mul(player.ca.canteEnergyMult)) @@ -1141,7 +1237,10 @@ addLayer("cb", { if (random == 1) { player.cb.evolutionShards = player.cb.evolutionShards.add(1); + player.cb.pityEvoCurrent = new Decimal(0) callAlert("You gained an Evolution Shard! (25%)", "resources/evoShard.png"); + } else { + player.cb.pityEvoCurrent = player.cb.pityEvoCurrent.add(25) } if (player.ca.unlockedCante) player.ca.canteEnergy = player.ca.canteEnergy.add(player.cb.canteEnergyPetPointButtonBase[3].mul(player.ca.canteEnergyMult)) }, @@ -1173,10 +1272,12 @@ addLayer("cb", { if (player.cb.highestLevel.gt(250)) { let random = getRandomInt(10) - if (random == 1) - { + if (random == 1) { player.cb.paragonShards = player.cb.paragonShards.add(1); + player.cb.pityParaCurrent = new Decimal(0); callAlert("You gained a PARAGON SHARD! (10%)", "resources/paragonShard.png"); + } else { + player.cb.pityParaCurrent = player.cb.pityParaCurrent.add(10); } } player.cb.level = new Decimal(1) @@ -1229,12 +1330,12 @@ addLayer("cb", { if (player.cb.highestLevel.gt(35)) { let random = getRandomInt(50) - if (random != 1) - { + if (random != 1) { player.cb.evolutionShards = player.cb.evolutionShards.add(1); + player.cb.pityEvoCurrent = new Decimal(0) callAlert("You gained an Evolution Shard! (98%)", "resources/evoShard.png"); - } else - { + } else { + player.cb.pityEvoCurrent = player.cb.pityEvoCurrent.add(98) callAlert("Damn bro you didn't gain an evo shard. Take a screenshot, send to the discord, and ping the dev. I think ur still cool."); } } @@ -1256,10 +1357,12 @@ addLayer("cb", { if (player.cb.highestLevel.gt(250)) { let random = getRandomInt(4) - if (random == 1) - { + if (random == 1) { player.cb.paragonShards = player.cb.paragonShards.add(1); + player.cb.pityParaCurrent = new Decimal(0); callAlert("You gained a PARAGON SHARD! (25%)", "resources/paragonShard.png"); + } else { + player.cb.pityParaCurrent = player.cb.pityParaCurrent.add(25); } } player.cb.level = new Decimal(1) @@ -1286,10 +1389,12 @@ addLayer("cb", { if (player.cb.highestLevel.gt(250)) { let random = getRandomInt(50) - if (random == 1) - { + if (random == 1) { player.cb.paragonShards = player.cb.paragonShards.add(1); + player.cb.pityParaCurrent = new Decimal(0); callAlert("You gained a PARAGON SHARD! (2%)", "resources/paragonShard.png"); + } else { + player.cb.pityParaCurrent = player.cb.pityParaCurrent.add(2); } } }, @@ -2195,8 +2300,12 @@ addLayer("cb", { unlocked() { return player.cb.petDisplayIndex == 5 && player.ev.evolutionsUnlocked[6] == true && player.cb.viewingEvolved[6] == true}, onClick() { player.po.lastUniverse = "cb" - player.tab = "po" - player.subtabs["po"]['stuff'] = 'ADVANCED HALTER' + if (options.newMenu) { + player.tab = "halter" + } else { + player.tab = "po" + player.subtabs["po"]['stuff'] = 'Halter' + } }, style: { width: '100px', "min-height": '50px', 'border-radius': "0%" }, }, @@ -2477,26 +2586,31 @@ addLayer("cb", { let random = getRandomInt(5) if (random == 0) { player.cb.uncommonPetAmounts[0] = player.cb.uncommonPetAmounts[0].add(1); + player.cb.pityEvoCurrent = player.cb.pityEvoCurrent.add(8); if (!(player.ps.togglealert == false && player.tab == "ps")) { callAlert("You gained a Teste!", "resources/testeUncommonPet.png"); } } else if (random == 1) { player.cb.uncommonPetAmounts[1] = player.cb.uncommonPetAmounts[1].add(1); + player.cb.pityEvoCurrent = player.cb.pityEvoCurrent.add(8); if (!(player.ps.togglealert == false && player.tab == "ps")) { callAlert("You gained a Star!", "resources/starUncommonPet.png"); } } else if (random == 2) { player.cb.uncommonPetAmounts[2] = player.cb.uncommonPetAmounts[2].add(1); + player.cb.pityEvoCurrent = player.cb.pityEvoCurrent.add(8); if (!(player.ps.togglealert == false && player.tab == "ps")) { callAlert("You gained a Normal Face!", "resources/normalFaceUncommonPet.png"); } } else if (random == 3) { player.cb.uncommonPetAmounts[3] = player.cb.uncommonPetAmounts[3].add(1); + player.cb.pityEvoCurrent = player.cb.pityEvoCurrent.add(8); if (!(player.ps.togglealert == false && player.tab == "ps")) { callAlert("You gained a Shark!", "resources/sharkUncommonPet.png"); } } else if (random == 4) { player.cb.uncommonPetAmounts[4] = player.cb.uncommonPetAmounts[4].add(1); + player.cb.pityEvoCurrent = player.cb.pityEvoCurrent.add(8); if (!(player.ps.togglealert == false && player.tab == "ps")) { callAlert("You gained THE WATCHING EYE!", "resources/eyeUncommonPet.png"); } @@ -2507,6 +2621,7 @@ addLayer("cb", { if (rng > 0.08) { player.cb.rarePetAmounts[3] = player.cb.rarePetAmounts[3].add(1); + player.cb.pityEvoCurrent = player.cb.pityEvoCurrent.add(8); if (!(player.ps.togglealert == false && player.tab == "ps")) { callAlert("You gained a Goofy Ahh Thing!", "resources/goofyAhhThingRarePet.png"); } @@ -2514,8 +2629,9 @@ addLayer("cb", { if (rng < 0.08) { player.cb.evolutionShards = player.cb.evolutionShards.add(1); + player.cb.pityEvoCurrent = new Decimal(0); if (!(player.ps.togglealert == false && player.tab == "ps")) { - callAlert("You gained an Evolution Shard!", "resources/evoShard.png"); + callAlert("You gained an Evolution Shard! (8%)", "resources/evoShard.png"); } } } @@ -2529,12 +2645,14 @@ addLayer("cb", { if (random == 0) { player.cb.commonPetAmounts[5] = player.cb.commonPetAmounts[5].add(gainedPets); + player.cb.pityEvoCurrent = player.cb.pityEvoCurrent.add(15); if (!(player.ps.togglealert == false && player.tab == "ps")) { callAlert("You gained " + formatWhole(gainedPets) + " Spiders!", "resources/spiderCommonPet.png"); } } else if (random == 1) { player.cb.commonPetAmounts[6] = player.cb.commonPetAmounts[6].add(gainedPets); + player.cb.pityEvoCurrent = player.cb.pityEvoCurrent.add(15); if (!(player.ps.togglealert == false && player.tab == "ps")) { callAlert("You gained " + formatWhole(gainedPets) + " Blobs!", "resources/blobCommonPet.png"); } @@ -2546,12 +2664,14 @@ addLayer("cb", { if (random == 0) { player.cb.uncommonPetAmounts[5] = player.cb.uncommonPetAmounts[5].add(gainedPets); + player.cb.pityEvoCurrent = player.cb.pityEvoCurrent.add(15); if (!(player.ps.togglealert == false && player.tab == "ps")) { callAlert("You gained " + formatWhole(gainedPets) + " Clocks!", "resources/clockUncommonPet.png"); } } else if (random == 1) { player.cb.uncommonPetAmounts[6] = player.cb.uncommonPetAmounts[6].add(gainedPets); + player.cb.pityEvoCurrent = player.cb.pityEvoCurrent.add(15); if (!(player.ps.togglealert == false && player.tab == "ps")) { callAlert("You gained " + formatWhole(gainedPets) + " Trollfaces!", "resources/trollUncommonPet.png"); } @@ -2562,6 +2682,7 @@ addLayer("cb", { if (rng > 0.05) { player.cb.rarePetAmounts[4] = player.cb.rarePetAmounts[4].add(1); + player.cb.pityEvoCurrent = player.cb.pityEvoCurrent.add(15); if (!(player.ps.togglealert == false && player.tab == "ps")) { callAlert("You gained an Antimatter!", "resources/antimatterRarePet.png"); } @@ -2569,6 +2690,7 @@ addLayer("cb", { if (rng < 0.05) { player.cb.evolutionShards = player.cb.evolutionShards.add(3); + player.cb.pityEvoCurrent = new Decimal(0); if (!(player.ps.togglealert == false && player.tab == "ps")) { callAlert("You gained 3 Evolution Shards!", "resources/evoShard.png"); } @@ -2738,15 +2860,49 @@ addLayer("cb", { return "

" + format(player.cb.xp) + "/" + formatWhole(player.cb.req) + "
XP to level up.
"; }, }, + pityEvoBar: { + unlocked() { return true }, + direction: RIGHT, + width: 400, + height: 50, + progress() { + return player.cb.pityEvoCurrent.div(player.cb.pityMax) + }, + fillStyle: { + "background-color": "#d487fd", + }, + display() { + return "
" + format(player.cb.pityEvoCurrent) + "/" + formatWhole(player.cb.pityMax) + "
Pity until Evolution Shard.
"; + }, + }, + pityParaBar: { + unlocked() { return player.cb.highestLevel.gte(250) }, + direction: RIGHT, + width: 400, + height: 50, + progress() { + return player.cb.pityParaCurrent.div(player.cb.pityMax) + }, + fillStyle: { + "background-color": "#2842eb", + }, + display() { + return "
" + format(player.cb.pityParaCurrent) + "/" + formatWhole(player.cb.pityMax) + "
Pity until Paragon Shard.
"; + }, + }, }, upgrades: { }, buyables: { 11: { - cost(x) { return new Decimal(2.05).pow(x || getBuyableAmount(this.layer, this.id)).mul(420).div(player.cb.uncommonPetEffects[2][2]).div(player.cb.rarePetEffects[3][1]).floor() }, - effect(x) { return new getBuyableAmount(this.layer, this.id).pow(1.1).add(1) }, + costBase() { return new Decimal(420).div(player.cb.uncommonPetEffects[2][2]).div(player.cb.rarePetEffects[3][1]) }, + costGrowth() { return new Decimal(2.05) }, + currency() { return player.cb.totalxp}, + pay(amt) { player.cb.totalxp = this.currency().sub(amt) }, + effect(x) { return getBuyableAmount(this.layer, this.id).pow(1.1).add(1) }, unlocked() { return true }, - canAfford() { return player.cb.totalxp.gte(this.cost()) }, + cost(x) { return this.costGrowth().pow(x || getBuyableAmount(this.layer, this.id)).mul(this.costBase()) }, + canAfford() { return this.currency().gte(this.cost()) }, title() { return format(getBuyableAmount(this.layer, this.id), 0) + "
Check Back OTF Boost." }, @@ -2755,32 +2911,32 @@ addLayer("cb", { Cost: " + formatWhole(layers.cb.xpToLevel(tmp[this.layer].buyables[this.id].cost)) + " Check Back Levels worth of XP." }, buy() { - let base = new Decimal(420).div(player.cb.uncommonPetEffects[2][2]).div(player.cb.rarePetEffects[3][1]) - let growth = 2.05 - if (player.buyMax == false) - { - let buyonecost = new Decimal(growth).pow(getBuyableAmount(this.layer, this.id)).mul(base) - player.cb.totalxp = player.cb.totalxp.sub(buyonecost) + if (player.cb.xpBuyableMax == false) { + let buyonecost = new Decimal(this.costGrowth()).pow(getBuyableAmount(this.layer, this.id)).mul(this.costBase()) + this.pay(buyonecost) + setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(1)) layers.cb.levelup() - } else - { - - let max = Decimal.affordGeometricSeries(player.cb.totalxp, base, growth, getBuyableAmount(this.layer, this.id)) - let cost = Decimal.sumGeometricSeries(max, base, growth, getBuyableAmount(this.layer, this.id)).floor() - player.cb.totalxp = player.cb.totalxp.sub(cost) + } else { + let max = Decimal.affordGeometricSeries(this.currency(), this.costBase(), this.costGrowth(), getBuyableAmount(this.layer, this.id)) + let cost = Decimal.sumGeometricSeries(max, this.costBase(), this.costGrowth(), getBuyableAmount(this.layer, this.id)) + this.pay(cost) - setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(max)) - layers.cb.levelup() - } + setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(max)) + layers.cb.levelup() + } }, style: { width: '275px', height: '150px', } }, 12: { - cost(x) { return new Decimal(2.22).pow(x || getBuyableAmount(this.layer, this.id)).mul(950).div(player.cb.uncommonPetEffects[2][2]).div(player.cb.rarePetEffects[3][1]).floor() }, - effect(x) { return new getBuyableAmount(this.layer, this.id).mul(0.5).pow(1.5).add(1) }, + costBase() { return new Decimal(950).div(player.cb.uncommonPetEffects[2][2]).div(player.cb.rarePetEffects[3][1]) }, + costGrowth() { return new Decimal(2.22) }, + currency() { return player.cb.totalxp}, + pay(amt) { player.cb.totalxp = this.currency().sub(amt) }, + effect(x) { return getBuyableAmount(this.layer, this.id).mul(0.5).pow(1.5).add(1) }, unlocked() { return true }, - canAfford() { return player.cb.totalxp.gte(this.cost()) }, + cost(x) { return this.costGrowth().pow(x || getBuyableAmount(this.layer, this.id)).mul(this.costBase()) }, + canAfford() { return this.currency().gte(this.cost()) }, title() { return format(getBuyableAmount(this.layer, this.id), 0) + "
Check Back IP Boost." }, @@ -2789,32 +2945,32 @@ addLayer("cb", { Cost: " + formatWhole(layers.cb.xpToLevel(tmp[this.layer].buyables[this.id].cost)) + " Check Back Levels worth of XP." }, buy() { - let base = new Decimal(950).div(player.cb.uncommonPetEffects[2][2]).div(player.cb.rarePetEffects[3][1]) - let growth = 2.22 - if (player.buyMax == false) - { - let buyonecost = new Decimal(growth).pow(getBuyableAmount(this.layer, this.id)).mul(base) - player.cb.totalxp = player.cb.totalxp.sub(buyonecost) + if (player.cb.xpBuyableMax == false) { + let buyonecost = new Decimal(this.costGrowth()).pow(getBuyableAmount(this.layer, this.id)).mul(this.costBase()) + this.pay(buyonecost) + setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(1)) layers.cb.levelup() - } else - { - - let max = Decimal.affordGeometricSeries(player.cb.totalxp, base, growth, getBuyableAmount(this.layer, this.id)) - let cost = Decimal.sumGeometricSeries(max, base, growth, getBuyableAmount(this.layer, this.id)).floor() - player.cb.totalxp = player.cb.totalxp.sub(cost) + } else { + let max = Decimal.affordGeometricSeries(this.currency(), this.costBase(), this.costGrowth(), getBuyableAmount(this.layer, this.id)) + let cost = Decimal.sumGeometricSeries(max, this.costBase(), this.costGrowth(), getBuyableAmount(this.layer, this.id)) + this.pay(cost) - setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(max)) - layers.cb.levelup() - } + setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(max)) + layers.cb.levelup() + } }, style: { width: '275px', height: '150px', } }, 13: { - cost(x) { return new Decimal(2.4).pow(x || getBuyableAmount(this.layer, this.id)).mul(2750).div(player.cb.uncommonPetEffects[2][2]).div(player.cb.rarePetEffects[3][1]).floor() }, - effect(x) { return new getBuyableAmount(this.layer, this.id).mul(0.05).add(1) }, + costBase() { return new Decimal(2750).div(player.cb.uncommonPetEffects[2][2]).div(player.cb.rarePetEffects[3][1]) }, + costGrowth() { return new Decimal(2.4) }, + currency() { return player.cb.totalxp}, + pay(amt) { player.cb.totalxp = this.currency().sub(amt) }, + effect(x) { return getBuyableAmount(this.layer, this.id).mul(0.05).add(1) }, unlocked() { return true }, - canAfford() { return player.cb.totalxp.gte(this.cost()) }, + cost(x) { return this.costGrowth().pow(x || getBuyableAmount(this.layer, this.id)).mul(this.costBase()) }, + canAfford() { return this.currency().gte(this.cost()) }, title() { return format(getBuyableAmount(this.layer, this.id), 0) + "
Check Back XP Boost Boost." }, @@ -2823,32 +2979,32 @@ addLayer("cb", { Cost: " + formatWhole(layers.cb.xpToLevel(tmp[this.layer].buyables[this.id].cost)) + " Check Back Levels worth of XP." }, buy() { - let base = new Decimal(2750).div(player.cb.uncommonPetEffects[2][2]).div(player.cb.rarePetEffects[3][1]) - let growth = 2.4 - if (player.buyMax == false) - { - let buyonecost = new Decimal(growth).pow(getBuyableAmount(this.layer, this.id)).mul(base) - player.cb.totalxp = player.cb.totalxp.sub(buyonecost) + if (player.cb.xpBuyableMax == false) { + let buyonecost = new Decimal(this.costGrowth()).pow(getBuyableAmount(this.layer, this.id)).mul(this.costBase()) + this.pay(buyonecost) + setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(1)) layers.cb.levelup() - } else - { - - let max = Decimal.affordGeometricSeries(player.cb.totalxp, base, growth, getBuyableAmount(this.layer, this.id)) - let cost = Decimal.sumGeometricSeries(max, base, growth, getBuyableAmount(this.layer, this.id)).floor() - player.cb.totalxp = player.cb.totalxp.sub(cost) + } else { + let max = Decimal.affordGeometricSeries(this.currency(), this.costBase(), this.costGrowth(), getBuyableAmount(this.layer, this.id)) + let cost = Decimal.sumGeometricSeries(max, this.costBase(), this.costGrowth(), getBuyableAmount(this.layer, this.id)) + this.pay(cost) - setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(max)) - layers.cb.levelup() - } + setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(max)) + layers.cb.levelup() + } }, style: { width: '275px', height: '150px', } }, 14: { - cost(x) { return new Decimal(2.75).pow(x || getBuyableAmount(this.layer, this.id)).mul(7500).div(player.cb.uncommonPetEffects[2][2]).div(player.cb.rarePetEffects[3][1]).floor() }, - effect(x) { return new getBuyableAmount(this.layer, this.id).mul(0.1).add(1) }, + costBase() { return new Decimal(7500).div(player.cb.uncommonPetEffects[2][2]).div(player.cb.rarePetEffects[3][1]) }, + costGrowth() { return new Decimal(2.75) }, + currency() { return player.cb.totalxp}, + pay(amt) { player.cb.totalxp = this.currency().sub(amt) }, + effect(x) { return getBuyableAmount(this.layer, this.id).mul(0.1).add(1) }, unlocked() { return true }, - canAfford() { return player.cb.totalxp.gte(this.cost()) }, + cost(x) { return this.costGrowth().pow(x || getBuyableAmount(this.layer, this.id)).mul(this.costBase()) }, + canAfford() { return this.currency().gte(this.cost()) }, title() { return format(getBuyableAmount(this.layer, this.id), 0) + "
Check Back Pet Point Boost." }, @@ -2857,24 +3013,90 @@ addLayer("cb", { Cost: " + formatWhole(layers.cb.xpToLevel(tmp[this.layer].buyables[this.id].cost)) + " Check Back Levels worth of XP." }, buy() { - let base = new Decimal(7500).div(player.cb.uncommonPetEffects[2][2]).div(player.cb.rarePetEffects[3][1]) - let growth = 2.75 - if (player.buyMax == false) - { - let buyonecost = new Decimal(growth).pow(getBuyableAmount(this.layer, this.id)).mul(base) - player.cb.totalxp = player.cb.totalxp.sub(buyonecost) + if (player.cb.xpBuyableMax == false) { + let buyonecost = new Decimal(this.costGrowth()).pow(getBuyableAmount(this.layer, this.id)).mul(this.costBase()) + this.pay(buyonecost) + setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(1)) layers.cb.levelup() - } else - { + } else { + let max = Decimal.affordGeometricSeries(this.currency(), this.costBase(), this.costGrowth(), getBuyableAmount(this.layer, this.id)) + let cost = Decimal.sumGeometricSeries(max, this.costBase(), this.costGrowth(), getBuyableAmount(this.layer, this.id)) + this.pay(cost) - let max = Decimal.affordGeometricSeries(player.cb.totalxp, base, growth, getBuyableAmount(this.layer, this.id)) - let cost = Decimal.sumGeometricSeries(max, base, growth, getBuyableAmount(this.layer, this.id)).floor() - player.cb.totalxp = player.cb.totalxp.sub(cost) + setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(max)) + layers.cb.levelup() + } + }, + style: { width: '275px', height: '150px', } + }, + 15: { + costBase() { return new Decimal(1850).div(player.cb.uncommonPetEffects[2][2]).div(player.cb.rarePetEffects[3][1]) }, + costGrowth() { return new Decimal(2.3) }, + currency() { return player.cb.totalxp}, + pay(amt) { player.cb.totalxp = this.currency().sub(amt) }, + effect(x) { return getBuyableAmount(this.layer, this.id).pow(1.25).mul(0.15).add(1) }, + unlocked() { return player.in.unlockedBreak}, + cost(x) { return this.costGrowth().pow(x || getBuyableAmount(this.layer, this.id)).mul(this.costBase()) }, + canAfford() { return this.currency().gte(this.cost()) }, + title() { + return format(getBuyableAmount(this.layer, this.id), 0) + "
Check Back Pollinators Boost." + }, + display() { + return "which are multiplying pollinators by x" + format(tmp[this.layer].buyables[this.id].effect) + ".\n\ + Cost: " + formatWhole(layers.cb.xpToLevel(tmp[this.layer].buyables[this.id].cost)) + " Check Back Levels worth of XP." + }, + buy() { + if (player.cb.xpBuyableMax == false) { + let buyonecost = new Decimal(this.costGrowth()).pow(getBuyableAmount(this.layer, this.id)).mul(this.costBase()) + this.pay(buyonecost) - setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(max)) - layers.cb.levelup() - } + setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(1)) + layers.cb.levelup() + } else { + let max = Decimal.affordGeometricSeries(this.currency(), this.costBase(), this.costGrowth(), getBuyableAmount(this.layer, this.id)) + let cost = Decimal.sumGeometricSeries(max, this.costBase(), this.costGrowth(), getBuyableAmount(this.layer, this.id)) + this.pay(cost) + + setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(max)) + layers.cb.levelup() + } + }, + style: { width: '275px', height: '150px', } + }, + 16: { + costBase() { return new Decimal(10000).div(player.cb.uncommonPetEffects[2][2]).div(player.cb.rarePetEffects[3][1]) }, + costGrowth() { return new Decimal(3) }, + purchaseLimit() { return new Decimal(20) }, + currency() { return player.cb.totalxp}, + pay(amt) { player.cb.totalxp = this.currency().sub(amt) }, + effect(x) { return getBuyableAmount(this.layer, this.id).mul(5) }, + unlocked() { return true }, + cost(x) { return this.costGrowth().pow(x || getBuyableAmount(this.layer, this.id)).mul(this.costBase()) }, + canAfford() { return this.currency().gte(this.cost()) }, + title() { + return format(getBuyableAmount(this.layer, this.id), 0) + "/20
Check Back Pity Req. Reducer." + }, + display() { + return "which are reducing the pity requirement by " + format(tmp[this.layer].buyables[this.id].effect) + ".\n\ + Cost: " + formatWhole(layers.cb.xpToLevel(tmp[this.layer].buyables[this.id].cost)) + " Check Back Levels worth of XP." + }, + buy() { + if (player.cb.xpBuyableMax == false) { + let buyonecost = new Decimal(this.costGrowth()).pow(getBuyableAmount(this.layer, this.id)).mul(this.costBase()) + this.pay(buyonecost) + + setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(1)) + layers.cb.levelup() + } else { + let max = Decimal.affordGeometricSeries(this.currency(), this.costBase(), this.costGrowth(), getBuyableAmount(this.layer, this.id)) + if (max.gt(this.purchaseLimit().sub(getBuyableAmount(this.layer, this.id)))) { max = this.purchaseLimit().sub(getBuyableAmount(this.layer, this.id)) } + let cost = Decimal.sumGeometricSeries(max, this.costBase(), this.costGrowth(), getBuyableAmount(this.layer, this.id)) + this.pay(cost) + + setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(max)) + layers.cb.levelup() + } }, style: { width: '275px', height: '150px', } }, @@ -2884,7 +3106,6 @@ addLayer("cb", { }, challenges: { }, - infoboxes: { c1: { title: "Gwa", @@ -3139,9 +3360,17 @@ addLayer("cb", { ["raw-html", function () { return "You have

" + formatWhole(player.cb.evolutionShards) + "

evolution shards." }, { "color": "#d487fd", "font-size": "24px", "font-family": "monospace" }], ["raw-html", function () { return "
(Gained from check back buttons)" }, { "color": "#d487fd", "font-size": "16px", "font-family": "monospace" }], ["blank", "25px"], + ["row", [["bar", "pityEvoBar"]]], + ["raw-html", function () { return "
Gained from failing to obtain an Evolution Shard." }, { "color": "#d487fd", "font-size": "16px", "font-family": "monospace" }], + ["raw-html", function () { return "
Reset when you gain any uncertain Evolution Shards." }, { "color": "#d487fd", "font-size": "16px", "font-family": "monospace" }], + ["blank", "25px"], ["raw-html", function () { return player.cb.highestLevel.gte(250) ? "You have

" + formatWhole(player.cb.paragonShards) + "

paragon shards." : ""}, { "color": "#2842eb", "font-size": "24px", "font-family": "monospace" }], ["raw-html", function () { return player.cb.highestLevel.gte(250) ? "
(Gained from XPBoost buttons)" : "" }, { "color": "#2842eb", "font-size": "16px", "font-family": "monospace" }], ["blank", "25px"], + ["row", [["bar", "pityParaBar"]]], + ["raw-html", function () { return player.cb.highestLevel.gte(250) ? "
Gained from failing to obtain a Paragon Shard." : "" }, { "color": "#2842eb", "font-size": "16px", "font-family": "monospace" }], + ["raw-html", function () { return player.cb.highestLevel.gte(250) ? "
Reset when you gain any uncertain Paragon Shards." : "" }, { "color": "#2842eb", "font-size": "16px", "font-family": "monospace" }], + ["blank", "25px"], ] }, "Buyables": { @@ -3152,7 +3381,8 @@ addLayer("cb", { ["blank", "25px"], ["row", [["clickable", 3], ["clickable", 4]]], ["blank", "25px"], - ["row", [["buyable", 11], ["buyable", 12], ["buyable", 13], ["buyable", 14]]], + ["row", [["buyable", 11], ["buyable", 12], ["buyable", 15]]], + ["row", [["buyable", 13], ["buyable", 14], ["buyable", 16]]], ] }, @@ -3376,6 +3606,7 @@ addLayer("cb", { [ ["raw-html", function () { return "You have

" + formatWhole(player.cb.automationShards) + "

automation shards. (" + formatWhole(player.cb.totalAutomationShards) + " total)" }, { "color": "grey", "font-size": "24px", "font-family": "monospace" }], ["raw-html", function () { return "
(Gained from pet sacrifices)" }, { "color": "grey", "font-size": "16px", "font-family": "monospace" }], + ["raw-html", function () { return "
(Automation triggers only once while offline)" }, { "color": "grey", "font-size": "16px", "font-family": "monospace" }], ["blank", "25px"], ["raw-html", function () { return "Automating Button " + formatWhole(player.cb.buttonIndex.add(1)) }, { "color": "white", "font-size": "24px", "font-family": "monospace" }], ["raw-html", function () { return "You have " + formatWhole(player.cb.buttonAutomationAllocation[player.cb.buttonIndex]) + " allocated into this button." }, { "color": "white", "font-size": "24px", "font-family": "monospace" }], diff --git a/js/components.js b/js/components.js index aa3a4fa..4f6160a 100644 --- a/js/components.js +++ b/js/components.js @@ -36,7 +36,7 @@ function loadVue() { ` }) - + // data = an array of Components to be displayed in a row Vue.component('row', { props: ['layer', 'data'], @@ -75,6 +75,46 @@ function loadVue() { ` }) + // data = an array of Components to be displayed in a row + // look = Object that defines style + Vue.component('style-row', { + props: ['layer', 'data', 'look'], + computed: { + key() {return this.$vnode.key} + }, + template: ` +
+
+
+
+
+
+
+
+
+ ` + }) + + // data = an array of Components to be displayed in a column + // look = Object that defines style + Vue.component('style-column', { + props: ['layer', 'data', 'look'], + computed: { + key() {return this.$vnode.key} + }, + template: ` +
+
+
+
+
+
+
+
+
+ ` + }) + // data [other layer, tabformat for within proxy] Vue.component('layer-proxy', { props: ['layer', 'data'], @@ -229,7 +269,7 @@ function loadVue() { v-html="prestigeButtonText(layer)" v-on:click="doReset(layer)"> ` - + }) // Displays the main resource for the layer @@ -314,7 +354,7 @@ function loadVue() {
` }) - + Vue.component('clickables', { props: ['layer', 'data'], template: ` @@ -334,8 +374,8 @@ function loadVue() { Vue.component('clickable', { props: ['layer', 'data'], template: ` - ", {"color": "white", "font-size": "18px", "font-family": "monospace",}], + ["raw-html", () => "", {"color": "white", "font-size": "18px", "font-family": "monospace",}], + ["raw-html", () => "", {"color": "red", "font-size": "18px", "font-family": "monospace",}], + ]], + + ["row", [ + ["raw-html", () => "", {"color": "white", "font-size": "18px", "font-family": "monospace",}], + ["raw-html", () => "", {"color": "white", "font-size": "18px", "font-family": "monospace",}], + ["raw-html", () => "", {"color": "white", "font-size": "18px", "font-family": "monospace",}], + ["raw-html", () => "", {"color": "white", "font-size": "18px", "font-family": "monospace",}], + ]], + + ["row", [ + ["raw-html", () => "", {"color": "white", "font-size": "18px", "font-family": "monospace",}], + ["raw-html", () => "", {"color": "white", "font-size": "13.3333px", "font-family": "monospace",}], + ["raw-html", () => "", {"color": "white", "font-size": "18px", "font-family": "monospace",}], + ["raw-html", () => "", {"color": "white", "font-size": "18px", "font-family": "monospace",}], + ]], + + ["blank", "25px"], + + ["raw-html", () => "

", {"color": "white", "font-size": "18px", "font-family": "monospace",}], + + ["blank", "25px"], + + ["raw-html", () => "Volume: " + options.musicVolume, {"color": "white", "font-size": "18px", "font-family": "monospace",}], + ["raw-html", () => "Autosave: " + options.autosave, {"color": "white", "font-size": "18px", "font-family": "monospace",}], + ["raw-html", () => "Sidebar Layout: " + options.newMenu, {"color": "white", "font-size": "18px", "font-family": "monospace",}], + ["raw-html", () => "Music Toggle: " + options.musicToggle, {"color": "white", "font-size": "18px", "font-family": "monospace",}], + ["raw-html", () => "Hotkey Toggle: " + options.toggleHotkey, {"color": "white", "font-size": "18px", "font-family": "monospace",}], + + ["blank", "25px"], + + ["raw-html", () => "Playtime: " + formatTime(player.timePlayed), {"color": "white", "font-size": "18px", "font-family": "monospace",}], + + ["blank", "25px"], + + ["raw-html", () => "Join the Discord!", {"color": "white", "font-size": "36px", "font-family": "monospace",}], + + ["blank", "25px"], + + ["raw-html", () => hotkey, {"color": "white", "font-size": "18px", "font-family": "monospace",}], + + ["blank", "25px"], + + ["raw-html", () => credits, {"color": "white", "font-size": "18px", "font-family": "monospace",}], + + ["blank", "25px"], + + ["raw-html", () => changelog, {"color": "white", "font-size": "18px", "font-family": "monospace",}], + ], + layerShown() { return false } +}) +addLayer("u1u", { + name: "u1u", // This is optional, only used in a few places, If absent it just uses the layer id. + symbol: "U1U", // This appears on the layer's node. Default is the id with the first letter capitalized + row: 1, + position: 0, // Horizontal position within a row. By default it uses the layer id and sorts in alphabetical order + startData() { return { + unlocked: true, + } + }, + automate() {}, + nodeStyle() {}, + tooltip: "Upgrades", + color: "#eaf6f7", + branches: ["branch"], + clickables: {}, + bars: {}, + upgrades: {}, + buyables: {}, + milestones: {}, + challenges: {}, + infoboxes: {}, + microtabs: {}, + tabFormat: [ + ["layer-proxy", ["i", [ + ["raw-html", function () { return "You have

" + format(player.points) + "

celestial points." }, { "color": "white", "font-size": "24px", "font-family": "monospace" }], + ["raw-html", function () { return "You are gaining

" + format(player.gain) + "

celestial points per second." }, { "color": "white", "font-size": "16px", "font-family": "monospace" }], + ["blank", "25px"], + ["row", [["upgrade", 11], ["upgrade", 12], ["upgrade", 13], ["upgrade", 14], ["upgrade", 15], ["upgrade", 16]]], + ["row", [["upgrade", 17], ["upgrade", 18], ["upgrade", 19], ["upgrade", 21], ["upgrade", 22], ["upgrade", 23]]], + ["row", [["upgrade", 24], ["upgrade", 25], ["upgrade", 26], ["upgrade", 27], ["upgrade", 28], ["upgrade", 29]]], + ["row", [["upgrade", 31]]], + ["row", [["upgrade", 37], ["upgrade", 38], ["upgrade", 39], ["upgrade", 41]]], + ]]]], + layerShown() { return false } +}) +addLayer("a1u", { + name: "a1u", // This is optional, only used in a few places, If absent it just uses the layer id. + symbol: "A1U", // This appears on the layer's node. Default is the id with the first letter capitalized + row: 1, + position: 0, // Horizontal position within a row. By default it uses the layer id and sorts in alphabetical order + startData() { return { + unlocked: true, + } + }, + automate() {}, + nodeStyle() {}, + tooltip: "Upgrades", + color: "#eaf6f7", + branches: ["branch"], + clickables: {}, + bars: {}, + upgrades: {}, + buyables: {}, + milestones: {}, + challenges: {}, + infoboxes: {}, + microtabs: {}, + tabFormat: [ + ["layer-proxy", ["cp", [ + ["raw-html", function () { return "You have

" + format(player.cp.replicantiPoints) + "

replicanti points." }, { "color": "white", "font-size": "20px", "font-family": "monospace" }], + ["raw-html", function () { return "Replicanti point Mult: " + format(player.cp.replicantiPointsMult, 4) + "x" }, { "color": "white", "font-size": "16px", "font-family": "monospace" }], + ["row", [["bar", "replicantiBar"]]], + ["blank", "25px"], + ["row", [["upgrade", 11], ["upgrade", 12], ["upgrade", 13], ["upgrade", 14], ["upgrade", 15], ["upgrade", 16]]], + ["row", [["upgrade", 17], ["upgrade", 18]]], + ]]]], + layerShown() { return false } +}) +addLayer("a1s", { + name: "a1s", // This is optional, only used in a few places, If absent it just uses the layer id. + symbol: "A1S", // This appears on the layer's node. Default is the id with the first letter capitalized + row: 1, + position: 0, // Horizontal position within a row. By default it uses the layer id and sorts in alphabetical order + startData() { return { + unlocked: true, + } + }, + automate() {}, + nodeStyle() {}, + tooltip: "Softcap", + color: "#eaf6f7", + branches: ["branch"], + clickables: {}, + bars: {}, + upgrades: {}, + buyables: {}, + milestones: {}, + challenges: {}, + infoboxes: {}, + microtabs: {}, + tabFormat: [ + ["layer-proxy", ["cp", [ + ["raw-html", function () { return "You have

" + format(player.cp.replicantiPoints) + "

replicanti points." }, { "color": "white", "font-size": "20px", "font-family": "monospace" }], + ["raw-html", function () { return "Replicanti point Mult: " + format(player.cp.replicantiPointsMult, 4) + "x" }, { "color": "white", "font-size": "16px", "font-family": "monospace" }], + ["row", [["bar", "replicantiBar"]]], + ["blank", "25px"], + ["raw-html", function () { return "Softcap starts at

" + format(player.cp.replicantiSoftcapStart) + "

." }, { "color": "white", "font-size": "20px", "font-family": "monospace" }], + ["raw-html", function () { return "Softcap divides replicanti mult by

/" + format(player.cp.replicantiSoftcapEffect) + "

." }, { "color": "white", "font-size": "20px", "font-family": "monospace" }], + ["blank", "25px"], + ["raw-html", function () { return player.cp.replicantiPoints.gte(player.cp.replicantiSoftcap2Start) ? "Second softcap starts at

" + format(player.cp.replicantiSoftcap2Start) + "

." : ""}, { "color": "#ff4545", "font-size": "20px", "font-family": "monospace" }], + ["raw-html", function () { return player.cp.replicantiPoints.gte(player.cp.replicantiSoftcap2Start) ? "Second softcap divides replicanti mult by

/" + format(player.cp.replicantiSoftcap2Effect) + "

." : ""}, { "color": "#ff4545", "font-size": "20px", "font-family": "monospace" }], + ]]]], + layerShown() { return false } +}) diff --git a/js/mod.js b/js/mod.js index 82e74f6..893ba74 100644 --- a/js/mod.js +++ b/js/mod.js @@ -8,18 +8,18 @@ "antimatterDimensions.js", "infinityPoints.js", "galaxy.js", "pests.js", "hex.js", "debuff.js", "tav.js", "tavDomain.js", "breakInfinity.js", "lore.js", "otfMastery.js", "infinityDimensions.js", "cante.js", "realmMods.js", "cantepocalypsePuzzle.js", "Cantepocalypse/cantepocalypse.js", "Cantepocalypse/altRanks.js", "Cantepocalypse/perks.js", "Cantepocalypse/anonymity.js", "Cantepocalypse/repliTrees.js", "Cantepocalypse/repliGrass.js", - "Cantepocalypse/grassSkip.js","Cantepocalypse/oil.js", "Singularity/singularity.js", "Gwa Temple/gwaTemple.js", "epicPets.js",], + "Cantepocalypse/grassSkip.js","Cantepocalypse/oil.js", "Singularity/singularity.js", "Gwa Temple/gwaTemple.js", "epicPets.js", "menulayers.js", "pollinator.js"], discordName: "", discordLink: "", initialStartPoints: new Decimal(0), // Used for hard resets and new players - offlineLimit: 1, // In hours + offlineLimit: 0, // In hours } // Set your version in num and name let VERSION = { - num: "1.2.1", - name: "The Pet Update Part II: Epic Pets", + num: "1.3", + name: "The Layout Update - with QoL", } let hotkey = `

Hotkeys:


@@ -36,14 +36,54 @@ let credits = `

Credits:


-Art by Jtoh_Sc.
-Testing by Nova and Piterpicher.
-Bug Fixes by Tsanth and Forwaken.
+ -Revamped Layout Concept by Seder3214.
` let changelog = `

Changelog:


-

v1.2.1 - Softcaps and Inflation Squashing


+

v1.3 - The Layout Update - with QoL


- CONTAINS MAJOR SPOILERS FOR THE ENTIRE GAME. READ WITH CAUTION.



+ Content:
+ - Added the Sidebar Layout.
+ - Added the Pollinators Layer.

+ Bugfixes:
+ - Fixed Grass Skip not resetting the last anonymity upgrade.
+ - Fixed Repli-Trees softcap system not functioning correctly.
+ - Fixed Portal bar being very slightly inaccurate.
+ - Fixed Dragon buttons not giving the correct shard.
+ - Fixed Automation buyables not being autobought correctly.

+ Typos:
+ - Fixed multiple instances of "replicanti points" being incorrectly typed as just "replicanti".
+ - Fixed Repli-Grass buyable 1's description accidentally saying it multiplied repli-leaf instead of repli-grass.
+ - Fixed Dragon button alerts not showing the correct shard chance.
+ - Fixed Alternate Infinity production text not correctly showing on all "Infinities" tabs.
+ - Fixed upgrade names in IP Challenge 6 being incorrectly numbered.
+ - Fixed Cookie upgrades 1 and 2's effects being mislabeled as "based on dragon points".

+ QoL:
+ - Check Back now runs offline with no offline cap.
+ - Automation Shards can trigger once while offline. (Gives use to last buttons)
+ - Added a pity system to Check Back shards.
+ - Improved the rates of Dice and Drippy Ufo pet.
+ - Made Oil a bit brighter to improve contrast.
+ - Added import/export file.
+ - Added a new infinity milestone that keeps Universe 1 upgrades.
+ - Revamped the look of Tav's dimension power tab.
+ - Added new option in Tav Autobuy.
+ - Added the option to autocrunch based on time.
+ - Added Paragon Shards to the pet shop, unlocked at level 3,000.
+ - Added buttons to scroll through the epic shops when in tree-layout.

+ Balancing:
+ - Added caps to most uni 1 buyables to prevent lag from automation.

+ Refactoring:
+ - Antimatter Dimensions code refactored to fix uncountable bugs.
+ - Infinity Dimensions code refactored to fix uncountable bugs.
+ - Grass code refactored to improve framerate. (Thanks Tsanth)

+ ???:
+ - Continued work on the buyable code rework, layers improved this patch are hex, grass, AD, and ID.
+ - As I said last patch, this also means the buy max buttons on those layers are subtab specific now.

+

v1.2.1 - Softcaps and Inflation Squashing


Bugfixes:
- Fixed Oil buy max buttons not loading correctly.
- Fixed Dice rolling with one less side then intended.
@@ -131,7 +171,7 @@ let changelog = `

Changelog:


Balancing:
- Nerfed the scaling of Nova's second effect.
- Changed the Check Back buyable cost to be based on total XP instead of current level.

-

v1.1 - The Pet Update Part 1 - With Bugfixes


+

v1.1 - The Pet Update Part 1 - With Bugfixes


Content:
- Added 3 new pet evolutions, for spider, clock, and drippy ufo.
- Added 3 new features to go with the evolutions: advanced halter, shard buttons and moonstone.

@@ -180,7 +220,7 @@ var doNotCallTheseFunctionsEveryTick = ["blowUpEverything", "startCutscene1","st "sacrificeCommonPet", "sacrificeAllCommonPet", "sacrificeUncommonPet", "sacrificeAllUncommonPet", "sacrificeRarePet", "sacrificeAllRarePet", "steelieReset", "crystalReset", "replicantiMultiply", "gainCanteCore", "ragePowerReset", "blankModReset", "replicantiPointMultiply", "repliLeavesMultiply", "loadRepliGrass", "unloadRepliGrass", "grassSkipReset", "oilReset", "convertRememberanceCore", "startCutsceneDice", "startCutsceneRocketFuel", "startCutsceneHex", "startRealmModCutscene", "loadMoonstone", "unloadMoonstone", "petButton5", "petButton6", "refreshBanner", -"commonPetBanner", "uncommonPetBanner", "rarePetBanner"] +"commonPetBanner", "uncommonPetBanner", "rarePetBanner", "offlineCooldown"] function getStartPoints(){ return new Decimal(modInfo.initialStartPoints) @@ -209,6 +249,7 @@ function addedPlayerData() { return { //meta stuff gain: new Decimal(0), universe: 1, + musuniverse: 1, }} // Display extra things at the top of the page @@ -244,6 +285,54 @@ function fixOldSave(oldVersion){ player.p.crystals = new Decimal(0) callAlert("Oh no, your save file was inflated. Steel, Crystal, and debuff currencies are reset.", "resources/gat.png") } + if (oldVersion == "1.2.1" || oldVersion == "1.2" || oldVersion == "1.1.2" || oldVersion == "1.1.1" || oldVersion == "1.1" || oldVersion == "1.0") { + setBuyableAmount("ad", 2, player.ad.dimBoostAmount) + setBuyableAmount("ad", 3, player.ad.galaxyAmount) + setBuyableAmount("id", 1, player.id.dimensionUnlockAmount) + setBuyableAmount("id", 11, player.id.dimensionsPurchased[0]) + setBuyableAmount("id", 12, player.id.dimensionsPurchased[1]) + setBuyableAmount("id", 13, player.id.dimensionsPurchased[2]) + setBuyableAmount("id", 14, player.id.dimensionsPurchased[3]) + setBuyableAmount("id", 15, player.id.dimensionsPurchased[4]) + setBuyableAmount("id", 16, player.id.dimensionsPurchased[5]) + setBuyableAmount("id", 17, player.id.dimensionsPurchased[6]) + setBuyableAmount("id", 18, player.id.dimensionsPurchased[7]) + // Prevent old save factor buyables from being over cap + for (let i = 1; i < 9; i++) { + if (getBuyableAmount("f", i).gt(2500)) setBuyableAmount("f", i, 2500) + } + for (let i = 11; i < 20; i++) { + if (getBuyableAmount("f", i).gt(2500)) setBuyableAmount("f", i, 2500) + } + for (let i = 21; i < 30; i++) { + if (getBuyableAmount("f", i).gt(2500)) setBuyableAmount("f", i, 2500) + } + for (let i = 31; i < 37; i++) { + if (getBuyableAmount("f", i).gt(2500)) setBuyableAmount("f", i, 2500) + } + for (let i = 41; i < 49; i++) { + if (getBuyableAmount("f", i).gt(250)) setBuyableAmount("f", i, 250) + } + for (let i = 51; i < 59; i++) { + if (getBuyableAmount("f", i).gt(1000)) setBuyableAmount("f", i, 1000) + } + + // Prevent old save tree buyables from being over cap + if (getBuyableAmount("t", 11).gt(5000)) setBuyableAmount("t", 11, 5000) + if (getBuyableAmount("t", 12).gt(1000)) setBuyableAmount("t", 12, 1000) + if (getBuyableAmount("t", 13).gt(5000)) setBuyableAmount("t", 13, 5000) + for (let i = 14; i < 19; i++) { + if (getBuyableAmount("t", i).gt(1000)) setBuyableAmount("t", i, 1000) + } + + // Prevent old save grass buyables from being over cap + if (getBuyableAmount("g", 11).gt(1000)) setBuyableAmount("g", 11, 1000) + if (getBuyableAmount("g", 12).gt(200)) setBuyableAmount("g", 12, 200) + if (getBuyableAmount("g", 13).gt(500)) setBuyableAmount("g", 13, 500) + if (getBuyableAmount("g", 14).gt(1000)) setBuyableAmount("g", 14, 1000) + if (getBuyableAmount("g", 15).gt(1000)) setBuyableAmount("g", 15, 1000) + if (getBuyableAmount("g", 16).gt(1000)) setBuyableAmount("g", 16, 1000) + } } // you know i actually did some work. yea it was copy / pasting dialogue and basically typing words, but now i can say that i worked on celesital incremental as a developer. diff --git a/js/mods.js b/js/mods.js index 576f99c..88f66ff 100644 --- a/js/mods.js +++ b/js/mods.js @@ -20,6 +20,8 @@ modSoftcap: new Decimal(1), modSoftcapStart: new Decimal(10), + + modMax: false, } }, automate() { @@ -49,8 +51,8 @@ if (inChallenge("ip", 13) || player.po.hex) player.m.modsToGet = player.m.modsToGet.mul(buyableEffect("h", 18)) if (hasUpgrade("ip", 33) && !inChallenge("ip", 14)) player.m.modsToGet = player.m.modsToGet.mul(upgradeEffect("ip", 33)) if (player.de.antidebuffIndex.eq(4)) player.m.modsToGet = player.m.modsToGet.mul(player.de.antidebuffEffect) + if (player.pol.pollinatorsIndex == 6) player.m.modsToGet = player.m.modsToGet.mul(player.pol.pollinatorsEffect[11]) player.m.modsToGet = player.m.modsToGet.mul(buyableEffect("p", 12)) - if (hasUpgrade("i", 24) && player.points.gte("1e400")) player.m.modsToGet = player.m.modsToGet.mul(1e18) player.m.modsToGet = player.m.modsToGet.pow(buyableEffect("rm", 28)) player.m.modsToGet = player.m.modsToGet.div(player.po.halterEffects[10]) @@ -61,6 +63,7 @@ if (hasUpgrade("ip", 23) && !inChallenge("ip", 14)) player.m.linesOfCodePerSecond = player.m.linesOfCodePerSecond.mul(upgradeEffect("ip", 23)) player.m.linesOfCodePerSecond = player.m.linesOfCodePerSecond.div(player.pe.pestEffect[5]) player.m.linesOfCodePerSecond = player.m.linesOfCodePerSecond.mul(buyableEffect("p", 12)) + if (player.pol.pollinatorsIndex == 6) player.m.linesOfCodePerSecond = player.m.linesOfCodePerSecond.mul(player.pol.pollinatorsEffect[10]) player.m.linesOfCodePerSecond = player.m.linesOfCodePerSecond.div(player.po.halterEffects[9]) if (player.m.mods.gte(player.m.modSoftcapStart)) @@ -75,7 +78,7 @@ player.m.linesOfCode = player.m.linesOfCode.add(player.m.linesOfCodePerSecond.mul(delta)) if (player.m.linesOfCode.gte(player.m.modsReq)) { - player.m.mods = player.m.mods.add(player.m.modsToGet) + player.m.mods = player.m.mods.add(player.m.modsToGet) player.m.linesOfCode = new Decimal(0) } @@ -105,8 +108,6 @@ if (player.de.antidebuffIndex.eq(5)) player.m.codeExperienceToGet = player.m.codeExperienceToGet.mul(player.de.antidebuffEffect) if (inChallenge("tad", 11)) player.m.codeExperienceToGet = player.m.codeExperienceToGet.pow(0.4) if (inChallenge("tad", 11)) player.m.codeExperienceToGet = player.m.codeExperienceToGet.pow(buyableEffect("de", 17)) - if (hasUpgrade("bi", 17)) player.m.codeExperienceToGet = player.m.codeExperienceToGet.mul(upgradeEffect("bi", 17)) - player.m.codeExperienceToGet = player.m.codeExperienceToGet.mul(buyableEffect("p", 13)) player.m.codeExperienceToGet = player.m.codeExperienceToGet.div(player.po.halterEffects[8]) if (hasMilestone("ip", 22)) player.m.codeExperience = player.m.codeExperience.add(player.m.codeExperienceToGet.mul(Decimal.mul(delta, 0.1))) @@ -121,7 +122,7 @@ 1: { title() { return "

Return" }, canClick() { return true }, - unlocked() { return true }, + unlocked() { return options.newMenu == false }, onClick() { player.tab = "i" }, @@ -129,19 +130,19 @@ }, 2: { title() { return "Buy Max On" }, - canClick() { return player.buyMax == false }, + canClick() { return player.m.modMax == false }, unlocked() { return true }, onClick() { - player.buyMax = true + player.m.modMax = true }, style: { width: '75px', "min-height": '50px', } }, 3: { title() { return "Buy Max Off" }, - canClick() { return player.buyMax == true }, + canClick() { return player.m.modMax == true }, unlocked() { return true }, onClick() { - player.buyMax = false + player.m.modMax = false }, style: { width: '75px', "min-height": '50px', } }, @@ -266,130 +267,138 @@ }, buyables: { 11: { - cost(x) { return new Decimal(1.3).pow(x || getBuyableAmount(this.layer, this.id)).mul(4) }, + costBase() { return new Decimal(4) }, + costGrowth() { return new Decimal(1.3) }, + purchaseLimit() { return new Decimal(1000) }, + currency() { return player.m.mods}, + pay(amt) { player.m.mods = this.currency().sub(amt) }, effect(x) { return new getBuyableAmount(this.layer, this.id).pow(0.8).mul(0.25).add(1) }, unlocked() { return true }, - canAfford() { return player.m.mods.gte(this.cost()) }, + cost(x) { return this.costGrowth().pow(x || getBuyableAmount(this.layer, this.id)).mul(this.costBase()) }, + canAfford() { return this.currency().gte(this.cost()) }, title() { - return format(getBuyableAmount(this.layer, this.id), 0) + "
Code Experience Multiplier" + return format(getBuyableAmount(this.layer, this.id), 0) + "/1,000
Code Experience Multiplier" }, display() { return "which are boosting code experience gain by x" + format(tmp[this.layer].buyables[this.id].effect) + ".\n\ Cost: " + format(tmp[this.layer].buyables[this.id].cost) + " Mods" }, buy() { - let base = new Decimal(4) - let growth = 1.3 - if (player.buyMax == false && !hasMilestone("ip", 17)) - { - let buyonecost = new Decimal(growth).pow(getBuyableAmount(this.layer, this.id)).mul(base) - if (!hasMilestone("ip", 17)) player.m.mods = player.m.mods.sub(buyonecost) + if (player.m.modMax == false && !hasMilestone("ip", 17)) { + let buyonecost = new Decimal(this.costGrowth()).pow(getBuyableAmount(this.layer, this.id)).mul(this.costBase()) + this.pay(buyonecost) + setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(1)) - } else - { - - let max = Decimal.affordGeometricSeries(player.m.mods, base, growth, getBuyableAmount(this.layer, this.id)) - let cost = Decimal.sumGeometricSeries(max, base, growth, getBuyableAmount(this.layer, this.id)) - if (!hasMilestone("ip", 17)) player.m.mods = player.m.mods.sub(cost) - - setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(max)) - } + } else { + let max = Decimal.affordGeometricSeries(this.currency(), this.costBase(), this.costGrowth(), getBuyableAmount(this.layer, this.id)) + if (max.gt(this.purchaseLimit().sub(getBuyableAmount(this.layer, this.id)))) { max = this.purchaseLimit().sub(getBuyableAmount(this.layer, this.id)) } + let cost = Decimal.sumGeometricSeries(max, this.costBase(), this.costGrowth(), getBuyableAmount(this.layer, this.id)) + if (!hasMilestone("ip", 17)) this.pay(cost) + + setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(max)) + } }, style: { width: '275px', height: '150px', } }, 12: { - cost(x) { return new Decimal(1.35).pow(x || getBuyableAmount(this.layer, this.id)).mul(6) }, + costBase() { return new Decimal(6) }, + costGrowth() { return new Decimal(1.35) }, + purchaseLimit() { return new Decimal(1000) }, + currency() { return player.m.mods}, + pay(amt) { player.m.mods = this.currency().sub(amt) }, effect(x) { return new getBuyableAmount(this.layer, this.id).pow(0.9).mul(0.25).add(1) }, unlocked() { return true }, - canAfford() { return player.m.mods.gte(this.cost()) }, + cost(x) { return this.costGrowth().pow(x || getBuyableAmount(this.layer, this.id)).mul(this.costBase()) }, + canAfford() { return this.currency().gte(this.cost()) }, title() { - return format(getBuyableAmount(this.layer, this.id), 0) + "
Lines of Code Multiplier" + return format(getBuyableAmount(this.layer, this.id), 0) + "/1,000
Lines of Code Multiplier" }, display() { return "which are boosting lines of code gain by x" + format(tmp[this.layer].buyables[this.id].effect) + ".\n\ Cost: " + format(tmp[this.layer].buyables[this.id].cost) + " Mods" }, buy() { - let base = new Decimal(6) - let growth = 1.35 - if (player.buyMax == false && !hasMilestone("ip", 17)) - { - let buyonecost = new Decimal(growth).pow(getBuyableAmount(this.layer, this.id)).mul(base) - if (!hasMilestone("ip", 17)) player.m.mods = player.m.mods.sub(buyonecost) + if (player.m.modMax == false && !hasMilestone("ip", 17)) { + let buyonecost = new Decimal(this.costGrowth()).pow(getBuyableAmount(this.layer, this.id)).mul(this.costBase()) + this.pay(buyonecost) + setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(1)) - } else - { - - let max = Decimal.affordGeometricSeries(player.m.mods, base, growth, getBuyableAmount(this.layer, this.id)) - let cost = Decimal.sumGeometricSeries(max, base, growth, getBuyableAmount(this.layer, this.id)) - if (!hasMilestone("ip", 17)) player.m.mods = player.m.mods.sub(cost) - - setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(max)) - } + } else { + let max = Decimal.affordGeometricSeries(this.currency(), this.costBase(), this.costGrowth(), getBuyableAmount(this.layer, this.id)) + if (max.gt(this.purchaseLimit().sub(getBuyableAmount(this.layer, this.id)))) { max = this.purchaseLimit().sub(getBuyableAmount(this.layer, this.id)) } + let cost = Decimal.sumGeometricSeries(max, this.costBase(), this.costGrowth(), getBuyableAmount(this.layer, this.id)) + if (!hasMilestone("ip", 17)) this.pay(cost) + + setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(max)) + } }, style: { width: '275px', height: '150px', } }, 13: { - cost(x) { return new Decimal(1.4).pow(x || getBuyableAmount(this.layer, this.id)).mul(9) }, + costBase() { return new Decimal(9) }, + costGrowth() { return new Decimal(1.4) }, + purchaseLimit() { return new Decimal(1000) }, + currency() { return player.m.mods}, + pay(amt) { player.m.mods = this.currency().sub(amt) }, effect(x) { return new getBuyableAmount(this.layer, this.id).mul(0.1).add(1) }, unlocked() { return true }, - canAfford() { return player.m.mods.gte(this.cost()) }, + cost(x) { return this.costGrowth().pow(x || getBuyableAmount(this.layer, this.id)).mul(this.costBase()) }, + canAfford() { return this.currency().gte(this.cost()) }, title() { - return format(getBuyableAmount(this.layer, this.id), 0) + "
Golden Grass Value Multiplier" + return format(getBuyableAmount(this.layer, this.id), 0) + "/1,000
Golden Grass Value Multiplier" }, display() { return "which are boosting golden grass value by x" + format(tmp[this.layer].buyables[this.id].effect) + ".\n\ Cost: " + format(tmp[this.layer].buyables[this.id].cost) + " Mods" }, buy() { - let base = new Decimal(9) - let growth = 1.4 - if (player.buyMax == false && !hasMilestone("ip", 17)) - { - let buyonecost = new Decimal(growth).pow(getBuyableAmount(this.layer, this.id)).mul(base) - if (!hasMilestone("ip", 17)) player.m.mods = player.m.mods.sub(buyonecost) + if (player.m.modMax == false && !hasMilestone("ip", 17)) { + let buyonecost = new Decimal(this.costGrowth()).pow(getBuyableAmount(this.layer, this.id)).mul(this.costBase()) + this.pay(buyonecost) + setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(1)) - } else - { - - let max = Decimal.affordGeometricSeries(player.m.mods, base, growth, getBuyableAmount(this.layer, this.id)) - let cost = Decimal.sumGeometricSeries(max, base, growth, getBuyableAmount(this.layer, this.id)) - if (!hasMilestone("ip", 17)) player.m.mods = player.m.mods.sub(cost) - - setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(max)) - } + } else { + let max = Decimal.affordGeometricSeries(this.currency(), this.costBase(), this.costGrowth(), getBuyableAmount(this.layer, this.id)) + if (max.gt(this.purchaseLimit().sub(getBuyableAmount(this.layer, this.id)))) { max = this.purchaseLimit().sub(getBuyableAmount(this.layer, this.id)) } + let cost = Decimal.sumGeometricSeries(max, this.costBase(), this.costGrowth(), getBuyableAmount(this.layer, this.id)) + if (!hasMilestone("ip", 17)) this.pay(cost) + + setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(max)) + } }, style: { width: '275px', height: '150px', } }, 14: { - cost(x) { return new Decimal(1.5).pow(x || getBuyableAmount(this.layer, this.id)).mul(15) }, + costBase() { return new Decimal(15) }, + costGrowth() { return new Decimal(1.5) }, + purchaseLimit() { return new Decimal(1000) }, + currency() { return player.m.mods}, + pay(amt) { player.m.mods = this.currency().sub(amt) }, effect(x) { return new getBuyableAmount(this.layer, this.id).add(1) }, unlocked() { return true }, - canAfford() { return player.m.mods.gte(this.cost()) }, + cost(x) { return this.costGrowth().pow(x || getBuyableAmount(this.layer, this.id)).mul(this.costBase()) }, + canAfford() { return this.currency().gte(this.cost()) }, title() { - return format(getBuyableAmount(this.layer, this.id), 0) + "
Point, Factor Power, and Prestige Point Multiplier" + return format(getBuyableAmount(this.layer, this.id), 0) + "/1,000
Point, Factor Power, and Prestige Point Multiplier" }, display() { return "which are boosting point, factor power, and prestige point gain by x" + format(tmp[this.layer].buyables[this.id].effect) + ".\n\ Cost: " + format(tmp[this.layer].buyables[this.id].cost) + " Mods" }, buy() { - let base = new Decimal(15) - let growth = 1.5 - if (player.buyMax == false && !hasMilestone("ip", 17)) - { - let buyonecost = new Decimal(growth).pow(getBuyableAmount(this.layer, this.id)).mul(base) - if (!hasMilestone("ip", 17)) player.m.mods = player.m.mods.sub(buyonecost) + if (player.m.modMax == false && !hasMilestone("ip", 17)) { + let buyonecost = new Decimal(this.costGrowth()).pow(getBuyableAmount(this.layer, this.id)).mul(this.costBase()) + this.pay(buyonecost) + setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(1)) - } else - { - - let max = Decimal.affordGeometricSeries(player.m.mods, base, growth, getBuyableAmount(this.layer, this.id)) - let cost = Decimal.sumGeometricSeries(max, base, growth, getBuyableAmount(this.layer, this.id)) - if (!hasMilestone("ip", 17)) player.m.mods = player.m.mods.sub(cost) - - setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(max)) - } + } else { + let max = Decimal.affordGeometricSeries(this.currency(), this.costBase(), this.costGrowth(), getBuyableAmount(this.layer, this.id)) + if (max.gt(this.purchaseLimit().sub(getBuyableAmount(this.layer, this.id)))) { max = this.purchaseLimit().sub(getBuyableAmount(this.layer, this.id)) } + let cost = Decimal.sumGeometricSeries(max, this.costBase(), this.costGrowth(), getBuyableAmount(this.layer, this.id)) + if (!hasMilestone("ip", 17)) this.pay(cost) + + setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(max)) + } }, style: { width: '275px', height: '150px', } }, @@ -414,7 +423,7 @@ ["raw-html", function () { return "

You have " + formatWhole(player.m.mods) + "

mods, which boost tree gain by x" + format(player.m.modEffect) + "."}], ["raw-html", function () { return "

You will gain " + format(player.m.modsToGet, 1) + "

mods." }], ["raw-html", function () { return player.m.mods.gte(player.m.modSoftcapStart) ? "After " + formatWhole(player.m.modSoftcapStart) + " mods, lines of code gain is divided by " + format(player.m.modSoftcap) + " (Based on mods)" : "" }, { "color": "red", "font-size": "16px", "font-family": "monospace" }], - ["blank", "25px"], + ["blank", "25px"], ["row", [["clickable", 11]]], ] }, @@ -432,7 +441,7 @@ ] }, }, - }, + }, tabFormat: [ ["raw-html", function () { return "You have

" + format(player.points) + "

celestial points (" + format(player.gain) + "/s)." }, { "color": "white", "font-size": "16px", "font-family": "monospace" }], @@ -457,4 +466,4 @@ modsReq: new Decimal(100), modSoftcap: new Decimal(1), - modSoftcapStart: new Decimal(10),*/ \ No newline at end of file + modSoftcapStart: new Decimal(10),*/ diff --git a/js/otfMastery.js b/js/otfMastery.js index 2eff744..06c2bdb 100644 --- a/js/otfMastery.js +++ b/js/otfMastery.js @@ -95,7 +95,7 @@ 1: { title() { return "

Return" }, canClick() { return true }, - unlocked() { return true }, + unlocked() { return options.newMenu == false }, onClick() { player.tab = "in" }, diff --git a/js/pests.js b/js/pests.js index aca0a32..e80332f 100644 --- a/js/pests.js +++ b/js/pests.js @@ -23,7 +23,7 @@ }, tooltip: "Pests", color: "#770022", - + update(delta) { let onepersec = new Decimal(1) @@ -34,7 +34,7 @@ player.pe.pestsPerSecond = player.pe.pestsPerSecond.div(player.de.antidebuffPointsEffect) player.pe.pests = player.pe.pests.add(player.pe.pestsPerSecond.mul(delta)) } - + player.pe.pestEffect = [ player.pe.pests.pow(1.25).div(10).add(1), player.pe.pests.pow(1.05).div(10).add(1), @@ -52,7 +52,7 @@ 1: { title() { return "

Return" }, canClick() { return true }, - unlocked() { return true }, + unlocked() { return options.newMenu == false }, onClick() { player.tab = "i" }, @@ -96,7 +96,7 @@ }, }, - }, + }, tabFormat: [ ["raw-html", function () { return "You have

" + format(player.g.grass) + "

grass, which boost leaf gain by

x" + format(player.g.grassEffect) + "." }, { "color": "white", "font-size": "12px", "font-family": "monospace" }], @@ -106,4 +106,4 @@ ["microtabs", "stuff", { 'border-width': '0px' }], ], layerShown() { return player.startedGame == true && (inChallenge("ip", 12) || inChallenge("ip", 18)) } -}) \ No newline at end of file +}) diff --git a/js/petShop.js b/js/petShop.js index 9e8ba8d..4c4e52b 100644 --- a/js/petShop.js +++ b/js/petShop.js @@ -35,6 +35,9 @@ evoShardsBought: new Decimal(0), evoShardsCost: new Decimal(250), + paraShardsBought: new Decimal(0), + paraShardsCost: new Decimal(5000), + crate1Bought: new Decimal(0), crate1Cost: new Decimal(6), @@ -124,6 +127,9 @@ player.ps.evoShardsCost = new Decimal(250) player.ps.evoShardsCost = player.ps.evoShardsCost.add(player.ps.evoShardsBought.mul(50)) + player.ps.paraShardsCost = new Decimal(5000) + player.ps.paraShardsCost = player.ps.paraShardsCost.add(player.ps.paraShardsBought.mul(1000)) + player.ps.crate1Cost = new Decimal(6) player.ps.crate1Cost = player.ps.crate1Cost.add(player.ps.crate1Bought.mul(3)) @@ -150,6 +156,7 @@ "Crate 4 cost: " + format(player.ps.crate4Cost), "Crate 5 cost: " + format(player.ps.crate5Cost), "Crate 6 cost: " + format(player.ps.crate6Cost), + "Paragon shard cost: " + format(player.ps.paraShardsCost), ] }, resetPrices() @@ -158,6 +165,7 @@ player.ps.uncommonPetsBought = new Decimal(0) player.ps.rarePetsBought = new Decimal(0) player.ps.evoShardsBought = new Decimal(0) + player.ps.paraShardsBought = new Decimal(0) player.ps.crate1Bought = new Decimal(0) player.ps.crate2Bought = new Decimal(0) player.ps.crate3Bought = new Decimal(0) @@ -170,7 +178,7 @@ 1: { title() { return "

Return" }, canClick() { return true }, - unlocked() { return true }, + unlocked() { return options.newMenu == false }, onClick() { player.tab = "cb" }, @@ -335,6 +343,29 @@ }, style: { width: '100px', "min-height": '100px', 'border-radius': "5%" }, }, + 36: { + title() { return "" }, + canClick() { return true }, + unlocked() { return player.ps.unlockedMisc2 }, + onClick() { + player.ps.miscIndex = new Decimal(7) + }, + style: { width: '100px', "min-height": '100px', 'border-radius': "0%" }, + }, + 37: { + title() { return "Buy Paragon Shard" }, + canClick() { return player.cb.petPoints.gte(player.ps.paraShardsCost) }, + unlocked() { return player.ps.miscIndex == 7 }, + onClick() { + player.ps.paraShardsBought = player.ps.paraShardsBought.add(1) + player.cb.petPoints = player.cb.petPoints.sub(player.ps.paraShardsCost) + player.cb.paragonShards = player.cb.paragonShards.add(1); + if (player.ps.togglealert == true) { + callAlert("You gained a PARAGON SHARD!", "resources/paragonShard.png"); + } + }, + style: { width: '100px', "min-height": '100px', 'border-radius': "5%" }, + }, //Commons 101: { title() { return player.cb.commonPetImage[0] }, @@ -908,7 +939,7 @@ player.cb.petPoints = player.cb.petPoints.sub(player.ps.rarePetPrices[6]) player.cb.rarePetAmounts[6] = player.cb.rarePetAmounts[6].add(1); if (player.ps.togglealert == true) { - callAlert("You gained a Grass Square!", "resources/grassSqaureRarePet.png"); + callAlert("You gained a Grass Square!", "resources/grassSquareRarePet.png"); } }, style: { width: '100px', "min-height": '100px', 'border-radius': "5%" }, @@ -956,11 +987,11 @@ ["row", [["clickable", 11]]], ["raw-html", function () { return !player.ps.unlockedMisc ? "Unlocks at check back level 65!" : "" }, { "color": "white", "font-size": "24px", "font-family": "monospace" }], ["blank", "25px"], - ["row", [["clickable", 22], ["clickable", 24], ["clickable", 26], ["clickable", 28], ["clickable", 31], ["clickable", 33], ["clickable", 35]]], + ["row", [["clickable", 22], ["clickable", 37], ["clickable", 24], ["clickable", 26], ["clickable", 28], ["clickable", 31], ["clickable", 33], ["clickable", 35]]], ["blank", "25px"], ["raw-html", function () { return player.ps.unlockedMisc ? player.ps.miscDisplay[player.ps.miscIndex] : ""}, { "color": "white", "font-size": "24px", "font-family": "monospace" }], ["blank", "25px"], - ["row", [["clickable", 21], ["clickable", 23], ["clickable", 25], ["clickable", 27], ["clickable", 29], ["clickable", 32], ["clickable", 34]]], + ["row", [["clickable", 21], ["clickable", 36], ["clickable", 23], ["clickable", 25], ["clickable", 27], ["clickable", 29], ["clickable", 32], ["clickable", 34]]], ["blank", "25px"], ["row", [["clickable", 901], ["clickable", 902]]], ] diff --git a/js/pollinator.js b/js/pollinator.js new file mode 100644 index 0000000..535c92a --- /dev/null +++ b/js/pollinator.js @@ -0,0 +1,532 @@ +addLayer("pol", { + name: "Pollinators", // This is optional, only used in a few places, If absent it just uses the layer id. + symbol: "PO", // This appears on the layer's node. Default is the id with the first letter capitalized + row: 1, + position: 0, // Horizontal position within a row. By default it uses the layer id and sorts in alphabetical order + startData() { return { + unlocked: true, + + pollinators: new Decimal(0), + pollinatorsPerSecond: new Decimal(0), + + pollinatorsEffect: [new Decimal(1), new Decimal(0), new Decimal(1), new Decimal(1), new Decimal(1), new Decimal(1), new Decimal(1), new Decimal(1), new Decimal(1), new Decimal(1), new Decimal(1), new Decimal(1), new Decimal(1), new Decimal(1), new Decimal(1), new Decimal(1)], + pollinatorsIndex: 0, + pollinatorsMax: false + } + }, + automate() { + }, + nodeStyle() { + }, + tooltip: "Pollinators", + color: "#cb8e00", + + update(delta) { + let onepersec = new Decimal(1) + + if (hasUpgrade("i", 22)) { + player.pol.pollinatorsPerSecond = player.g.grass.add(1).log(10).pow(0.75).div(3) + if (hasUpgrade("pol", 12)) { player.pol.pollinatorsPerSecond = player.pol.pollinatorsPerSecond.mul(upgradeEffect("pol", 12)) } + player.pol.pollinatorsPerSecond = player.pol.pollinatorsPerSecond.mul(buyableEffect("pol", 12)) + if (hasUpgrade("g", 23)) { player.pol.pollinatorsPerSecond = player.pol.pollinatorsPerSecond.mul(upgradeEffect("g", 23)) } + player.pol.pollinatorsPerSecond = player.pol.pollinatorsPerSecond.mul(buyableEffect("cb", 15)) + player.pol.pollinatorsPerSecond = player.pol.pollinatorsPerSecond.mul(buyableEffect("p", 13)) + if (hasUpgrade("bi", 17)) player.pol.pollinatorsPerSecond = player.pol.pollinatorsPerSecond.mul(upgradeEffect("bi", 17)) + if (hasMilestone("gs", 18)) player.pol.pollinatorsPerSecond = player.pol.pollinatorsPerSecond.mul(player.gs.milestone8Effect) + if (player.pol.pollinators.gt(1e15)) player.pol.pollinatorsPerSecond = player.pol.pollinatorsPerSecond.pow(0.8) + player.pol.pollinators = player.pol.pollinators.add(player.pol.pollinatorsPerSecond.mul(delta)) + if (player.pol.pollinators.lt(player.pol.pollinatorsPerSecond.mul(buyableEffect("pol", 11)).add(1))) { + player.pol.pollinators = player.pol.pollinatorsPerSecond.mul(buyableEffect("pol", 11)).add(1) + } + } + + switch (player.pol.pollinatorsIndex) { + case 0: + break; + case 1: + player.pol.pollinatorsEffect = [ + player.pol.pollinators.pow(2.7).div(10).add(1).pow(buyableEffect("pol", 14)), // Celestial Points + player.pol.pollinators.add(1).log(10).add(1).pow(buyableEffect("pol", 14)), // Factor Base + new Decimal(1), new Decimal(1), new Decimal(1), new Decimal(1), new Decimal(1), new Decimal(1), new Decimal(1), new Decimal(1), new Decimal(1), new Decimal(1), new Decimal(1), new Decimal(1), new Decimal(1), new Decimal(1) + ]; + break; + case 2: + player.pol.pollinatorsEffect = [ + new Decimal(1), new Decimal(0), + player.pol.pollinators.pow(2.9).div(10).add(1).pow(buyableEffect("pol", 14)), // Factor Power + player.pol.pollinators.pow(3.1).div(10).add(1).pow(buyableEffect("pol", 14)), // Prestige Points + new Decimal(1), new Decimal(1), new Decimal(1), new Decimal(1), new Decimal(1), new Decimal(1), new Decimal(1), new Decimal(1), new Decimal(1), new Decimal(1), new Decimal(1), new Decimal(1) + ]; + break; + case 3: + player.pol.pollinatorsEffect = [ + new Decimal(1), new Decimal(0), new Decimal(1), new Decimal(1), + player.pol.pollinators.pow(3.1).div(10).add(1).pow(buyableEffect("pol", 14)), // Leafs + player.pol.pollinators.pow(2.9).div(10).add(1).pow(buyableEffect("pol", 14)), // Trees + new Decimal(1), new Decimal(1), new Decimal(1), new Decimal(1), new Decimal(1), new Decimal(1), new Decimal(1), new Decimal(1), new Decimal(1), new Decimal(1) + ]; + break; + case 4: + player.pol.pollinatorsEffect = [ + new Decimal(1), new Decimal(0), new Decimal(1), new Decimal(1), new Decimal(1), new Decimal(1), + player.pol.pollinators.pow(2.1).div(10).add(1).pow(buyableEffect("pol", 14)), // Grass Value + player.pol.pollinators.pow(0.45).div(10).add(1).pow(buyableEffect("pol", 14)), // Golden Grass Value + new Decimal(1), new Decimal(1), new Decimal(1), new Decimal(1), new Decimal(1), new Decimal(1), new Decimal(1), new Decimal(1) + ]; + break; + case 5: + player.pol.pollinatorsEffect = [ + new Decimal(1), new Decimal(0), new Decimal(1), new Decimal(1), new Decimal(1), new Decimal(1), new Decimal(1), new Decimal(1), + player.pol.pollinators.pow(0.7).div(10).add(1).pow(buyableEffect("pol", 14)), // Grasshoppers + player.pol.pollinators.pow(1.3).div(10).add(1).pow(buyableEffect("pol", 14)), // Fertilizer + new Decimal(1), new Decimal(1), new Decimal(1), new Decimal(1), new Decimal(1), new Decimal(1) + ]; + break; + case 6: + player.pol.pollinatorsEffect = [ + new Decimal(1), new Decimal(0), new Decimal(1), new Decimal(1), new Decimal(1), new Decimal(1), new Decimal(1), new Decimal(1), new Decimal(1), new Decimal(1), + player.pol.pollinators.pow(2.3).div(10).add(1).pow(buyableEffect("pol", 14)), // Lines of Code + player.pol.pollinators.pow(2.1).div(10).add(1).pow(buyableEffect("pol", 14)), // Mods + new Decimal(1), new Decimal(1), new Decimal(1), new Decimal(1) + ]; + break; + case 7: + player.pol.pollinatorsEffect = [ + new Decimal(1), new Decimal(0), new Decimal(1), new Decimal(1), new Decimal(1), new Decimal(1), new Decimal(1), new Decimal(1), new Decimal(1), new Decimal(1), new Decimal(1), new Decimal(1), + player.pol.pollinators.add(1).log(10).mul(1.5).add(1).pow(buyableEffect("pol", 14)), // Dice Points + player.pol.pollinators.add(1).log(10).add(1).pow(buyableEffect("pol", 14)), // Rocket Fuel + player.pol.pollinators.add(1).log(100).add(1).pow(buyableEffect("pol", 14)), // All Hex Points + player.pol.pollinators.add(1).log(100).pow(0.5).div(2).add(1).pow(buyableEffect("pol", 14)) // Realm Mod Energy + ]; + break; + } + }, + branches: ["g", "gh"], + clickables: { + 1: { + title() { return "

Return" }, + canClick() { return true }, + unlocked() { return options.newMenu == false }, + onClick() { + player.tab = "i" + }, + style: { width: '100px', "min-height": '50px' }, + }, + 2: { + title() { return "Buy Max On" }, + canClick() { return player.pol.pollinatorsMax == false }, + unlocked() { return hasUpgrade("pol", 13) }, + onClick() { + player.pol.pollinatorsMax = true + }, + style: { width: '75px', "min-height": '50px', } + }, + 3: { + title() { return "Buy Max Off" }, + canClick() { return player.pol.pollinatorsMax == true }, + unlocked() { return hasUpgrade("pol", 13) }, + onClick() { + player.pol.pollinatorsMax = false + }, + style: { width: '75px', "min-height": '50px', } + }, + 11: { + title() { return "❌"}, + canClick() { return true }, + unlocked() { return true }, + onClick() { + player.pol.pollinatorsIndex = 0 + }, + style: { width: '100px', 'min-height': '100px', 'font-size': '30px', 'border-radius': "0%", background: "#28242c", 'border-width': '4px' }, + }, + 12: { + title() { return "🪲"}, + canClick() { return true }, + unlocked() { return true }, + onClick() { + player.pol.pollinatorsIndex = 1 + }, + style: { width: '100px', 'min-height': '100px', 'font-size': '30px', 'border-radius': "0%", background: "#eaf6f7", 'border-width': '4px' }, + }, + 13: { + title() { return "🪰"}, + canClick() { return true }, + unlocked() { return true }, + onClick() { + player.pol.pollinatorsIndex = 2 + }, + style: { width: '100px', 'min-height': '100px', 'font-size': '30px', 'border-radius': "0%", background: "#31aeb0", 'border-width': '4px' }, + }, + 14: { + title() { return "🦇"}, + canClick() { return true }, + unlocked() { return true }, + onClick() { + player.pol.pollinatorsIndex = 3 + }, + style: { width: '100px', 'min-height': '100px', 'font-size': '30px', 'border-radius': "0%", background: "#0B6623", 'border-width': '4px' }, + }, + 15: { + title() { return "💨"}, + canClick() { return true }, + unlocked() { return hasUpgrade("pol", 11) }, + onClick() { + player.pol.pollinatorsIndex = 4 + }, + style: { width: '100px', 'min-height': '100px', 'font-size': '30px', 'border-radius': "0%", background: "#119B35", 'border-width': '4px' }, + }, + 16: { + title() { return "🐝"}, + canClick() { return true }, + unlocked() { return hasUpgrade("pol", 14) }, + onClick() { + player.pol.pollinatorsIndex = 5 + }, + style: { width: '100px', 'min-height': '100px', 'font-size': '30px', 'border-radius': "0%", background: "#19e04d", 'border-width': '4px' }, + }, + 17: { + title() { return "🦋"}, + canClick() { return true }, + unlocked() { return hasUpgrade("pol", 16) }, + onClick() { + player.pol.pollinatorsIndex = 6 + }, + style: { width: '100px', 'min-height': '100px', 'font-size': '30px', 'border-radius': "0%", background: "#0951a6", 'border-width': '4px' }, + }, + 18: { + title() { return "🐜"}, + canClick() { return true }, + unlocked() { return hasUpgrade("pol", 18) }, + onClick() { + player.pol.pollinatorsIndex = 7 + }, + style: { width: '100px', 'min-height': '100px', 'font-size': '30px', 'border-radius': "0%", background: "linear-gradient(45deg, #8a00a9, #0061ff)", 'border-color': "purple", 'border-width': '4px' }, + }, + }, + bars: { + }, + upgrades: { + 11: + { + title: "Pollinator Upgrade I", + unlocked() { return true }, + description() { return "Unlocks the wind pollinator." }, + cost: new Decimal(1000), + currencyLocation() { return player.pol }, + currencyDisplayName: "Pollinators", + currencyInternalName: "pollinators", + }, + 12: + { + title: "Pollinator Upgrade II", + unlocked() { return true }, + description() { return "Boost pollinator gain based on pollinators." }, + cost: new Decimal(2500), + currencyLocation() { return player.pol }, + currencyDisplayName: "Pollinators", + currencyInternalName: "pollinators", + effect() { + return player.pol.pollinators.add(1).pow(new Decimal(0.1).add(buyableEffect("pol", 13))).div(4).add(1) + }, + effectDisplay() { return format(upgradeEffect(this.layer, this.id))+"x" }, // Add formatting to the effect + style: { width: '150px', height: '120px', }, + }, + 13: + { + title: "Pollinator Upgrade III", + unlocked() { return true }, + description() { return "Unlocks pollinator buyables." }, + cost: new Decimal(10000), + currencyLocation() { return player.pol }, + currencyDisplayName: "Pollinators", + currencyInternalName: "pollinators", + }, + 14: + { + title: "Pollinator Upgrade IV", + unlocked() { return true }, + description() { return "Unlocks the bee pollinator." }, + cost: new Decimal(25000), + currencyLocation() { return player.pol }, + currencyDisplayName: "Pollinators", + currencyInternalName: "pollinators", + }, + 15: + { + title: "Pollinator Upgrade V", + unlocked() { return hasUpgrade("i", 25) }, + description() { return "Unlocks more pollinator buyables." }, + cost: new Decimal(100000), + currencyLocation() { return player.pol }, + currencyDisplayName: "Pollinators", + currencyInternalName: "pollinators", + }, + 16: + { + title: "Pollinator Upgrade VI", + unlocked() { return hasUpgrade("i", 25) }, + description() { return "Unlocks the butterfly pollinator." }, + cost: new Decimal(500000), + currencyLocation() { return player.pol }, + currencyDisplayName: "Pollinators", + currencyInternalName: "pollinators", + }, + 17: + { + title: "Pollinator Upgrade VII", + unlocked() { return hasUpgrade("i", 25) }, + description() { return "Boost Crystals based on pollinators." }, + cost: new Decimal(2500000), + currencyLocation() { return player.pol }, + currencyDisplayName: "Pollinators", + currencyInternalName: "pollinators", + effect() { + return player.pol.pollinators.add(1).log(10).div(2).add(1) + }, + effectDisplay() { return format(upgradeEffect(this.layer, this.id))+"x" }, // Add formatting to the effect + style: { width: '150px', height: '120px', }, + }, + 18: + { + title: "Pollinator Upgrade VIII", + unlocked() { return hasUpgrade("i", 25) }, + description() { return "Unlocks the ant pollinator." }, + cost: new Decimal(10000000), + currencyLocation() { return player.pol }, + currencyDisplayName: "Pollinators", + currencyInternalName: "pollinators", + }, + }, + buyables: { + 11: { + costBase() { return new Decimal(5000) }, + costGrowth() { return new Decimal(2) }, + currency() { return player.pol.pollinators}, + pay(amt) { player.pol.pollinators = this.currency().sub(amt) }, + effect(x) { return getBuyableAmount(this.layer, this.id).mul(5) }, + unlocked() { return hasUpgrade("pol", 13) }, + cost(x) { return this.costGrowth().pow(x || getBuyableAmount(this.layer, this.id)).mul(this.costBase()) }, + canAfford() { return this.currency().gte(this.cost()) }, + title() { + return format(getBuyableAmount(this.layer, this.id), 0) + "
Promised Pollinators" + }, + display() { + return "which guarantees you have at least " + format(tmp[this.layer].buyables[this.id].effect) + " seconds worth of pollinators.\n\ + Cost: " + format(tmp[this.layer].buyables[this.id].cost) + " Pollinators" + }, + buy() { + if (player.pol.pollinatorsMax == false) { + let buyonecost = new Decimal(this.costGrowth()).pow(getBuyableAmount(this.layer, this.id)).mul(this.costBase()) + this.pay(buyonecost) + + setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(1)) + } else { + let max = Decimal.affordGeometricSeries(this.currency(), this.costBase(), this.costGrowth(), getBuyableAmount(this.layer, this.id)) + let cost = Decimal.sumGeometricSeries(max, this.costBase(), this.costGrowth(), getBuyableAmount(this.layer, this.id)) + this.pay(cost) + + setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(max)) + } + }, + style: { width: '275px', height: '150px', } + }, + 12: { + costBase() { return new Decimal(10000) }, + costGrowth() { return new Decimal(2.25) }, + currency() { return player.pol.pollinators}, + pay(amt) { player.pol.pollinators = this.currency().sub(amt) }, + effect(x) { return getBuyableAmount(this.layer, this.id).pow(1.75).mul(0.25).add(1) }, + unlocked() { return hasUpgrade("pol", 13) }, + cost(x) { return this.costGrowth().pow(x || getBuyableAmount(this.layer, this.id)).mul(this.costBase()) }, + canAfford() { return this.currency().gte(this.cost()) }, + title() { + return format(getBuyableAmount(this.layer, this.id), 0) + "
Plentiful Pollinators" + }, + display() { + return "which boosts pollinator gain by x" + format(tmp[this.layer].buyables[this.id].effect) + ".\n\ + Cost: " + format(tmp[this.layer].buyables[this.id].cost) + " Pollinators" + }, + buy() { + if (player.pol.pollinatorsMax == false) { + let buyonecost = new Decimal(this.costGrowth()).pow(getBuyableAmount(this.layer, this.id)).mul(this.costBase()) + this.pay(buyonecost) + + setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(1)) + } else { + let max = Decimal.affordGeometricSeries(this.currency(), this.costBase(), this.costGrowth(), getBuyableAmount(this.layer, this.id)) + let cost = Decimal.sumGeometricSeries(max, this.costBase(), this.costGrowth(), getBuyableAmount(this.layer, this.id)) + this.pay(cost) + + setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(max)) + } + }, + style: { width: '275px', height: '150px', } + }, + 13: { + costBase() { return new Decimal(50000) }, + costGrowth() { return new Decimal(2.5) }, + currency() { return player.pol.pollinators}, + pay(amt) { player.pol.pollinators = this.currency().sub(amt) }, + effect(x) { return getBuyableAmount(this.layer, this.id).pow(0.5).mul(0.03) }, + unlocked() { return hasUpgrade("pol", 15) }, + cost(x) { return this.costGrowth().pow(x || getBuyableAmount(this.layer, this.id)).mul(this.costBase()) }, + canAfford() { return this.currency().gte(this.cost()) }, + title() { + return format(getBuyableAmount(this.layer, this.id), 0) + "
Propagating Pollinators" + }, + display() { + return "which improves pollinator upgrade I's scaling by +" + format(tmp[this.layer].buyables[this.id].effect) + ".\n\ + Cost: " + format(tmp[this.layer].buyables[this.id].cost) + " Pollinators" + }, + buy() { + if (player.pol.pollinatorsMax == false) { + let buyonecost = new Decimal(this.costGrowth()).pow(getBuyableAmount(this.layer, this.id)).mul(this.costBase()) + this.pay(buyonecost) + + setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(1)) + } else { + let max = Decimal.affordGeometricSeries(this.currency(), this.costBase(), this.costGrowth(), getBuyableAmount(this.layer, this.id)) + let cost = Decimal.sumGeometricSeries(max, this.costBase(), this.costGrowth(), getBuyableAmount(this.layer, this.id)) + this.pay(cost) + + setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(max)) + } + }, + style: { width: '275px', height: '150px', } + }, + 14: { + costBase() { return new Decimal(1000000) }, + costGrowth() { return new Decimal(10) }, + purchaseLimit() { return new Decimal(25) }, + currency() { return player.pol.pollinators}, + pay(amt) { player.pol.pollinators = this.currency().sub(amt) }, + effect(x) { return getBuyableAmount(this.layer, this.id).mul(0.01).add(1) }, + unlocked() { return hasUpgrade("pol", 15) }, + cost(x) { return this.costGrowth().pow(x || getBuyableAmount(this.layer, this.id)).mul(this.costBase()) }, + canAfford() { return this.currency().gte(this.cost()) }, + title() { + return format(getBuyableAmount(this.layer, this.id), 0) + "/25
Potent Pollination" + }, + display() { + return "which boosts pollinator effects by ^" + format(tmp[this.layer].buyables[this.id].effect) + ".\n\ + Cost: " + format(tmp[this.layer].buyables[this.id].cost) + " Pollinators" + }, + buy() { + if (player.pol.pollinatorsMax == false) { + let buyonecost = new Decimal(this.costGrowth()).pow(getBuyableAmount(this.layer, this.id)).mul(this.costBase()) + this.pay(buyonecost) + + setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(1)) + } else { + let max = Decimal.affordGeometricSeries(this.currency(), this.costBase(), this.costGrowth(), getBuyableAmount(this.layer, this.id)) + if (max.gt(this.purchaseLimit().sub(getBuyableAmount(this.layer, this.id)))) { max = this.purchaseLimit().sub(getBuyableAmount(this.layer, this.id)) } + let cost = Decimal.sumGeometricSeries(max, this.costBase(), this.costGrowth(), getBuyableAmount(this.layer, this.id)) + this.pay(cost) + + setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(max)) + } + }, + style: { width: '275px', height: '150px', } + }, + }, + milestones: { + + }, + challenges: { + }, + infoboxes: { + p0: { + title: "None", + body() { return "Fun Fact: Without pollinators, all terrestrial ecosystems will collapse." }, + unlocked() { return player.pol.pollinatorsIndex == 0}, + }, + p1: { + title: "Beetle", + body() { return "Fun Fact: Beetles pollinate close to 90% of all flowering plants." }, + unlocked() { return player.pol.pollinatorsIndex == 1}, + }, + p2: { + title: "Fly", + body() { return "Fun Fact: Flies are the dominant pollinator in alpine and subarctic environments." }, + unlocked() { return player.pol.pollinatorsIndex == 2}, + }, + p3: { + title: "Bat", + body() { return "Fun Fact: 300 species of fruit rely on bats for pollination. These include species of bananas, mangoes and durians." }, + unlocked() { return player.pol.pollinatorsIndex == 3}, + }, + p4: { + title: "Wind", + body() { return "Fun Fact: 12% of all flowering plants, including most grasses, are wind pollinated." }, + unlocked() { return player.pol.pollinatorsIndex == 4}, + }, + p5: { + title: "Bee", + body() { return "Fun Fact: A fourth of all food production relies on bee pollination." }, + unlocked() { return player.pol.pollinatorsIndex == 5}, + }, + p6: { + title: "Butterfly", + body() { return "Fun Fact: Butterflies tend to pollinate colorful plants. (Researchers don't study butterflies so this is all I got)" }, + unlocked() { return player.pol.pollinatorsIndex == 6}, + }, + p7: { + title: "Ant", + body() { return "Fun Fact: Ants are not very effective pollinators, but they still do it." }, + unlocked() { return player.pol.pollinatorsIndex == 7}, + } + }, + microtabs: { + stuff: { + "Main": { + buttonStyle() { return { 'color': 'white' } }, + unlocked() { return true }, + content: + [ + ["blank", "25px"], + ["raw-html", function () { return player.pol.pollinatorsIndex == 0 ? "

You are currently selecting nothing." : "" }, { "color": "white", "font-size": "16px", "font-family": "monospace" }], + ["raw-html", function () { return player.pol.pollinatorsIndex == 1 ? "

You are currently selecting the Beetle.

Celestial Points: x" + format(player.pol.pollinatorsEffect[0]) + "

Factor Base: x" + format(player.pol.pollinatorsEffect[1]) : "" }, { "color": "white", "font-size": "16px", "font-family": "monospace" }], + ["raw-html", function () { return player.pol.pollinatorsIndex == 2 ? "

You are currently selecting the Fly.

Factor Power: x" + format(player.pol.pollinatorsEffect[2]) + "

Prestige Points: x" + format(player.pol.pollinatorsEffect[3]) : "" }, { "color": "white", "font-size": "16px", "font-family": "monospace" }], + ["raw-html", function () { return player.pol.pollinatorsIndex == 3 ? "

You are currently selecting the Bat.

Leafs: x" + format(player.pol.pollinatorsEffect[4]) + "

Trees: x" + format(player.pol.pollinatorsEffect[5]) : "" }, { "color": "white", "font-size": "16px", "font-family": "monospace" }], + ["raw-html", function () { return player.pol.pollinatorsIndex == 4 ? "

You are currently selecting Wind.

Grass Value: x" + format(player.pol.pollinatorsEffect[6]) + "

Golden Grass Value: x" + format(player.pol.pollinatorsEffect[7]) : "" }, { "color": "white", "font-size": "16px", "font-family": "monospace" }], + ["raw-html", function () { return player.pol.pollinatorsIndex == 5 ? "

You are currently selecting the Bee.

Grasshoppers: x" + format(player.pol.pollinatorsEffect[8]) + "

Fertilizer: x" + format(player.pol.pollinatorsEffect[9]) : "" }, { "color": "white", "font-size": "16px", "font-family": "monospace" }], + ["raw-html", function () { return player.pol.pollinatorsIndex == 6 ? "

You are currently selecting the Butterfly.

Lines of Code: x" + format(player.pol.pollinatorsEffect[10]) + "

Mods: x" + format(player.pol.pollinatorsEffect[11]) : "" }, { "color": "white", "font-size": "16px", "font-family": "monospace" }], + ["raw-html", function () { return player.pol.pollinatorsIndex == 7 ? "

You are currently selecting the Ant." : "" }, { "color": "white", "font-size": "16px", "font-family": "monospace" }], + ["raw-html", function () { return player.pol.pollinatorsIndex == 7 && player.po.dice ? "

Dice Points: x" + format(player.pol.pollinatorsEffect[12]) : "" }, { "color": "white", "font-size": "16px", "font-family": "monospace", "line-height": "1.8" }], + ["raw-html", function () { return player.pol.pollinatorsIndex == 7 && player.po.rocketFuel ? "

Rocket Fuel: x" + format(player.pol.pollinatorsEffect[13]) : "" }, { "color": "white", "font-size": "16px", "font-family": "monospace", "line-height": "1.8" }], + ["raw-html", function () { return player.pol.pollinatorsIndex == 7 && player.po.hex ? "

All Hex Points: x" + format(player.pol.pollinatorsEffect[14]) : "" }, { "color": "white", "font-size": "16px", "font-family": "monospace", "line-height": "1.8" }], + ["raw-html", function () { return player.pol.pollinatorsIndex == 7 && player.po.realmMods ? "

Realm Mod Energy: x" + format(player.pol.pollinatorsEffect[15]) : "" }, { "color": "white", "font-size": "16px", "font-family": "monospace", "line-height": "1.8" }], + ["blank", "25px"], + ["row", [["clickable", 11], ["clickable", 12], ["clickable", 13], ["clickable", 14]]], + ["row", [["clickable", 15], ["clickable", 16], ["clickable", 17], ["clickable", 18]]], + ["blank", "25px"], + ["row", [["infobox", "p0"], ["infobox", "p1"], ["infobox", "p2"], ["infobox", "p3"], ["infobox", "p4"], ["infobox", "p5"], ["infobox", "p6"], ["infobox", "p7"]]], + ] + }, + "Upgrades": { + buttonStyle() { return { 'color': 'white' } }, + unlocked() { return true }, + content: + [ + ["blank", "25px"], + ["row", [["upgrade", 11], ["upgrade", 12], ["upgrade", 13], ["upgrade", 14]]], + ["row", [["upgrade", 15], ["upgrade", 16], ["upgrade", 17], ["upgrade", 18]]], + ["blank", "25px"], + ["row", [["clickable", 2], ["clickable", 3]]], + ["blank", "25px"], + ["row", [["buyable", 11], ["buyable", 12]]], + ["row", [["buyable", 13], ["buyable", 14]]] + ] + } + }, + }, + + tabFormat: [ + ["raw-html", function () { return "You have

" + format(player.pol.pollinators) + "

pollinators." }, { "color": "#cb8e00", "font-size": "24px", "font-family": "monospace" }], + ["raw-html", function () { return "You are gaining

" + format(player.pol.pollinatorsPerSecond) + "

pollinators per second." }, { "color": "#cb8e00", "font-size": "16px", "font-family": "monospace" }], + ["raw-html", function () { return player.pol.pollinators.gt(1e15) ? "[SOFTCAPPED]" : ""}, { "color": "white", "font-size": "16px", "font-family": "monospace" }], + ["row", [["clickable", 1]]], + ["microtabs", "stuff", { 'border-width': '0px' }], + ], + layerShown() { return player.startedGame == true && hasUpgrade("i", 22) && !(inChallenge("ip", 12) || inChallenge("ip", 18)) } +}) diff --git a/js/portal.js b/js/portal.js index 4f187ca..3979838 100644 --- a/js/portal.js +++ b/js/portal.js @@ -19,9 +19,6 @@ addLayer("po", { keepOTFS: false, - pointHalt: new Decimal(1), - pointHaltInput: new Decimal(1), - halterInput: new Decimal(1), halterEffects: [new Decimal(1),new Decimal(1),new Decimal(1),new Decimal(1),new Decimal(1),new Decimal(1),new Decimal(1),new Decimal(1),new Decimal(1),new Decimal(1),new Decimal(1),], /* @@ -56,21 +53,8 @@ addLayer("po", { player.in.reachedInfinity = true } - if (player.po.pointHaltInput.gte(1)) - { - if (player.po.pointHaltInput.neq(player.po.pointHalt)) - { - player.rm.halterBoostCheck = false - } - player.po.pointHalt = player.po.pointHaltInput - } - if (player.po.pointHaltInput.lt(1)) player.po.pointHalt = new Decimal(1) - - let oldVal = player.po.pointHaltInput - - player.po.featureSlotsMax = new Decimal(1) - if ((inChallenge("tad", 11) && hasUpgrade("de", 14)) || hasUpgrade("i", 27)) player.po.featureSlotsMax = player.po.featureSlotsMax.add(1) + if ((inChallenge("tad", 11) && hasUpgrade("de", 14)) || hasUpgrade("i", 28)) player.po.featureSlotsMax = player.po.featureSlotsMax.add(1) player.po.featureSlots = player.po.featureSlotsMax if (player.po.dice) @@ -114,17 +98,17 @@ addLayer("po", { player.po.halterText = [ - "Currently divides point gain by /" + format(player.po.halterEffects[0]), - "Currently divides factor power gain by /" + format(player.po.halterEffects[1]), - "Currently divides prestige points gain by /" + format(player.po.halterEffects[2]), - "Currently divides leaf gain by /" + format(player.po.halterEffects[3]), - "Currently divides trees gain by /" + format(player.po.halterEffects[4]), - "Currently divides grass gain by /" + format(player.po.halterEffects[5]), - "Currently divides grasshoppers gain by /" + format(player.po.halterEffects[6]), - "Currently divides fertilizer gain by /" + format(player.po.halterEffects[7]), - "Currently divides code experience gain by /" + format(player.po.halterEffects[8]), - "Currently divides lines of code gain by /" + format(player.po.halterEffects[9]), - "Currently divides mod gain by /" + format(player.po.halterEffects[10]), + "

You have " + format(player.points) + " Celestial Points.

You are gaining " + format(player.gain) + " Celestial Points per second.

Celestial Point gain: /" + format(player.po.halterEffects[0]), + "

You have " + format(player.f.factorPower) + " Factor Power.

You are gaining " + format(player.f.factorPowerPerSecond) + " Factor Power per second.

Factor Power gain: /" + format(player.po.halterEffects[1]), + "

You have " + format(player.p.prestigePoints) + " Prestige Points.

You will gain " + format(player.p.prestigePointsToGet) + " Prestige Points on reset.

Prestige Points gain: /" + format(player.po.halterEffects[2]), + "

You have " + format(player.t.leaves) + " Leaves.

You are making " + format(player.t.leavesPerSecond) + " Leaves per second.

Leaf gain: /" + format(player.po.halterEffects[3]), + "

You have " + format(player.t.trees) + " Trees.

You will gain " + format(player.t.treesToGet) + " Trees.

Tree gain: /" + format(player.po.halterEffects[4]), + "

You have " + format(player.g.grass) + " Grass.

Current Grass Value: " + format(player.g.grassVal) + ".

Grass gain: /" + format(player.po.halterEffects[5]), + "

You have " + format(player.gh.grasshoppers) + " Grasshoppers.

You will gain " + format(player.gh.grasshoppersToGet) + " Grasshoppers on reset.

Grasshopper gain: /" + format(player.po.halterEffects[6]), + "

You have " + format(player.gh.fertilizer) + " Fertilizer.

You are gaining " + format(player.gh.fertilizerPerSecond) + " Fertilizer per second.

Fertilizer gain: /" + format(player.po.halterEffects[7]), + "

You have " + format(player.m.codeExperience) + " Code Experience.

You will gain " + format(player.m.codeExperienceToGet) + " Code Experience on reset.

Code Experience gain: /" + format(player.po.halterEffects[8]), + "

You have " + format(player.m.linesOfCode) + " Lines of Code.

You are making " + format(player.m.linesOfCodePerSecond) + " Lines of Code per second.

Lines of Code gain: /" + format(player.po.halterEffects[9]), + "

You have " + format(player.m.mods) + " Mods.

You will gain " + format(player.m.modsToGet) + " Mods.

Mod gain: /" + format(player.po.halterEffects[10]), ] /* 0 - Points @@ -155,7 +139,7 @@ addLayer("po", { 1: { title() { return "

Return" }, canClick() { return true }, - unlocked() { return true }, + unlocked() { return options.newMenu == false }, onClick() { player.tab = player.po.lastUniverse }, @@ -191,7 +175,7 @@ addLayer("po", { 4: { title() { return "

Lower" }, canClick() { return player.po.halterIndex.gt(0) }, - unlocked() { return true }, + unlocked() { return player.ev.evolutionsUnlocked[6] }, onClick() { player.po.halterIndex = player.po.halterIndex.sub(1) }, @@ -200,7 +184,7 @@ addLayer("po", { 5: { title() { return "

Increase" }, canClick() { return player.po.halterIndex.lt(10) }, - unlocked() { return true }, + unlocked() { return player.ev.evolutionsUnlocked[6] }, onClick() { player.po.halterIndex = player.po.halterIndex.add(1) }, @@ -218,7 +202,7 @@ addLayer("po", { 7: { title() { return "

Reset Halts" }, canClick() { return true }, - unlocked() { return true }, + unlocked() { return player.ev.evolutionsUnlocked[6] }, onClick() { for (let i = 0; i < player.po.halterEffects.length; i++) { @@ -230,20 +214,20 @@ addLayer("po", { 8: { title() { return "

View Halts" }, canClick() { return true }, - unlocked() { return true }, + unlocked() { return player.ev.evolutionsUnlocked[6] }, onClick() { callAlert( - "Currently divides point gain by /" + format(player.po.halterEffects[0]) + "\n" + - "Currently divides factor power gain by /" + format(player.po.halterEffects[1]) + "\n" + - "Currently divides prestige points gain by /" + format(player.po.halterEffects[2]) + "\n" + - "Currently divides leaf gain by /" + format(player.po.halterEffects[3]) + "\n" + - "Currently divides trees gain by /" + format(player.po.halterEffects[4]) + "\n" + - "Currently divides grass gain by /" + format(player.po.halterEffects[5]) + "\n" + - "Currently divides grasshoppers gain by /" + format(player.po.halterEffects[6]) + "\n" + - "Currently divides fertilizer gain by /" + format(player.po.halterEffects[7]) + "\n" + - "Currently divides code experience gain by /" + format(player.po.halterEffects[8]) + "\n" + - "Currently divides lines of code gain by /" + format(player.po.halterEffects[9]) + "\n" + - "Currently divides mod gain by /" + format(player.po.halterEffects[10]) + "\n" + "Celestial Point gain: /" + format(player.po.halterEffects[0]) + "\n" + + "Factor Power gain: /" + format(player.po.halterEffects[1]) + "\n" + + "Prestige Point gain: /" + format(player.po.halterEffects[2]) + "\n" + + "Leaf gain: /" + format(player.po.halterEffects[3]) + "\n" + + "Tree gain: /" + format(player.po.halterEffects[4]) + "\n" + + "Grass gain: /" + format(player.po.halterEffects[5]) + "\n" + + "Grasshopper gain: /" + format(player.po.halterEffects[6]) + "\n" + + "Fertilizer gain: /" + format(player.po.halterEffects[7]) + "\n" + + "Code Experience gain: /" + format(player.po.halterEffects[8]) + "\n" + + "Lines of Code gain: /" + format(player.po.halterEffects[9]) + "\n" + + "Mod gain: /" + format(player.po.halterEffects[10]) + "\n" ) }, style: { width: '100px', "min-height": '100px' }, @@ -352,10 +336,10 @@ addLayer("po", { canClick() { return player.po.featureSlots.gte(2) && player.ca.replicanti.gte(1.79e308) && player.ca.canteCores.gte(1)}, unlocked() { return hasUpgrade("bi", 27) }, onClick() { - player.in.infinityPause = new Decimal(8) player.po.keepOTFS = true player.po.realmMods = true player.ca.canteCores = player.ca.canteCores.sub(1) + layers.in.bigCrunch(); }, style: { width: '200px', @@ -374,13 +358,13 @@ addLayer("po", { width: 476, height: 476, progress() { - return player.points.log10().div("308") + return player.points.add(1).log10().div("308.25") }, fillStyle: { "background-color": "#e81cff", }, display() { - return "

" + format(player.points.log10().div("308").mul(100)) + "%

"; + return "

" + format(player.points.add(1).log10().div("308.25").mul(100)) + "%

"; }, }, }, @@ -402,13 +386,13 @@ addLayer("po", { unlocked() { return true }, content: [ - ["blank", "25px"], - ["raw-html", function () { return !inChallenge("ip", 11) ? "You have

" + formatWhole(player.po.featureSlots) + "/" + formatWhole(player.po.featureSlotsMax) + "

free feature slots." : "No features for you!"}, { "color": "white", "font-size": "24px", "font-family": "monospace" }], - ["raw-html", function () { return inChallenge("ip", 14) ? "You can pick an OTF once you are at pent 15." : ""}, { "color": "white", "font-size": "24px", "font-family": "monospace" }], - ["blank", "25px"], - ["row", [["clickable", 2], ["clickable", 3]]], - ["blank", "25px"], - ["row", [["clickable", 11], ["clickable", 12], ["clickable", 13], ["clickable", 14], ["clickable", 15]]], + ["blank", "25px"], + ["raw-html", function () { return !inChallenge("ip", 11) ? "You have

" + formatWhole(player.po.featureSlots) + "/" + formatWhole(player.po.featureSlotsMax) + "

free feature slots." : "No features for you!"}, { "color": "white", "font-size": "24px", "font-family": "monospace" }], + ["raw-html", function () { return inChallenge("ip", 14) ? "You can pick an OTF once you are at pent 15." : ""}, { "color": "white", "font-size": "24px", "font-family": "monospace" }], + ["blank", "25px"], + ["row", [["clickable", 2], ["clickable", 3]]], + ["blank", "25px"], + ["row", [["clickable", 11], ["clickable", 12], ["clickable", 13], ["clickable", 14], ["clickable", 15]]], ] }, @@ -417,10 +401,10 @@ addLayer("po", { unlocked() { return true }, content: [ - ["blank", "25px"], - ["row", [["bar", "infbar"]]], - ["blank", "25px"], - ["tree", tree], + ["blank", "25px"], + ["row", [["bar", "infbar"]]], + ["blank", "25px"], + ["tree", tree], ] }, @@ -429,33 +413,8 @@ addLayer("po", { unlocked() { return hasMilestone("ip", 23)}, content: [ - ["blank", "25px"], - ["raw-html", function () { return "

Currently divides point gain by /" + format(player.po.pointHalt) + "." }], - ["text-input", "pointHaltInput", { - color: "var(--color)", - width: "400px", - "font-family": "Calibri", - "text-align": "left", - "font-size": "32px", - border: "2px solid #ffffff17", - background: "var(--background)", - }], - ["blank", "25px"], - ["raw-html", function () { return "

Enter a number greater than 1. You thought you could get away with dividing by 0?" }], - ["raw-html", function () { return "

This can help by letting you progress in OTFS while infinity is fixed." }], ["blank", "25px"], - ["raw-html", function () { return "You have

" + format(player.points) + "

celestial points." }, { "color": "white", "font-size": "24px", "font-family": "monospace" }], - ["raw-html", function () { return "You are gaining

" + format(player.gain) + "

celestial points per second." }, { "color": "white", "font-size": "16px", "font-family": "monospace" }], - ] - - }, - "ADVANCED HALTER": { - buttonStyle() { return { 'color': 'white' } }, - unlocked() { return hasMilestone("ip", 23) && player.ev.evolutionsUnlocked[6]}, - content: - [ - ["blank", "25px"], - ["raw-html", function () { return "

" + player.po.halterText[player.po.halterIndex]}], + ["raw-html", function () { return "

" + player.po.halterText[player.po.halterIndex]}], ["text-input", "halterInput", { color: "var(--color)", width: "400px", @@ -466,19 +425,18 @@ addLayer("po", { background: "var(--background)", }], ["blank", "25px"], - ["row", [["clickable", 4], ["clickable", 5], ["clickable", 6], ["clickable", 7], ["clickable", 8]]], - ["raw-html", function () { return "

Enter a number greater than 1. You thought you could get away with dividing by 0?" }], + ["row", [["clickable", 4], ["clickable", 5], ["clickable", 6], ["clickable", 7], ["clickable", 8]]], + ["raw-html", function () { return "

Enter a number greater than 1. You thought you could get away with dividing by 0?" }], ["raw-html", function () { return "

This can help by letting you progress in OTFS while infinity is fixed. (and a whole bunch of other stuff eventually)" }], ["blank", "25px"], ] - }, }, }, tabFormat: [ - ["row", [["clickable", 1]]], - ["microtabs", "stuff", { 'border-width': '0px' }], - ], + ["row", [["clickable", 1]]], + ["microtabs", "stuff", { 'border-width': '0px' }], + ], layerShown() { return player.startedGame == true } }) diff --git a/js/prestige.js b/js/prestige.js index dc4bf4a..2044a48 100644 --- a/js/prestige.js +++ b/js/prestige.js @@ -59,7 +59,9 @@ if (inChallenge("tad", 11)) player.p.prestigePointsToGet = player.p.prestigePointsToGet.pow(0.3) player.p.prestigePointsToGet = player.p.prestigePointsToGet.mul(buyableEffect("p", 11)) player.p.prestigePointsToGet = player.p.prestigePointsToGet.mul(buyableEffect("id", 22)) + if (player.pol.pollinatorsIndex == 2) player.p.prestigePointsToGet = player.p.prestigePointsToGet.mul(player.pol.pollinatorsEffect[3]) player.p.prestigePointsToGet = player.p.prestigePointsToGet.pow(buyableEffect("rm", 23)) + player.p.prestigePointsToGet = player.p.prestigePointsToGet.div(player.po.halterEffects[2]) player.p.prestigePoints = player.p.prestigePoints.add(player.p.prestigePointsToGet.mul(buyableEffect("gh", 14).mul(delta))) if (hasUpgrade("rf", 12)) player.p.prestigePoints = player.p.prestigePoints.add(player.p.prestigePointsToGet.mul(Decimal.mul(0.2, delta))) @@ -85,6 +87,7 @@ player.p.crystalsToGet = player.p.crystalsToGet.mul(buyableEffect("oi", 22)) player.p.crystalsToGet = player.p.crystalsToGet.mul(player.cb.evolvedEffects[6][1]) player.p.crystalsToGet = player.p.crystalsToGet.mul(player.cb.rarePetEffects[5][1]) + if (hasUpgrade("pol", 17)) player.p.crystalsToGet = player.p.crystalsToGet.mul(upgradeEffect("pol", 17)) if (hasUpgrade("ev1", 11)) player.p.crystalsToGet = player.p.crystalsToGet.mul(upgradeEffect("ev1", 11)) }, prestigeReset() @@ -213,7 +216,7 @@ 1: { title() { return "

Return" }, canClick() { return true }, - unlocked() { return true }, + unlocked() { return options.newMenu == false }, onClick() { player.tab = "i" }, @@ -396,6 +399,7 @@ 11: { costBase() { return new Decimal(10) }, costGrowth() { return new Decimal(1.08) }, + purchaseLimit() { return new Decimal(1000) }, currency() { return player.p.crystals}, pay(amt) { player.p.crystals = this.currency().sub(amt) }, effect(x) { return getBuyableAmount(this.layer, this.id).mul(25).pow(1.3).add(1) }, @@ -403,7 +407,7 @@ cost(x) { return this.costGrowth().pow(x || getBuyableAmount(this.layer, this.id)).mul(this.costBase()) }, canAfford() { return this.currency().gte(this.cost()) }, title() { - return format(getBuyableAmount(this.layer, this.id), 0) + "
Prestige Point Crystallizer" + return format(getBuyableAmount(this.layer, this.id), 0) + "/1,000
Prestige Point Crystallizer" }, display() { return "which are multiplying prestige point gain by x" + format(tmp[this.layer].buyables[this.id].effect) + ".\n\ @@ -417,6 +421,7 @@ setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(1)) } else { let max = Decimal.affordGeometricSeries(this.currency(), this.costBase(), this.costGrowth(), getBuyableAmount(this.layer, this.id)) + if (max.gt(this.purchaseLimit().sub(getBuyableAmount(this.layer, this.id)))) { max = this.purchaseLimit().sub(getBuyableAmount(this.layer, this.id)) } let cost = Decimal.sumGeometricSeries(max, this.costBase(), this.costGrowth(), getBuyableAmount(this.layer, this.id)) this.pay(cost) @@ -428,6 +433,7 @@ 12: { costBase() { return new Decimal(20) }, costGrowth() { return new Decimal(1.1) }, + purchaseLimit() { return new Decimal(1000) }, currency() { return player.p.crystals}, pay(amt) { player.p.crystals = this.currency().sub(amt) }, effect(x) { return getBuyableAmount(this.layer, this.id).mul(11).pow(1.25).add(1) }, @@ -435,7 +441,7 @@ cost(x) { return this.costGrowth().pow(x || getBuyableAmount(this.layer, this.id)).mul(this.costBase()) }, canAfford() { return this.currency().gte(this.cost()) }, title() { - return format(getBuyableAmount(this.layer, this.id), 0) + "
Lines of Code and Mod Crystallizer" + return format(getBuyableAmount(this.layer, this.id), 0) + "/1,000
Lines of Code and Mod Crystallizer" }, display() { return "which are multiplying lines of code and mod gain by x" + format(tmp[this.layer].buyables[this.id].effect) + ".\n\ @@ -449,6 +455,7 @@ setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(1)) } else { let max = Decimal.affordGeometricSeries(this.currency(), this.costBase(), this.costGrowth(), getBuyableAmount(this.layer, this.id)) + if (max.gt(this.purchaseLimit().sub(getBuyableAmount(this.layer, this.id)))) { max = this.purchaseLimit().sub(getBuyableAmount(this.layer, this.id)) } let cost = Decimal.sumGeometricSeries(max, this.costBase(), this.costGrowth(), getBuyableAmount(this.layer, this.id)) this.pay(cost) @@ -460,17 +467,18 @@ 13: { costBase() { return new Decimal(35) }, costGrowth() { return new Decimal(1.12) }, + purchaseLimit() { return new Decimal(1000) }, currency() { return player.p.crystals}, pay(amt) { player.p.crystals = this.currency().sub(amt) }, - effect(x) { return getBuyableAmount(this.layer, this.id).mul(7).pow(1.2).add(1) }, + effect(x) { return getBuyableAmount(this.layer, this.id).mul(0.05).add(1) }, unlocked() { return true }, cost(x) { return this.costGrowth().pow(x || getBuyableAmount(this.layer, this.id)).mul(this.costBase()) }, canAfford() { return this.currency().gte(this.cost()) }, title() { - return format(getBuyableAmount(this.layer, this.id), 0) + "
Code Experience Crystallizer" + return format(getBuyableAmount(this.layer, this.id), 0) + "/1,000
Pollinator Crystallizer" }, display() { - return "which are multiplying code experience gain by x" + format(tmp[this.layer].buyables[this.id].effect) + ".\n\ + return "which are multiplying pollinator gain by x" + format(tmp[this.layer].buyables[this.id].effect) + ".\n\ Cost: " + format(tmp[this.layer].buyables[this.id].cost) + " Crystals" }, buy() { @@ -481,6 +489,7 @@ setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(1)) } else { let max = Decimal.affordGeometricSeries(this.currency(), this.costBase(), this.costGrowth(), getBuyableAmount(this.layer, this.id)) + if (max.gt(this.purchaseLimit().sub(getBuyableAmount(this.layer, this.id)))) { max = this.purchaseLimit().sub(getBuyableAmount(this.layer, this.id)) } let cost = Decimal.sumGeometricSeries(max, this.costBase(), this.costGrowth(), getBuyableAmount(this.layer, this.id)) this.pay(cost) @@ -492,6 +501,7 @@ 14: { costBase() { return new Decimal(50) }, costGrowth() { return new Decimal(1.14) }, + purchaseLimit() { return new Decimal(1000) }, currency() { return player.p.crystals}, pay(amt) { player.p.crystals = this.currency().sub(amt) }, effect(x) { return getBuyableAmount(this.layer, this.id).mul(0.2).add(1) }, @@ -499,7 +509,7 @@ cost(x) { return this.costGrowth().pow(x || getBuyableAmount(this.layer, this.id)).mul(this.costBase()) }, canAfford() { return this.currency().gte(this.cost()) }, title() { - return format(getBuyableAmount(this.layer, this.id), 0) + "
Steel Crystallizer" + return format(getBuyableAmount(this.layer, this.id), 0) + "/1,000
Steel Crystallizer" }, display() { return "which are multiplying steel gain by x" + format(tmp[this.layer].buyables[this.id].effect) + ".\n\ @@ -513,6 +523,7 @@ setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(1)) } else { let max = Decimal.affordGeometricSeries(this.currency(), this.costBase(), this.costGrowth(), getBuyableAmount(this.layer, this.id)) + if (max.gt(this.purchaseLimit().sub(getBuyableAmount(this.layer, this.id)))) { max = this.purchaseLimit().sub(getBuyableAmount(this.layer, this.id)) } let cost = Decimal.sumGeometricSeries(max, this.costBase(), this.costGrowth(), getBuyableAmount(this.layer, this.id)) this.pay(cost) @@ -524,6 +535,7 @@ 15: { costBase() { return new Decimal(100) }, costGrowth() { return new Decimal(1.25) }, + purchaseLimit() { return new Decimal(500) }, currency() { return player.p.crystals}, pay(amt) { player.p.crystals = this.currency().sub(amt) }, effect(x) { return getBuyableAmount(this.layer, this.id).mul(0.02).add(1) }, @@ -531,7 +543,7 @@ cost(x) { return this.costGrowth().pow(x || getBuyableAmount(this.layer, this.id)).mul(this.costBase()) }, canAfford() { return this.currency().gte(this.cost()) }, title() { - return format(getBuyableAmount(this.layer, this.id), 0) + "
Infinity Crystallizer" + return format(getBuyableAmount(this.layer, this.id), 0) + "/500
Infinity Crystallizer" }, display() { return "which are multiplying infinity gain by x" + format(tmp[this.layer].buyables[this.id].effect) + ".\n\ @@ -545,6 +557,7 @@ setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(1)) } else { let max = Decimal.affordGeometricSeries(this.currency(), this.costBase(), this.costGrowth(), getBuyableAmount(this.layer, this.id)) + if (max.gt(this.purchaseLimit().sub(getBuyableAmount(this.layer, this.id)))) { max = this.purchaseLimit().sub(getBuyableAmount(this.layer, this.id)) } let cost = Decimal.sumGeometricSeries(max, this.costBase(), this.costGrowth(), getBuyableAmount(this.layer, this.id)) this.pay(cost) @@ -556,6 +569,7 @@ 16: { costBase() { return new Decimal(150) }, costGrowth() { return new Decimal(1.3) }, + purchaseLimit() { return new Decimal(500) }, currency() { return player.p.crystals}, pay(amt) { player.p.crystals = this.currency().sub(amt) }, effect(x) { return getBuyableAmount(this.layer, this.id).mul(0.03).add(1) }, @@ -563,7 +577,7 @@ cost(x) { return this.costGrowth().pow(x || getBuyableAmount(this.layer, this.id)).mul(this.costBase()) }, canAfford() { return this.currency().gte(this.cost()) }, title() { - return format(getBuyableAmount(this.layer, this.id), 0) + "
Broken Infinity Crystallizer" + return format(getBuyableAmount(this.layer, this.id), 0) + "/500
Broken Infinity Crystallizer" }, display() { return "which are multiplying broken infinity gain by x" + format(tmp[this.layer].buyables[this.id].effect) + ".\n\ @@ -577,6 +591,7 @@ setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(1)) } else { let max = Decimal.affordGeometricSeries(this.currency(), this.costBase(), this.costGrowth(), getBuyableAmount(this.layer, this.id)) + if (max.gt(this.purchaseLimit().sub(getBuyableAmount(this.layer, this.id)))) { max = this.purchaseLimit().sub(getBuyableAmount(this.layer, this.id)) } let cost = Decimal.sumGeometricSeries(max, this.costBase(), this.costGrowth(), getBuyableAmount(this.layer, this.id)) this.pay(cost) @@ -588,6 +603,7 @@ 17: { costBase() { return new Decimal(250) }, costGrowth() { return new Decimal(1.35) }, + purchaseLimit() { return new Decimal(500) }, currency() { return player.p.crystals}, pay(amt) { player.p.crystals = this.currency().sub(amt) }, effect(x) { return getBuyableAmount(this.layer, this.id).mul(0.1).add(1) }, @@ -595,7 +611,7 @@ cost(x) { return this.costGrowth().pow(x || getBuyableAmount(this.layer, this.id)).mul(this.costBase()) }, canAfford() { return this.currency().gte(this.cost()) }, title() { - return format(getBuyableAmount(this.layer, this.id), 0) + "
Mastery Point Crystallizer" + return format(getBuyableAmount(this.layer, this.id), 0) + "/500
Mastery Point Crystallizer" }, display() { return "which are multiplying the first 3 OTF mastery point gain by x" + format(tmp[this.layer].buyables[this.id].effect) + ".\n\ @@ -609,6 +625,7 @@ setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(1)) } else { let max = Decimal.affordGeometricSeries(this.currency(), this.costBase(), this.costGrowth(), getBuyableAmount(this.layer, this.id)) + if (max.gt(this.purchaseLimit().sub(getBuyableAmount(this.layer, this.id)))) { max = this.purchaseLimit().sub(getBuyableAmount(this.layer, this.id)) } let cost = Decimal.sumGeometricSeries(max, this.costBase(), this.costGrowth(), getBuyableAmount(this.layer, this.id)) this.pay(cost) @@ -620,6 +637,7 @@ 18: { costBase() { return new Decimal(400) }, costGrowth() { return new Decimal(1.4) }, + purchaseLimit() { return new Decimal(500) }, currency() { return player.p.crystals}, pay(amt) { player.p.crystals = this.currency().sub(amt) }, effect(x) { return getBuyableAmount(this.layer, this.id).mul(0.03).add(1) }, @@ -627,7 +645,7 @@ cost(x) { return this.costGrowth().pow(x || getBuyableAmount(this.layer, this.id)).mul(this.costBase()) }, canAfford() { return this.currency().gte(this.cost()) }, title() { - return format(getBuyableAmount(this.layer, this.id), 0) + "
Tav's Domain Infinity Crystallizer" + return format(getBuyableAmount(this.layer, this.id), 0) + "/500
Tav's Domain Infinity Crystallizer" }, display() { return "which are multiplying the alternate broken infinity gain by x" + format(tmp[this.layer].buyables[this.id].effect) + ".\n\ @@ -641,6 +659,7 @@ setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(1)) } else { let max = Decimal.affordGeometricSeries(this.currency(), this.costBase(), this.costGrowth(), getBuyableAmount(this.layer, this.id)) + if (max.gt(this.purchaseLimit().sub(getBuyableAmount(this.layer, this.id)))) { max = this.purchaseLimit().sub(getBuyableAmount(this.layer, this.id)) } let cost = Decimal.sumGeometricSeries(max, this.costBase(), this.costGrowth(), getBuyableAmount(this.layer, this.id)) this.pay(cost) @@ -673,7 +692,7 @@ }, "Crystallize": { buttonStyle() { return { 'color': 'white', 'border-color': "#31aeb0", 'background': '#98245c',} }, - unlocked() { return hasUpgrade("i", 23) }, + unlocked() { return hasUpgrade("i", 24) }, content: [ ["blank", "25px"], diff --git a/js/ranks.js b/js/ranks.js index 65401ba..81d4366 100644 --- a/js/ranks.js +++ b/js/ranks.js @@ -158,7 +158,7 @@ player.r.challengeIVEffect = Decimal.pow(400, player.r.pent) - if (hasUpgrade("i", 26) && player.points.gte(player.r.pentReq)) + if (hasUpgrade("i", 27) && player.points.gte(player.r.pentReq)) { player.r.pent = player.r.pent.add(1) } @@ -281,7 +281,7 @@ 1: { title() { return "

Return" }, canClick() { return true }, - unlocked() { return true }, + unlocked() { return options.newMenu == false }, onClick() { player.tab = "i" }, @@ -372,6 +372,7 @@ 11: { costBase() { return new Decimal(100) }, costGrowth() { return new Decimal(1.1) }, + purchaseLimit() { return new Decimal(250) }, currency() { return player.r.timeCubes}, pay(amt) { player.r.timeCubes = this.currency().sub(amt) }, effect(x) { return getBuyableAmount(this.layer, this.id).mul(0.5).pow(1.2).add(1) }, @@ -379,7 +380,7 @@ cost(x) { return this.costGrowth().pow(x || getBuyableAmount(this.layer, this.id)).mul(this.costBase()) }, canAfford() { return this.currency().gte(this.cost()) }, title() { - return format(getBuyableAmount(this.layer, this.id), 0) + "
Golden Grass Reverser" + return format(getBuyableAmount(this.layer, this.id), 0) + "/250
Golden Grass Reverser" }, display() { return "which are multiplying golden grass value by x" + format(tmp[this.layer].buyables[this.id].effect) + ".\n\ @@ -393,6 +394,7 @@ setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(1)) } else { let max = Decimal.affordGeometricSeries(this.currency(), this.costBase(), this.costGrowth(), getBuyableAmount(this.layer, this.id)) + if (max.gt(this.purchaseLimit().sub(getBuyableAmount(this.layer, this.id)))) { max = this.purchaseLimit().sub(getBuyableAmount(this.layer, this.id)) } let cost = Decimal.sumGeometricSeries(max, this.costBase(), this.costGrowth(), getBuyableAmount(this.layer, this.id)) this.pay(cost) @@ -404,6 +406,7 @@ 12: { costBase() { return new Decimal(300) }, costGrowth() { return new Decimal(1.15) }, + purchaseLimit() { return new Decimal(250) }, currency() { return player.r.timeCubes}, pay(amt) { player.r.timeCubes = this.currency().sub(amt) }, effect(x) { return getBuyableAmount(this.layer, this.id).mul(0.2).pow(0.8).add(1) }, @@ -411,7 +414,7 @@ cost(x) { return this.costGrowth().pow(x || getBuyableAmount(this.layer, this.id)).mul(this.costBase()) }, canAfford() { return this.currency().gte(this.cost()) }, title() { - return format(getBuyableAmount(this.layer, this.id), 0) + "
Crystal Reverser" + return format(getBuyableAmount(this.layer, this.id), 0) + "/250
Crystal Reverser" }, display() { return "which are multiplying crystal gain by x" + format(tmp[this.layer].buyables[this.id].effect) + ".\n\ @@ -425,6 +428,7 @@ setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(1)) } else { let max = Decimal.affordGeometricSeries(this.currency(), this.costBase(), this.costGrowth(), getBuyableAmount(this.layer, this.id)) + if (max.gt(this.purchaseLimit().sub(getBuyableAmount(this.layer, this.id)))) { max = this.purchaseLimit().sub(getBuyableAmount(this.layer, this.id)) } let cost = Decimal.sumGeometricSeries(max, this.costBase(), this.costGrowth(), getBuyableAmount(this.layer, this.id)) this.pay(cost) @@ -436,6 +440,7 @@ 13: { costBase() { return new Decimal(700) }, costGrowth() { return new Decimal(1.2) }, + purchaseLimit() { return new Decimal(250) }, currency() { return player.r.timeCubes}, pay(amt) { player.r.timeCubes = this.currency().sub(amt) }, effect(x) { return getBuyableAmount(this.layer, this.id).mul(0.02).pow(0.75).add(1) }, @@ -443,7 +448,7 @@ cost(x) { return this.costGrowth().pow(x || getBuyableAmount(this.layer, this.id)).mul(this.costBase()) }, canAfford() { return this.currency().gte(this.cost()) }, title() { - return format(getBuyableAmount(this.layer, this.id), 0) + "
Negative Infinity Reverser" + return format(getBuyableAmount(this.layer, this.id), 0) + "/250
Negative Infinity Reverser" }, display() { return "which are multiplying negative infinity point gain by x" + format(tmp[this.layer].buyables[this.id].effect) + ".\n\ @@ -457,6 +462,7 @@ setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(1)) } else { let max = Decimal.affordGeometricSeries(this.currency(), this.costBase(), this.costGrowth(), getBuyableAmount(this.layer, this.id)) + if (max.gt(this.purchaseLimit().sub(getBuyableAmount(this.layer, this.id)))) { max = this.purchaseLimit().sub(getBuyableAmount(this.layer, this.id)) } let cost = Decimal.sumGeometricSeries(max, this.costBase(), this.costGrowth(), getBuyableAmount(this.layer, this.id)) this.pay(cost) @@ -468,6 +474,7 @@ 14: { costBase() { return new Decimal(1500) }, costGrowth() { return new Decimal(1.25) }, + purchaseLimit() { return new Decimal(250) }, currency() { return player.r.timeCubes}, pay(amt) { player.r.timeCubes = this.currency().sub(amt) }, effect(x) { return getBuyableAmount(this.layer, this.id).mul(0.1).pow(0.6).add(1) }, @@ -475,7 +482,7 @@ cost(x) { return this.costGrowth().pow(x || getBuyableAmount(this.layer, this.id)).mul(this.costBase()) }, canAfford() { return this.currency().gte(this.cost()) }, title() { - return format(getBuyableAmount(this.layer, this.id), 0) + "
Infinity Dimension Reverser" + return format(getBuyableAmount(this.layer, this.id), 0) + "/250
Infinity Dimension Reverser" }, display() { return "which are boosting infinity dimensions by x" + format(tmp[this.layer].buyables[this.id].effect) + ".\n\ @@ -489,6 +496,7 @@ setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(1)) } else { let max = Decimal.affordGeometricSeries(this.currency(), this.costBase(), this.costGrowth(), getBuyableAmount(this.layer, this.id)) + if (max.gt(this.purchaseLimit().sub(getBuyableAmount(this.layer, this.id)))) { max = this.purchaseLimit().sub(getBuyableAmount(this.layer, this.id)) } let cost = Decimal.sumGeometricSeries(max, this.costBase(), this.costGrowth(), getBuyableAmount(this.layer, this.id)) this.pay(cost) @@ -616,7 +624,7 @@ }, "Time Reversal": { buttonStyle() { return {'color': 'white', 'border-color': "grey", 'background': '#d82cd4',} }, - unlocked() { return hasUpgrade("i", 25) }, + unlocked() { return hasUpgrade("i", 26) }, content: [ ["blank", "25px"], diff --git a/js/realmMods.js b/js/realmMods.js index f063a91..4a80608 100644 --- a/js/realmMods.js +++ b/js/realmMods.js @@ -141,11 +141,12 @@ for (let i = 0; i < 6; i++) { player.rm.realmEnergyPerSecond[i] = player.rm.realmMods[i].pow(0.7).div(10) + if (player.pol.pollinatorsIndex == 7) player.rm.realmEnergyPerSecond[i] = player.rm.realmEnergyPerSecond[i].mul(player.pol.pollinatorsEffect[15]) player.rm.realmEnergy[i] = player.rm.realmEnergy[i].add(player.rm.realmEnergyPerSecond[i].mul(delta)) } player.rm.realmEnergyText = "You have " + format(player.rm.realmEnergy[player.rm.currentDisplay]) + " energy for this realm.

You are gaining " + format(player.rm.realmEnergyPerSecond[player.rm.currentDisplay]) + " energy per second. (Based on realm mods)" - player.rm.halterBoostEffect = player.rm.halterBoost.plus(1).log10().pow(0.1).add(1) + player.rm.halterBoostEffect = player.rm.halterBoost.add(1).log10().pow(0.1).add(1) }, blankModReset() { @@ -335,7 +336,7 @@ 1: { title() { return "

Return" }, canClick() { return true }, - unlocked() { return true }, + unlocked() { return options.newMenu == false }, onClick() { player.tab = "i" }, diff --git a/js/rocketFuel.js b/js/rocketFuel.js index fbd062b..7b1c8bf 100644 --- a/js/rocketFuel.js +++ b/js/rocketFuel.js @@ -62,6 +62,7 @@ player.rf.rocketFuelToGet = player.rf.rocketFuelToGet.mul(buyableEffect("ta", 44)) player.rf.rocketFuelToGet = player.rf.rocketFuelToGet.mul(buyableEffect("ta", 45)) player.rf.rocketFuelToGet = player.rf.rocketFuelToGet.mul(buyableEffect("ta", 46)) + if (player.pol.pollinatorsIndex == 7) player.rf.rocketFuelToGet = player.rf.rocketFuelToGet.mul(player.pol.pollinatorsEffect[13]) player.rf.rocketFuelToGet = player.rf.rocketFuelToGet.mul(player.cb.evolvedEffects[4][1]) @@ -80,7 +81,7 @@ "RF Tree Boost: Gives a x" + format(player.rf.abilityEffects[1]) + " boost to trees. (" + formatTime(player.rf.abilityTimers[1]) + " left)", "RF Grass Boost: Gives a x" + format(player.rf.abilityEffects[2]) + " boost to grass. (" + formatTime(player.rf.abilityTimers[2]) + " left)", "RF Fertilizer Boost: Gives a x" + format(player.rf.abilityEffects[3]) + " boost to fertilizer. (" + formatTime(player.rf.abilityTimers[3]) + " left)", - "RF XP Button: Gives +" + format(player.rf.abilityEffects[4]) + " check back xp. (" + formatTime(player.rf.abilityTimers[4]) + " cooldown)", + "RF XP Button: Gives +" + format(player.rf.abilityEffects[4]) + " check back xp. (" + formatTime(player.rf.abilityTimers[4]) + " cooldown)

(Based on first XP Button)", "RF Infinity Point Boost: Gives a x" + format(player.rf.abilityEffects[5]) + " boost to infinity points. (" + formatTime(player.rf.abilityTimers[5]) + " left)", "RF Button Cooldown: Divides XP button cooldown by /1.2. (" + formatTime(player.rf.abilityTimers[6]) + " left)", "RF Hex Boost: Gives a x" + format(player.rf.abilityEffects[7]) + " boost to hex 1 points. (" + formatTime(player.rf.abilityTimers[7]) + " left)", @@ -141,7 +142,7 @@ 1: { title() { return "

Return" }, canClick() { return true }, - unlocked() { return true }, + unlocked() { return options.newMenu == false }, onClick() { player.tab = "i" }, @@ -151,20 +152,10 @@ title() { return "1%" }, canClick() { return player.rf.abilityIndex != 4 ? player.rf.rocketFuel.gt(10) : player.rf.rocketFuel.gt(10) && player.rf.abilityTimers[4].lte(0) }, unlocked() { return player.rf.abilitiesUnlocked[0] }, + tooltip() { return player.rf.abilityIndex == 4 ? "

" + formatWhole(player.rf.rocketFuel.mul(0.01).add(1).log10().pow(0.75).div(2).add(5).floor()) + "% chance for a pet???" : ""}, onClick() { layers.rf.rocketFuelAbility(parseInt(player.rf.abilityIndex), player.rf.rocketFuel.mul(0.01)) player.rf.rocketFuel = player.rf.rocketFuel.sub(player.rf.rocketFuel.mul(0.01)) - - if (player.rf.abilityIndex == 4) - { - let random = getRandomInt(20) - - if (random == 1) - { - player.cb.rarePetAmounts[2] = player.cb.rarePetAmounts[2].add(1); - callAlert("You gained a Drippy Ufo!", "resources/ufoRarePet.png"); - } - } }, style: { width: '50px', "min-height": '50px', 'border-radius': "0%" }, }, @@ -172,20 +163,10 @@ title() { return "30%" }, canClick() { return player.rf.abilityIndex != 4 ? player.rf.rocketFuel.gt(10) : player.rf.rocketFuel.gt(10) && player.rf.abilityTimers[4].lte(0) }, unlocked() { return player.rf.abilitiesUnlocked[0] }, + tooltip() { return player.rf.abilityIndex == 4 ? "

" + formatWhole(player.rf.rocketFuel.mul(0.3).add(1).log10().pow(0.75).div(2).add(5).floor()) + "% chance for a pet???" : ""}, onClick() { layers.rf.rocketFuelAbility(parseInt(player.rf.abilityIndex), player.rf.rocketFuel.mul(0.3)) player.rf.rocketFuel = player.rf.rocketFuel.sub(player.rf.rocketFuel.mul(0.3)) - - if (player.rf.abilityIndex == 4) - { - let random = getRandomInt(20) - - if (random == 1) - { - player.cb.rarePetAmounts[2] = player.cb.rarePetAmounts[2].add(1); - callAlert("You gained a Drippy Ufo!", "resources/ufoRarePet.png"); - } - } }, style: { width: '50px', "min-height": '50px', 'border-radius': "0%" }, }, @@ -203,20 +184,10 @@ title() { return "1" }, canClick() { return player.rf.abilityIndex != 4 ? player.rf.rocketFuel.gt(1) : player.rf.rocketFuel.gt(1) && player.rf.abilityTimers[4].lte(0) }, unlocked() { return player.rf.abilitiesUnlocked[0] }, + tooltip() { return player.rf.abilityIndex == 4 ? "

5% chance for a pet???" : ""}, onClick() { layers.rf.rocketFuelAbility(parseInt(player.rf.abilityIndex), new Decimal(1)) player.rf.rocketFuel = player.rf.rocketFuel.sub(1) - - if (player.rf.abilityIndex == 4) - { - let random = getRandomInt(20) - - if (random == 1) - { - player.cb.rarePetAmounts[2] = player.cb.rarePetAmounts[2].add(1); - callAlert("You gained a Drippy Ufo!", "resources/ufoRarePet.png"); - } - } }, style: { width: '50px', "min-height": '50px', 'border-radius': "0%" }, }, @@ -224,20 +195,10 @@ title() { return "10%" }, canClick() { return player.rf.abilityIndex != 4 ? player.rf.rocketFuel.gt(10) : player.rf.rocketFuel.gt(10) && player.rf.abilityTimers[4].lte(0) }, unlocked() { return player.rf.abilitiesUnlocked[0] }, + tooltip() { return player.rf.abilityIndex == 4 ? "

" + formatWhole(player.rf.rocketFuel.mul(0.1).add(1).log10().pow(0.75).div(2).add(5).floor()) + "% chance for a pet???" : ""}, onClick() { layers.rf.rocketFuelAbility(parseInt(player.rf.abilityIndex), player.rf.rocketFuel.mul(0.1)) player.rf.rocketFuel = player.rf.rocketFuel.sub(player.rf.rocketFuel.mul(0.1)) - - if (player.rf.abilityIndex == 4) - { - let random = getRandomInt(20) - - if (random == 1) - { - player.cb.rarePetAmounts[2] = player.cb.rarePetAmounts[2].add(1); - callAlert("You gained a Drippy Ufo!", "resources/ufoRarePet.png"); - } - } }, style: { width: '50px', "min-height": '50px', 'border-radius': "0%" }, }, @@ -245,20 +206,10 @@ title() { return "100%" }, canClick() { return player.rf.abilityIndex != 4 ? player.rf.rocketFuel.gt(10) : player.rf.rocketFuel.gt(10) && player.rf.abilityTimers[4].lte(0) }, unlocked() { return player.rf.abilitiesUnlocked[0] }, + tooltip() { return player.rf.abilityIndex == 4 ? "

" + formatWhole(player.rf.rocketFuel.add(1).log10().pow(0.75).div(2).add(5).floor()) + "% chance for a pet???" : ""}, onClick() { layers.rf.rocketFuelAbility(parseInt(player.rf.abilityIndex), player.rf.rocketFuel) player.rf.rocketFuel = player.rf.rocketFuel.sub(player.rf.rocketFuel) - - if (player.rf.abilityIndex == 4) - { - let random = getRandomInt(20) - - if (random == 1) - { - player.cb.rarePetAmounts[2] = player.cb.rarePetAmounts[2].add(1); - callAlert("You gained a Drippy Ufo!", "resources/ufoRarePet.png"); - } - } }, style: { width: '50px', "min-height": '50px', 'border-radius': "0%" }, }, @@ -302,7 +253,6 @@ title() { return "RF XP Button" }, canClick() { return true }, unlocked() { return player.rf.abilitiesUnlocked[4] }, - tooltip() { return "

5% chance for a pet???" }, onClick() { player.rf.abilityIndex = new Decimal(4) }, @@ -357,17 +307,24 @@ player.rf.abilityTimers[3] = amount.pow(0.08).mul(45) break; case 4: - player.rf.abilityEffects[4] = amount.log10().plus(1).mul(2).add(1).abs() + player.rf.abilityEffects[4] = player.cb.buttonBaseXP[0].mul(amount.log10().pow(0.8).div(10).add(1)) player.cb.xp = player.cb.xp.add(player.rf.abilityEffects[4]) player.cb.totalxp = player.cb.totalxp.add(player.rf.abilityEffects[4]) - player.rf.abilityTimers[4] = amount.log10().add(1).mul(100) + player.rf.abilityTimers[4] = player.cb.buttonTimersMax[0].mul(amount.log10().pow(0.8).div(10).add(1.7)) + let prob = amount.log10().pow(0.75).div(2).add(4).floor() + let random = getRandomInt(100) + + if (new Decimal(random).lte(prob)) { + player.cb.rarePetAmounts[2] = player.cb.rarePetAmounts[2].add(1); + callAlert("You gained a Drippy Ufo!", "resources/ufoRarePet.png"); + } break; case 5: - player.rf.abilityEffects[5] = amount.log10().div(66).add(1) - player.rf.abilityTimers[5] = amount.log10().add(1).mul(20) + player.rf.abilityEffects[5] = amount.add(1).log10().add(1).div(66).add(1) + player.rf.abilityTimers[5] = amount.add(1).log10().add(1).mul(20) break; case 6: - player.rf.abilityTimers[6] = amount.log10().add(1).mul(20) + player.rf.abilityTimers[6] = amount.add(1).log10().add(1).mul(20) break; case 7: player.rf.abilityEffects[7] = amount.pow(0.015).mul(3).add(1) @@ -568,7 +525,7 @@ }, 16: { - title: "Rocket Fuel Upgrade VII", + title: "Rocket Fuel Upgrade VI", unlocked() { return hasUpgrade("rf", 15) && inChallenge("ip", 16)}, description: "Rocket Fuel boosts points.", cost: new Decimal(1e10), @@ -582,7 +539,7 @@ }, 17: { - title: "Rocket Fuel Upgrade VIII", + title: "Rocket Fuel Upgrade VII", unlocked() { return hasUpgrade("rf", 16) && inChallenge("ip", 16)}, description: "Gain 20% of rocket fuel per second.", cost: new Decimal(1e12), diff --git a/js/settingsMicrotab.js b/js/settingsMicrotab.js index 4df6d94..824261c 100644 --- a/js/settingsMicrotab.js +++ b/js/settingsMicrotab.js @@ -33,17 +33,23 @@ const settingsMicrotab = { () => "", settingsMicrotabStyle], ["raw-html", - () => "", + () => "", settingsMicrotabStyle], ["raw-html", - () => "", + () => "", + settingsMicrotabStyle], + ["raw-html", + () => "", settingsMicrotabStyle], ]], ["row", [ ["raw-html", - () => "", + () => "", settingsMicrotabStyle], + ["raw-html", + () => "", + {"color": "white", "font-size": "13.3333px", "font-family": "monospace",}], ["raw-html", () => "", settingsMicrotabStyle], @@ -67,7 +73,7 @@ const settingsMicrotab = { () => "Autosave: " + options.autosave, settingsMicrotabStyle], ["raw-html", - () => "Offline Production: " + options.offlineProd, + () => "Sidebar Layout: " + options.newMenu, settingsMicrotabStyle], ["raw-html", () => "Music Toggle: " + options.musicToggle, diff --git a/js/tav.js b/js/tav.js index 7a27045..ca53cb5 100644 --- a/js/tav.js +++ b/js/tav.js @@ -19,14 +19,12 @@ dimensionPower: [new Decimal(0), new Decimal(0), new Decimal(0), new Decimal(0), new Decimal(0), new Decimal(0), new Decimal(0), new Decimal(0),], dimensionPowerPerSecond: [new Decimal(0), new Decimal(0), new Decimal(0), new Decimal(0), new Decimal(0), new Decimal(0), new Decimal(0), new Decimal(0),], dimensionPowerEffects: [new Decimal(1), new Decimal(1), new Decimal(1), new Decimal(1), new Decimal(1), new Decimal(1), new Decimal(1), new Decimal(1),], - dimensionPowerTexts: ["","","","","","","","",], - dimensionAutobuyIndex: new Decimal(0), dimensionAutobuyToggles: [false, false, false, false, false, false, false, false, false, false, false,], - dimensionAutobuyTexts: ["","","","","","","","","","","",], - dimensionAutobuyTimeReq: [new Decimal(5), new Decimal(6), new Decimal(7), new Decimal(8), new Decimal(9), new Decimal(10), new Decimal(11), new Decimal(12), new Decimal(8),new Decimal(30),new Decimal(45),], + dimensionAutobuyTimeReq: [new Decimal(3), new Decimal(3.5), new Decimal(4), new Decimal(4.5), new Decimal(5), new Decimal(5.5), new Decimal(6), new Decimal(6.5), new Decimal(4),new Decimal(10),new Decimal(25),], dimensionAutobuyTimer: [new Decimal(0),new Decimal(0),new Decimal(0),new Decimal(0),new Decimal(0),new Decimal(0),new Decimal(0),new Decimal(0),new Decimal(0),new Decimal(0),new Decimal(0),], + dimboostToggle: false, dimboostLimit: new Decimal(1), dimboostLimitInput: new Decimal(1), @@ -92,7 +90,7 @@ "color": "#008080", }; }, - + tooltip: "Tav, the Celestial of Limits", color: "#b2d8d8", update(delta) { @@ -105,19 +103,23 @@ if (player.ta.reachedNegativeInfinity && !player.ta.unlockedReverseBreak) { - if (!hasUpgrade("ta", 13) && player.ta.reachedNegativeInfinity) + if (!hasUpgrade("ta", 13) && player.ta.reachedNegativeInfinity) { player.tab = "revc" - } + } else if (hasUpgrade("ta", 13)) { layers.revc.reverseCrunch() player.ta.negativeInfinityPoints = player.ta.negativeInfinityPoints.add(player.ta.negativeInfinityPointsToGet) - } + } } else if (player.tab == "revc") { - player.tab = "in" + if (options.newMenu) { + player.tab = "ip" + } else { + player.tab = "in" + } } if (!player.ta.unlockedReverseBreak) player.ta.negativeInfinityPointsToGet = new Decimal(1) @@ -150,120 +152,63 @@ layers.ta.negativeInfinityReset(); } - player.ta.dimensionPowerPerSecond[0] = buyableEffect("ta", 11) - player.ta.dimensionPowerPerSecond[1] = buyableEffect("ta", 12) - player.ta.dimensionPowerPerSecond[2] = buyableEffect("ta", 13) - player.ta.dimensionPowerPerSecond[3] = buyableEffect("ta", 14) - player.ta.dimensionPowerPerSecond[4] = buyableEffect("ta", 15) - player.ta.dimensionPowerPerSecond[5] = buyableEffect("ta", 16) - player.ta.dimensionPowerPerSecond[6] = buyableEffect("ta", 17) - player.ta.dimensionPowerPerSecond[7] = buyableEffect("ta", 18) - for (let i = 0; i < player.ta.dimensionPowerEffects.length; i++) - { - player.ta.dimensionPowerEffects[i] = player.ta.dimensionPower[i].pow(0.6).div(10).add(1) - player.ta.dimensionPowerPerSecond[i] = player.ta.dimensionPowerPerSecond[i].mul(buyableEffect("ip", 13)) - player.ta.dimensionPowerPerSecond[i] = player.ta.dimensionPowerPerSecond[i].mul(buyableEffect("ta", 35)) - if (hasUpgrade('ta', 12)) player.ta.dimensionPowerPerSecond[i] = player.ta.dimensionPowerPerSecond[i].mul(upgradeEffect("ta", 12)) - if (hasUpgrade('ip', 44)) player.ta.dimensionPowerPerSecond[i] = player.ta.dimensionPowerPerSecond[i].mul(upgradeEffect("ip", 44)) - player.ta.dimensionPowerPerSecond[i] = player.ta.dimensionPowerPerSecond[i].mul(buyableEffect("om", 14)) - player.ta.dimensionPowerPerSecond[i] = player.ta.dimensionPowerPerSecond[i].mul(buyableEffect("gh", 36)) - player.ta.dimensionPowerPerSecond[i] = player.ta.dimensionPowerPerSecond[i].mul(player.cb.uncommonPetEffects[8][0]) - player.ta.dimensionPower[i] = player.ta.dimensionPower[i].add(player.ta.dimensionPowerPerSecond[i].mul(delta)) - - if (i == 0) player.ta.dimensionPowerTexts[i] = "You have " + format(player.ta.dimensionPower[i]) + " " + formatWhole(player.ta.dimensionPowerIndex.add(1)) + "st dimension power, which boosts antimatter by x" + format(player.ta.dimensionPowerEffects[i]) + ".\nYou are producing " + format(player.ta.dimensionPowerPerSecond[i]) + " 1st dimenion power per second." - if (i == 1) player.ta.dimensionPowerTexts[i] = "You have " + format(player.ta.dimensionPower[i]) + " " + formatWhole(player.ta.dimensionPowerIndex.add(1)) + "nd dimension power, which boosts 1st dimensions by x" + format(player.ta.dimensionPowerEffects[i]) + ".\nYou are producing " + format(player.ta.dimensionPowerPerSecond[i]) + " 2nd dimenion power per second." - if (i == 2) player.ta.dimensionPowerTexts[i] = "You have " + format(player.ta.dimensionPower[i]) + " " + formatWhole(player.ta.dimensionPowerIndex.add(1)) + "rd dimension power, which boosts 2nd dimensions by x" + format(player.ta.dimensionPowerEffects[i]) + ".\nYou are producing " + format(player.ta.dimensionPowerPerSecond[i]) + " 3rd dimenion power per second." - if (i == 3) player.ta.dimensionPowerTexts[i] = "You have " + format(player.ta.dimensionPower[i]) + " " + formatWhole(player.ta.dimensionPowerIndex.add(1)) + "th dimension power, which boosts 3rd dimensions by x" + format(player.ta.dimensionPowerEffects[i]) + ".\nYou are producing " + format(player.ta.dimensionPowerPerSecond[i]) + " 4th dimenion power per second." - if (i >= 4) player.ta.dimensionPowerTexts[i] = "You have " + format(player.ta.dimensionPower[i]) + " " + formatWhole(player.ta.dimensionPowerIndex.add(1)) + "th dimension power, which boosts " + formatWhole(player.ta.dimensionPowerIndex) + "th dimensions by x" + format(player.ta.dimensionPowerEffects[i]) + ".\nYou are producing " + format(player.ta.dimensionPowerPerSecond[i]) + " " + formatWhole(player.ta.dimensionPowerIndex) + "th dimenion power per second." - } - - for (let i = 0; i < player.ta.dimensionAutobuyTexts.length; i++) - { + for (let i = 0; i < 11; i++) { if (player.ta.dimensionAutobuyToggles[i]) player.ta.dimensionAutobuyTimer[i] = player.ta.dimensionAutobuyTimer[i].add(onepersec.mul(delta)) - if (player.ta.dimensionAutobuyTimer[i].gte(player.ta.dimensionAutobuyTimeReq[i])) - { - if (i == 0 && player.ta.buyables[21].gte(1)) - { + if (player.ta.dimensionAutobuyTimer[i].gte(player.ta.dimensionAutobuyTimeReq[i])) { + if (i == 0 && player.ta.buyables[21].gte(1)) { buyBuyable("ad", 11) player.ta.dimensionAutobuyTimer[i] = new Decimal(0) } - if (i == 1 && player.ta.buyables[22].gte(1)) - { + if (i == 1 && player.ta.buyables[22].gte(1)) { buyBuyable("ad", 12) player.ta.dimensionAutobuyTimer[i] = new Decimal(0) } - if (i == 2 && player.ta.buyables[23].gte(1)) - { + if (i == 2 && player.ta.buyables[23].gte(1)) { buyBuyable("ad", 13) player.ta.dimensionAutobuyTimer[i] = new Decimal(0) } - if (i == 3 && player.ta.buyables[24].gte(1)) - { + if (i == 3 && player.ta.buyables[24].gte(1)) { buyBuyable("ad", 14) player.ta.dimensionAutobuyTimer[i] = new Decimal(0) } - if (i == 4 && player.ta.buyables[25].gte(1)) - { + if (i == 4 && player.ta.buyables[25].gte(1)) { buyBuyable("ad", 15) player.ta.dimensionAutobuyTimer[i] = new Decimal(0) } - if (i == 5 && player.ta.buyables[26].gte(1)) - { + if (i == 5 && player.ta.buyables[26].gte(1)) { buyBuyable("ad", 16) player.ta.dimensionAutobuyTimer[i] = new Decimal(0) } - if (i == 6 && player.ta.buyables[27].gte(1)) - { + if (i == 6 && player.ta.buyables[27].gte(1)) { buyBuyable("ad", 17) player.ta.dimensionAutobuyTimer[i] = new Decimal(0) } - if (i == 7 && player.ta.buyables[28].gte(1)) - { + if (i == 7 && player.ta.buyables[28].gte(1)) { buyBuyable("ad", 18) player.ta.dimensionAutobuyTimer[i] = new Decimal(0) } - if (i == 8 && player.ta.buyables[29].gte(1)) - { + if (i == 8 && player.ta.buyables[29].gte(1)) { buyBuyable("ad", 1) player.ta.dimensionAutobuyTimer[i] = new Decimal(0) } - if (i == 9 && player.ta.buyables[31].gte(1)) - { - if (hasUpgrade("ta", 14) && player.ad.dimBoostAmount.lt(player.ta.dimboostLimit) || !hasUpgrade("ta", 14)) - if ((hasUpgrade("ta", 14) && player.ad.dimBoostAmount.lt(player.ta.dimboostLimit)) || !hasUpgrade("ta", 14)) - { - if (player.ad.extraDimsGalaxiesLocked ? player.ad.dimensionAmounts[player.ad.dimBoostDimCost].gte(player.ad.dimBoostReq) && (player.ad.dimBoostAmount.lt(6)) : player.ad.dimensionAmounts[player.ad.dimBoostDimCost].gte(player.ad.dimBoostReq)) - { - player.ad.dimBoostAmount = player.ad.dimBoostAmount.add(1) - if (!hasUpgrade("bi", 25)) player.ad.dimBoostPause = new Decimal(6) - player.ta.dimensionAutobuyTimer[i] = new Decimal(0) - } + if (i == 9 && player.ta.buyables[31].gte(1) && (!hasUpgrade("ta", 14) || hasUpgrade("ta", 14) && getBuyableAmount("ad", 2).lt(player.ta.dimboostLimit))) { + if (!player.ta.dimboostToggle || player.ta.dimboostToggle && getBuyableAmount("ad", 3).gte(player.ta.galaxyLimit)) { + buyBuyable("ad", 2) + player.ta.dimensionAutobuyTimer[i] = new Decimal(0) + } else { + if (getBuyableAmount("ad", 2).lt(4)) { + buyBuyable("ad", 2) + player.ta.dimensionAutobuyTimer[i] = new Decimal(0) + } } } - if (i == 10 && player.ta.buyables[32].gte(1)) - { - if (hasUpgrade("ta", 14) && player.ad.galaxyAmount.lt(player.ta.galaxyLimit) || !hasUpgrade("ta", 14)) - if ((hasUpgrade("ta", 14) && player.ad.galaxyAmount.lt(player.ta.galaxyLimit)) || !hasUpgrade("ta", 14)) - { - if (player.ad.extraDimsGalaxiesLocked ? player.ad.dimensionAmounts[player.ad.galaxyDimCost].gte(player.ad.galaxyReq) && (player.ad.galaxyAmount.lt(1)) : player.ad.dimensionAmounts[player.ad.galaxyDimCost].gte(player.ad.galaxyReq)) - { - player.ad.galaxyAmount = player.ad.galaxyAmount.add(1) - if (!hasUpgrade("bi", 25))player.ad.galaxyPause = new Decimal(6) - player.ta.dimensionAutobuyTimer[i] = new Decimal(0) - } + if (i == 10 && player.ta.buyables[32].gte(1)) { + if (!hasUpgrade("ta", 14) || hasUpgrade("ta", 14) && getBuyableAmount("ad", 3).lt(player.ta.galaxyLimit)) { + buyBuyable("ad", 3) + player.ta.dimensionAutobuyTimer[i] = new Decimal(0) } } } - - - - if (i == 0) player.ta.dimensionAutobuyTexts[i] = formatWhole(player.ta.dimensionAutobuyIndex.add(1)) + "st dimension autobuy: " + player.ta.dimensionAutobuyToggles[i] - if (i == 1) player.ta.dimensionAutobuyTexts[i] = formatWhole(player.ta.dimensionAutobuyIndex.add(1)) + "nd dimension autobuy: " + player.ta.dimensionAutobuyToggles[i] - if (i == 2) player.ta.dimensionAutobuyTexts[i] = formatWhole(player.ta.dimensionAutobuyIndex.add(1)) + "rd dimension autobuy: " + player.ta.dimensionAutobuyToggles[i] - if (i > 2 && i < 8) player.ta.dimensionAutobuyTexts[i] = formatWhole(player.ta.dimensionAutobuyIndex.add(1)) + "th dimension autobuy: " + player.ta.dimensionAutobuyToggles[i] - if (i == 8) player.ta.dimensionAutobuyTexts[i] = "Tickspeed autobuy: " + player.ta.dimensionAutobuyToggles[i] - if (i == 9) player.ta.dimensionAutobuyTexts[i] = "Dimension boost autobuy: " + player.ta.dimensionAutobuyToggles[i] - if (i == 10) player.ta.dimensionAutobuyTexts[i] = "Galaxy autobuy: " + player.ta.dimensionAutobuyToggles[i] } player.ta.dimensionAutobuyTimeReq = [new Decimal(3), new Decimal(3.5), new Decimal(4), new Decimal(4.5), new Decimal(5), new Decimal(5.5), new Decimal(6), new Decimal(6.5), new Decimal(4),new Decimal(10),new Decimal(25),] player.ta.dimensionAutobuyTimeReq[0] = player.ta.dimensionAutobuyTimeReq[0].div(buyableEffect("ta", 21)) @@ -293,16 +238,11 @@ for (let i = 0; i < player.ad.dimensionAmounts.length; i++) { player.ad.dimensionAmounts[i] = new Decimal(0) - player.ad.dimensionsPurchased[i] = new Decimal(0) + player.ad.buyables[11+i] = new Decimal(0) } - player.ad.dimensionsUnlocked[4] = false - player.ad.dimensionsUnlocked[5] = false - player.ad.dimensionsUnlocked[6] = false - player.ad.dimensionsUnlocked[7] = false - - player.ad.dimBoostAmount = new Decimal(0) - player.ad.galaxyAmount = new Decimal(0) + player.ad.buyables[2] = new Decimal(0) + player.ad.buyables[3] = new Decimal(0) for (let i = 0; i < player.ta.dimensionPower.length; i++) { @@ -314,7 +254,7 @@ 1: { title() { return "

Return" }, canClick() { return true }, - unlocked() { return true }, + unlocked() { return options.newMenu == false }, onClick() { player.tab = "in" }, @@ -356,51 +296,15 @@ }, style: { width: '100px', "min-height": '100px' }, }, - 6: { - title() { return "

Lower" }, - canClick() { return player.ta.dimensionAutobuyIndex.gt(0) }, - unlocked() { return true }, - onClick() { - player.ta.dimensionAutobuyIndex = player.ta.dimensionAutobuyIndex.sub(1) - }, - style: { width: '100px', "min-height": '100px' }, - }, - 7: { - title() { return "

Increase" }, - canClick() { return player.ta.dimensionAutobuyIndex.lt(10) }, - unlocked() { return true }, - onClick() { - player.ta.dimensionAutobuyIndex = player.ta.dimensionAutobuyIndex.add(1) - }, - style: { width: '100px', "min-height": '100px' }, - }, 11: { title() { return "

Return" }, canClick() { return true }, - unlocked() { return true }, + unlocked() { return options.newMenu == false }, onClick() { player.tab = "in" }, style: { width: '100px', "min-height": '50px' }, }, - 12: { - title() { return "

Toggle On" }, - canClick() { return !player.ta.dimensionAutobuyToggles[player.ta.dimensionAutobuyIndex] }, - unlocked() { return true }, - onClick() { - player.ta.dimensionAutobuyToggles[player.ta.dimensionAutobuyIndex] = true - }, - style: { width: '100px', "min-height": '100px' }, - }, - 13: { - title() { return "

Toggle Off" }, - canClick() { return player.ta.dimensionAutobuyToggles[player.ta.dimensionAutobuyIndex] }, - unlocked() { return true }, - onClick() { - player.ta.dimensionAutobuyToggles[player.ta.dimensionAutobuyIndex] = false - }, - style: { width: '100px', "min-height": '100px' }, - }, 14: { title() { return "

ENTER" }, canClick() { return true }, @@ -408,7 +312,7 @@ onClick() { player.tab = "tad" }, - style: { width: '200px', "min-height": '100px',}, + style: { width: '200px', "min-height": '100px',}, }, 15: { title() { return "

REVERSE CRUNCH" }, @@ -438,6 +342,222 @@ }, style: { width: '200px', "min-height": '80px' }, }, + 18: { + title() { return "

Toggle
On" }, + canClick() { return !player.ta.dimboostToggle }, + unlocked() { return true }, + onClick() { + player.ta.dimboostToggle = true + }, + style: { width: '100px', "min-height": '100px' }, + }, + 19: { + title() { return "

Toggle
Off" }, + canClick() { return player.ta.dimboostToggle }, + unlocked() { return true }, + onClick() { + player.ta.dimboostToggle = false + }, + style: { width: '100px', "min-height": '100px' }, + }, + 101: { + title() { return "

On" }, + canClick() { return !player.ta.dimensionAutobuyToggles[0] }, + unlocked() { return true }, + onClick() { + player.ta.dimensionAutobuyToggles[0] = true + }, + style: { width: '50px', "min-height": '50px' }, + }, + 102: { + title() { return "

Off" }, + canClick() { return player.ta.dimensionAutobuyToggles[0] }, + unlocked() { return true }, + onClick() { + player.ta.dimensionAutobuyToggles[0] = false + }, + style: { width: '50px', "min-height": '50px' }, + }, + 103: { + title() { return "

On" }, + canClick() { return !player.ta.dimensionAutobuyToggles[1] }, + unlocked() { return true }, + onClick() { + player.ta.dimensionAutobuyToggles[1] = true + }, + style: { width: '50px', "min-height": '50px' }, + }, + 104: { + title() { return "

Off" }, + canClick() { return player.ta.dimensionAutobuyToggles[1] }, + unlocked() { return true }, + onClick() { + player.ta.dimensionAutobuyToggles[1] = false + }, + style: { width: '50px', "min-height": '50px' }, + }, + 105: { + title() { return "

On" }, + canClick() { return !player.ta.dimensionAutobuyToggles[2] }, + unlocked() { return true }, + onClick() { + player.ta.dimensionAutobuyToggles[2] = true + }, + style: { width: '50px', "min-height": '50px' }, + }, + 106: { + title() { return "

Off" }, + canClick() { return player.ta.dimensionAutobuyToggles[2] }, + unlocked() { return true }, + onClick() { + player.ta.dimensionAutobuyToggles[2] = false + }, + style: { width: '50px', "min-height": '50px' }, + }, + 107: { + title() { return "

On" }, + canClick() { return !player.ta.dimensionAutobuyToggles[3] }, + unlocked() { return true }, + onClick() { + player.ta.dimensionAutobuyToggles[3] = true + }, + style: { width: '50px', "min-height": '50px' }, + }, + 108: { + title() { return "

Off" }, + canClick() { return player.ta.dimensionAutobuyToggles[3] }, + unlocked() { return true }, + onClick() { + player.ta.dimensionAutobuyToggles[3] = false + }, + style: { width: '50px', "min-height": '50px' }, + }, + 109: { + title() { return "

On" }, + canClick() { return !player.ta.dimensionAutobuyToggles[4] }, + unlocked() { return true }, + onClick() { + player.ta.dimensionAutobuyToggles[4] = true + }, + style: { width: '50px', "min-height": '50px' }, + }, + 110: { + title() { return "

Off" }, + canClick() { return player.ta.dimensionAutobuyToggles[4] }, + unlocked() { return true }, + onClick() { + player.ta.dimensionAutobuyToggles[4] = false + }, + style: { width: '50px', "min-height": '50px' }, + }, + 111: { + title() { return "

On" }, + canClick() { return !player.ta.dimensionAutobuyToggles[5] }, + unlocked() { return true }, + onClick() { + player.ta.dimensionAutobuyToggles[5] = true + }, + style: { width: '50px', "min-height": '50px' }, + }, + 112: { + title() { return "

Off" }, + canClick() { return player.ta.dimensionAutobuyToggles[5] }, + unlocked() { return true }, + onClick() { + player.ta.dimensionAutobuyToggles[5] = false + }, + style: { width: '50px', "min-height": '50px' }, + }, + 113: { + title() { return "

On" }, + canClick() { return !player.ta.dimensionAutobuyToggles[6] }, + unlocked() { return true }, + onClick() { + player.ta.dimensionAutobuyToggles[6] = true + }, + style: { width: '50px', "min-height": '50px' }, + }, + 114: { + title() { return "

Off" }, + canClick() { return player.ta.dimensionAutobuyToggles[6] }, + unlocked() { return true }, + onClick() { + player.ta.dimensionAutobuyToggles[6] = false + }, + style: { width: '50px', "min-height": '50px' }, + }, + 115: { + title() { return "

On" }, + canClick() { return !player.ta.dimensionAutobuyToggles[7] }, + unlocked() { return true }, + onClick() { + player.ta.dimensionAutobuyToggles[7] = true + }, + style: { width: '50px', "min-height": '50px' }, + }, + 116: { + title() { return "

Off" }, + canClick() { return player.ta.dimensionAutobuyToggles[7] }, + unlocked() { return true }, + onClick() { + player.ta.dimensionAutobuyToggles[7] = false + }, + style: { width: '50px', "min-height": '50px' }, + }, + 117: { + title() { return "

On" }, + canClick() { return !player.ta.dimensionAutobuyToggles[8] }, + unlocked() { return true }, + onClick() { + player.ta.dimensionAutobuyToggles[8] = true + }, + style: { width: '50px', "min-height": '50px' }, + }, + 118: { + title() { return "

Off" }, + canClick() { return player.ta.dimensionAutobuyToggles[8] }, + unlocked() { return true }, + onClick() { + player.ta.dimensionAutobuyToggles[8] = false + }, + style: { width: '50px', "min-height": '50px' }, + }, + 119: { + title() { return "

On" }, + canClick() { return !player.ta.dimensionAutobuyToggles[9] }, + unlocked() { return true }, + onClick() { + player.ta.dimensionAutobuyToggles[9] = true + }, + style: { width: '50px', "min-height": '50px' }, + }, + 120: { + title() { return "

Off" }, + canClick() { return player.ta.dimensionAutobuyToggles[9] }, + unlocked() { return true }, + onClick() { + player.ta.dimensionAutobuyToggles[9] = false + }, + style: { width: '50px', "min-height": '50px' }, + }, + 121: { + title() { return "

On" }, + canClick() { return !player.ta.dimensionAutobuyToggles[10] }, + unlocked() { return true }, + onClick() { + player.ta.dimensionAutobuyToggles[10] = true + }, + style: { width: '50px', "min-height": '50px' }, + }, + 122: { + title() { return "

Off" }, + canClick() { return player.ta.dimensionAutobuyToggles[10] }, + unlocked() { return true }, + onClick() { + player.ta.dimensionAutobuyToggles[10] = false + }, + style: { width: '50px', "min-height": '50px' }, + }, }, bars: { }, @@ -560,11 +680,7 @@ unlocked() { return true}, canAfford() { return player.ta.negativeInfinityPoints.gte(this.cost()) }, title() { - return format(getBuyableAmount(this.layer, this.id), 0) + "
1st Dimension Power" - }, - display() { - return "which are producing " + format(tmp[this.layer].buyables[this.id].effect) + " 1st dimension power per second.\n\ - Cost: " + format(tmp[this.layer].buyables[this.id].cost) + " Negative Infinity Points" + return "Cost: " + format(tmp[this.layer].buyables[this.id].cost) + " NIP" }, buy() { let base = new Decimal(1) @@ -576,7 +692,7 @@ setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(1)) } else { - + let max = Decimal.affordGeometricSeries(player.ta.negativeInfinityPoints, base, growth, getBuyableAmount(this.layer, this.id)) let cost = Decimal.sumGeometricSeries(max, base, growth, getBuyableAmount(this.layer, this.id)) if (!hasUpgrade("bi", 104)) player.ta.negativeInfinityPoints = player.ta.negativeInfinityPoints.sub(cost) @@ -584,7 +700,7 @@ setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(max)) } }, - style: { width: '275px', height: '150px', } + style: { width: '175px', height: '60px', } }, 12: { cost(x) { return new Decimal(1.1).pow(x || getBuyableAmount(this.layer, this.id)).mul(1) }, @@ -592,11 +708,7 @@ unlocked() { return true }, canAfford() { return player.ta.negativeInfinityPoints.gte(this.cost()) }, title() { - return format(getBuyableAmount(this.layer, this.id), 0) + "
2nd Dimension Power" - }, - display() { - return "which are producing " + format(tmp[this.layer].buyables[this.id].effect) + " 2nd dimension power per second.\n\ - Cost: " + format(tmp[this.layer].buyables[this.id].cost) + " Negative Infinity Points" + return "Cost: " + format(tmp[this.layer].buyables[this.id].cost) + " NIP" }, buy() { let base = new Decimal(1) @@ -608,7 +720,7 @@ setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(1)) } else { - + let max = Decimal.affordGeometricSeries(player.ta.negativeInfinityPoints, base, growth, getBuyableAmount(this.layer, this.id)) let cost = Decimal.sumGeometricSeries(max, base, growth, getBuyableAmount(this.layer, this.id)) if (!hasUpgrade("bi", 104)) player.ta.negativeInfinityPoints = player.ta.negativeInfinityPoints.sub(cost) @@ -616,7 +728,7 @@ setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(max)) } }, - style: { width: '275px', height: '150px', } + style: { width: '175px', height: '60px', } }, 13: { cost(x) { return new Decimal(1.1).pow(x || getBuyableAmount(this.layer, this.id)).mul(1) }, @@ -624,11 +736,7 @@ unlocked() { return true }, canAfford() { return player.ta.negativeInfinityPoints.gte(this.cost()) }, title() { - return format(getBuyableAmount(this.layer, this.id), 0) + "
3rd Dimension Power" - }, - display() { - return "which are producing " + format(tmp[this.layer].buyables[this.id].effect) + " 3rd dimension power per second.\n\ - Cost: " + format(tmp[this.layer].buyables[this.id].cost) + " Negative Infinity Points" + return "Cost: " + format(tmp[this.layer].buyables[this.id].cost) + " NIP" }, buy() { let base = new Decimal(1) @@ -640,7 +748,7 @@ setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(1)) } else { - + let max = Decimal.affordGeometricSeries(player.ta.negativeInfinityPoints, base, growth, getBuyableAmount(this.layer, this.id)) let cost = Decimal.sumGeometricSeries(max, base, growth, getBuyableAmount(this.layer, this.id)) if (!hasUpgrade("bi", 104)) player.ta.negativeInfinityPoints = player.ta.negativeInfinityPoints.sub(cost) @@ -648,7 +756,7 @@ setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(max)) } }, - style: { width: '275px', height: '150px', } + style: { width: '175px', height: '60px', } }, 14: { cost(x) { return new Decimal(1.1).pow(x || getBuyableAmount(this.layer, this.id)).mul(1) }, @@ -656,11 +764,7 @@ unlocked() { return true }, canAfford() { return player.ta.negativeInfinityPoints.gte(this.cost()) }, title() { - return format(getBuyableAmount(this.layer, this.id), 0) + "
4th Dimension Power" - }, - display() { - return "which are producing " + format(tmp[this.layer].buyables[this.id].effect) + " 4th dimension power per second.\n\ - Cost: " + format(tmp[this.layer].buyables[this.id].cost) + " Negative Infinity Points" + return "Cost: " + format(tmp[this.layer].buyables[this.id].cost) + " NIP" }, buy() { let base = new Decimal(1) @@ -672,7 +776,7 @@ setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(1)) } else { - + let max = Decimal.affordGeometricSeries(player.ta.negativeInfinityPoints, base, growth, getBuyableAmount(this.layer, this.id)) let cost = Decimal.sumGeometricSeries(max, base, growth, getBuyableAmount(this.layer, this.id)) if (!hasUpgrade("bi", 104)) player.ta.negativeInfinityPoints = player.ta.negativeInfinityPoints.sub(cost) @@ -680,7 +784,7 @@ setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(max)) } }, - style: { width: '275px', height: '150px', } + style: { width: '175px', height: '60px', } }, 15: { cost(x) { return new Decimal(1.1).pow(x || getBuyableAmount(this.layer, this.id)).mul(1) }, @@ -688,11 +792,7 @@ unlocked() { return true }, canAfford() { return player.ta.negativeInfinityPoints.gte(this.cost()) }, title() { - return format(getBuyableAmount(this.layer, this.id), 0) + "
5th Dimension Power" - }, - display() { - return "which are producing " + format(tmp[this.layer].buyables[this.id].effect) + " 5th dimension power per second.\n\ - Cost: " + format(tmp[this.layer].buyables[this.id].cost) + " Negative Infinity Points" + return "Cost: " + format(tmp[this.layer].buyables[this.id].cost) + " NIP" }, buy() { let base = new Decimal(1) @@ -704,7 +804,7 @@ setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(1)) } else { - + let max = Decimal.affordGeometricSeries(player.ta.negativeInfinityPoints, base, growth, getBuyableAmount(this.layer, this.id)) let cost = Decimal.sumGeometricSeries(max, base, growth, getBuyableAmount(this.layer, this.id)) if (!hasUpgrade("bi", 104)) player.ta.negativeInfinityPoints = player.ta.negativeInfinityPoints.sub(cost) @@ -712,7 +812,7 @@ setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(max)) } }, - style: { width: '275px', height: '150px', } + style: { width: '175px', height: '60px', } }, 16: { cost(x) { return new Decimal(1.1).pow(x || getBuyableAmount(this.layer, this.id)).mul(1) }, @@ -720,11 +820,7 @@ unlocked() { return true }, canAfford() { return player.ta.negativeInfinityPoints.gte(this.cost()) }, title() { - return format(getBuyableAmount(this.layer, this.id), 0) + "
6th Dimension Power" - }, - display() { - return "which are producing " + format(tmp[this.layer].buyables[this.id].effect) + " 6th dimension power per second.\n\ - Cost: " + format(tmp[this.layer].buyables[this.id].cost) + " Negative Infinity Points" + return "Cost: " + format(tmp[this.layer].buyables[this.id].cost) + " NIP" }, buy() { let base = new Decimal(1) @@ -736,7 +832,7 @@ setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(1)) } else { - + let max = Decimal.affordGeometricSeries(player.ta.negativeInfinityPoints, base, growth, getBuyableAmount(this.layer, this.id)) let cost = Decimal.sumGeometricSeries(max, base, growth, getBuyableAmount(this.layer, this.id)) if (!hasUpgrade("bi", 104)) player.ta.negativeInfinityPoints = player.ta.negativeInfinityPoints.sub(cost) @@ -744,7 +840,7 @@ setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(max)) } }, - style: { width: '275px', height: '150px', } + style: { width: '175px', height: '60px', } }, 17: { cost(x) { return new Decimal(1.1).pow(x || getBuyableAmount(this.layer, this.id)).mul(1) }, @@ -752,11 +848,7 @@ unlocked() { return true }, canAfford() { return player.ta.negativeInfinityPoints.gte(this.cost()) }, title() { - return format(getBuyableAmount(this.layer, this.id), 0) + "
7th Dimension Power" - }, - display() { - return "which are producing " + format(tmp[this.layer].buyables[this.id].effect) + " 7th dimension power per second.\n\ - Cost: " + format(tmp[this.layer].buyables[this.id].cost) + " Negative Infinity Points" + return "Cost: " + format(tmp[this.layer].buyables[this.id].cost) + " NIP" }, buy() { let base = new Decimal(1) @@ -768,7 +860,7 @@ setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(1)) } else { - + let max = Decimal.affordGeometricSeries(player.ta.negativeInfinityPoints, base, growth, getBuyableAmount(this.layer, this.id)) let cost = Decimal.sumGeometricSeries(max, base, growth, getBuyableAmount(this.layer, this.id)) if (!hasUpgrade("bi", 104)) player.ta.negativeInfinityPoints = player.ta.negativeInfinityPoints.sub(cost) @@ -776,7 +868,7 @@ setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(max)) } }, - style: { width: '275px', height: '150px', } + style: { width: '175px', height: '60px', } }, 18: { cost(x) { return new Decimal(1.1).pow(x || getBuyableAmount(this.layer, this.id)).mul(1) }, @@ -784,11 +876,7 @@ unlocked() { return true}, canAfford() { return player.ta.negativeInfinityPoints.gte(this.cost()) }, title() { - return format(getBuyableAmount(this.layer, this.id), 0) + "
8th Dimension Power" - }, - display() { - return "which are producing " + format(tmp[this.layer].buyables[this.id].effect) + " 8th dimension power per second.\n\ - Cost: " + format(tmp[this.layer].buyables[this.id].cost) + " Negative Infinity Points" + return "Cost: " + format(tmp[this.layer].buyables[this.id].cost) + " NIP" }, buy() { let base = new Decimal(1) @@ -800,7 +888,7 @@ setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(1)) } else { - + let max = Decimal.affordGeometricSeries(player.ta.negativeInfinityPoints, base, growth, getBuyableAmount(this.layer, this.id)) let cost = Decimal.sumGeometricSeries(max, base, growth, getBuyableAmount(this.layer, this.id)) if (!hasUpgrade("bi", 104)) player.ta.negativeInfinityPoints = player.ta.negativeInfinityPoints.sub(cost) @@ -808,15 +896,15 @@ setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(max)) } }, - style: { width: '275px', height: '150px', } + style: { width: '175px', height: '60px', } }, 21: { cost(x) { return new Decimal(1.15).pow(x || getBuyableAmount(this.layer, this.id)).mul(1) }, effect(x) { return new getBuyableAmount(this.layer, this.id).mul(0.2).add(1) }, - unlocked() { return player.ta.dimensionAutobuyIndex.eq(0) }, + unlocked() { return true }, canAfford() { return player.ta.negativeInfinityPoints.gte(this.cost()) }, title() { - return format(getBuyableAmount(this.layer, this.id), 0) + "
1st Dimension Autobuy" + return "1st Dimension Autobuy" }, display() { return "which are dividing cooldown by /" + format(tmp[this.layer].buyables[this.id].effect) + ".\n\ @@ -832,7 +920,7 @@ setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(1)) } else { - + let max = Decimal.affordGeometricSeries(player.ta.negativeInfinityPoints, base, growth, getBuyableAmount(this.layer, this.id)) let cost = Decimal.sumGeometricSeries(max, base, growth, getBuyableAmount(this.layer, this.id)) if (!hasUpgrade("bi", 104)) player.ta.negativeInfinityPoints = player.ta.negativeInfinityPoints.sub(cost) @@ -840,15 +928,15 @@ setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(max)) } }, - style: { width: '275px', height: '150px', } + style: { width: '275px', height: '50px', } }, 22: { cost(x) { return new Decimal(1.16).pow(x || getBuyableAmount(this.layer, this.id)).mul(1.5) }, effect(x) { return new getBuyableAmount(this.layer, this.id).mul(0.2).add(1) }, - unlocked() { return player.ta.dimensionAutobuyIndex.eq(1) }, + unlocked() { return true }, canAfford() { return player.ta.negativeInfinityPoints.gte(this.cost()) }, title() { - return format(getBuyableAmount(this.layer, this.id), 0) + "
2nd Dimension Autobuy" + return "2nd Dimension Autobuy" }, display() { return "which are dividing cooldown by /" + format(tmp[this.layer].buyables[this.id].effect) + ".\n\ @@ -864,7 +952,7 @@ setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(1)) } else { - + let max = Decimal.affordGeometricSeries(player.ta.negativeInfinityPoints, base, growth, getBuyableAmount(this.layer, this.id)) let cost = Decimal.sumGeometricSeries(max, base, growth, getBuyableAmount(this.layer, this.id)) if (!hasUpgrade("bi", 104)) player.ta.negativeInfinityPoints = player.ta.negativeInfinityPoints.sub(cost) @@ -872,15 +960,15 @@ setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(max)) } }, - style: { width: '275px', height: '150px', } + style: { width: '275px', height: '50px', } }, 23: { cost(x) { return new Decimal(1.17).pow(x || getBuyableAmount(this.layer, this.id)).mul(2) }, effect(x) { return new getBuyableAmount(this.layer, this.id).mul(0.2).add(1) }, - unlocked() { return player.ta.dimensionAutobuyIndex.eq(2) }, + unlocked() { return true }, canAfford() { return player.ta.negativeInfinityPoints.gte(this.cost()) }, title() { - return format(getBuyableAmount(this.layer, this.id), 0) + "
3rd Dimension Autobuy" + return "3rd Dimension Autobuy" }, display() { return "which are dividing cooldown by /" + format(tmp[this.layer].buyables[this.id].effect) + ".\n\ @@ -896,7 +984,7 @@ setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(1)) } else { - + let max = Decimal.affordGeometricSeries(player.ta.negativeInfinityPoints, base, growth, getBuyableAmount(this.layer, this.id)) let cost = Decimal.sumGeometricSeries(max, base, growth, getBuyableAmount(this.layer, this.id)) if (!hasUpgrade("bi", 104)) player.ta.negativeInfinityPoints = player.ta.negativeInfinityPoints.sub(cost) @@ -904,15 +992,15 @@ setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(max)) } }, - style: { width: '275px', height: '150px', } + style: { width: '275px', height: '50px', } }, 24: { cost(x) { return new Decimal(1.18).pow(x || getBuyableAmount(this.layer, this.id)).mul(2.5) }, effect(x) { return new getBuyableAmount(this.layer, this.id).mul(0.2).add(1) }, - unlocked() { return player.ta.dimensionAutobuyIndex.eq(3) }, + unlocked() { return true }, canAfford() { return player.ta.negativeInfinityPoints.gte(this.cost()) }, title() { - return format(getBuyableAmount(this.layer, this.id), 0) + "
4th Dimension Autobuy" + return "4th Dimension Autobuy" }, display() { return "which are dividing cooldown by /" + format(tmp[this.layer].buyables[this.id].effect) + ".\n\ @@ -928,7 +1016,7 @@ setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(1)) } else { - + let max = Decimal.affordGeometricSeries(player.ta.negativeInfinityPoints, base, growth, getBuyableAmount(this.layer, this.id)) let cost = Decimal.sumGeometricSeries(max, base, growth, getBuyableAmount(this.layer, this.id)) if (!hasUpgrade("bi", 104)) player.ta.negativeInfinityPoints = player.ta.negativeInfinityPoints.sub(cost) @@ -936,15 +1024,15 @@ setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(max)) } }, - style: { width: '275px', height: '150px', } + style: { width: '275px', height: '50px', } }, 25: { cost(x) { return new Decimal(1.19).pow(x || getBuyableAmount(this.layer, this.id)).mul(3) }, effect(x) { return new getBuyableAmount(this.layer, this.id).mul(0.2).add(1) }, - unlocked() { return player.ta.dimensionAutobuyIndex.eq(4) }, + unlocked() { return true }, canAfford() { return player.ta.negativeInfinityPoints.gte(this.cost()) }, title() { - return format(getBuyableAmount(this.layer, this.id), 0) + "
5th Dimension Autobuy" + return "5th Dimension Autobuy" }, display() { return "which are dividing cooldown by /" + format(tmp[this.layer].buyables[this.id].effect) + ".\n\ @@ -960,7 +1048,7 @@ setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(1)) } else { - + let max = Decimal.affordGeometricSeries(player.ta.negativeInfinityPoints, base, growth, getBuyableAmount(this.layer, this.id)) let cost = Decimal.sumGeometricSeries(max, base, growth, getBuyableAmount(this.layer, this.id)) if (!hasUpgrade("bi", 104)) player.ta.negativeInfinityPoints = player.ta.negativeInfinityPoints.sub(cost) @@ -968,15 +1056,15 @@ setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(max)) } }, - style: { width: '275px', height: '150px', } + style: { width: '275px', height: '50px', } }, 26: { cost(x) { return new Decimal(1.2).pow(x || getBuyableAmount(this.layer, this.id)).mul(3.5) }, effect(x) { return new getBuyableAmount(this.layer, this.id).mul(0.2).add(1) }, - unlocked() { return player.ta.dimensionAutobuyIndex.eq(5) }, + unlocked() { return true }, canAfford() { return player.ta.negativeInfinityPoints.gte(this.cost()) }, title() { - return format(getBuyableAmount(this.layer, this.id), 0) + "
6th Dimension Autobuy" + return "6th Dimension Autobuy" }, display() { return "which are dividing cooldown by /" + format(tmp[this.layer].buyables[this.id].effect) + ".\n\ @@ -992,7 +1080,7 @@ setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(1)) } else { - + let max = Decimal.affordGeometricSeries(player.ta.negativeInfinityPoints, base, growth, getBuyableAmount(this.layer, this.id)) let cost = Decimal.sumGeometricSeries(max, base, growth, getBuyableAmount(this.layer, this.id)) if (!hasUpgrade("bi", 104)) player.ta.negativeInfinityPoints = player.ta.negativeInfinityPoints.sub(cost) @@ -1000,15 +1088,15 @@ setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(max)) } }, - style: { width: '275px', height: '150px', } + style: { width: '275px', height: '50px', } }, 27: { cost(x) { return new Decimal(1.21).pow(x || getBuyableAmount(this.layer, this.id)).mul(4) }, effect(x) { return new getBuyableAmount(this.layer, this.id).mul(0.2).add(1) }, - unlocked() { return player.ta.dimensionAutobuyIndex.eq(6) }, + unlocked() { return true }, canAfford() { return player.ta.negativeInfinityPoints.gte(this.cost()) }, title() { - return format(getBuyableAmount(this.layer, this.id), 0) + "
7th Dimension Autobuy" + return "7th Dimension Autobuy" }, display() { return "which are dividing cooldown by /" + format(tmp[this.layer].buyables[this.id].effect) + ".\n\ @@ -1024,7 +1112,7 @@ setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(1)) } else { - + let max = Decimal.affordGeometricSeries(player.ta.negativeInfinityPoints, base, growth, getBuyableAmount(this.layer, this.id)) let cost = Decimal.sumGeometricSeries(max, base, growth, getBuyableAmount(this.layer, this.id)) if (!hasUpgrade("bi", 104)) player.ta.negativeInfinityPoints = player.ta.negativeInfinityPoints.sub(cost) @@ -1032,15 +1120,15 @@ setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(max)) } }, - style: { width: '275px', height: '150px', } + style: { width: '275px', height: '50px', } }, 28: { cost(x) { return new Decimal(1.22).pow(x || getBuyableAmount(this.layer, this.id)).mul(4.5) }, effect(x) { return new getBuyableAmount(this.layer, this.id).mul(0.2).add(1) }, - unlocked() { return player.ta.dimensionAutobuyIndex.eq(7) }, + unlocked() { return true }, canAfford() { return player.ta.negativeInfinityPoints.gte(this.cost()) }, title() { - return format(getBuyableAmount(this.layer, this.id), 0) + "
8th Dimension Autobuy" + return "8th Dimension Autobuy" }, display() { return "which are dividing cooldown by /" + format(tmp[this.layer].buyables[this.id].effect) + ".\n\ @@ -1056,7 +1144,7 @@ setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(1)) } else { - + let max = Decimal.affordGeometricSeries(player.ta.negativeInfinityPoints, base, growth, getBuyableAmount(this.layer, this.id)) let cost = Decimal.sumGeometricSeries(max, base, growth, getBuyableAmount(this.layer, this.id)) if (!hasUpgrade("bi", 104)) player.ta.negativeInfinityPoints = player.ta.negativeInfinityPoints.sub(cost) @@ -1064,15 +1152,15 @@ setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(max)) } }, - style: { width: '275px', height: '150px', } + style: { width: '275px', height: '50px', } }, 29: { cost(x) { return new Decimal(1.175).pow(x || getBuyableAmount(this.layer, this.id)).mul(3) }, effect(x) { return new getBuyableAmount(this.layer, this.id).mul(0.2).add(1) }, - unlocked() { return player.ta.dimensionAutobuyIndex.eq(8) }, + unlocked() { return true }, canAfford() { return player.ta.negativeInfinityPoints.gte(this.cost()) }, title() { - return format(getBuyableAmount(this.layer, this.id), 0) + "
Tickspeed Autobuy" + return "Tickspeed Autobuy" }, display() { return "which are dividing cooldown by /" + format(tmp[this.layer].buyables[this.id].effect) + ".\n\ @@ -1088,7 +1176,7 @@ setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(1)) } else { - + let max = Decimal.affordGeometricSeries(player.ta.negativeInfinityPoints, base, growth, getBuyableAmount(this.layer, this.id)) let cost = Decimal.sumGeometricSeries(max, base, growth, getBuyableAmount(this.layer, this.id)) if (!hasUpgrade("bi", 104)) player.ta.negativeInfinityPoints = player.ta.negativeInfinityPoints.sub(cost) @@ -1096,15 +1184,15 @@ setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(max)) } }, - style: { width: '275px', height: '150px', } + style: { width: '275px', height: '50px', } }, 31: { cost(x) { return new Decimal(1.3).pow(x || getBuyableAmount(this.layer, this.id)).mul(8) }, effect(x) { return new getBuyableAmount(this.layer, this.id).mul(0.2).add(1) }, - unlocked() { return player.ta.dimensionAutobuyIndex.eq(9) }, + unlocked() { return true }, canAfford() { return player.ta.negativeInfinityPoints.gte(this.cost()) }, title() { - return format(getBuyableAmount(this.layer, this.id), 0) + "
Dimboost Autobuy" + return "Dimboost Autobuy" }, display() { return "which are dividing cooldown by /" + format(tmp[this.layer].buyables[this.id].effect) + ".\n\ @@ -1120,7 +1208,7 @@ setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(1)) } else { - + let max = Decimal.affordGeometricSeries(player.ta.negativeInfinityPoints, base, growth, getBuyableAmount(this.layer, this.id)) let cost = Decimal.sumGeometricSeries(max, base, growth, getBuyableAmount(this.layer, this.id)) if (!hasUpgrade("bi", 104)) player.ta.negativeInfinityPoints = player.ta.negativeInfinityPoints.sub(cost) @@ -1128,15 +1216,15 @@ setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(max)) } }, - style: { width: '275px', height: '150px', } + style: { width: '275px', height: '50px', } }, 32: { cost(x) { return new Decimal(1.4).pow(x || getBuyableAmount(this.layer, this.id)).mul(12) }, effect(x) { return new getBuyableAmount(this.layer, this.id).mul(0.2).add(1) }, - unlocked() { return player.ta.dimensionAutobuyIndex.eq(10) }, + unlocked() { return true }, canAfford() { return player.ta.negativeInfinityPoints.gte(this.cost()) }, title() { - return format(getBuyableAmount(this.layer, this.id), 0) + "
Galaxy Autobuy" + return "Galaxy Autobuy" }, display() { return "which are dividing cooldown by /" + format(tmp[this.layer].buyables[this.id].effect) + ".\n\ @@ -1152,7 +1240,7 @@ setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(1)) } else { - + let max = Decimal.affordGeometricSeries(player.ta.negativeInfinityPoints, base, growth, getBuyableAmount(this.layer, this.id)) let cost = Decimal.sumGeometricSeries(max, base, growth, getBuyableAmount(this.layer, this.id)) if (!hasUpgrade("bi", 104)) player.ta.negativeInfinityPoints = player.ta.negativeInfinityPoints.sub(cost) @@ -1160,7 +1248,7 @@ setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(max)) } }, - style: { width: '275px', height: '150px', } + style: { width: '275px', height: '50px', } }, 33: { cost(x) { return new Decimal(1.1).pow(x || getBuyableAmount(this.layer, this.id)).mul(1) }, @@ -1184,7 +1272,7 @@ setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(1)) } else { - + let max = Decimal.affordGeometricSeries(player.ta.negativeInfinityPoints, base, growth, getBuyableAmount(this.layer, this.id)) let cost = Decimal.sumGeometricSeries(max, base, growth, getBuyableAmount(this.layer, this.id)) if (!hasUpgrade("bi", 104)) player.ta.negativeInfinityPoints = player.ta.negativeInfinityPoints.sub(cost) @@ -1216,7 +1304,7 @@ setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(1)) } else { - + let max = Decimal.affordGeometricSeries(player.ta.negativeInfinityPoints, base, growth, getBuyableAmount(this.layer, this.id)) let cost = Decimal.sumGeometricSeries(max, base, growth, getBuyableAmount(this.layer, this.id)) if (!hasUpgrade("bi", 104)) player.ta.negativeInfinityPoints = player.ta.negativeInfinityPoints.sub(cost) @@ -1248,7 +1336,7 @@ setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(1)) } else { - + let max = Decimal.affordGeometricSeries(player.ta.negativeInfinityPoints, base, growth, getBuyableAmount(this.layer, this.id)) let cost = Decimal.sumGeometricSeries(max, base, growth, getBuyableAmount(this.layer, this.id)) if (!hasUpgrade("bi", 104)) player.ta.negativeInfinityPoints = player.ta.negativeInfinityPoints.sub(cost) @@ -1280,7 +1368,7 @@ setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(1)) } else { - + let max = Decimal.affordGeometricSeries(player.ta.negativeInfinityPoints, base, growth, getBuyableAmount(this.layer, this.id)) let cost = Decimal.sumGeometricSeries(max, base, growth, getBuyableAmount(this.layer, this.id)) if (!hasUpgrade("bi", 104)) player.ta.negativeInfinityPoints = player.ta.negativeInfinityPoints.sub(cost) @@ -1312,7 +1400,7 @@ setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(1)) } else { - + let max = Decimal.affordGeometricSeries(player.ta.negativeInfinityPoints, base, growth, getBuyableAmount(this.layer, this.id)) let cost = Decimal.sumGeometricSeries(max, base, growth, getBuyableAmount(this.layer, this.id)) if (!hasUpgrade("bi", 104)) player.ta.negativeInfinityPoints = player.ta.negativeInfinityPoints.sub(cost) @@ -1347,7 +1435,7 @@ setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(1)) } else { - + let max = Decimal.affordGeometricSeries(player.d.dicePoints, base, growth, getBuyableAmount(this.layer, this.id)) let cost = Decimal.sumGeometricSeries(max, base, growth, getBuyableAmount(this.layer, this.id)) if (!hasUpgrade("bi", 104)) player.d.dicePoints = player.d.dicePoints.sub(cost) @@ -1379,7 +1467,7 @@ setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(1)) } else { - + let max = Decimal.affordGeometricSeries(player.rf.rocketFuel, base, growth, getBuyableAmount(this.layer, this.id)) let cost = Decimal.sumGeometricSeries(max, base, growth, getBuyableAmount(this.layer, this.id)) if (!hasUpgrade("bi", 104)) player.rf.rocketFuel = player.rf.rocketFuel.sub(cost) @@ -1411,7 +1499,7 @@ setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(1)) } else { - + let max = Decimal.affordGeometricSeries(player.h.hexPoints[0], base, growth, getBuyableAmount(this.layer, this.id)) let cost = Decimal.sumGeometricSeries(max, base, growth, getBuyableAmount(this.layer, this.id)) if (!hasUpgrade("bi", 104)) player.h.hexPoints[0] = player.h.hexPoints[0].sub(cost) @@ -1443,7 +1531,7 @@ setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(1)) } else { - + let max = Decimal.affordGeometricSeries(player.d.dicePoints, base, growth, getBuyableAmount(this.layer, this.id)) let cost = Decimal.sumGeometricSeries(max, base, growth, getBuyableAmount(this.layer, this.id)) if (!hasUpgrade("bi", 104)) player.d.dicePoints = player.d.dicePoints.sub(cost) @@ -1475,7 +1563,7 @@ setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(1)) } else { - + let max = Decimal.affordGeometricSeries(player.rf.rocketFuel, base, growth, getBuyableAmount(this.layer, this.id)) let cost = Decimal.sumGeometricSeries(max, base, growth, getBuyableAmount(this.layer, this.id)) if (!hasUpgrade("bi", 104)) player.rf.rocketFuel = player.rf.rocketFuel.sub(cost) @@ -1507,7 +1595,7 @@ setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(1)) } else { - + let max = Decimal.affordGeometricSeries(player.h.hexPoints[0], base, growth, getBuyableAmount(this.layer, this.id)) let cost = Decimal.sumGeometricSeries(max, base, growth, getBuyableAmount(this.layer, this.id)) if (!hasUpgrade("bi", 104)) player.h.hexPoints[0] = player.h.hexPoints[0].sub(cost) @@ -1539,7 +1627,7 @@ setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(1)) } else { - + let max = Decimal.affordGeometricSeries(player.d.dicePoints, base, growth, getBuyableAmount(this.layer, this.id)) let cost = Decimal.sumGeometricSeries(max, base, growth, getBuyableAmount(this.layer, this.id)) if (!hasUpgrade("bi", 104)) player.d.dicePoints = player.d.dicePoints.sub(cost) @@ -1571,7 +1659,7 @@ setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(1)) } else { - + let max = Decimal.affordGeometricSeries(player.rf.rocketFuel, base, growth, getBuyableAmount(this.layer, this.id)) let cost = Decimal.sumGeometricSeries(max, base, growth, getBuyableAmount(this.layer, this.id)) if (!hasUpgrade("bi", 104)) player.rf.rocketFuel = player.rf.rocketFuel.sub(cost) @@ -1603,7 +1691,7 @@ setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(1)) } else { - + let max = Decimal.affordGeometricSeries(player.h.hexPoints[0], base, growth, getBuyableAmount(this.layer, this.id)) let cost = Decimal.sumGeometricSeries(max, base, growth, getBuyableAmount(this.layer, this.id)) if (!hasUpgrade("bi", 104)) player.h.hexPoints[0] = player.h.hexPoints[0].sub(cost) @@ -1635,7 +1723,7 @@ setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(1)) } else { - + let max = Decimal.affordGeometricSeries(player.d.dicePoints, base, growth, getBuyableAmount(this.layer, this.id)) let cost = Decimal.sumGeometricSeries(max, base, growth, getBuyableAmount(this.layer, this.id)) if (!hasUpgrade("bi", 104)) player.d.dicePoints = player.d.dicePoints.sub(cost) @@ -1667,7 +1755,7 @@ setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(1)) } else { - + let max = Decimal.affordGeometricSeries(player.rf.rocketFuel, base, growth, getBuyableAmount(this.layer, this.id)) let cost = Decimal.sumGeometricSeries(max, base, growth, getBuyableAmount(this.layer, this.id)) if (!hasUpgrade("bi", 104)) player.rf.rocketFuel = player.rf.rocketFuel.sub(cost) @@ -1699,7 +1787,7 @@ setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(1)) } else { - + let max = Decimal.affordGeometricSeries(player.h.hexPoints[0], base, growth, getBuyableAmount(this.layer, this.id)) let cost = Decimal.sumGeometricSeries(max, base, growth, getBuyableAmount(this.layer, this.id)) if (!hasUpgrade("bi", 104)) player.h.hexPoints[0] = player.h.hexPoints[0].sub(cost) @@ -1724,22 +1812,50 @@ unlocked() { return true }, content: [ - ["blank", "25px"], - ["raw-html", function () { return "You have " + format(player.ta.dimensionPower[0]) + " 1st dimension power, which boost antimatter by x" + format(player.ta.dimensionPowerEffects[0]) + "."}, { "color": "white", "font-size": "16px", "font-family": "monospace" }], - ["raw-html", function () { return "You have " + format(player.ta.dimensionPower[1]) + " 2nd dimension power, which boost 1st dimensions by x" + format(player.ta.dimensionPowerEffects[1]) + "."}, { "color": "white", "font-size": "16px", "font-family": "monospace" }], - ["raw-html", function () { return "You have " + format(player.ta.dimensionPower[2]) + " 3rd dimension power, which boost 2nd dimensions by x" + format(player.ta.dimensionPowerEffects[2]) + "."}, { "color": "white", "font-size": "16px", "font-family": "monospace" }], - ["raw-html", function () { return "You have " + format(player.ta.dimensionPower[3]) + " 4th dimension power, which boost 3rd dimensions by x" + format(player.ta.dimensionPowerEffects[3]) + "."}, { "color": "white", "font-size": "16px", "font-family": "monospace" }], - ["raw-html", function () { return "You have " + format(player.ta.dimensionPower[4]) + " 5th dimension power, which boost 4th dimensions by x" + format(player.ta.dimensionPowerEffects[4]) + "."}, { "color": "white", "font-size": "16px", "font-family": "monospace" }], - ["raw-html", function () { return "You have " + format(player.ta.dimensionPower[5]) + " 6th dimension power, which boost 5th dimensions by x" + format(player.ta.dimensionPowerEffects[5]) + "."}, { "color": "white", "font-size": "16px", "font-family": "monospace" }], - ["raw-html", function () { return "You have " + format(player.ta.dimensionPower[6]) + " 7th dimension power, which boost 6th dimensions by x" + format(player.ta.dimensionPowerEffects[6]) + "."}, { "color": "white", "font-size": "16px", "font-family": "monospace" }], - ["raw-html", function () { return "You have " + format(player.ta.dimensionPower[7]) + " 8th dimension power, which boost 7th dimensions by x" + format(player.ta.dimensionPowerEffects[7]) + "."}, { "color": "white", "font-size": "16px", "font-family": "monospace" }], ["blank", "25px"], ["row", [["clickable", 2], ["clickable", 3]]], - ["blank", "25px"], - ["row", [["buyable", 11], ["buyable", 12], ["buyable", 13], ["buyable", 14]]], - ["row", [["buyable", 15], ["buyable", 16], ["buyable", 17], ["buyable", 18]]], + ["blank", "25px"], + ["row", [["column", [ + ["raw-html", function () { return "1st Dimensional Power (" + format(buyableEffect("ta", 11)) + "x): " + format(player.ta.dimensionPower[0]) + " (+" + format(player.ta.dimensionPowerPerSecond[0]) + "/s)"}, { "color": "white", "font-size": "24px", "font-family": "monospace" }], + ["raw-html", function () { return "Boosts antimatter by x" + format(player.ta.dimensionPowerEffects[0])}, { "color": "white", "font-size": "16px", "font-family": "monospace" }]]], + ["raw-html", function () { return "    "}, { "font-size": "24px"}], + ["buyable", 11]]], + ["row", [["column", [ + ["raw-html", function () { return "2nd Dimensional Power (" + format(buyableEffect("ta", 12)) + "x): " + format(player.ta.dimensionPower[1]) + " (+" + format(player.ta.dimensionPowerPerSecond[1]) + "/s)"}, { "color": "white", "font-size": "24px", "font-family": "monospace" }], + ["raw-html", function () { return "Boosts 1st dimensions by x" + format(player.ta.dimensionPowerEffects[1])}, { "color": "white", "font-size": "16px", "font-family": "monospace" }]]], + ["raw-html", function () { return "    "}, { "font-size": "24px"}], + ["buyable", 12]]], + ["row", [["column", [ + ["raw-html", function () { return "3rd Dimensional Power (" + format(buyableEffect("ta", 13)) + "x): " + format(player.ta.dimensionPower[2]) + " (+" + format(player.ta.dimensionPowerPerSecond[2]) + "/s)"}, { "color": "white", "font-size": "24px", "font-family": "monospace" }], + ["raw-html", function () { return "Boosts 2nd dimensions by x" + format(player.ta.dimensionPowerEffects[2])}, { "color": "white", "font-size": "16px", "font-family": "monospace" }]]], + ["raw-html", function () { return "    "}, { "font-size": "24px"}], + ["buyable", 13]]], + ["row", [["column", [ + ["raw-html", function () { return "4th Dimensional Power (" + format(buyableEffect("ta", 14)) + "x): " + format(player.ta.dimensionPower[3]) + " (+" + format(player.ta.dimensionPowerPerSecond[3]) + "/s)"}, { "color": "white", "font-size": "24px", "font-family": "monospace" }], + ["raw-html", function () { return "Boosts 3rd dimensions by x" + format(player.ta.dimensionPowerEffects[3])}, { "color": "white", "font-size": "16px", "font-family": "monospace" }]]], + ["raw-html", function () { return "    "}, { "font-size": "24px"}], + ["buyable", 14]]], + ["row", [["column", [ + ["raw-html", function () { return "5th Dimensional Power (" + format(buyableEffect("ta", 15)) + "x): " + format(player.ta.dimensionPower[4]) + " (+" + format(player.ta.dimensionPowerPerSecond[4]) + "/s)"}, { "color": "white", "font-size": "24px", "font-family": "monospace" }], + ["raw-html", function () { return "Boosts 4th dimensions by x" + format(player.ta.dimensionPowerEffects[4])}, { "color": "white", "font-size": "16px", "font-family": "monospace" }]]], + ["raw-html", function () { return "    "}, { "font-size": "24px"}], + ["buyable", 15]]], + ["row", [["column", [ + ["raw-html", function () { return "6th Dimensional Power (" + format(buyableEffect("ta", 16)) + "x): " + format(player.ta.dimensionPower[5]) + " (+" + format(player.ta.dimensionPowerPerSecond[5]) + "/s)"}, { "color": "white", "font-size": "24px", "font-family": "monospace" }], + ["raw-html", function () { return "Boosts 5th dimensions by x" + format(player.ta.dimensionPowerEffects[5])}, { "color": "white", "font-size": "16px", "font-family": "monospace" }]]], + ["raw-html", function () { return "    "}, { "font-size": "24px"}], + ["buyable", 16]]], + ["row", [["column", [ + ["raw-html", function () { return "7th Dimensional Power (" + format(buyableEffect("ta", 17)) + "x): " + format(player.ta.dimensionPower[6]) + " (+" + format(player.ta.dimensionPowerPerSecond[6]) + "/s)"}, { "color": "white", "font-size": "24px", "font-family": "monospace" }], + ["raw-html", function () { return "Boosts 6th dimensions by x" + format(player.ta.dimensionPowerEffects[6])}, { "color": "white", "font-size": "16px", "font-family": "monospace" }]]], + ["raw-html", function () { return "    "}, { "font-size": "24px"}], + ["buyable", 17]]], + ["row", [["column", [ + ["raw-html", function () { return "8th Dimensional Power (" + format(buyableEffect("ta", 18)) + "x): " + format(player.ta.dimensionPower[7]) + " (+" + format(player.ta.dimensionPowerPerSecond[7]) + "/s)"}, { "color": "white", "font-size": "24px", "font-family": "monospace" }], + ["raw-html", function () { return "Boosts 7th dimensions by x" + format(player.ta.dimensionPowerEffects[7])}, { "color": "white", "font-size": "16px", "font-family": "monospace" }]]], + ["raw-html", function () { return "    "}, { "font-size": "24px"}], + ["buyable", 18]]], ] - }, "Automation": { buttonStyle() { return { 'color': 'white' } }, @@ -1760,7 +1876,7 @@ ["row", [["upgrade", 17], ["upgrade", 18], ["upgrade", 19], ["upgrade", 21]]], ["blank", "25px"], ["row", [["clickable", 2], ["clickable", 3]]], - ["blank", "25px"], + ["blank", "25px"], ["row", [["buyable", 33], ["buyable", 34], ["buyable", 35]]], ["row", [["buyable", 36], ["buyable", 37]]], ] @@ -1771,38 +1887,34 @@ unlocked() { return hasUpgrade("ta", 17) }, content: [ - ["blank", "25px"], - ["raw-html", function () { return "You have

" + format(player.d.dicePoints) + "

dice points. (highest: " + format(player.ta.highestDicePoints) + ")" }, { "color": "white", "font-size": "20px", "font-family": "monospace" }], - ["raw-html", function () { return "You have

" + format(player.rf.rocketFuel) + "

rocket fuel. (highest: " + format(player.ta.highestRocketFuel) + ")"}, { "color": "white", "font-size": "20px", "font-family": "monospace" }], - ["raw-html", function () { return player.po.hex ? "You have

" + format(player.h.hexPoints[0]) + "

hex 1 points. (highest: " + format(player.ta.highestHex1Points) + ")" :""}, { "color": "white", "font-size": "20px", "font-family": "monospace" }], - ["raw-html", function () { return !player.po.hex ? "You have

" + format(player.h.hexPoints[0]) + "

hex 1 points. (highest: " + format(player.ta.highestHex1Points) + ")" : ""}, { "color": "white", "font-size": "20px", "font-family": "monospace" }], - ["blank", "25px"], - ["raw-html", function () { return "Highest values get updated on infinity resets." }, { "color": "white", "font-size": "16px", "font-family": "monospace" }], - ["raw-html", function () { return "Tip: Use the halter for OTF progression." }, { "color": "white", "font-size": "16px", "font-family": "monospace" }], - ["blank", "25px"], - ["row", [["clickable", 2], ["clickable", 3]]], - ["blank", "25px"], - ["row", [["buyable", 41], ["buyable", 42], ["buyable", 43], ["buyable", 51]]], - ["row", [["buyable", 44], ["buyable", 45], ["buyable", 46], ["buyable", 52]]], - ["row", [["buyable", 47], ["buyable", 48], ["buyable", 49], ["buyable", 53]]], - ["blank", "25px"], - ] - - - + ["blank", "25px"], + ["raw-html", function () { return "You have

" + format(player.d.dicePoints) + "

dice points. (highest: " + format(player.ta.highestDicePoints) + ")" }, { "color": "white", "font-size": "20px", "font-family": "monospace" }], + ["raw-html", function () { return "You have

" + format(player.rf.rocketFuel) + "

rocket fuel. (highest: " + format(player.ta.highestRocketFuel) + ")"}, { "color": "white", "font-size": "20px", "font-family": "monospace" }], + ["raw-html", function () { return player.po.hex ? "You have

" + format(player.h.hexPoints[0]) + "

hex 1 points. (highest: " + format(player.ta.highestHex1Points) + ")" :""}, { "color": "white", "font-size": "20px", "font-family": "monospace" }], + ["raw-html", function () { return !player.po.hex ? "You have

" + format(player.h.hexPoints[0]) + "

hex 1 points. (highest: " + format(player.ta.highestHex1Points) + ")" : ""}, { "color": "white", "font-size": "20px", "font-family": "monospace" }], + ["blank", "25px"], + ["raw-html", function () { return "Highest values get updated on infinity resets." }, { "color": "white", "font-size": "16px", "font-family": "monospace" }], + ["raw-html", function () { return "Tip: Use the halter for OTF progression." }, { "color": "white", "font-size": "16px", "font-family": "monospace" }], + ["blank", "25px"], + ["row", [["clickable", 2], ["clickable", 3]]], + ["blank", "25px"], + ["row", [["buyable", 41], ["buyable", 42], ["buyable", 43], ["buyable", 51]]], + ["row", [["buyable", 44], ["buyable", 45], ["buyable", 46], ["buyable", 52]]], + ["row", [["buyable", 47], ["buyable", 48], ["buyable", 49], ["buyable", 53]]], + ["blank", "25px"], + ] }, "RESET": { buttonStyle() { return { 'color': 'white' } }, unlocked() { return hasUpgrade("ta", 21) }, content: [ - ["blank", "25px"], - ["row", [["clickable", 15]]], + ["blank", "25px"], + ["row", [["clickable", 15]]], ["blank", "25px"], ["row", [["clickable", 16], ["clickable", 17]]], - ] - + ] }, }, auto: { @@ -1812,18 +1924,22 @@ content: [ ["blank", "25px"], - ["raw-html", function () { return player.ta.dimensionAutobuyTexts[player.ta.dimensionAutobuyIndex] }, { "color": "white", "font-size": "16px", "font-family": "monospace" }], - ["blank", "25px"], - ["raw-html", function () { return formatTime(player.ta.dimensionAutobuyTimer[player.ta.dimensionAutobuyIndex]) + "/" + formatTime(player.ta.dimensionAutobuyTimeReq[player.ta.dimensionAutobuyIndex]) }, { "color": "white", "font-size": "24px", "font-family": "monospace" }], ["raw-html", function () { return "

You need at least 1 of the buyable to start autobuying." }, { "color": "white", "font-size": "16px", "font-family": "monospace" }], ["blank", "25px"], ["row", [["clickable", 2], ["clickable", 3]]], - ["blank", "25px"], - ["row", [["clickable", 6], ["clickable", 7], ["clickable", 12], ["clickable", 13]]], ["blank", "25px"], - ["row", [["buyable", 21], ["buyable", 22], ["buyable", 23], ["buyable", 24], ["buyable", 25], ["buyable", 26], ["buyable", 27], ["buyable", 28], ["buyable", 29], ["buyable", 31], ["buyable", 32]]], + ["row", [["buyable", 21], ["clickable", 101], ["clickable", 102], ["raw-html", function () { return "  " + player.ta.dimensionAutobuyTimer[0].toStringWithDecimalPlaces(2) + "s/" + player.ta.dimensionAutobuyTimeReq[0].toStringWithDecimalPlaces(2) + "s" }, { "color": "white", "font-size": "24px", "font-family": "monospace" }]]], + ["row", [["buyable", 22], ["clickable", 103], ["clickable", 104], ["raw-html", function () { return "  " + player.ta.dimensionAutobuyTimer[1].toStringWithDecimalPlaces(2) + "s/" + player.ta.dimensionAutobuyTimeReq[1].toStringWithDecimalPlaces(2) + "s" }, { "color": "white", "font-size": "24px", "font-family": "monospace" }]]], + ["row", [["buyable", 23], ["clickable", 105], ["clickable", 106], ["raw-html", function () { return "  " + player.ta.dimensionAutobuyTimer[2].toStringWithDecimalPlaces(2) + "s/" + player.ta.dimensionAutobuyTimeReq[2].toStringWithDecimalPlaces(2) + "s" }, { "color": "white", "font-size": "24px", "font-family": "monospace" }]]], + ["row", [["buyable", 24], ["clickable", 107], ["clickable", 108], ["raw-html", function () { return "  " + player.ta.dimensionAutobuyTimer[3].toStringWithDecimalPlaces(2) + "s/" + player.ta.dimensionAutobuyTimeReq[3].toStringWithDecimalPlaces(2) + "s" }, { "color": "white", "font-size": "24px", "font-family": "monospace" }]]], + ["row", [["buyable", 25], ["clickable", 109], ["clickable", 110], ["raw-html", function () { return "  " + player.ta.dimensionAutobuyTimer[4].toStringWithDecimalPlaces(2) + "s/" + player.ta.dimensionAutobuyTimeReq[4].toStringWithDecimalPlaces(2) + "s" }, { "color": "white", "font-size": "24px", "font-family": "monospace" }]]], + ["row", [["buyable", 26], ["clickable", 111], ["clickable", 112], ["raw-html", function () { return "  " + player.ta.dimensionAutobuyTimer[5].toStringWithDecimalPlaces(2) + "s/" + player.ta.dimensionAutobuyTimeReq[5].toStringWithDecimalPlaces(2) + "s" }, { "color": "white", "font-size": "24px", "font-family": "monospace" }]]], + ["row", [["buyable", 27], ["clickable", 113], ["clickable", 114], ["raw-html", function () { return "  " + player.ta.dimensionAutobuyTimer[6].toStringWithDecimalPlaces(2) + "s/" + player.ta.dimensionAutobuyTimeReq[6].toStringWithDecimalPlaces(2) + "s" }, { "color": "white", "font-size": "24px", "font-family": "monospace" }]]], + ["row", [["buyable", 28], ["clickable", 115], ["clickable", 116], ["raw-html", function () { return "  " + player.ta.dimensionAutobuyTimer[7].toStringWithDecimalPlaces(2) + "s/" + player.ta.dimensionAutobuyTimeReq[7].toStringWithDecimalPlaces(2) + "s" }, { "color": "white", "font-size": "24px", "font-family": "monospace" }]]], + ["row", [["buyable", 29], ["clickable", 117], ["clickable", 118], ["raw-html", function () { return "  " + player.ta.dimensionAutobuyTimer[8].toStringWithDecimalPlaces(2) + "s/" + player.ta.dimensionAutobuyTimeReq[8].toStringWithDecimalPlaces(2) + "s" }, { "color": "white", "font-size": "24px", "font-family": "monospace" }]]], + ["row", [["buyable", 31], ["clickable", 119], ["clickable", 120], ["raw-html", function () { return "  " + player.ta.dimensionAutobuyTimer[9].toStringWithDecimalPlaces(2) + "s/" + player.ta.dimensionAutobuyTimeReq[9].toStringWithDecimalPlaces(2) + "s" }, { "color": "white", "font-size": "24px", "font-family": "monospace" }]]], + ["row", [["buyable", 32], ["clickable", 121], ["clickable", 122], ["raw-html", function () { return "  " + player.ta.dimensionAutobuyTimer[10].toStringWithDecimalPlaces(2) + "s/" + player.ta.dimensionAutobuyTimeReq[10].toStringWithDecimalPlaces(2) + "s" }, { "color": "white", "font-size": "24px", "font-family": "monospace" }]]], ] - }, "Control Panel": { buttonStyle() { return { 'color': 'white' } }, @@ -1831,38 +1947,40 @@ content: [ ["blank", "25px"], - ["raw-html", function () { return "

Dimboost limit: " + formatWhole(player.ta.dimboostLimit) + "." }], - ["text-input", "dimboostLimitInput", { - color: "var(--color)", - width: "400px", - "font-family": "Calibri", - "text-align": "left", - "font-size": "32px", - border: "2px solid #ffffff17", - background: "var(--background)", - }], - ["blank", "25px"], - ["raw-html", function () { return "

Galaxy limit: " + formatWhole(player.ta.galaxyLimit) + "." }], - ["text-input", "galaxyLimitInput", { - color: "var(--color)", - width: "400px", - "font-family": "Calibri", - "text-align": "left", - "font-size": "32px", - border: "2px solid #ffffff17", - background: "var(--background)", - }], - ] - - }, - }, - }, + ["raw-html", function () { return "

Dimboost Autobuy limit: " + formatWhole(player.ta.dimboostLimit) + "." }], + ["text-input", "dimboostLimitInput", { + color: "var(--color)", + width: "400px", + "font-family": "Calibri", + "text-align": "left", + "font-size": "32px", + border: "2px solid #ffffff17", + background: "var(--background)", + }], + ["blank", "25px"], + ["raw-html", function () { return "

Only Dimboost to unlock new Dimensions until Galaxy Autobuy Limit" }], + ["row", [["clickable", 18], ["clickable", 19]]], + ["blank", "25px"], + ["raw-html", function () { return "

Galaxy Autobuy limit: " + formatWhole(player.ta.galaxyLimit) + "." }], + ["text-input", "galaxyLimitInput", { + color: "var(--color)", + width: "400px", + "font-family": "Calibri", + "text-align": "left", + "font-size": "32px", + border: "2px solid #ffffff17", + background: "var(--background)", + }], + ] + }, + }, + }, tabFormat: [ ["raw-html", function () { return "You have

" + format(player.ad.antimatter) + "

antimatter." }, { "color": "white", "font-size": "16px", "font-family": "monospace" }], - ["raw-html", function () { return "You are gaining

" + format(player.ad.antimatterPerSecond) + "

antimatter per second." }, { "color": "white", "font-size": "12px", "font-family": "monospace" }], - ["raw-html", function () { return "You have

" + format(player.ta.negativeInfinityPoints) + "

negative infinity points." }, { "color": "white", "font-size": "24px", "font-family": "monospace" }], - ["raw-html", function () { return "You will gain

" + format(player.ta.negativeInfinityPointsToGet) + "

on reset." }, { "color": "white", "font-size": "16px", "font-family": "monospace" }], + ["raw-html", function () { return "You are gaining

" + format(player.ad.antimatterPerSecond) + "

antimatter per second." }, { "color": "white", "font-size": "12px", "font-family": "monospace" }], + ["raw-html", function () { return "You have

" + format(player.ta.negativeInfinityPoints) + "

negative infinity points." }, { "color": "white", "font-size": "24px", "font-family": "monospace" }], + ["raw-html", function () { return "You will gain

" + format(player.ta.negativeInfinityPointsToGet) + "

on reset." }, { "color": "white", "font-size": "16px", "font-family": "monospace" }], ["row", [["clickable", 1]]], ["microtabs", "stuff", { 'border-width': '0px' }], ], @@ -1912,17 +2030,21 @@ addLayer("revc", { unlocked() { return true }, onClick() { player.ta.negativeInfinityPoints = player.ta.negativeInfinityPoints.add(player.ta.negativeInfinityPointsToGet) - player.tab = "in" + if (options.newMenu) { + player.tab = "ip" + } else { + player.tab = "in" + } player.revc.minipause = new Decimal(3) }, style: { width: '300px', "min-height": '120px' }, }, - + }, reverseCrunch(){ player.ta.reachedNegativeInfinity = false player.ta.negativeInfinityPause = new Decimal(5) - }, + }, bars: { }, upgrades: { diff --git a/js/tavDomain.js b/js/tavDomain.js index 604e9c1..ffed27c 100644 --- a/js/tavDomain.js +++ b/js/tavDomain.js @@ -63,7 +63,7 @@ 1: { title() { return "

Return" }, canClick() { return true }, - unlocked() { return true }, + unlocked() { return options.newMenu == false }, onClick() { player.tab = "in" }, @@ -129,8 +129,12 @@ unlocked() { return true }, onClick() { player.in.unlockedBreak = true - player.tab = 'po' - player.subtabs["po"]['stuff'] = 'Otherworldly Features' + if (options.newMenu) { + player.tab = 'otherfeat' + } else { + player.tab = 'po' + player.subtabs["po"]['stuff'] = 'Otherworldly Features' + } }, style: { width: '500px', "min-height": '200px',}, }, @@ -601,16 +605,16 @@ unlocked() { return true }, onEnter() { player.tad.domainResetPause = new Decimal(5) - player.in.infinityPause = new Decimal(16) + layers.in.bigCrunch(); }, onExit() { player.tad.domainResetPause = new Decimal(5) - player.in.infinityPause = new Decimal(16) player.po.hex = false player.po.dice = false player.po.rocketFuel = false player.po.featureSlots = new Decimal(0) + layers.in.bigCrunch(); }, style: { width: '350px', height: '275px', } @@ -621,7 +625,7 @@ player.ta.negativeInfinityPause = new Decimal(5) player.in.infinities = new Decimal(0) player.bi.brokenInfinities = new Decimal(0) - if (!hasMilestone("ip", 25) && player.in.unlockedBreak) + if (!hasMilestone("ip", 26) && player.in.unlockedBreak) { for (let i = 0; i < player.ip.milestones.length; i++) { if (+player.ip.milestones[i] < 25) { @@ -723,6 +727,7 @@ ["raw-html", function () { return player.tad.currentConversion.eq(0) ? "You are producing shattered infinities." : ""}, { "color": "black", "font-size": "20px", "font-family": "monospace" }], ["raw-html", function () { return player.tad.currentConversion.eq(1) ? "You are producing disfigured infinities." : ""}, { "color": "black", "font-size": "20px", "font-family": "monospace" }], ["raw-html", function () { return player.tad.currentConversion.eq(2) ? "You are producing corrupted infinities." : ""}, { "color": "black", "font-size": "20px", "font-family": "monospace" }], + ["raw-html", function () { return player.tad.currentConversion.eq(-1) ? "You are not producing an alternate broken infinity type." : ""}, { "color": "black", "font-size": "20px", "font-family": "monospace" }], ["blank", "25px"], ["raw-html", function () { return "You have

" + formatWhole(player.bi.brokenInfinities) + "

broken infinities." }, { "color": "black", "font-size": "20px", "font-family": "monospace" }], ["raw-html", function () { return "You have

" + formatWhole(player.tad.disfiguredInfinities) + "

disfigured infinities. (REQUIRES ROCKET FUEL)" }, { "color": "black", "font-size": "24px", "font-family": "monospace" }], @@ -741,6 +746,7 @@ ["raw-html", function () { return player.tad.currentConversion.eq(0) ? "You are producing shattered infinities." : ""}, { "color": "black", "font-size": "20px", "font-family": "monospace" }], ["raw-html", function () { return player.tad.currentConversion.eq(1) ? "You are producing disfigured infinities." : ""}, { "color": "black", "font-size": "20px", "font-family": "monospace" }], ["raw-html", function () { return player.tad.currentConversion.eq(2) ? "You are producing corrupted infinities." : ""}, { "color": "black", "font-size": "20px", "font-family": "monospace" }], + ["raw-html", function () { return player.tad.currentConversion.eq(-1) ? "You are not producing an alternate broken infinity type." : ""}, { "color": "black", "font-size": "20px", "font-family": "monospace" }], ["blank", "25px"], ["raw-html", function () { return "You have

" + formatWhole(player.bi.brokenInfinities) + "

broken infinities." }, { "color": "black", "font-size": "20px", "font-family": "monospace" }], ["raw-html", function () { return "You have

" + formatWhole(player.tad.corruptedInfinities) + "

corrupted infinities. (REQUIRES DICE)" }, { "color": "black", "font-size": "24px", "font-family": "monospace" }], diff --git a/js/technical/displays.js b/js/technical/displays.js index 28c8cff..fbf8c67 100644 --- a/js/technical/displays.js +++ b/js/technical/displays.js @@ -4,11 +4,11 @@ function prestigeButtonText(layer) { if (tmp[layer].type == "normal") return `${player[layer].points.lt(1e3) ? (tmp[layer].resetDescription !== undefined ? tmp[layer].resetDescription : "Reset for ") : ""}+${formatWhole(tmp[layer].resetGain)} ${tmp[layer].resource} ${tmp[layer].resetGain.lt(100) && player[layer].points.lt(1e3) ? `

Next at ${(tmp[layer].roundUpCost ? formatWhole(tmp[layer].nextAt) : format(tmp[layer].nextAt))} ${tmp[layer].baseResource}` : ""}` if (tmp[layer].type == "static") - return `${tmp[layer].resetDescription !== undefined ? tmp[layer].resetDescription : "Reset for "}+${formatWhole(tmp[layer].resetGain)} ${tmp[layer].resource}

${player[layer].points.lt(30) ? (tmp[layer].baseAmount.gte(tmp[layer].nextAt) && (tmp[layer].canBuyMax !== undefined) && tmp[layer].canBuyMax ? "Next:" : "Req:") : ""} ${formatWhole(tmp[layer].baseAmount)} / ${(tmp[layer].roundUpCost ? formatWhole(tmp[layer].nextAtDisp) : format(tmp[layer].nextAtDisp))} ${tmp[layer].baseResource} + return `${tmp[layer].resetDescription !== undefined ? tmp[layer].resetDescription : "Reset for "}+${formatWhole(tmp[layer].resetGain)} ${tmp[layer].resource}

${player[layer].points.lt(30) ? (tmp[layer].baseAmount.gte(tmp[layer].nextAt) && (tmp[layer].canBuyMax !== undefined) && tmp[layer].canBuyMax ? "Next:" : "Req:") : ""} ${formatWhole(tmp[layer].baseAmount)} / ${(tmp[layer].roundUpCost ? formatWhole(tmp[layer].nextAtDisp) : format(tmp[layer].nextAtDisp))} ${tmp[layer].baseResource} ` if (tmp[layer].type == "none") return "" - + return "You need prestige button text" } @@ -24,6 +24,233 @@ function constructNodeStyle(layer){ return style } +function constructUniButtonStyle(layer){ + let style = [] + let uni = 0 + switch (layer) { + case 'i': + style.push({ + background: "linear-gradient(315deg, #bababa 0%, #efefef 100%)", + "background-origin": "border-box", + "border-color": "#555555"}); + uni = 1; + break; + case 'in': + style.push({ + background: "linear-gradient(140deg, #10e96b 0%, #0f871c 100%)", + "background-origin": "border-box", + "border-color": "#119B35"}); + uni = 2; + break; + case 's': + style.push({ + background: "linear-gradient(140deg, red 0%, black 125%)", + "background-origin": "border-box", + "border-color": "#800000"}); + uni = 3; + break; + case 'cp': + style.push({ + background: "linear-gradient(45deg, #064461 0%, #4a7d94 100%)", + "background-origin": "border-box", + "border-color": "#013851"}); + uni = 1.5; + break; + case 'otherfeat': + style.push({ + background: "linear-gradient(45deg, #8a00a9, #0061ff)", + "background-origin": "border-box", + "border-color": "purple"}); + if (player.tab == layer) { + style.push({"outline": "2px solid rgb(255,255,255,0.75)"}) + }; + break; + case 'halter': + style.push({ + "color": "white", + "background-color": "black", + "border-color": "purple"}); + if (player.tab == layer) { + style.push({"outline": "2px solid rgb(255,255,255,0.75)"}) + }; + break; + case 'cb': + style.push({'background-color': tmp[layer].color}); + uni = 0.5; + break; + default: + style.push({'background-color': tmp[layer].color}); + } + if (player.universe == uni) { + style.push({"outline": "2px solid rgb(255,255,255,0.75)"}) + } + if(tmp[layer].notify && player[layer].unlocked) + style.push({'box-shadow': 'var(--hqProperty2a), 0 0 20px ' + tmp[layer].trueGlowColor}) + return style +} + +function constructMenuButtonStyle(layer){ + let style = [] + switch (layer) { + case 'h': + style.push({ + "color": "white", + "background-color": "black", + "border-color": "#0061ff"}); + break; + case 'pe': + style.push({ + background: "linear-gradient(0deg, #770022 0%, #8D71B4 100%)", + "background-origin": "border-box", + "border-color": "#770022"}); + break; + case 'rf': + style.push({ + background: "linear-gradient(to right, hsl(210, 60%, 40%), hsl(210, 40%, 60%))", + "background-origin": "border-box", + "border-color": "#119B35"}); + break; + case 'de': + style.push({ + background: "linear-gradient(0deg, #4e386e 0%, #8D71B4 100%)", + "background-origin": "border-box", + "border-color": "#3A2558"}); + break; + case 'd': + style.push({ + background: "linear-gradient(0deg, rgba(255,255,255,1) 0%, rgba(83,83,83,1) 100%)", + "background-origin": "border-box", + "border-color": "#0061ff"}); + break; + case 'rm': + style.push({ + "background-image": "linear-gradient(180deg, #770000, #775400, #747700, #147700, #00772A, #007769, #004677, #000877, #330077, #710077)", + "background-origin": "border-box", + "color": "white", + "border-color": "#0061ff"}); + break; + case 'ad': + style.push({ + background: "linear-gradient(140deg, rgba(0,255,202,1) 0%, rgba(30,181,22,1) 100%)", + "background-origin": "border-box", + "border-color": "#119B35"}); + break; + case 'ip': + style.push({ + background: "linear-gradient(315deg, rgba(211,161,101,1) 0%, #FFBF00 100%)", + "background-origin": "border-box", + "border-color": "#7c5423"}); + break; + case 'id': + style.push({ + background: "linear-gradient(315deg, rgba(255, 129, 38,1) 0%, #f5ea14 100%)", + "background-origin": "border-box", + "border-color": "#b87400"}); + break; + case 'tad': + style.push({ + background: "linear-gradient(150deg, #b2d8d8, 50%, #094242 100%)", + "background-origin": "border-box", + "border-color": "#b2d8d8", + "color": "#b2d8d8"}); + break; + case 'ta': + style.push({ + background: "linear-gradient(150deg, #008080, 0%, #b2d8d8 100%)", + "background-origin": "border-box", + "border-color": "#31aeb0", + "color": "#008080"}); + break; + case 'bi': + style.push({ + background: "linear-gradient(150deg, #889110, 0%, #73A112 100%)", + "background-origin": "border-box", + "border-color": "#2B7F0A"}); + break; + case 'om': + style.push({ + background: "linear-gradient(45deg, #8a00a9, #0061ff)", + "background-origin": "border-box", + "border-color": "purple"}); + break; + case 'ca': + style.push({ + background: "linear-gradient(45deg, #0a82b9 0%, #7dd3f9 100%)", + "background-origin": "border-box", + "border-color": "#0f354c"}); + break; + default: + style.push({'background-color': tmp[layer].color}); + } + if (player.tab == layer) { + if (layer != "r" && layer != "tad") { + style.push({"outline": "2px solid rgb(255,255,255,0.75)"}) + } else { + style.push({"outline": "2px solid rgb(255,255,255,1)"}) + } + } + if(tmp[layer].notify && player[layer].unlocked) + style.push({'box-shadow': 'var(--hqProperty2a), 0 0 20px ' + tmp[layer].trueGlowColor}) + return style +} + +function constructCbButtonStyle(layer) { + let style = [] + switch (layer) { + case 'ps': + style.push({"background-color": "#4e7cff"}); + break; + case 'ev0': + style.push({ + background: "linear-gradient(90deg, #e7c97c, #fad25a)", + "background-origin": "border-box", + "border-color": "#655421", + "color": "#655421"}); + break; + case 'ev1': + style.push({ + background: "linear-gradient(140deg, #b00000 0%, #bda500 50%, #b00000 100%)", + "background-origin": "border-box", + "border-color": "#750000"}); + break; + case 'ev2': + style.push({ + background: "#106ccc", + "background-origin": "border-box", + "border-color": "black"}); + break; + case 'ev4': + style.push({ + background: "linear-gradient(-90deg, #f38004, #fc3404)", + "background-origin": "border-box", + "border-color": "#DC2D03"}); + break; + case 'ev8': + style.push({ + background: "linear-gradient(90deg, #d487fd, #4b79ff)", + "background-origin": "border-box", + "border-color": "#1500bf", + "color": "#1500bf"}); + break; + case 'ep0': + style.push({"background-color": "#9176af"}); + break; + case 'ep1': + style.push({"background-color": "#689b3a"}); + break; + case 'ep2': + style.push({"background-color": "#b9966d"}); + break; + default: + style.push({'background-color': tmp[layer].color}); + } + if (player.tab == layer) { + style.push({"outline": "2px solid rgb(255,255,255,1)"}) + } + if(tmp[layer].notify && player[layer].unlocked) + style.push({'box-shadow': 'var(--hqProperty2a), 0 0 20px ' + tmp[layer].trueGlowColor}) + return style +} function challengeStyle(layer, id) { if (player[layer].activeChallenge == id && canCompleteChallenge(layer, id)) return "canComplete" @@ -39,9 +266,9 @@ function challengeButtonText(layer, id) { function achievementStyle(layer, id){ ach = tmp[layer].achievements[id] let style = [] - if (ach.image){ + if (ach.image){ style.push({'background-image': 'url("' + ach.image + '")'}) - } + } if (!ach.unlocked) style.push({'visibility': 'hidden'}) style.push(ach.style) return style @@ -176,7 +403,7 @@ function updateTabFormat(layer) { } // Check for embedded layer - if (isPlainObject(tmp[layer].tabFormat) && tmp[layer].tabFormat[tab].embedLayer !== undefined) { + if (isPlainObject(tmp[layer].tabFormat) && tmp[layer].tabFormat[tab].embedLayer !== undefined) { updateTabFormat(tmp[layer].tabFormat[tab].embedLayer) } @@ -192,4 +419,4 @@ function updateTabFormat(layer) { Vue.set(temp[layer].microtabs[family][tab], 'content', constructTabFormat(layer, tab, family)) } } -} \ No newline at end of file +} diff --git a/js/technical/systemComponents.js b/js/technical/systemComponents.js index 1598f8b..16ad14a 100644 --- a/js/technical/systemComponents.js +++ b/js/technical/systemComponents.js @@ -64,7 +64,8 @@ var systemComponents = { 'layer-tab': { props: ['layer', 'back', 'spacing', 'embedded'], - template: `
+ template: `
@@ -100,7 +101,7 @@ var systemComponents = { }, 'overlay-head': { - template: ` + template: ` ` }, @@ -112,7 +113,7 @@ var systemComponents = {

{{VERSION.withName}}


- Made by {{modInfo.author}} + Made by {{modInfo.author}}

The Modding Tree {{TMT_VERSION.tmtNum}} by Acamaeda @@ -163,14 +164,14 @@ var systemComponents = { - + -\t\t\t +\t\t\t ` }, @@ -198,7 +199,7 @@ var systemComponents = { 'particle': { props: ['data', 'index'], - template: `
@@ -227,4 +228,4 @@ var systemComponents = {
- */ \ No newline at end of file + */ diff --git a/js/template.js b/js/template.js index 955931d..2447fb8 100644 --- a/js/template.js +++ b/js/template.js @@ -21,7 +21,7 @@ 1: { title() { return "

Return" }, canClick() { return true }, - unlocked() { return true }, + unlocked() { return options.newMenu == false }, onClick() { player.tab = "i" }, @@ -52,7 +52,7 @@ }, }, - }, + }, tabFormat: [ ["raw-html", function () { return "You have

" + format(player.points) + "

celestial points." }, { "color": "white", "font-size": "24px", "font-family": "monospace" }], @@ -61,4 +61,4 @@ ["microtabs", "stuff", { 'border-width': '0px' }], ], layerShown() { return player.startedGame == true } -}) \ No newline at end of file +}) diff --git a/js/trees.js b/js/trees.js index 37b31bf..c77db11 100644 --- a/js/trees.js +++ b/js/trees.js @@ -59,9 +59,11 @@ if (inChallenge("ip", 13) || player.po.hex) player.t.treesToGet = player.t.treesToGet.mul(buyableEffect("h", 13)) if (player.de.antidebuffIndex.eq(3)) player.t.treesToGet = player.t.treesToGet.mul(player.de.antidebuffEffect) if (inChallenge("tad", 11)) player.t.treesToGet = player.t.treesToGet.pow(0.5) + if (player.pol.pollinatorsIndex == 3) player.t.treesToGet = player.t.treesToGet.mul(player.pol.pollinatorsEffect[4]) player.t.treesToGet = player.t.treesToGet.mul(buyableEffect("gh", 32)) player.t.treesToGet = player.t.treesToGet.mul(player.r.timeCubeEffects[1]) player.t.treesToGet = player.t.treesToGet.pow(buyableEffect("rm", 24)) + player.t.treesToGet = player.t.treesToGet.div(player.po.halterEffects[4]) player.t.leavesPerSecond = buyableEffect("t", 11) player.t.leavesPerSecond = player.t.leavesPerSecond.mul(buyableEffect("t", 12)) @@ -81,7 +83,9 @@ if (inChallenge("ip", 13)) player.t.leavesPerSecond = player.t.leavesPerSecond.pow(0.75) if (inChallenge("ip", 13) || player.po.hex) player.t.leavesPerSecond = player.t.leavesPerSecond.mul(buyableEffect("h", 13)) if (inChallenge("tad", 11)) player.t.leavesPerSecond = player.t.leavesPerSecond.pow(0.5) + if (player.pol.pollinatorsIndex == 3) player.t.leavesPerSecond = player.t.leavesPerSecond.mul(player.pol.pollinatorsEffect[5]) player.t.leavesPerSecond = player.t.leavesPerSecond.mul(buyableEffect("gh", 32)) + player.t.leavesPerSecond = player.t.leavesPerSecond.div(player.po.halterEffects[3]) player.t.treeEffect = player.t.trees.div(6).pow(1.1).add(1) @@ -109,7 +113,7 @@ 1: { title() { return "

Return" }, canClick() { return true }, - unlocked() { return true }, + unlocked() { return options.newMenu == false }, onClick() { player.tab = "i" }, @@ -157,6 +161,7 @@ 11: { costBase() { return new Decimal(100000) }, costGrowth() { return new Decimal(1.25) }, + purchaseLimit() { return new Decimal(5000) }, currency() { return player.p.prestigePoints}, pay(amt) { player.p.prestigePoints = this.currency().sub(amt) }, effect(x) { return new getBuyableAmount(this.layer, this.id).pow(1.3) }, @@ -164,7 +169,7 @@ cost(x) { return this.costGrowth().pow(x || getBuyableAmount(this.layer, this.id)).mul(this.costBase()) }, canAfford() { return this.currency().gte(this.cost()) }, title() { - return format(getBuyableAmount(this.layer, this.id), 0) + "
Leaf Producer" + return format(getBuyableAmount(this.layer, this.id), 0) + "/5,000
Leaf Producer" }, display() { return "which are producing " + format(tmp[this.layer].buyables[this.id].effect) + " leaves per second.\n\ @@ -178,6 +183,7 @@ setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(1)) } else { let max = Decimal.affordGeometricSeries(this.currency(), this.costBase(), this.costGrowth(), getBuyableAmount(this.layer, this.id)) + if (max.gt(this.purchaseLimit().sub(getBuyableAmount(this.layer, this.id)))) { max = this.purchaseLimit().sub(getBuyableAmount(this.layer, this.id)) } let cost = Decimal.sumGeometricSeries(max, this.costBase(), this.costGrowth(), getBuyableAmount(this.layer, this.id)) if (!hasMilestone("r", 12)) this.pay(cost) @@ -189,6 +195,7 @@ 12: { costBase() { return new Decimal(4) }, costGrowth() { return new Decimal(1.25) }, + purchaseLimit() { return new Decimal(1000) }, currency() { return player.t.trees}, pay(amt) { player.t.trees = this.currency().sub(amt) }, effect(x) { return new getBuyableAmount(this.layer, this.id).mul(0.25).add(1) }, @@ -196,7 +203,7 @@ cost(x) { return this.costGrowth().pow(x || getBuyableAmount(this.layer, this.id)).mul(this.costBase()) }, canAfford() { return this.currency().gte(this.cost()) }, title() { - return format(getBuyableAmount(this.layer, this.id), 0) + "
Leaf Multiplier" + return format(getBuyableAmount(this.layer, this.id), 0) + "/1,000
Leaf Multiplier" }, display() { return "which are boosting leaf gain by x" + format(tmp[this.layer].buyables[this.id].effect) + ".\n\ @@ -210,6 +217,7 @@ setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(1)) } else { let max = Decimal.affordGeometricSeries(this.currency(), this.costBase(), this.costGrowth(), getBuyableAmount(this.layer, this.id)) + if (max.gt(this.purchaseLimit().sub(getBuyableAmount(this.layer, this.id)))) { max = this.purchaseLimit().sub(getBuyableAmount(this.layer, this.id)) } let cost = Decimal.sumGeometricSeries(max, this.costBase(), this.costGrowth(), getBuyableAmount(this.layer, this.id)) if (!hasMilestone("r", 12)) this.pay(cost) @@ -221,6 +229,7 @@ 13: { costBase() { return new Decimal(250000) }, costGrowth() { return new Decimal(1.3) }, + purchaseLimit() { return new Decimal(5000) }, currency() { return player.p.prestigePoints}, pay(amt) { player.p.prestigePoints = this.currency().sub(amt) }, effect(x) { return new getBuyableAmount(this.layer, this.id).mul(0.1).add(1) }, @@ -228,7 +237,7 @@ cost(x) { return this.costGrowth().pow(x || getBuyableAmount(this.layer, this.id)).mul(this.costBase()) }, canAfford() { return this.currency().gte(this.cost()) }, title() { - return format(getBuyableAmount(this.layer, this.id), 0) + "
Softcap Extender" + return format(getBuyableAmount(this.layer, this.id), 0) + "/5,000
Softcap Extender" }, display() { return "which are extending the tree softcap by x" + format(tmp[this.layer].buyables[this.id].effect) + ".\n\ @@ -242,6 +251,7 @@ setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(1)) } else { let max = Decimal.affordGeometricSeries(this.currency(), this.costBase(), this.costGrowth(), getBuyableAmount(this.layer, this.id)) + if (max.gt(this.purchaseLimit().sub(getBuyableAmount(this.layer, this.id)))) { max = this.purchaseLimit().sub(getBuyableAmount(this.layer, this.id)) } let cost = Decimal.sumGeometricSeries(max, this.costBase(), this.costGrowth(), getBuyableAmount(this.layer, this.id)) if (!hasMilestone("r", 12)) this.pay(cost) @@ -253,6 +263,7 @@ 14: { costBase() { return new Decimal(12) }, costGrowth() { return new Decimal(1.3) }, + purchaseLimit() { return new Decimal(1000) }, currency() { return player.t.trees}, pay(amt) { player.t.trees = this.currency().sub(amt) }, effect(x) { return new getBuyableAmount(this.layer, this.id).mul(0.2).add(1) }, @@ -260,7 +271,7 @@ cost(x) { return this.costGrowth().pow(x || getBuyableAmount(this.layer, this.id)).mul(this.costBase()) }, canAfford() { return this.currency().gte(this.cost()) }, title() { - return format(getBuyableAmount(this.layer, this.id), 0) + "
Requirement Divider" + return format(getBuyableAmount(this.layer, this.id), 0) + "/1,000
Requirement Divider" }, display() { return "which are dividing the tree requirement by /" + format(tmp[this.layer].buyables[this.id].effect) + ".\n\ @@ -274,6 +285,7 @@ setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(1)) } else { let max = Decimal.affordGeometricSeries(this.currency(), this.costBase(), this.costGrowth(), getBuyableAmount(this.layer, this.id)) + if (max.gt(this.purchaseLimit().sub(getBuyableAmount(this.layer, this.id)))) { max = this.purchaseLimit().sub(getBuyableAmount(this.layer, this.id)) } let cost = Decimal.sumGeometricSeries(max, this.costBase(), this.costGrowth(), getBuyableAmount(this.layer, this.id)) if (!hasMilestone("r", 12)) this.pay(cost) @@ -285,6 +297,7 @@ 15: { costBase() { return new Decimal(30) }, costGrowth() { return new Decimal(1.2) }, + purchaseLimit() { return new Decimal(1000) }, currency() { return player.t.trees}, pay(amt) { player.t.trees = this.currency().sub(amt) }, effect(x) { return new getBuyableAmount(this.layer, this.id).pow(1.35).add(1) }, @@ -292,7 +305,7 @@ cost(x) { return this.costGrowth().pow(x || getBuyableAmount(this.layer, this.id)).mul(this.costBase()) }, canAfford() { return this.currency().gte(this.cost()) }, title() { - return format(getBuyableAmount(this.layer, this.id), 0) + "
Celestial Point Booster" + return format(getBuyableAmount(this.layer, this.id), 0) + "/1,000
Celestial Point Booster" }, display() { return "which are boosting celestial point gain by x" + format(tmp[this.layer].buyables[this.id].effect) + ".\n\ @@ -306,6 +319,7 @@ setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(1)) } else { let max = Decimal.affordGeometricSeries(this.currency(), this.costBase(), this.costGrowth(), getBuyableAmount(this.layer, this.id)) + if (max.gt(this.purchaseLimit().sub(getBuyableAmount(this.layer, this.id)))) { max = this.purchaseLimit().sub(getBuyableAmount(this.layer, this.id)) } let cost = Decimal.sumGeometricSeries(max, this.costBase(), this.costGrowth(), getBuyableAmount(this.layer, this.id)) if (!hasMilestone("r", 12)) this.pay(cost) @@ -317,6 +331,7 @@ 16: { costBase() { return new Decimal(40) }, costGrowth() { return new Decimal(1.22) }, + purchaseLimit() { return new Decimal(1000) }, currency() { return player.t.trees}, pay(amt) { player.t.trees = this.currency().sub(amt) }, effect(x) { return new getBuyableAmount(this.layer, this.id).mul(0.5).add(1).pow(1.1) }, @@ -324,7 +339,7 @@ cost(x) { return this.costGrowth().pow(x || getBuyableAmount(this.layer, this.id)).mul(this.costBase()) }, canAfford() { return this.currency().gte(this.cost()) }, title() { - return format(getBuyableAmount(this.layer, this.id), 0) + "
Factor Power Booster" + return format(getBuyableAmount(this.layer, this.id), 0) + "/1,000
Factor Power Booster" }, display() { return "which are boosting factor power gain by x" + format(tmp[this.layer].buyables[this.id].effect) + ".\n\ @@ -338,6 +353,7 @@ setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(1)) } else { let max = Decimal.affordGeometricSeries(this.currency(), this.costBase(), this.costGrowth(), getBuyableAmount(this.layer, this.id)) + if (max.gt(this.purchaseLimit().sub(getBuyableAmount(this.layer, this.id)))) { max = this.purchaseLimit().sub(getBuyableAmount(this.layer, this.id)) } let cost = Decimal.sumGeometricSeries(max, this.costBase(), this.costGrowth(), getBuyableAmount(this.layer, this.id)) if (!hasMilestone("r", 12)) this.pay(cost) @@ -349,6 +365,7 @@ 17: { costBase() { return new Decimal(200) }, costGrowth() { return new Decimal(1.3) }, + purchaseLimit() { return new Decimal(1000) }, currency() { return player.t.trees}, pay(amt) { player.t.trees = this.currency().sub(amt) }, effect(x) { return new getBuyableAmount(this.layer, this.id).mul(0.1).add(1) }, @@ -356,7 +373,7 @@ cost(x) { return this.costGrowth().pow(x || getBuyableAmount(this.layer, this.id)).mul(this.costBase()) }, canAfford() { return this.currency().gte(this.cost()) }, title() { - return format(getBuyableAmount(this.layer, this.id), 0) + "
Grass Value Booster" + return format(getBuyableAmount(this.layer, this.id), 0) + "/1,000
Grass Value Booster" }, display() { return "which are boosting grass value by x" + format(tmp[this.layer].buyables[this.id].effect) + ".\n\ @@ -370,6 +387,7 @@ setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(1)) } else { let max = Decimal.affordGeometricSeries(this.currency(), this.costBase(), this.costGrowth(), getBuyableAmount(this.layer, this.id)) + if (max.gt(this.purchaseLimit().sub(getBuyableAmount(this.layer, this.id)))) { max = this.purchaseLimit().sub(getBuyableAmount(this.layer, this.id)) } let cost = Decimal.sumGeometricSeries(max, this.costBase(), this.costGrowth(), getBuyableAmount(this.layer, this.id)) if (!hasMilestone("r", 12)) this.pay(cost) @@ -381,6 +399,7 @@ 18: { costBase() { return new Decimal(400) }, costGrowth() { return new Decimal(1.4) }, + purchaseLimit() { return new Decimal(1000) }, currency() { return player.t.trees}, pay(amt) { player.t.trees = this.currency().sub(amt) }, effect(x) { return new getBuyableAmount(this.layer, this.id).mul(0.05).add(1) }, @@ -388,7 +407,7 @@ cost(x) { return this.costGrowth().pow(x || getBuyableAmount(this.layer, this.id)).mul(this.costBase()) }, canAfford() { return this.currency().gte(this.cost()) }, title() { - return format(getBuyableAmount(this.layer, this.id), 0) + "
Golden Grass Value Booster" + return format(getBuyableAmount(this.layer, this.id), 0) + "/1,000
Golden Grass Value Booster" }, display() { return "which are boosting golden grass value by x" + format(tmp[this.layer].buyables[this.id].effect) + ".\n\ @@ -402,6 +421,7 @@ setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(1)) } else { let max = Decimal.affordGeometricSeries(this.currency(), this.costBase(), this.costGrowth(), getBuyableAmount(this.layer, this.id)) + if (max.gt(this.purchaseLimit().sub(getBuyableAmount(this.layer, this.id)))) { max = this.purchaseLimit().sub(getBuyableAmount(this.layer, this.id)) } let cost = Decimal.sumGeometricSeries(max, this.costBase(), this.costGrowth(), getBuyableAmount(this.layer, this.id)) if (!hasMilestone("r", 12)) this.pay(cost) diff --git a/js/utils/NumberFormating.js b/js/utils/NumberFormating.js index d152332..fdf6139 100644 --- a/js/utils/NumberFormating.js +++ b/js/utils/NumberFormating.js @@ -107,4 +107,4 @@ function invertOOM(x) { x = new Decimal(10).pow(e).times(m) return x -} \ No newline at end of file +} diff --git a/js/utils/options.js b/js/utils/options.js index d5bf374..66e236e 100644 --- a/js/utils/options.js +++ b/js/utils/options.js @@ -18,6 +18,8 @@ function getStartOptions() { musicVolume: 3, toggleHotkey: true, toggleParticle: true, + menuShown: true, + newMenu: true, } } function updateMusicVolume() { diff --git a/js/utils/save.js b/js/utils/save.js index a6f3a27..61db4fd 100644 --- a/js/utils/save.js +++ b/js/utils/save.js @@ -197,11 +197,8 @@ function load() { loadOptions(); } - if (options.offlineProd) { - if (player.offTime === undefined) - player.offTime = { remain: 0 }; - player.offTime.remain += (Date.now() - player.time) / 1000; - } + player.cb.time = player.cb.time.add((Date.now() - player.time) / 1000); + player.time = Date.now(); versionCheck(); changeTheme(); @@ -218,9 +215,9 @@ function load() { function loadOptions() { let get2 = localStorage.getItem(modInfo.id+"_options"); - if (get2) + if (get2) options = Object.assign(getStartOptions(), JSON.parse(decodeURIComponent(escape(atob(get2))))); - else + else options = getStartOptions() if (themes.indexOf(options.theme) < 0) theme = "default" fixData(options, getStartOptions()) @@ -287,6 +284,36 @@ function importSave(imported = undefined, forced = false) { return; } } + +function exportFile() { + let data = btoa(JSON.stringify(player)); + let file = new Blob([data], {type: "text/plain"}); + if (window.navigator.msSaveOrOpenBlob) // IE10+ + window.navigator.msSaveOrOpenBlob(file, "CI_Save"); + else { // Others + var a = document.createElement("a"), + url = URL.createObjectURL(file); + a.href = url; + a.download = "CI_Save"; + document.body.appendChild(a); + a.click(); + setTimeout(function() { + document.body.removeChild(a); + window.URL.revokeObjectURL(url); + }, 0); + } +} + +function importFile() { + const input = document.querySelector('input[type="file"]'); + if (!input.files?.length) return; + + const file = input.files.item(0); + if (!file) return; + + file.text().then(data => importSave(data)); +} + function versionCheck() { let setVersion = true; @@ -319,4 +346,4 @@ window.onbeforeunload = () => { if (player.autosave) { save(); } -}; \ No newline at end of file +}; diff --git a/options_wheel.png b/options_wheel.png index 9a60fff..4b62df4 100644 Binary files a/options_wheel.png and b/options_wheel.png differ