This can help by letting you progress in OTFS while infinity is fixed. (and a whole bunch of other stuff eventually)" }],
+ ["blank", "25px"],
+ ]]]],
+ layerShown() { return false }
+})
+addLayer("settings", {
+ name: "Settings", // This is optional, only used in a few places, If absent it just uses the layer id.
+ symbol: "SET", // 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: "Settings",
+ color: "white",
+ branches: ["branch"],
+ clickables: {},
+ bars: {},
+ upgrades: {},
+ buyables: {},
+ milestones: {},
+ challenges: {},
+ infoboxes: {},
+ microtabs: {},
+ tabFormat: [
+
+ ["row", [
+ ["raw-html", () => "Save ", {"color": "white", "font-size": "18px", "font-family": "monospace",}],
+ ["raw-html", () => "Autosave ", {"color": "white", "font-size": "18px", "font-family": "monospace",}],
+ ["raw-html", () => "HARD RESET ", {"color": "red", "font-size": "18px", "font-family": "monospace",}],
+ ]],
+
+ ["row", [
+ ["raw-html", () => "Export to clipboard ", {"color": "white", "font-size": "18px", "font-family": "monospace",}],
+ ["raw-html", () => "Import string ", {"color": "white", "font-size": "18px", "font-family": "monospace",}],
+ ["raw-html", () => "Change Theme ", {"color": "white", "font-size": "18px", "font-family": "monospace",}],
+ ["raw-html", () => "Toggle Layout ", {"color": "white", "font-size": "18px", "font-family": "monospace",}],
+ ]],
+
+ ["row", [
+ ["raw-html", () => "Export file ", {"color": "white", "font-size": "18px", "font-family": "monospace",}],
+ ["raw-html", () => "Import file ", {"color": "white", "font-size": "13.3333px", "font-family": "monospace",}],
+ ["raw-html", () => "Toggle Music ", {"color": "white", "font-size": "18px", "font-family": "monospace",}],
+ ["raw-html", () => "Toggle Hotkeys ", {"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 = {
() => "Export to clipboard ",
settingsMicrotabStyle],
["raw-html",
- () => "Import ",
+ () => "Import string ",
settingsMicrotabStyle],
["raw-html",
- () => "Offline Prod ",
+ () => "Change Theme ",
+ settingsMicrotabStyle],
+ ["raw-html",
+ () => "Toggle Layout ",
settingsMicrotabStyle],
]],
["row", [
["raw-html",
- () => "Change Theme ",
+ () => "Export file ",
settingsMicrotabStyle],
+ ["raw-html",
+ () => "Import file ",
+ {"color": "white", "font-size": "13.3333px", "font-family": "monospace",}],
["raw-html",
() => "Toggle Music ",
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 = {
Completed Challenges: {{ options.hideChallenges?"HIDDEN":"SHOWN" }}
Single-Tab Mode: {{ options.forceOneTab?"ALWAYS":"AUTO" }}
Shift-Click to Toggle Tooltips: {{ options.forceTooltips?"ON":"OFF" }}
-
+
Toggle Music: {{ options.musicToggle?"Unmute":"Mute" }}
Toggle Hotkeys: {{ options.toggleHotkey?"On":"Off" }}
Toggle Particles: {{ options.toggleParticle?"On":"Off" }}
-\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