From c08042da7ed1c06e8375d5553eb230ed39f01294 Mon Sep 17 00:00:00 2001 From: Aarex Tiaokhiao Date: Mon, 14 Sep 2020 15:26:10 -0400 Subject: [PATCH] v1.1 It is finally here! --- discord.png | Bin 0 -> 1990 bytes index.html | 59 +- js/break_eternity.js | 6 +- js/canvas.js | 16 +- js/game.js | 1412 ++++++++++++++++++++++-------------------- js/temp.js | 4 +- js/v.js | 3 + options_wheel.png | Bin 4811 -> 4419 bytes style.css | 45 +- 9 files changed, 848 insertions(+), 697 deletions(-) create mode 100644 discord.png diff --git a/discord.png b/discord.png new file mode 100644 index 0000000000000000000000000000000000000000..14fc5779958d5a9f9f6df3d0cdd39b23af1c991d GIT binary patch literal 1990 zcmV;%2RZnOP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D2U|%*K~#8N?VSm% z9a9{KTRRm?iYOIpiV&eBmJr06T4O1RS}U}KG(}46X@pve*a@nZD6zFPYAdZ!L93{x zB#otZ4YAYW`|h3ByuRLh-^|=Q=gsRozvRoAnfvD6Grv1?=A8fe&wah3qN1XrqN1Xr zmL>I0%BD4P%-n4$wu6me1-Er`{Q~n~#@JB?qjDL| z*}Nvjt*}yML(kFXa7A)8XHwoX`e^W`*AsOl^sg?aS6-tJOv;|9wPDxlVtQpZn#;!K zVzcU6kJXk*nOb?y=;fiOwap#1Vp677-liieqoUD)6pap~XmlV&qXQ`#9Z1pWK#E2O zQW=f@8y3JUc+U+P^e)VVAHer1jml#5zwkPo2gVWhf=A&uF!-KUemUpE#;`M-4X?l= z=u&mH(SN~s*a`N9kKrnK6GnnV-ACYRI12{D;q5RGe+IbEW3VGU4zpqZWZOQlJ=_Ps zLYF9WTy^A_xvNrW#5R=;`Q#b=8jOOsK~pr=NrY$M1<>>bV@D16hccCtx~&Ud6^Fpq z@HE^6Hb(>DO3?h=vrA|+^|~ZkPNl9g`g*t+)=J8s!Lx5x7GpaTb?r-GNY|^y_n!=2 zC6|ItOkT6Qh0$Mv(?T17XV?@f?F49{qTZh6UNJ9$v-I9Htw$bZHac`0?Tzgg@Fq8p z%1#Jjvf^{R+1ey6Wcd%u8z9S#wkd@+T2se!pdR?b>ZWkwGZ#Udxlh3S>SFN2`v9#E(vDbk8;vsM>+zu0Xtq)}y`Nb5f5JtC!KpP5Etjo1vB4K;22G_x+m9?d1 z9K*<7$E)*T7+ziMRK~Fjy-|lS+RJxNb+Mt$X)}sfOO0MLbXxB?2J;1`X&%k&x0xzT zA&fS0JI!$0rv)^$o;FO%jxs`5PrkNFb+Nvv-=7q<+ol#NgwYNP(#Sy1x7Ed(`ZOs! z%4lFc&BsLFH;vL}i~d^%85WYhkhJqK&q1e6j~zU0qTfw7msyWOf0cgJ=0$hueK2SKZi8 zR)W1*y%%h@Z03gYc{Oi%{H^sH3aeK(6rjwPES1U{RI)d50bIj@HVO=xgW-+r2(ZbS z4pU(U*mi!+{x#zz?CUVy$60+A-7F`E<;G3yk(gXFsgut>hr+*0dqtHt-9Y2+fD5T$ z-C1wm+p~BRxD!lrQSR%R??dokgFO?MHP`mGADA>_z1rH}ci=Rb&F9t4!Q=BxKd?(_ z@{SKdrB!L8cOHbPTT?l>K~VFCl$>=AwN346llvNlGkm%Oc*dHA*(1MA$cUv6d1|n;DrZ8e6VVMno&Y}G)ZMfv z^hqWf?tD7eii(OVrF!-H YA9w!&c$<<$hyVZp07*qoM6N<$f((q%8~^|S literal 0 HcmV?d00001 diff --git a/index.html b/index.html index 879f2f4..71f932e 100644 --- a/index.html +++ b/index.html @@ -15,19 +15,38 @@
-

Thank you for playing Prestige Tree v{{player.version}}!


-

It took you {{formatTime(player.timePlayed)}}

-

Make sure that you record the time in your stream or else your speedrun won't count!






- If you would like to speedrun this, play again from the beginning and record the whole thing as fast as possible, then submit in my discord




+
+

Prestige Tree {{VERSION.withoutName}}



+

Congratulations! You have reached the end and beaten this game, but for now...


+

Please check the Discord to see there are new content updates!



+
It took you {{formatTime(player.timePlayed)}} to beat the game.
+
Make sure that you record the time in your stream or else your speedrun won't count!
+
     +


+ Jacorb's Discord
+ Aarex's Home +

+ If you would like to speedrun this, press Play Again and record your attempt, then submit on the Discord Server in the channel #speedrun-submissions. +


+

Oh, you are still reading this?

+
+ Yeah. You also can test the next update whether you want to.
+ Test server (Coming soon!) +

+ For this next update, there will be 3 new layers which come after row 6! Stay tuned.

v1.1: The Life Update

  • Added 4 new layers
  • +
  • Added some QoL displays
  • +
  • Added Aqua theme
  • +
  • Added HQ Tree option
  • Rebalanced early parts of rows 4 - 5 progression
  • -
  • Balanced up to e???,000,000
  • +
  • Balanced up to e290,000,000
  • +
  • Fixed some bugs

v1.0 Patch 1

    @@ -308,13 +327,14 @@

    Prestige Tree


    -

    v1.1: The Life Update

    +

    {{VERSION.withName}}


    Made by Jacorb and Aarex
    Idea by papyrus (on discord)


    + Test server (Coming soon!)

    Jacorb's Discord
    Aarex's Home
    @@ -360,18 +380,26 @@ +
-
v{{player.version}}
+
{{VERSION.withoutName}}

i
+ + +
Dev Speed: {{format(player.devSpeed)}}x
+

Offline Time: {{formatTime(offTime.remain)}} ({{format(offTime.speed)}}x speed)
+ +
Reach {{formatWhole(ENDGAME)}} to beat the game!
+

You have

{{format(player.points)}}

@@ -483,12 +511,12 @@

You have {{formatWhole(getSpace())}} Space remaining for Space Buildings.
You have {{ format(player.g.power) }} Generator Power

-
+


-
- +
+
@@ -571,8 +599,8 @@
- - + +

3 Phantom Souls


You can buy max Phantom Souls, and automatically purchase Phantom Souls   

5 Phantom Souls


Phantom Souls reset nothing

2 Phantom Souls


Automatically purchase Phantom Souls   

5 Phantom Souls


You can buy max Phantom Souls, and Phantom Souls reset nothing


@@ -595,7 +623,7 @@
- +

20,000 Hyperspace Energy


Gain 10% of Super-Prestige Points gain every second

20,000 Hyperspace Energy


Gain 1% of Super-Prestige Points gain every second


You have {{formatWhole(player.ba.points)}} Balance Energy @@ -620,13 +648,14 @@ Next Life Brick is at {{format(player.l.power)}} / {{format(IMPERIUM.lifeReq())}} Life Power


Your Work is currently {{format(tmp.i.work)}}, which reduces the gain power of rows 1 - 5 by {{format(tmp.i.workEff)}}x diff --git a/js/break_eternity.js b/js/break_eternity.js index 1c87339..891d0d2 100644 --- a/js/break_eternity.js +++ b/js/break_eternity.js @@ -212,10 +212,6 @@ this.layer = 0; this.mag = 0; } - - if (isNaN(this.sign)) this.sign = 0 - if (isNaN(this.layer)) this.layer = 0 - if (isNaN(this.mag)) this.mag = 0 } Object.defineProperty(Decimal.prototype, "m", { @@ -2743,4 +2739,4 @@ for (var i = 0; i < 10; ++i) return Decimal; -})); +})); \ No newline at end of file diff --git a/js/canvas.js b/js/canvas.js index 6ccd4b9..d077b78 100644 --- a/js/canvas.js +++ b/js/canvas.js @@ -23,10 +23,18 @@ function resizeCanvas() { } var colors = { - 1: "#ffffff", - 2: "#bfbfbf", - 3: "#7f7f7f" + default: { + 1: "#ffffff", + 2: "#bfbfbf", + 3: "#7f7f7f", + }, + aqua: { + 1: "#bfefff", + 2: "#8fb3bf", + 3: "#5f777f", + }, } +var colors_theme function drawTree() { if (!retrieveCanvasData()) return; @@ -107,7 +115,7 @@ function drawTreeBranch(num1, num2, color_id = 1) { // taken from Antimatter Dim let y2 = end.top + (end.height / 2) + (document.getElementById("treeTab").scrollTop || document.body.scrollTop); ctx.lineWidth = 15; ctx.beginPath(); - ctx.strokeStyle = colors[color_id] + ctx.strokeStyle = colors_theme[color_id] ctx.moveTo(x1, y1); ctx.lineTo(x2, y2); ctx.stroke(); diff --git a/js/game.js b/js/game.js index c762ad5..0c7a637 100644 --- a/js/game.js +++ b/js/game.js @@ -17,7 +17,8 @@ function getStartPlayer() { msDisplay: "always", offlineProd: true, versionType: "real", - version: 1.1, + version: VERSION.num, + beta: VERSION.beta, timePlayed: 0, keepGoing: false, hasNaN: false, @@ -229,7 +230,7 @@ const LAYER_REQS = { sp: new Decimal("1e8500000"), l: new Decimal(1e195), hs: new Decimal(725), - i: new Decimal(Number.MAX_VALUE), + i: new Decimal("1e290"), } const LAYER_RES = { @@ -297,7 +298,7 @@ const LAYER_EXP = { sp: new Decimal(2e-7), l: new Decimal(0.012), hs: new Decimal(40), - i: new Decimal(1), + i: new Decimal(1.1), } const LAYER_BASE = { @@ -310,7 +311,7 @@ const LAYER_BASE = { hb: new Decimal(1.05), ss: new Decimal(1.15), ps: new Decimal("1e250"), - i: Decimal.pow(Number.MAX_VALUE, 0.25), + i: new Decimal("1e20"), } const LAYER_ROW = { @@ -356,28 +357,28 @@ const ORDER_UP = [ ] const LAYER_EFFS = { - b: function() { + b() { if (tmp.challActive ? tmp.challActive.h[11] : true) return new Decimal(1); - return Decimal.pow(Decimal.add(2, tmp.atbb).max(0), player.b.points.plus(getFreeBoosters()).times(getBoosterPower())).max(0) + return Decimal.pow(Decimal.add(2, tmp.atbb).max(0), player.b.points.add(getFreeBoosters()).times(getBoosterPower())).max(0) }, - g: function() { return Decimal.pow(Decimal.add(2, tmp.atgb).times(tmp.sGenPowEff).times((player.ss.upgrades.includes(23) ? LAYER_UPGS.ss[23].currently() : 1)).max(0), player.g.points.times(getGenPow())).sub(1).times(getGenPowerGainMult()).max(0) }, - t: function() { return { - gain: Decimal.pow(Decimal.add(3, tmp.attb).times(tmp.mttb), player.t.points.plus(player.t.extCapsules.plus(tmp.freeExtCap).times(getFreeExtPow())).times(getCapPow())).sub(1).times(getTimeEnergyGainMult()), - limit: Decimal.pow(Decimal.add(2, tmp.attb).times(tmp.mttb), player.t.points.plus(player.t.extCapsules.plus(tmp.freeExtCap).times(getFreeExtPow())).times(getCapPow())).sub(1).times(100).times(getTimeEnergyLimitMult()), + g() { return Decimal.pow(Decimal.add(2, tmp.atgb).times(tmp.sGenPowEff).times((player.ss.upgrades.includes(23) ? LAYER_UPGS.ss[23].currently() : 1)).max(0), player.g.points.times(getGenPow())).sub(1).times(getGenPowerGainMult()).max(0) }, + t() { return { + gain: Decimal.pow(Decimal.add(3, tmp.attb).times(tmp.mttb), player.t.points.add(player.t.extCapsules.add(tmp.freeExtCap).times(getFreeExtPow())).times(getCapPow())).sub(1).times(getTimeEnergyGainMult()), + limit: Decimal.pow(Decimal.add(2, tmp.attb).times(tmp.mttb), player.t.points.add(player.t.extCapsules.add(tmp.freeExtCap).times(getFreeExtPow())).times(getCapPow())).sub(1).times(100).times(getTimeEnergyLimitMult()), }}, - sb: function() { return Decimal.pow(Decimal.add(1.5, addToSBBase()), player.sb.points.times(getSuperBoosterPow())) }, - sg: function() { return Decimal.pow(Decimal.add(2, addToSGBase()), player.sg.points).sub(1).times(getSuperGenPowerGainMult()).max(0) }, - h: function() { - let ret = player.h.points.plus(1).times(player.points.times(player.h.points).plus(1).log10().plus(1).log10().plus(1)).log10().times(5).root(player.q.upgrades.includes(12)?1.25:2); + sb() { return Decimal.pow(Decimal.add(1.5, addToSBBase()), player.sb.points.times(getSuperBoosterPow())) }, + sg() { return Decimal.pow(Decimal.add(2, addToSGBase()), player.sg.points).sub(1).times(getSuperGenPowerGainMult()).max(0) }, + h() { + let ret = player.h.points.add(1).times(player.points.times(player.h.points).add(1).log10().add(1).log10().add(1)).log10().times(5).root(player.q.upgrades.includes(12)?1.25:2); if (player.h.challs.includes(61)) ret = ret.times(1.2); if (ret.gte(100)) ret = ret.log10().times(50).min(ret); return ret; }, - hb: function() { + hb() { return Decimal.pow(Decimal.add(1.6, addToHBBase()), player.hb.points.add(getExtraHyperBoosters()).pow(getHyperBoosterExp()).times(getHyperBoosterPow())) }, - ss: function() { return player.ss.points.pow(2.5).times(getSubspaceGainMult()) }, - ba: function() { + ss() { return player.ss.points.pow(2.5).times(getSubspaceGainMult()) }, + ba() { let points1 = player.ba.points if (points1.gte(1e12)) points1 = points1.log10().pow(2).times(1e12/144).min(points1) return { @@ -386,7 +387,7 @@ const LAYER_EFFS = { neg: player.ba.points.pow(0.65).times(0.4).pow(tmp.baExp ? tmp.baExp : 1), } }, - ps: function() { + ps() { let x = player.ps.points if (player.ps.upgrades.includes(12)) x = x.times(1.2) return { @@ -403,85 +404,85 @@ const LAYER_UPGS = { 11: { desc: "Gain 1 Point every second.", cost: new Decimal(1), - unl: function() { return player.p.unl }, + unl() { return player.p.unl }, }, 12: { desc: "Point generation is faster based on your unspent Prestige Points.", cost: new Decimal(1), - unl: function() { return player.p.upgrades.includes(11) }, - currently: function() { + unl() { return player.p.upgrades.includes(11) }, + currently() { if (tmp.challActive ? tmp.challActive.h[32] : true) return new Decimal(1) - let ret = player.p.points.plus(1).pow(player.g.upgrades.includes(24)?1.1:(player.g.upgrades.includes(14)?0.75:0.5)) + let ret = player.p.points.add(1).pow(player.g.upgrades.includes(24)?1.1:(player.g.upgrades.includes(14)?0.75:0.5)) if (ret.gte("1e20000000")) ret = ret.sqrt().times("1e10000000") return ret; }, - effDisp: function(x) { return format(x)+"x" }, + effDisp(x) { return format(x)+"x" }, }, 13: { desc: "Point generation is faster based on your Point amount.", cost: new Decimal(5), - unl: function() { return player.p.upgrades.includes(12) }, - currently: function() { - let ret = player.points.plus(1).log10().pow(0.75).plus(1) + unl() { return player.p.upgrades.includes(12) }, + currently() { + let ret = player.points.add(1).log10().pow(0.75).add(1) if (player.g.upgrades.includes(15)) ret = ret.pow(LAYER_UPGS.g[15].currently()) if (player.sp.upgrades.includes(11)) ret = ret.pow(100) return ret; }, - effDisp: function(x) { return format(x)+"x" }, + effDisp(x) { return format(x)+"x" }, }, 21: { desc: "Prestige Point gain is doubled.", cost: new Decimal(20), - unl: function() { return (player.b.unl||player.g.unl)&&player.p.upgrades.includes(11) }, + unl() { return (player.b.unl||player.g.unl)&&player.p.upgrades.includes(11) }, }, 22: { desc: "Point generation is faster based on your Prestige Upgrades bought.", cost: new Decimal(75), - unl: function() { return (player.b.unl||player.g.unl)&&player.p.upgrades.includes(12) }, - currently: function() { return Decimal.pow(1.4, player.p.upgrades.length) }, - effDisp: function(x) { return format(x)+"x" }, + unl() { return (player.b.unl||player.g.unl)&&player.p.upgrades.includes(12) }, + currently() { return Decimal.pow(1.4, player.p.upgrades.length) }, + effDisp(x) { return format(x)+"x" }, }, 23: { desc: "Prestige Point gain is boosted by your Point amount.", cost: new Decimal(5e3), - unl: function() { return (player.b.unl||player.g.unl)&&player.p.upgrades.includes(13) }, - currently: function() { - let ret = player.points.plus(1).log10().cbrt().plus(1) + unl() { return (player.b.unl||player.g.unl)&&player.p.upgrades.includes(13) }, + currently() { + let ret = player.points.add(1).log10().cbrt().add(1) if (player.g.upgrades.includes(23)) ret = ret.pow(LAYER_UPGS.g[23].currently()) if (player.p.upgrades.includes(33)) ret = ret.pow(1.25) if (player.sp.upgrades.includes(11)) ret = ret.pow(100) return ret; }, - effDisp: function(x) { return format(x)+"x" }, + effDisp(x) { return format(x)+"x" }, }, 31: { desc: "Prestige Point gain is boosted by your Prestige Point amount.", cost: new Decimal("1e4450"), - unl: function() { return player.e.upgrades.includes(33) }, - currently: function() { - let ret = player.p.points.plus(1).log10().plus(1).pow(player.p.points.plus(1).log10().div(200).plus(1)).pow(player.p.upgrades.includes(32) ? LAYER_UPGS.p[32].currently() : 1) + unl() { return player.e.upgrades.includes(33) }, + currently() { + let ret = player.p.points.add(1).log10().add(1).pow(player.p.points.add(1).log10().div(200).add(1)).pow(player.p.upgrades.includes(32) ? LAYER_UPGS.p[32].currently() : 1) let capStart = new Decimal("1e1000") if (player.sp.upgrades.includes(32)) capStart = capStart.times(LAYER_UPGS.sp[32].currently()) if (ret.gte(capStart)) ret = ret.log10().times(capStart.div(1e3)) if (player.sp.upgrades.includes(11)) ret = ret.pow(100) return ret; }, - effDisp: function(x) { return format(x)+"x" }, + effDisp(x) { return format(x)+"x" }, }, 32: { desc: "The upgrade to the left is stronger based on your Points.", cost: new Decimal("1e5140"), - unl: function() { return player.e.upgrades.includes(33) }, - currently: function() { - let ret = player.points.plus(1).log10().plus(1).root(16); + unl() { return player.e.upgrades.includes(33) }, + currently() { + let ret = player.points.add(1).log10().add(1).root(16); return ret; }, - effDisp: function(x) { return format(x.sub(1).times(100))+"% stronger" }, + effDisp(x) { return format(x.sub(1).times(100))+"% stronger" }, }, 33: { desc: "The above upgrade is 25% stronger.", cost: new Decimal("1e5500"), - unl: function() { return player.e.upgrades.includes(33) }, + unl() { return player.e.upgrades.includes(33) }, }, }, b: { @@ -490,63 +491,63 @@ const LAYER_UPGS = { 11: { desc: "Boosters boost Prestige Point gain.", cost: new Decimal(3), - unl: function() { return player.b.unl }, - currently: function() { return player.b.points.sqrt().plus(1).max(1.5) }, - effDisp: function(x) { return format(x)+"x" }, + unl() { return player.b.unl }, + currently() { return player.b.points.sqrt().add(1).max(1.5) }, + effDisp(x) { return format(x)+"x" }, }, 12: { desc: "Generators add to the Booster effect.", cost: new Decimal(7), - unl: function() { return player.g.unl }, - currently: function() { return player.g.points.plus(1).log10().sqrt().div(3).times((player.t.upgrades.includes(14)&&!(tmp.challActive?tmp.challActive.h[12]:true))?8.5:1) }, - effDisp: function(x) { return "+"+format(x)+" to base" }, + unl() { return player.g.unl }, + currently() { return player.g.points.add(1).log10().sqrt().div(3).times((player.t.upgrades.includes(14)&&!(tmp.challActive?tmp.challActive.h[12]:true))?8.5:1) }, + effDisp(x) { return "+"+format(x)+" to base" }, }, 13: { desc: "Prestige Points add to the Booster effect.", cost: new Decimal(8), - unl: function() { return player.b.best.gte(8) }, - currently: function() { return player.p.points.plus(1).log10().plus(1).log10().div(3) }, - effDisp: function(x) { return "+"+format(x)+" to base" }, + unl() { return player.b.best.gte(8) }, + currently() { return player.p.points.add(1).log10().add(1).log10().div(3) }, + effDisp(x) { return "+"+format(x)+" to base" }, }, 21: { desc: "Square the Generator Power effect.", cost: new Decimal(10), - unl: function() { return player.b.upgrades.includes(11) && player.b.upgrades.includes(12) }, + unl() { return player.b.upgrades.includes(11) && player.b.upgrades.includes(12) }, }, 22: { desc: "The Generator Power effect is raised to the power of 1.2.", cost: new Decimal(15), - unl: function() { return player.b.upgrades.includes(12) && player.b.upgrades.includes(13) }, + unl() { return player.b.upgrades.includes(12) && player.b.upgrades.includes(13) }, }, 23: { desc: "Boosters are cheaper based on your points.", cost: new Decimal(18), - unl: function() { return player.b.upgrades.includes(21) || player.b.upgrades.includes(22) }, - currently: function() { return player.points.plus(1).log10().plus(1).pow(3.2).pow((tmp.s !== undefined)?tmp.s.sbEff[4]:1) }, - effDisp: function(x) { return "/"+format(x) }, + unl() { return player.b.upgrades.includes(21) || player.b.upgrades.includes(22) }, + currently() { return player.points.add(1).log10().add(1).pow(3.2).pow((tmp.s !== undefined)?tmp.s.sbEff[4]:1) }, + effDisp(x) { return "/"+format(x) }, }, 31: { desc: "Hyper-Boosters multiply the Booster base.", cost: new Decimal(1250), - unl: function() { return player.hb.upgrades.includes(14) }, - currently: function() { return Decimal.pow(4, player.hb.points.pow(2)) }, - effDisp: function(x) { return format(x)+"x" }, + unl() { return player.hb.upgrades.includes(14) }, + currently() { return Decimal.pow(4, player.hb.points.pow(2)) }, + effDisp(x) { return format(x)+"x" }, }, 32: { desc: "Add free Boosters based on your Generator Power.", cost: new Decimal(1261), - unl: function() { return player.hb.upgrades.includes(14) }, - currently: function() { - let ret = player.g.power.plus(1).log10().sqrt().floor(); + unl() { return player.hb.upgrades.includes(14) }, + currently() { + let ret = player.g.power.add(1).log10().sqrt().floor(); if (ret.gte(1e3)) ret = ret.log10().times(1e3/3) return ret; }, - effDisp: function(x) { return "+"+formatWhole(x) }, + effDisp(x) { return "+"+formatWhole(x) }, }, 33: { desc: "Add 100 free Boosters.", cost: new Decimal(1269), - unl: function() { return player.hb.upgrades.includes(14) }, + unl() { return player.hb.upgrades.includes(14) }, }, }, g: { @@ -555,105 +556,105 @@ const LAYER_UPGS = { 11: { desc: "Generators boost Prestige Point gain.", cost: new Decimal(3), - unl: function() { return player.g.unl }, - currently: function() { return player.g.points.sqrt().plus(1).max(1.5) }, - effDisp: function(x) { return format(x)+"x" }, + unl() { return player.g.unl }, + currently() { return player.g.points.sqrt().add(1).max(1.5) }, + effDisp(x) { return format(x)+"x" }, }, 12: { desc: "Boosters boost Generator Power gain.", cost: new Decimal(7), - unl: function() { return player.b.unl }, - currently: function() { return player.b.points.plus(1).log10().sqrt().div(3).times((player.t.upgrades.includes(14)&&!(tmp.challActive?tmp.challActive.h[12]:true))?3.75:1) }, - effDisp: function(x) { return "+"+format(x)+" to base" }, + unl() { return player.b.unl }, + currently() { return player.b.points.add(1).log10().sqrt().div(3).times((player.t.upgrades.includes(14)&&!(tmp.challActive?tmp.challActive.h[12]:true))?3.75:1) }, + effDisp(x) { return "+"+format(x)+" to base" }, }, 13: { desc: "Prestige Points boost Generator Power gain.", cost: new Decimal(8), - unl: function() { return player.g.best.gte(8) }, - currently: function() { return player.p.points.plus(1).log10().plus(1).log10().div(3) }, - effDisp: function(x) { return "+"+format(x)+" to base" }, + unl() { return player.g.best.gte(8) }, + currently() { return player.p.points.add(1).log10().add(1).log10().div(3) }, + effDisp(x) { return "+"+format(x)+" to base" }, }, 14: { desc: "Prestige Upgrade 2 uses a better formula.", cost: new Decimal(13), - unl: function() { return player.g.best.gte(10) }, + unl() { return player.g.best.gte(10) }, }, 15: { desc: "Prestige Upgrade 3 is stronger based on your Generators.", cost: new Decimal(15), - unl: function() { return player.g.upgrades.includes(13) }, - currently: function() { - let ret = player.g.points.sqrt().plus(1).times((player.e.upgrades.includes(32)&&!(tmp.challActive?tmp.challActive.h[12]:true)) ? LAYER_UPGS.e[32].currently() : 1) + unl() { return player.g.upgrades.includes(13) }, + currently() { + let ret = player.g.points.sqrt().add(1).times((player.e.upgrades.includes(32)&&!(tmp.challActive?tmp.challActive.h[12]:true)) ? LAYER_UPGS.e[32].currently() : 1) if (ret.gte(400)) ret = ret.cbrt().times(Math.pow(400, 2/3)) return ret; }, - effDisp: function(x) { return "^"+format(x) }, + effDisp(x) { return "^"+format(x) }, }, 21: { desc: "Generator Power generates faster based on its amount.", cost: new Decimal(18), - unl: function() { return player.g.upgrades.includes(15) }, - currently: function() { return player.g.power.plus(1).log10().plus(1) }, - effDisp: function(x) { return format(x)+"x" }, + unl() { return player.g.upgrades.includes(15) }, + currently() { return player.g.power.add(1).log10().add(1) }, + effDisp(x) { return format(x)+"x" }, }, 22: { desc: "Generators are cheaper based on your Prestige Points.", cost: new Decimal(19), - unl: function() { return player.g.upgrades.includes(15) }, - currently: function() { return player.p.points.plus(1).pow(0.25).pow(player.g.upgrades.includes(32)?2.5:1) }, - effDisp: function(x) { return "/"+format(x) }, + unl() { return player.g.upgrades.includes(15) }, + currently() { return player.p.points.add(1).pow(0.25).pow(player.g.upgrades.includes(32)?2.5:1) }, + effDisp(x) { return "/"+format(x) }, }, 23: { desc: "Prestige Upgrade 6 is stronger based on your Boosters.", cost: new Decimal(20), - unl: function() { return player.b.unl && player.g.upgrades.includes(15) }, - currently: function() { return player.b.points.pow(0.75).plus(1) }, - effDisp: function(x) { return "^"+format(x) }, + unl() { return player.b.unl && player.g.upgrades.includes(15) }, + currently() { return player.b.points.pow(0.75).add(1) }, + effDisp(x) { return "^"+format(x) }, }, 24: { desc: "Prestige Upgrade 2 uses an even better formula.", cost: new Decimal(22), - unl: function() { return player.g.upgrades.includes(14) && (player.g.upgrades.includes(21)||player.g.upgrades.includes(22)) }, + unl() { return player.g.upgrades.includes(14) && (player.g.upgrades.includes(21)||player.g.upgrades.includes(22)) }, }, 25: { desc: "Prestige Points boost Generator Power gain.", cost: new Decimal(28), - unl: function() { return player.g.upgrades.includes(23) && player.g.upgrades.includes(24) }, - currently: function() { return player.p.points.plus(1).log10().sqrt().plus(1).pow((player.t.upgrades.includes(14)&&!(tmp.challActive?tmp.challActive.h[12]:true))?2.75:1).pow(player.g.upgrades.includes(31) ? LAYER_UPGS.g[31].currently() : 1) }, - effDisp: function(x) { return format(x)+"x" }, + unl() { return player.g.upgrades.includes(23) && player.g.upgrades.includes(24) }, + currently() { return player.p.points.add(1).log10().sqrt().add(1).pow((player.t.upgrades.includes(14)&&!(tmp.challActive?tmp.challActive.h[12]:true))?2.75:1).pow(player.g.upgrades.includes(31) ? LAYER_UPGS.g[31].currently() : 1) }, + effDisp(x) { return format(x)+"x" }, }, 31: { desc: "Generator Upgrade 10 is stronger based on your Generators.", cost: new Decimal(950), - unl: function() { return player.ss.upgrades.includes(21) }, - currently: function() { return player.g.points.plus(1).log10().pow(3.6).plus(1) }, - effDisp: function(x) { return format(x.sub(1).times(100))+"% stronger" }, + unl() { return player.ss.upgrades.includes(21) }, + currently() { return player.g.points.add(1).log10().pow(3.6).add(1) }, + effDisp(x) { return format(x.sub(1).times(100))+"% stronger" }, }, 32: { desc: "Generator Upgrade 7 is 150% stronger.", cost: new Decimal(960), - unl: function() { return player.ss.upgrades.includes(21) }, + unl() { return player.ss.upgrades.includes(21) }, }, 33: { desc: "Generator Power adds to the Generator base.", cost: new Decimal(1025), - unl: function() { return player.ss.upgrades.includes(21) }, - currently: function() { return player.g.power.plus(1).log10().div(15).plus(1) }, - effDisp: function(x) { return "+"+format(x) }, + unl() { return player.ss.upgrades.includes(21) }, + currently() { return player.g.power.add(1).log10().div(15).add(1) }, + effDisp(x) { return "+"+format(x) }, }, 34: { desc: "Generators are stronger based on their amount.", cost: new Decimal(1068), - unl: function() { return player.ss.upgrades.includes(21) }, - currently: function() { return player.g.points.plus(1).log10().plus(1).log10().plus(1).sqrt() }, - effDisp: function(x) { return format(x.sub(1).times(100))+"% stronger" }, + unl() { return player.ss.upgrades.includes(21) }, + currently() { return player.g.points.add(1).log10().add(1).log10().add(1).sqrt() }, + effDisp(x) { return format(x.sub(1).times(100))+"% stronger" }, }, 35: { desc: "Subspace boosts Generator Power gain.", cost: new Decimal(1130), - unl: function() { return player.ss.upgrades.includes(21) }, - currently: function() { return player.ss.subspace.plus(1).pow(40).pow(player.q.upgrades.includes(54)?20:1) }, - effDisp: function(x) { return format(x)+"x" }, + unl() { return player.ss.upgrades.includes(21) }, + currently() { return player.ss.subspace.add(1).pow(40).pow(player.q.upgrades.includes(54)?20:1) }, + effDisp(x) { return format(x)+"x" }, }, }, e: { @@ -662,106 +663,106 @@ const LAYER_UPGS = { 11: { desc: "Boosters & Generators boost each other.", cost: new Decimal(40), - unl: function() { return player.e.unl }, - currently: function() { + unl() { return player.e.unl }, + currently() { let exp = 1 if (player.e.upgrades.includes(14)&&!(tmp.challActive?tmp.challActive.h[12]:true)) exp = 1.5 - return {g: player.b.points.plus(1).log10().pow(exp), b: player.g.points.plus(1).log10().pow(exp)} + return {g: player.b.points.add(1).log10().pow(exp), b: player.g.points.add(1).log10().pow(exp)} }, - effDisp: function(x) { return "+"+format(x.g)+" to Generator base, +"+format(x.b)+" to Booster base" }, + effDisp(x) { return "+"+format(x.g)+" to Generator base, +"+format(x.b)+" to Booster base" }, }, 12: { desc: "Unspent Enhance Points boost Prestige Point gain.", cost: new Decimal(150), - unl: function() { return player.e.unl&&player.e.best.gte(40) }, - currently: function() { - let ret = player.e.points.plus(1).pow((player.e.upgrades.includes(15)&&!(tmp.challActive?tmp.challActive.h[12]:true))?3.25:1.5) + unl() { return player.e.unl&&player.e.best.gte(40) }, + currently() { + let ret = player.e.points.add(1).pow((player.e.upgrades.includes(15)&&!(tmp.challActive?tmp.challActive.h[12]:true))?3.25:1.5) if (ret.gte("1e1500")) ret = ret.sqrt().times("1e750") return ret }, - effDisp: function(x) { return format(x)+"x" }, + effDisp(x) { return format(x)+"x" }, }, 13: { desc: "You gain 1e10x as many Prestige Points.", cost: new Decimal(1000), - unl: function() { return player.e.upgrades.includes(11)||player.e.upgrades.includes(12) }, + unl() { return player.e.upgrades.includes(11)||player.e.upgrades.includes(12) }, }, 14: { desc: "Enhance Upgrade 1 uses a better formula.", cost: new Decimal(5e7), - unl: function() { return player.e.upgrades.includes(13)&&(player.t.unl||player.s.unl) }, + unl() { return player.e.upgrades.includes(13)&&(player.t.unl||player.s.unl) }, }, 15: { desc: "Enhance Upgrade 2 uses a better formula.", cost: new Decimal(2e10), - unl: function() { return player.e.upgrades.includes(14)&&(player.t.unl||player.s.unl)&&player.e.best.gte(1e9) }, + unl() { return player.e.upgrades.includes(14)&&(player.t.unl||player.s.unl)&&player.e.best.gte(1e9) }, }, 21: { desc: "The Generator Power effect is raised to the power of 1.15.", cost: new Decimal(1e15), - unl: function() { return player.t.unl&&(player.t.order==1||player.s.unl)&&player.e.upgrades.includes(14) }, + unl() { return player.t.unl&&(player.t.order==1||player.s.unl)&&player.e.upgrades.includes(14) }, }, 22: { desc: "This layer behaves as if you chose it first (base req is now 1e120 points)", cost: new Decimal(1e22), - unl: function() { return (player.t.unl&&player.s.unl&&player.e.order==2)||player.e.upgrades.includes(22) }, + unl() { return (player.t.unl&&player.s.unl&&player.e.order==2)||player.e.upgrades.includes(22) }, }, 23: { desc: "This layer behaves as if you chose it first (base req is now 1e120 points)", cost: new Decimal(1e40), - unl: function() { return (player.t.unl&&player.s.unl&&player.e.order==1)||player.e.upgrades.includes(23) }, + unl() { return (player.t.unl&&player.s.unl&&player.e.order==1)||player.e.upgrades.includes(23) }, }, 24: { desc: "Prestige Points boost Enhance Point gain.", cost: new Decimal(1e65), - unl: function() { return player.t.unl&&player.s.unl&&player.e.best.gte(1e50) }, - currently: function() { return player.p.points.plus(1).pow(0.002) }, - effDisp: function(x) { return format(x)+"x" }, + unl() { return player.t.unl&&player.s.unl&&player.e.best.gte(1e50) }, + currently() { return player.p.points.add(1).pow(0.002) }, + effDisp(x) { return format(x)+"x" }, }, 25: { desc: "Enhancers are stronger based on your Space Energy & Time Capsules.", cost: new Decimal(7.777e77), - unl: function() { return player.t.unl&&player.s.unl&&player.e.best.gte(1e60) }, - currently: function() { - let ret = player.s.points.plus(player.t.points).div(32).plus(1); - if (ret.gte(2)) ret = ret.log(2).plus(1).times(2).sqrt(); + unl() { return player.t.unl&&player.s.unl&&player.e.best.gte(1e60) }, + currently() { + let ret = player.s.points.add(player.t.points).div(32).add(1); + if (ret.gte(2)) ret = ret.log(2).add(1).times(2).sqrt(); return ret; }, - effDisp: function(x) { return format(x.sub(1).times(100))+"% stronger" }, + effDisp(x) { return format(x.sub(1).times(100))+"% stronger" }, }, 31: { desc: "Enhancers are stronger based on your Super-Boosters.", cost: new Decimal(1e90), - unl: function() { return player.e.upgrades.includes(25)&&player.sb.unl }, - currently: function() { return player.sb.points.pow(0.75).div(4).plus(1) }, - effDisp: function(x) { return format(x.sub(1).times(100))+"% stronger" }, + unl() { return player.e.upgrades.includes(25)&&player.sb.unl }, + currently() { return player.sb.points.pow(0.75).div(4).add(1) }, + effDisp(x) { return format(x.sub(1).times(100))+"% stronger" }, }, 32: { desc: "Generator Upgrade 5 is stronger based on your Enhance Points.", cost: new Decimal(7.5e108), - unl: function() { return player.e.upgrades.includes(25)&&player.sb.unl }, - currently: function() { - let ret = Decimal.pow(10, player.e.points.plus(1).log10().pow(0.085)).div(10).max(1).min(10); + unl() { return player.e.upgrades.includes(25)&&player.sb.unl }, + currently() { + let ret = Decimal.pow(10, player.e.points.add(1).log10().pow(0.085)).div(10).max(1).min(10); return ret; }, - effDisp: function(x) { return format(x)+"x" }, + effDisp(x) { return format(x)+"x" }, }, 33: { desc: "Unlock 3 new Prestige Upgrades.", cost: new Decimal(2.5e139), - unl: function() { return player.e.upgrades.includes(31)||player.e.upgrades.includes(32) }, + unl() { return player.e.upgrades.includes(31)||player.e.upgrades.includes(32) }, }, 34: { desc: "You gain 1e40x as many Prestige Points.", cost: new Decimal(1e152), - unl: function() { return player.e.upgrades.includes(31)&&player.e.upgrades.includes(32) }, + unl() { return player.e.upgrades.includes(31)&&player.e.upgrades.includes(32) }, }, 35: { desc: "Points boost Generator Power gain.", cost: new Decimal(2e189), - unl: function() { return player.e.upgrades.includes(33)||player.e.upgrades.includes(34) }, - currently: function() { return player.points.plus(1).pow(0.004) }, - effDisp: function(x) { return format(x)+"x" }, + unl() { return player.e.upgrades.includes(33)||player.e.upgrades.includes(34) }, + currently() { return player.points.add(1).pow(0.004) }, + effDisp(x) { return format(x)+"x" }, }, }, t: { @@ -770,80 +771,80 @@ const LAYER_UPGS = { 11: { desc: "Non-extra Time Capsules boost the Booster effect.", cost: new Decimal(2), - unl: function() { return player.t.unl }, - currently: function() { return player.t.points.pow(0.9).plus(0.5).plus((player.t.upgrades.includes(13)&&!(tmp.challActive?tmp.challActive.h[12]:true))?LAYER_UPGS.t[13].currently():0) }, - effDisp: function(x) { return "+"+format(x)+" to base" }, + unl() { return player.t.unl }, + currently() { return player.t.points.pow(0.9).add(0.5).add((player.t.upgrades.includes(13)&&!(tmp.challActive?tmp.challActive.h[12]:true))?LAYER_UPGS.t[13].currently():0) }, + effDisp(x) { return "+"+format(x)+" to base" }, }, 12: { desc: "The Time Energy cap starts later based on your Boosters, and you get a free Extra Time Capsule.", cost: new Decimal(3), - unl: function() { return player.t.best.gte(2)&&player.t.unl }, - currently: function() { return player.b.points.pow(0.95).plus(1).pow(player.q.upgrades.includes(43)?16:1) }, - effDisp: function(x) { return format(x)+"x" }, + unl() { return player.t.best.gte(2)&&player.t.unl }, + currently() { return player.b.points.pow(0.95).add(1).pow(player.q.upgrades.includes(43)?16:1) }, + effDisp(x) { return format(x)+"x" }, }, 13: { desc: "Extra Time Capsules are added to the first Time Upgrade's effect formula, but at a reduced amount.", cost: new Decimal(3), - unl: function() { return player.t.upgrades.includes(11) }, - currently: function() { return player.t.extCapsules.plus(tmp.freeExtCap).pow(0.95) }, - effDisp: function(x) { return "+"+format(x) }, + unl() { return player.t.upgrades.includes(11) }, + currently() { return player.t.extCapsules.add(tmp.freeExtCap).pow(0.95) }, + effDisp(x) { return "+"+format(x) }, }, 14: { desc: "Generator Upgrades 2 & 10 are 275% stronger, and Booster Upgrade 2 is 750% stronger.", cost: new Decimal(4), - unl: function() { return player.t.upgrades.includes(12)||player.t.upgrades.includes(13) }, + unl() { return player.t.upgrades.includes(12)||player.t.upgrades.includes(13) }, }, 21: { desc: "Time Energy boosts its own production & limit, and the Time Energy effect uses a better formula.", cost: new Decimal(4), - unl: function() { return player.t.upgrades.includes(14) }, - currently: function() { return player.t.energy.plus(1).log10().pow(1.1).plus(1) }, - effDisp: function(x) { return format(x)+"x" }, + unl() { return player.t.upgrades.includes(14) }, + currently() { return player.t.energy.add(1).log10().pow(1.1).add(1) }, + effDisp(x) { return format(x)+"x" }, }, 22: { desc: "Time Energy production & limit are boosted by your Enhance Points.", cost: new Decimal(5), - unl: function() { return player.t.upgrades.includes(14)&&player.e.unl }, - currently: function() { - let ret = player.e.points.plus(1).pow(0.8/(1+player.t.order)) + unl() { return player.t.upgrades.includes(14)&&player.e.unl }, + currently() { + let ret = player.e.points.add(1).pow(0.8/(1+player.t.order)) if (ret.gte("1e400")) ret = ret.log10().times(Decimal.div("1e400", 400)).min(ret) return ret; }, - effDisp: function(x) { return format(x)+"x" }, + effDisp(x) { return format(x)+"x" }, }, 23: { desc: "Time Energy production & limit are boosted by your Space Energy.", cost: new Decimal(5), - unl: function() { return player.t.upgrades.includes(14)&&player.s.unl }, - currently: function() { return Decimal.pow(3, player.s.points.pow(0.9)) }, - effDisp: function(x) { return format(x)+"x" }, + unl() { return player.t.upgrades.includes(14)&&player.s.unl }, + currently() { return Decimal.pow(3, player.s.points.pow(0.9)) }, + effDisp(x) { return format(x)+"x" }, }, 24: { desc: "Get 18 free boosters added to their effect.", cost: new Decimal(7), - unl: function() { return player.t.upgrades.includes(21)&&player.t.best.gte(5) }, + unl() { return player.t.upgrades.includes(21)&&player.t.best.gte(5) }, }, 31: { desc: "Add 25 to the booster effect base.", cost: new Decimal(8), - unl: function() { return (player.t.upgrades.includes(22)&&(player.e.order==1||player.s.unl))||(player.t.upgrades.includes(23)&&(player.s.order==1||player.e.unl)) }, + unl() { return (player.t.upgrades.includes(22)&&(player.e.order==1||player.s.unl))||(player.t.upgrades.includes(23)&&(player.s.order==1||player.e.unl)) }, }, 32: { desc: "This layer behaves as if you chose it first (base req is now 1e120 points)", cost: new Decimal(12), - unl: function() { return (player.s.unl&&player.e.unl)||player.t.upgrades.includes(32) }, + unl() { return (player.s.unl&&player.e.unl)||player.t.upgrades.includes(32) }, }, 33: { desc: "Add 40 to the booster effect base.", cost: new Decimal(16), - unl: function() { return player.s.unl&&player.e.unl&&player.t.upgrades.includes(32) }, + unl() { return player.s.unl&&player.e.unl&&player.t.upgrades.includes(32) }, }, 34: { desc: "Time Energy caps later and generates faster based on your non-free Time Capsules.", cost: new Decimal(18), - unl: function() { return player.t.upgrades.includes(33)&&player.sb.unl }, - currently: function() { return Decimal.pow(10, player.t.points.pow(1.2)) }, - effDisp: function(x) { return format(x)+"x" }, + unl() { return player.t.upgrades.includes(33)&&player.sb.unl }, + currently() { return Decimal.pow(10, player.t.points.pow(1.2)) }, + effDisp(x) { return format(x)+"x" }, }, }, s: { @@ -852,96 +853,96 @@ const LAYER_UPGS = { 11: { desc: "Add a free level to all Space Buildings.", cost: new Decimal(2), - unl: function() { return player.s.unl }, + unl() { return player.s.unl }, }, 12: { desc: "Generator Power boosts its own generation.", cost: new Decimal(3), - unl: function() { return player.s.best.gte(2)&&player.s.unl }, - currently: function() { return player.g.power.plus(1).log10().plus(1) }, - effDisp: function(x) { return format(x)+"x" }, + unl() { return player.s.best.gte(2)&&player.s.unl }, + currently() { return player.g.power.add(1).log10().add(1) }, + effDisp(x) { return format(x)+"x" }, }, 13: { desc: "Space Building Levels boost Generator Power gain, and get 2 extra Space.", cost: new Decimal(3), - unl: function() { return player.s.upgrades.includes(11) }, - currently: function() { return Decimal.pow(20, tmp.s !== undefined ? tmp.s.sbSum : 0) }, - effDisp: function(x) { return format(x)+"x" }, + unl() { return player.s.upgrades.includes(11) }, + currently() { return Decimal.pow(20, tmp.s !== undefined ? tmp.s.sbSum : 0) }, + effDisp(x) { return format(x)+"x" }, }, 14: { desc: "Unlock a 4th Space Building, and add a free level to all Space Buildings.", cost: new Decimal(4), - unl: function() { return player.s.upgrades.includes(12)&&player.s.upgrades.includes(13) }, + unl() { return player.s.upgrades.includes(12)&&player.s.upgrades.includes(13) }, }, 21: { desc: "All Space Buildings are stronger based on your Generators.", cost: new Decimal(4), - unl: function() { return player.s.upgrades.includes(14) }, - currently: function() { return player.g.points.plus(1).log10().div(1.5).plus(1) }, - effDisp: function(x) { return format(x.sub(1).times(100))+"% stronger" }, + unl() { return player.s.upgrades.includes(14) }, + currently() { return player.g.points.add(1).log10().div(1.5).add(1) }, + effDisp(x) { return format(x.sub(1).times(100))+"% stronger" }, }, 22: { desc: "Space Buildings are stronger based on your Time Energy.", cost: new Decimal(6), - unl: function() { return player.s.upgrades.includes(14)&&player.t.unl }, - currently: function() { return player.t.energy.plus(1).log10().plus(1).log10().div(5).plus(1) }, - effDisp: function(x) { return format(x.sub(1).times(100))+"% stronger" }, + unl() { return player.s.upgrades.includes(14)&&player.t.unl }, + currently() { return player.t.energy.add(1).log10().add(1).log10().div(5).add(1) }, + effDisp(x) { return format(x.sub(1).times(100))+"% stronger" }, }, 23: { desc: "Space Buildings are stronger based on your Enhancers.", cost: new Decimal(5), - unl: function() { return player.s.upgrades.includes(14)&&player.e.unl }, - currently: function() { return player.e.enhancers.sqrt().div((player.s.order==0)?5:7).plus(1) }, - effDisp: function(x) { return format(x.sub(1).times(100))+"% stronger" }, + unl() { return player.s.upgrades.includes(14)&&player.e.unl }, + currently() { return player.e.enhancers.sqrt().div((player.s.order==0)?5:7).add(1) }, + effDisp(x) { return format(x.sub(1).times(100))+"% stronger" }, }, 24: { desc: "Space Building costs scale half as fast, and you have 3 more Space.", cost: new Decimal(7), - unl: function() { return player.s.upgrades.includes(21)&&(player.t.unl||player.e.unl) }, + unl() { return player.s.upgrades.includes(21)&&(player.t.unl||player.e.unl) }, }, 31: { desc: "Space Building 1 uses a better formula.", cost: new Decimal(7), - unl: function() { return (player.s.upgrades.includes(22)&&(player.t.order==0||player.e.unl))||(player.s.upgrades.includes(23)&&(player.e.order==0||player.t.unl)) }, + unl() { return (player.s.upgrades.includes(22)&&(player.t.order==0||player.e.unl))||(player.s.upgrades.includes(23)&&(player.e.order==0||player.t.unl)) }, }, 32: { desc: "Unlock a 5th Space Building.", cost: new Decimal(8), - unl: function() { return (player.s.upgrades.includes(22)&&(player.t.order==1||player.e.unl))||(player.s.upgrades.includes(23)&&(player.e.order==1||player.t.unl)) }, + unl() { return (player.s.upgrades.includes(22)&&(player.t.order==1||player.e.unl))||(player.s.upgrades.includes(23)&&(player.e.order==1||player.t.unl)) }, }, 33: { desc: "This layer behaves as if you chose it first (base req is now 1e120 points)", cost: new Decimal(12), - unl: function() { return (player.t.unl&&player.e.unl)||player.s.upgrades.includes(33) }, + unl() { return (player.t.unl&&player.e.unl)||player.s.upgrades.includes(33) }, }, 34: { desc: "Space Buildings boost the Generator Power effect (before all other boosts).", cost: new Decimal(15), - unl: function() { return player.t.unl&&player.e.unl&&player.t.order==0&&player.e.order==0&&player.s.order==0 }, - currently: function() { return Decimal.pow(tmp.s !== undefined ? tmp.s.sbSum : 0, 0.2).div(17.5) }, - effDisp: function(x) { return "Add "+format(x)+" to exponent" }, + unl() { return player.t.unl&&player.e.unl&&player.t.order==0&&player.e.order==0&&player.s.order==0 }, + currently() { return Decimal.pow(tmp.s !== undefined ? tmp.s.sbSum : 0, 0.2).div(17.5) }, + effDisp(x) { return "Add "+format(x)+" to exponent" }, }, 41: { desc: "Total Space cheapens Space Buildings.", cost: new Decimal(128), - unl: function() { return player.ba.upgrades.includes(51) }, - currently: function() { return Decimal.pow("1e4000", getSpace().plus(player.s.spent).sqrt()) }, - effDisp: function(x) { return "/"+format(x) }, + unl() { return player.ba.upgrades.includes(51) }, + currently() { return Decimal.pow("1e4000", getSpace().add(player.s.spent).sqrt()) }, + effDisp(x) { return "/"+format(x) }, }, 42: { desc: "The Space Building cost formula is 40% weaker.", cost: new Decimal(131), - unl: function() { return player.ba.upgrades.includes(51) }, + unl() { return player.ba.upgrades.includes(51) }, }, 43: { desc: "Space Building 2 uses a better formula.", cost: new Decimal(133), - unl: function() { return player.ba.upgrades.includes(51) }, + unl() { return player.ba.upgrades.includes(51) }, }, 44: { desc: "All Space Buildings are 25% stronger.", cost: new Decimal(140), - unl: function() { return player.ba.upgrades.includes(51) }, + unl() { return player.ba.upgrades.includes(51) }, }, }, sb: { @@ -950,35 +951,35 @@ const LAYER_UPGS = { 11: { desc: "Super-Boosters are stronger based on your Prestige Points.", cost: new Decimal(2), - unl: function() { return player.sb.unl }, - currently: function() { - let ret = Decimal.pow(10, player.p.points.plus(1).log10().div(1e5).sqrt()); - if (ret.gte(2.5)) ret = ret.log(2.5).plus(1.5).min(ret); + unl() { return player.sb.unl }, + currently() { + let ret = Decimal.pow(10, player.p.points.add(1).log10().div(1e5).sqrt()); + if (ret.gte(2.5)) ret = ret.log(2.5).add(1.5).min(ret); if (ret.gte(40)) ret = ret.log(40).times(40); return ret.max(1); }, - effDisp: function(x) { return format(x)+"x" }, + effDisp(x) { return format(x)+"x" }, }, 12: { desc: "Super-Boosters are stronger based on your Generators.", cost: new Decimal(4), - unl: function() { return player.sb.upgrades.includes(11) }, - currently: function() { return player.g.points.div(10).pow(0.04).max(1) }, - effDisp: function(x) { return format(x)+"x" }, + unl() { return player.sb.upgrades.includes(11) }, + currently() { return player.g.points.div(10).pow(0.04).max(1) }, + effDisp(x) { return format(x)+"x" }, }, 21: { desc: "Super-Boosters add to the Booster base.", cost: new Decimal(8), - unl: function() { return player.h.challs.includes(32) }, - currently: function() { return player.sb.points.pow(2.15) }, - effDisp: function(x) { return "+"+format(x) }, + unl() { return player.h.challs.includes(32) }, + currently() { return player.sb.points.pow(2.15) }, + effDisp(x) { return "+"+format(x) }, }, 22: { desc: "Super-Boosters add to the Super-Booster base.", cost: new Decimal(12), - unl: function() { return player.h.challs.includes(32) }, - currently: function() { return player.sb.points.plus(1).log10().div(3) }, - effDisp: function(x) { return "+"+format(x) }, + unl() { return player.h.challs.includes(32) }, + currently() { return player.sb.points.add(1).log10().div(3) }, + effDisp(x) { return "+"+format(x) }, }, }, q: { @@ -987,123 +988,123 @@ const LAYER_UPGS = { 11: { desc: "Quirks & Hindrance Spirit boost Point, Prestige Point, and Enhance Point gain.", cost: new Decimal(1), - unl: function() { return player.q.unl&&player.q.layers.gt(0) }, - currently: function() { return player.q.points.plus(1).times(player.h.points.plus(1)).pow(0.75) }, - effDisp: function(x) { return format(x)+"x" }, + unl() { return player.q.unl&&player.q.layers.gt(0) }, + currently() { return player.q.points.add(1).times(player.h.points.add(1)).pow(0.75) }, + effDisp(x) { return format(x)+"x" }, }, 12: { desc: "The Quirk Energy and Hindrance Spirit effects use better formulas.", cost: new Decimal(5), - unl: function() { return player.q.upgrades.includes(11)&&player.h.best.gte(3) }, + unl() { return player.q.upgrades.includes(11)&&player.h.best.gte(3) }, }, 13: { desc: "Quirk Layers are twice as fast.", cost: new Decimal(50), - unl: function() { return player.q.upgrades.includes(11)&&player.h.challs.includes(11) }, + unl() { return player.q.upgrades.includes(11)&&player.h.challs.includes(11) }, }, 14: { desc: "Quirk Layers are thrice as fast.", cost: new Decimal(2e10), - unl: function() { return player.h.challs.includes(32) }, + unl() { return player.h.challs.includes(32) }, }, 21: { desc: "Quirk Layers are faster based on your Quirks.", cost: new Decimal(160), - unl: function() { return (player.q.upgrades.includes(12)||player.q.upgrades.includes(13))&&player.h.challs.includes(12) }, - currently: function() { return player.q.points.plus(1).log10().plus(1).pow(player.m.upgrades.includes(42)?1.5:1) }, - effDisp: function(x) { return format(x)+"x" }, + unl() { return (player.q.upgrades.includes(12)||player.q.upgrades.includes(13))&&player.h.challs.includes(12) }, + currently() { return player.q.points.add(1).log10().add(1).pow(player.m.upgrades.includes(42)?1.5:1) }, + effDisp(x) { return format(x)+"x" }, }, 22: { desc: "Quirk & Hindrance Spirit gain boost each other.", cost: new Decimal(400), - unl: function() { return player.q.upgrades.includes(12)&&player.q.upgrades.includes(13)&&player.h.challs.includes(12) }, - currently: function() { return { - q: player.h.points.div(10).plus(1).sqrt(), - h: player.q.points.div(10).plus(1).sqrt(), + unl() { return player.q.upgrades.includes(12)&&player.q.upgrades.includes(13)&&player.h.challs.includes(12) }, + currently() { return { + q: player.h.points.div(10).add(1).sqrt(), + h: player.q.points.div(10).add(1).sqrt(), }}, - effDisp: function(x) { return format(x.q)+"x to Quirk gain, "+format(x.h)+"x to Hindrance Spirit gain" }, + effDisp(x) { return format(x.q)+"x to Quirk gain, "+format(x.h)+"x to Hindrance Spirit gain" }, }, 23: { desc: "The Time Energy limit is 1e10x higher.", cost: new Decimal(5000), - unl: function() { return player.q.upgrades.includes(21)||player.q.upgrades.includes(22) }, + unl() { return player.q.upgrades.includes(21)||player.q.upgrades.includes(22) }, }, 24: { desc: "The Time Energy limit is higher based on your Quirk Energy.", cost: new Decimal(5e10), - unl: function() { return player.h.challs.includes(32) }, - currently: function() { return player.q.energy.div(1e6).plus(1).pow(0.9) }, - effDisp: function(x) { return format(x)+"x" }, + unl() { return player.h.challs.includes(32) }, + currently() { return player.q.energy.div(1e6).add(1).pow(0.9) }, + effDisp(x) { return format(x)+"x" }, }, 31: { desc: "Get 1 of each Space Building for free.", cost: new Decimal(150000), - unl: function() { return player.q.upgrades.includes(21)&&player.q.upgrades.includes(22) }, + unl() { return player.q.upgrades.includes(21)&&player.q.upgrades.includes(22) }, }, 32: { desc: "The Quirk Energy effect is squared.", cost: new Decimal(500000), - unl: function() { return player.q.upgrades.includes(23)||player.q.upgrades.includes(31) }, + unl() { return player.q.upgrades.includes(23)||player.q.upgrades.includes(31) }, }, 33: { desc: "Time Capsules are stronger based on their amount.", cost: new Decimal(2e9), - unl: function() { return player.q.upgrades.includes(23)&&player.q.upgrades.includes(31) }, - currently: function() { return player.t.points.plus(player.t.extCapsules.plus(tmp.freeExtCap)).plus(1).log10().plus(1) }, - effDisp: function(x) { return format(x.sub(1).times(100))+"% stronger" }, + unl() { return player.q.upgrades.includes(23)&&player.q.upgrades.includes(31) }, + currently() { return player.t.points.add(player.t.extCapsules.add(tmp.freeExtCap)).add(1).log10().add(1) }, + effDisp(x) { return format(x.sub(1).times(100))+"% stronger" }, }, 34: { desc: "Enhance Points boost Hindrance Spirit & Quirk gain.", cost: new Decimal(1e11), - unl: function() { return player.h.challs.includes(32) }, - currently: function() { return player.e.points.plus(1).log10().cbrt().plus(1) }, - effDisp: function(x) { return format(x)+"x" }, + unl() { return player.h.challs.includes(32) }, + currently() { return player.e.points.add(1).log10().cbrt().add(1) }, + effDisp(x) { return format(x)+"x" }, }, 41: { desc: "Space Buildings are 40% stronger.", cost: new Decimal(2.5e13), - unl: function() { return player.h.challs.includes(32) }, + unl() { return player.h.challs.includes(32) }, }, 42: { desc: "Enhancers are 40% stronger.", cost: new Decimal(2e14), - unl: function() { return player.h.challs.includes(32) }, + unl() { return player.h.challs.includes(32) }, }, 43: { desc: "Time Upgrade 2 is 1,500% stronger.", cost: new Decimal(1e16), - unl: function() { return player.h.challs.includes(32) }, + unl() { return player.h.challs.includes(32) }, }, 44: { desc: "You gain more Hindrance Spirit based on your Quirk Energy.", cost: new Decimal(4e16), - unl: function() { return player.h.challs.includes(32) }, - currently: function() { return player.q.energy.plus(1).log10().plus(1) }, - effDisp: function(x) { return format(x)+"x" }, + unl() { return player.h.challs.includes(32) }, + currently() { return player.q.energy.add(1).log10().add(1) }, + effDisp(x) { return format(x)+"x" }, }, 51: { desc: "Get free Quirk Layers based on your Quirk Energy.", cost: new Decimal("1e2100"), - unl: function() { return player.ba.upgrades.includes(52) }, - currently: function() { return player.q.energy.plus(1).log10().plus(1).log10() }, - effDisp: function(x) { return "+"+format(x) }, + unl() { return player.ba.upgrades.includes(52) }, + currently() { return player.q.energy.add(1).log10().add(1).log10() }, + effDisp(x) { return "+"+format(x) }, }, 52: { desc: "Quirk Layers are faster based on your Quirk Layers.", cost: new Decimal("1e2400"), - unl: function() { return player.ba.upgrades.includes(52) }, - currently: function() { return Decimal.pow(10, player.q.layers) }, - effDisp: function(x) { return format(x)+"x" }, + unl() { return player.ba.upgrades.includes(52) }, + currently() { return Decimal.pow(10, player.q.layers) }, + effDisp(x) { return format(x)+"x" }, }, 53: { desc: "The second Enhancer effect also multiplies the Booster/Generator base.", cost: new Decimal("1e2750"), - unl: function() { return player.ba.upgrades.includes(52) }, + unl() { return player.ba.upgrades.includes(52) }, }, 54: { desc: "Generator Upgrade 15's effect is raised to the power of 20.", cost: new Decimal("1e3125"), - unl: function() { return player.ba.upgrades.includes(52) }, + unl() { return player.ba.upgrades.includes(52) }, }, }, hb: { @@ -1112,26 +1113,26 @@ const LAYER_UPGS = { 11: { desc: "Super-Boosters are stronger based on your Hyper-Boosters.", cost: new Decimal(2), - unl: function() { return player.hb.unl }, - currently: function() { return player.hb.points.sqrt().div(4).plus(1) }, - effDisp: function(x) { return format(x.sub(1).times(100))+"% stronger" }, + unl() { return player.hb.unl }, + currently() { return player.hb.points.sqrt().div(4).add(1) }, + effDisp(x) { return format(x.sub(1).times(100))+"% stronger" }, }, 12: { desc: "Hyper-Boosters are stronger based on your Super-Boosters.", cost: new Decimal(2), - unl: function() { return player.hb.unl }, - currently: function() { return player.sb.points.div(10).plus(1).log10().plus(1) }, - effDisp: function(x) { return format(x.sub(1).times(100))+"% stronger" }, + unl() { return player.hb.unl }, + currently() { return player.sb.points.div(10).add(1).log10().add(1) }, + effDisp(x) { return format(x.sub(1).times(100))+"% stronger" }, }, 13: { desc: "This layer behaves as if you chose it first.", cost: new Decimal(2), - unl: function() { return player.hb.order>0||(player.ss.upgrades.includes(15))||player.hb.upgrades.includes(13)||(player.m.unl||player.ba.unl) }, + unl() { return player.hb.order>0||(player.ss.upgrades.includes(15))||player.hb.upgrades.includes(13)||(player.m.unl||player.ba.unl) }, }, 14: { desc: "Unlock 3 new Booster Upgrades.", cost: new Decimal(3), - unl: function() { return player.hb.upgrades.includes(13)&&player.ss.upgrades.includes(15) }, + unl() { return player.hb.upgrades.includes(13)&&player.ss.upgrades.includes(15) }, }, }, ss: { @@ -1140,72 +1141,72 @@ const LAYER_UPGS = { 11: { desc: "You get more Space based on your Subspace Energy.", cost: new Decimal(1), - unl: function() { return player.ss.unl }, - currently: function() { return player.ss.points.sqrt().times(150).floor() }, - effDisp: function(x) { return formatWhole(x)+" more Space" }, + unl() { return player.ss.unl }, + currently() { return player.ss.points.sqrt().times(150).floor() }, + effDisp(x) { return formatWhole(x)+" more Space" }, }, 12: { desc: "You generate Subspace faster based on your Points.", cost: new Decimal(2), - unl: function() { return player.ss.unl }, - currently: function() { return player.points.plus(1).log10().div(1e4).plus(1) }, - effDisp: function(x) { return format(x)+"x" }, + unl() { return player.ss.unl }, + currently() { return player.points.add(1).log10().div(1e4).add(1) }, + effDisp(x) { return format(x)+"x" }, }, 13: { desc: "Subspace's third effect is 50% stronger.", cost: new Decimal(2), - unl: function() { return player.ss.unl }, + unl() { return player.ss.unl }, }, 14: { desc: "Super-Boosters are 8.25% cheaper.", cost: new Decimal(2), - unl: function() { return player.hb.unl }, + unl() { return player.hb.unl }, }, 15: { desc: "This layer behaves as if you chose it first.", cost: new Decimal(3), - unl: function() { return player.ss.order>0||(player.hb.upgrades.includes(13))||player.ss.upgrades.includes(15)||(player.m.unl||player.ba.unl) }, + unl() { return player.ss.order>0||(player.hb.upgrades.includes(13))||player.ss.upgrades.includes(15)||(player.m.unl||player.ba.unl) }, }, 21: { desc: "Unlock 5 new Generator Upgrades.", cost: new Decimal(4), - unl: function() { return player.hb.upgrades.includes(13)&&player.ss.upgrades.includes(15) }, + unl() { return player.hb.upgrades.includes(13)&&player.ss.upgrades.includes(15) }, }, 22: { desc: "You generate Subspace faster based on its amount.", cost: new Decimal(5), - unl: function() { return player.ss.upgrades.includes(21)&&(player.h.challs.includes(51)||player.h.challs.includes(52)) }, - currently: function() { return player.ss.subspace.plus(1).root(2.25) }, - effDisp: function(x) { return format(x)+"x" }, + unl() { return player.ss.upgrades.includes(21)&&(player.h.challs.includes(51)||player.h.challs.includes(52)) }, + currently() { return player.ss.subspace.add(1).root(2.25) }, + effDisp(x) { return format(x)+"x" }, }, 23: { desc: "Subspace beyond 1e20 multiplies the Generator Power base.", cost: new Decimal(6), - unl: function() { return player.ba.upgrades.includes(24) }, - currently: function() { return player.ss.subspace.sub(1e20).max(0).div(1e20).plus(1).sqrt() }, - effDisp: function(x) { return format(x)+"x" }, + unl() { return player.ba.upgrades.includes(24) }, + currently() { return player.ss.subspace.sub(1e20).max(0).div(1e20).add(1).sqrt() }, + effDisp(x) { return format(x)+"x" }, }, 24: { desc: "Subspace Energy boosts Subspace gain.", cost: new Decimal(7), - unl: function() { return player.ba.upgrades.includes(24) }, - currently: function() { + unl() { return player.ba.upgrades.includes(24) }, + currently() { let x = player.ss.points if (player.ba.upgrades.includes(25)) x = x.times(LAYER_UPGS.ba[25].currently()) return Decimal.pow(2, x) }, - effDisp: function(x) { return format(x)+"x" }, + effDisp(x) { return format(x)+"x" }, }, 25: { desc: "Subspace is generated faster based on your Quirk Layers.", cost: new Decimal(8), - unl: function() { return player.ba.upgrades.includes(24) }, - currently: function() { + unl() { return player.ba.upgrades.includes(24) }, + currently() { let x = player.q.layers.sqrt() if (player.ba.upgrades.includes(25)) x = x.times(LAYER_UPGS.ba[25].currently()) return Decimal.pow(10, x) }, - effDisp: function(x) { return format(x)+"x" }, + effDisp(x) { return format(x)+"x" }, }, }, m: { @@ -1214,100 +1215,100 @@ const LAYER_UPGS = { 11: { desc: "Hexes boost all Spells.", cost: new Decimal(5), - unl: function() { return player.m.unl }, - currently: function() { return player.m.hexes.times(3).plus(1).log10().plus(1).log10().plus(1).log10().plus(1) }, - effDisp: function(x) { return format(x.sub(1).times(100))+"% stronger" }, + unl() { return player.m.unl }, + currently() { return player.m.hexes.times(3).add(1).log10().add(1).log10().add(1).log10().add(1) }, + effDisp(x) { return format(x.sub(1).times(100))+"% stronger" }, }, 12: { desc: "Unlock 2 new Hindrances.", cost: new Decimal(10), - unl: function() { return player.m.upgrades.includes(11) }, + unl() { return player.m.upgrades.includes(11) }, }, 13: { desc: "Hexes add to the Hyper-Booster base.", cost: new Decimal(15), - unl: function() { return player.m.upgrades.includes(11) }, - currently: function() { return player.m.hexes.plus(1).log10().plus(1).log10().plus(1).log10().div(2.5) }, - effDisp: function(x) { return "+"+format(x)+" to base" }, + unl() { return player.m.upgrades.includes(11) }, + currently() { return player.m.hexes.add(1).log10().add(1).log10().add(1).log10().div(2.5) }, + effDisp(x) { return "+"+format(x)+" to base" }, }, 14: { desc: "You get more Hexes based on your best Magic.", cost: new Decimal(20), - unl: function() { return player.m.upgrades.includes(12) }, - currently: function() { return player.m.best.times(1.2).plus(1).pow(0.8) }, - effDisp: function(x) { return format(x)+"x" }, + unl() { return player.m.upgrades.includes(12) }, + currently() { return player.m.best.times(1.2).add(1).pow(0.8) }, + effDisp(x) { return format(x)+"x" }, }, 21: { desc: "Spells 2 & 3 are stronger based on your Hindrance Spirit.", cost: new Decimal(1000), - unl: function() { return player.m.upgrades.includes(13) }, - currently: function() { return player.h.points.plus(1).log10().plus(1).log10().plus(1).log10().plus(1).sqrt() }, - effDisp: function(x) { return format(x.sub(1).times(100))+"% stronger" }, + unl() { return player.m.upgrades.includes(13) }, + currently() { return player.h.points.add(1).log10().add(1).log10().add(1).log10().add(1).sqrt() }, + effDisp(x) { return format(x.sub(1).times(100))+"% stronger" }, }, 22: { desc: "Spell 2 is 900% stronger.", cost: new Decimal(2500), - unl: function() { return player.m.upgrades.includes(14) }, + unl() { return player.m.upgrades.includes(14) }, }, 23: { desc: "The Time Energy cap starts 1e500x later.", cost: new Decimal(6500), - unl: function() { return player.m.upgrades.includes(21) }, + unl() { return player.m.upgrades.includes(21) }, }, 24: { desc: "Add free Quirk Layers based on your Boosters.", cost: new Decimal(80000), - unl: function() { return player.m.upgrades.includes(22) }, - currently: function() { return player.b.points.plus(1).log10().times(0.9) }, - effDisp: function(x) { return "+"+format(x) }, + unl() { return player.m.upgrades.includes(22) }, + currently() { return player.b.points.add(1).log10().times(0.9) }, + effDisp(x) { return "+"+format(x) }, }, 31: { desc: "Unlock a new Hindrance.", cost: new Decimal(2.5e6), - unl: function() { return player.m.upgrades.includes(23)&&player.sg.unl }, + unl() { return player.m.upgrades.includes(23)&&player.sg.unl }, }, 32: { desc: "Hyper-Boosters add free Space Buildings.", cost: new Decimal(5e9), - unl: function() { return player.m.upgrades.includes(24) }, - currently: function() { return player.hb.points.plus(1).pow(3) }, - effDisp: function(x) { return "+"+formatWhole(x) }, + unl() { return player.m.upgrades.includes(24) }, + currently() { return player.hb.points.add(1).pow(3) }, + effDisp(x) { return "+"+formatWhole(x) }, }, 33: { desc: "Hindrance Spirit adds to the Hyper-Booster base.", cost: new Decimal(2e10), - unl: function() { return player.m.upgrades.includes(31) }, - currently: function() { return player.h.points.plus(1).log10().plus(1).log10().plus(1).log10().div(2) }, - effDisp: function(x) { return "+"+format(x) }, + unl() { return player.m.upgrades.includes(31) }, + currently() { return player.h.points.add(1).log10().add(1).log10().add(1).log10().div(2) }, + effDisp(x) { return "+"+format(x) }, }, 34: { desc: "Add 1 free Quirk Layer.", cost: new Decimal(4e10), - unl: function() { return player.m.upgrades.includes(32) }, + unl() { return player.m.upgrades.includes(32) }, }, 41: { desc: "You can insert more Magic into Spells, making them stronger.", cost: new Decimal(2.5e14), - unl: function() { return player.m.upgrades.includes(34) }, + unl() { return player.m.upgrades.includes(34) }, }, 42: { desc: "Quirk Upgrade 5 is 50% stronger.", cost: new Decimal(6e14), - unl: function() { return player.m.upgrades.includes(34) }, + unl() { return player.m.upgrades.includes(34) }, }, 43: { desc: "Spells last longer based on your Hexes.", cost: new Decimal(1e15), - unl: function() { return player.m.upgrades.includes(41) }, - currently: function() { return player.m.hexes.plus(1).log10().plus(1).sqrt().min(86400) }, - effDisp: function(x) { return format(x)+"x" }, + unl() { return player.m.upgrades.includes(41) }, + currently() { return player.m.hexes.add(1).log10().add(1).sqrt().min(86400) }, + effDisp(x) { return format(x)+"x" }, }, 44: { desc: "Magic adds to the Time Capsule base.", cost: new Decimal(1.5e15), - unl: function() { return player.m.upgrades.includes(41) }, - currently: function() { return player.m.points.plus(1).log10().div(10) }, - effDisp: function(x) { return "+"+format(x) }, + unl() { return player.m.upgrades.includes(41) }, + currently() { return player.m.points.add(1).log10().div(10) }, + effDisp(x) { return "+"+format(x) }, }, }, ba: { @@ -1316,155 +1317,155 @@ const LAYER_UPGS = { 11: { desc: "All Balance Energy effects use better formulas.", cost: new Decimal(5), - unl: function() { return player.ba.unl }, + unl() { return player.ba.unl }, }, 12: { desc: "Subspace is generated faster based on your Positivity & Negativity.", cost: new Decimal(10), - unl: function() { return player.ba.upgrades.includes(11) }, - currently: function() { return (tmp.balEff2?tmp.balEff2:new Decimal(1)).max(1).pow(4) }, - effDisp: function(x) { return format(x)+"x" }, + unl() { return player.ba.upgrades.includes(11) }, + currently() { return (tmp.balEff2?tmp.balEff2:new Decimal(1)).max(1).pow(4) }, + effDisp(x) { return format(x)+"x" }, }, 13: { desc: "Multiply all Quirk Layers based on your Balance Power, and the Quirk Energy effect is cubed.", cost: new Decimal(25), - unl: function() { return player.ba.upgrades.includes(11) }, - currently: function() { return player.ba.power.plus(1).pow(1.25) }, - effDisp: function(x) { return format(x)+"x" }, + unl() { return player.ba.upgrades.includes(11) }, + currently() { return player.ba.power.add(1).pow(1.25) }, + effDisp(x) { return format(x)+"x" }, }, 14: { desc: "The Balance Power effect uses a better formula.", cost: new Decimal(120), - unl: function() { return player.ba.upgrades.includes(12) }, + unl() { return player.ba.upgrades.includes(12) }, }, 21: { desc: "Negativity boosts Super-Generator Power gain.", cost: new Decimal(300), - unl: function() { return player.ba.upgrades.includes(13)&&player.sg.unl }, - currently: function() { return player.ba.negativity.plus(1).sqrt() }, - effDisp: function(x) { return format(x)+"x" }, + unl() { return player.ba.upgrades.includes(13)&&player.sg.unl }, + currently() { return player.ba.negativity.add(1).sqrt() }, + effDisp(x) { return format(x)+"x" }, }, 22: { desc: "Balance Power boosts Positivity & Negativity gain.", cost: new Decimal(2000), - unl: function() { return player.ba.upgrades.includes(14) }, - currently: function() { return player.ba.power.plus(1).pow(0.15) }, - effDisp: function(x) { return format(x)+"x" }, + unl() { return player.ba.upgrades.includes(14) }, + currently() { return player.ba.power.add(1).pow(0.15) }, + effDisp(x) { return format(x)+"x" }, }, 23: { desc: "Super-Generators add to their base.", cost: new Decimal(7500), - unl: function() { return player.ba.upgrades.includes(21) }, - currently: function() { return player.sg.points.pow(2).div(2) }, - effDisp: function(x) { return "+"+format(x) }, + unl() { return player.ba.upgrades.includes(21) }, + currently() { return player.sg.points.pow(2).div(2) }, + effDisp(x) { return "+"+format(x) }, }, 24: { desc: "Unlock 3 new Subspace Upgrades.", cost: new Decimal(2e4), - unl: function() { return player.ba.upgrades.includes(22) }, + unl() { return player.ba.upgrades.includes(22) }, }, 31: { desc: "The Quirk Layer cost is adjusted based on your Balance Upgrades bought.", cost: new Decimal(4e5), - unl: function() { return player.ba.upgrades.includes(23) }, - currently: function() { return Decimal.div(0.8, Math.pow(player.ba.upgrades.length+1, 0.1)).plus(1.2) }, - effDisp: function(x) { return "2 -> "+format(x) }, + unl() { return player.ba.upgrades.includes(23) }, + currently() { return Decimal.div(0.8, Math.pow(player.ba.upgrades.length+1, 0.1)).add(1.2) }, + effDisp(x) { return "2 -> "+format(x) }, }, 32: { desc: "Enhancers are stronger based on your Positivity.", cost: new Decimal(5e5), - unl: function() { return player.ba.upgrades.includes(24) }, - currently: function() { return player.ba.positivity.plus(1).log10().plus(1).log10().plus(1).pow(2) }, - effDisp: function(x) { return format(x.sub(1).times(100))+"% stronger" }, + unl() { return player.ba.upgrades.includes(24) }, + currently() { return player.ba.positivity.add(1).log10().add(1).log10().add(1).pow(2) }, + effDisp(x) { return format(x.sub(1).times(100))+"% stronger" }, }, 33: { desc: "The Balance Power effect is squared.", cost: new Decimal(1e6), - unl: function() { return player.ba.upgrades.includes(31) }, + unl() { return player.ba.upgrades.includes(31) }, }, 34: { desc: "The Positivity & Negativity effect uses a better formula.", cost: new Decimal(2e6), - unl: function() { return player.ba.upgrades.includes(32) }, + unl() { return player.ba.upgrades.includes(32) }, }, 41: { desc: "The first Balance Energy effect is squared.", cost: new Decimal(2e10), - unl: function() { return player.ba.upgrades.includes(33)&&player.ba.upgrades.includes(34) }, + unl() { return player.ba.upgrades.includes(33)&&player.ba.upgrades.includes(34) }, }, 42: { desc: "The Space Building 1 effect is stronger based on your Space Building 1 amount.", cost: new Decimal(3e11), - unl: function() { return player.ba.upgrades.includes(33)&&player.ba.upgrades.includes(34) }, - currently: function() { return tmp.s.sb[1].plus(1).pow(0.8) }, - effDisp: function(x) { return "^"+format(x) }, + unl() { return player.ba.upgrades.includes(33)&&player.ba.upgrades.includes(34) }, + currently() { return tmp.s.sb[1].add(1).pow(0.8) }, + effDisp(x) { return "^"+format(x) }, }, 43: { desc: "The post-25 Extra Time Capsule cost scaling is disabled.", cost: new Decimal(1e12), - unl: function() { return player.ba.upgrades.includes(41)||player.ba.upgrades.includes(42) }, + unl() { return player.ba.upgrades.includes(41)||player.ba.upgrades.includes(42) }, }, 44: { desc: "Space Buildings are 50% stronger.", cost: new Decimal(2e12), - unl: function() { return player.ba.upgrades.includes(42)||player.ba.upgrades.includes(43) }, + unl() { return player.ba.upgrades.includes(42)||player.ba.upgrades.includes(43) }, }, 51: { desc: "Unlock 4 new Space Upgrades.", cost: new Decimal(2e13), - unl: function() { return player.ba.upgrades.includes(43) }, + unl() { return player.ba.upgrades.includes(43) }, }, 52: { desc: "Unlock 4 new Quirk Upgrades.", cost: new Decimal(1e14), - unl: function() { return player.ba.upgrades.includes(51) }, + unl() { return player.ba.upgrades.includes(51) }, }, 53: { desc: "The Positivity & Negativity boost to Balance Power gain is stronger based on your Super-Generator Power.", cost: new Decimal(2e19), - unl: function() { return player.ba.upgrades.includes(51)&&player.sg.unl }, - currently: function() { return player.sg.power.plus(1).log10().div(25).plus(1).sqrt() }, - effDisp: function(x) { return "^"+format(x) }, + unl() { return player.ba.upgrades.includes(51)&&player.sg.unl }, + currently() { return player.sg.power.add(1).log10().div(25).add(1).sqrt() }, + effDisp(x) { return "^"+format(x) }, }, 54: { desc: "Balance Power boosts the first Balance Energy effect (even stronger based on your Best Balance Power).", cost: new Decimal(5e25), - unl: function() { return player.ba.upgrades.includes(53) }, - currently: function() { return player.ba.power.plus(1).times(player.ba.best.plus(1).sqrt()).cbrt() }, - effDisp: function(x) { return format(x)+"x" }, + unl() { return player.ba.upgrades.includes(53) }, + currently() { return player.ba.power.add(1).times(player.ba.best.add(1).sqrt()).cbrt() }, + effDisp(x) { return format(x)+"x" }, }, 15: { desc: "Positivity and Negativity reduce the cost scaling of Space Buildings.", cost: new Decimal(1e200), - unl: function() { return player.sp.upgrades.includes(44) }, - currently: function() { return player.ba.positivity.add(1).div(player.ba.negativity.add(1)).log10().div(20).add(0.5).max(1) }, - effDisp: function(x) { return format(Decimal.sub(1, x.recip()).times(100))+"%" }, + unl() { return player.sp.upgrades.includes(44) }, + currently() { return player.ba.positivity.add(1).div(player.ba.negativity.add(1)).log10().div(20).add(0.5).max(1) }, + effDisp(x) { return format(Decimal.sub(1, x.recip()).times(100))+"%" }, }, 25: { desc: "Balance Power boosts Subspace Upgrades 9 and 10.", cost: new Decimal(1e245), - unl: function() { return player.sp.upgrades.includes(44) }, - currently: function() { return player.ba.power.add(1).log10().div(10).add(1).cbrt() }, - effDisp: function(x) { return "^"+format(x) }, + unl() { return player.sp.upgrades.includes(44) }, + currently() { return player.ba.power.add(1).log10().div(10).max(1).cbrt() }, + effDisp(x) { return "^"+format(x) }, }, 35: { desc: "Super-Upgrades are 25% stronger.", cost: new Decimal(1e270), - unl: function() { return player.sp.upgrades.includes(44) }, + unl() { return player.sp.upgrades.includes(44) }, }, 45: { desc: "Subspace reduces both Hyperspace costs.", - cost: new Decimal("1e5000"), - unl: function() { return player.sp.upgrades.includes(44) }, - currently: function() { return player.ss.subspace.add(1) }, - effDisp: function(x) { return format(x)+"x" }, + cost: new Decimal("6.66e666"), + unl() { return player.sp.upgrades.includes(44) }, + currently() { return player.ss.subspace.add(1).pow(0.02) }, + effDisp(x) { return format(x)+"x" }, }, 55: { - desc: "Best Hyperspace Energy slows down the Quirk Layer cost scaling.", - cost: new Decimal("1e5000"), - unl: function() { return player.sp.upgrades.includes(44) }, - currently: function() { return player.hs.best.add(1).pow(0.01) }, - effDisp: function(x) { return format(x)+"x" }, + desc: "Super-Prestige Points cheapen Quirk Layers.", + cost: new Decimal("1e920"), + unl() { return player.sp.upgrades.includes(44) }, + currently() { return player.sp.points.max(1).log10().pow(0.75).div(2) }, + effDisp(x) { return "-"+format(x)+" layers" }, }, }, ps: { @@ -1473,161 +1474,186 @@ const LAYER_UPGS = { 11: { desc: "Hindrance Spirits reduce the requirement of Phantom Souls.", cost: new Decimal(2), - unl: function() { return true }, - currently: function() { return player.h.points.add(1).pow(0.005) }, - effDisp: function(x) { return format(x)+"x" }, + unl() { return true }, + currently() { return player.h.points.add(1).pow(0.01) }, + effDisp(x) { return format(x)+"x" }, }, 12: { desc: "Phantom Souls are 20% stronger.", cost: new Decimal(5), - unl: function() { return true }, + unl() { return true }, }, 13: { desc: "Phantom Souls strengthen all Spells.", cost: new Decimal(7), - unl: function() { return true }, - currently: function() { return player.ps.points.div(2).max(1).log10().div(10).add(1) }, - effDisp: function(x) { return format(x.sub(1).times(100))+"%" }, + unl() { return true }, + currently() { return player.ps.points.div(2).max(1).log10().div(10).add(1) }, + effDisp(x) { return format(x.sub(1).times(100))+"%" }, }, 14: { desc: "The Life Essence layer acts like you choose it first.", cost: new Decimal(8), - unl: function() { return player.l.order > 0 || player.ps.upgrades.includes(14) }, + unl() { return player.l.order > 0 || player.ps.upgrades.includes(14) }, }, 21: { desc: "Unlock the fifth Life Booster.", cost: new Decimal(5), - unl: function() { return player.hs.unl }, + unl() { return player.hs.unl }, }, 22: { desc: "Phantom Souls reduce the post-12 scaling of all row 1 - 4 layer requirements.", - cost: new Decimal(1/0), - unl: function() { return player.hs.unl }, - currently: function() { return player.ps.points.div(100).add(1) }, - effDisp: function(x) { return format(x) + "x" }, + cost: new Decimal(19), + unl() { return player.hs.unl }, + currently() { return player.ps.points.div(100).add(1) }, + effDisp(x) { return format(x) + "x" }, }, 23: { - desc: "???", - cost: new Decimal(1/0), - unl: function() { return player.hs.unl }, + desc: "Unlock 4 new Super-Prestige Upgrades.", + cost: new Decimal(24), + unl() { return player.hs.unl }, }, 24: { desc: "The Hyperspace layer acts like you choose it first.", - cost: new Decimal(15), - unl: function() { return (player.hs.unl && player.hs.order > 0) || player.ps.upgrades.includes(24) }, + cost: new Decimal(17), + unl() { return (player.hs.unl && player.hs.order > 0) || player.ps.upgrades.includes(24) }, }, }, sp: { - rows: 3, - cols: 4, + rows: 4, + cols: 5, 11: { desc: "The Prestige Upgrade 3, 6, & 7 effects are raised to the power of 100.", cost: new Decimal(1), - unl: function() { return player.sp.unl }, + unl() { return player.sp.unl }, }, 12: { desc: "Total Super-Prestige Points boost Magic & Balance Power gain.", cost: new Decimal(2), - unl: function() { return player.sp.upgrades.includes(11) }, - currently: function() { return player.sp.total.plus(1).pow(2.5) }, - effDisp: function(x) { return format(x)+"x" }, + unl() { return player.sp.upgrades.includes(11) }, + currently() { return player.sp.total.add(1).pow(2.5) }, + effDisp(x) { return format(x)+"x" }, }, 13: { desc: "Unlock a new Spell.", cost: new Decimal(3), - unl: function() { return player.sp.upgrades.includes(12) }, + unl() { return player.sp.upgrades.includes(12) }, }, 14: { desc: "Your Best Super-Prestige Points boost Hex & Balance Energy gain.", cost: new Decimal(8), - unl: function() { return player.sp.upgrades.includes(13) }, - currently: function() { return player.sp.best.plus(1).pow(1.9) }, - effDisp: function(x) { return format(x)+"x" }, + unl() { return player.sp.upgrades.includes(13) }, + currently() { return player.sp.best.add(1).pow(1.9) }, + effDisp(x) { return format(x)+"x" }, }, 21: { desc: "Super-Prestige Points add to the Super-Generator base.", cost: new Decimal(15), - unl: function() { return player.sp.upgrades.includes(11) }, - currently: function() { return player.sp.points.plus(1).log10().plus(1).log10().times(1.5) }, - effDisp: function(x) { return "+"+format(x) }, + unl() { return player.sp.upgrades.includes(11) }, + currently() { return player.sp.points.add(1).log10().add(1).log10().times(1.5) }, + effDisp(x) { return "+"+format(x) }, }, 22: { desc: 'The effects of "Anti-Upgrades" & "Prestigeless" Hindrances are 24,900% stronger.', cost: new Decimal(20), - unl: function() { return player.sp.upgrades.includes(12)||player.sp.upgrades.includes(21) }, + unl() { return player.sp.upgrades.includes(12)||player.sp.upgrades.includes(21) }, }, 23: { desc: "Spells are stronger based on your Total Super-Prestige Points.", cost: new Decimal(30), - unl: function() { return player.sp.upgrades.includes(13)||player.sp.upgrades.includes(22) }, - currently: function() { + unl() { return player.sp.upgrades.includes(13)||player.sp.upgrades.includes(22) }, + currently() { let sp = player.sp.total if (sp.gte(250)) sp = sp.log10().times(250/Math.log10(250)).min(sp) - return sp.plus(1).log10().div(5).plus(1) + return sp.add(1).log10().div(5).add(1) }, - effDisp: function(x) { return format(x.sub(1).times(100))+"% stronger" }, + effDisp(x) { return format(x.sub(1).times(100))+"% stronger" }, }, 24: { desc: "Super-Prestige Points boost Super-Prestige Point gain.", cost: new Decimal(40), - unl: function() { return player.sp.upgrades.includes(14)||player.sp.upgrades.includes(23) }, - currently: function() { + unl() { return player.sp.upgrades.includes(14)||player.sp.upgrades.includes(23) }, + currently() { let sp = player.sp.points if (sp.gte(2e4)) sp = sp.cbrt().times(Math.pow(2e4, 2/3)); - return sp.plus(1).sqrt() + return sp.add(1).sqrt() }, - effDisp: function(x) { return format(x)+"x" }, + effDisp(x) { return format(x)+"x" }, }, 31: { desc: "Super-Generators are 45% cheaper.", cost: new Decimal(1000), - unl: function() { return player.sp.upgrades.includes(22) }, + unl() { return player.sp.upgrades.includes(22) }, }, 32: { desc: "Prestige Upgrade 7 softcaps later based on your Super-Prestige Points.", cost: new Decimal(4000), - unl: function() { return player.sp.upgrades.includes(23)&&player.sp.upgrades.includes(31) }, - currently: function() { return player.sp.points.plus(1).log10().plus(1).pow(1e4) }, - effDisp: function(x) { return format(x.pow(player.sp.upgrades.includes(11)?100:1))+"x later" }, + unl() { return player.sp.upgrades.includes(23)&&player.sp.upgrades.includes(31) }, + currently() { return player.sp.points.add(1).log10().add(1).pow(1e4) }, + effDisp(x) { return format(x.pow(player.sp.upgrades.includes(11)?100:1))+"x later" }, }, 33: { desc: "Points boost Super-Prestige Point gain.", cost: new Decimal(1e4), - unl: function() { return player.sp.upgrades.includes(24)&&player.sp.upgrades.includes(32) }, - currently: function() { return player.points.plus(1).log10().pow(0.1) }, - effDisp: function(x) { return format(x)+"x" }, + unl() { return player.sp.upgrades.includes(24)&&player.sp.upgrades.includes(32) }, + currently() { return player.points.add(1).log10().pow(0.1) }, + effDisp(x) { return format(x)+"x" }, }, 34: { desc: "Boosters & Generators are 25% stronger.", cost: new Decimal(1.5e5), - unl: function() { return player.sp.upgrades.includes(33) }, + unl() { return player.sp.upgrades.includes(33) }, }, 41: { desc: "Gain more Life Essence based on total SP.", cost: new Decimal(8e5), - unl: function() { return player.l.unl }, - currently: function() { return player.sp.total.div(5e5).add(1).sqrt() }, - effDisp: function(x) { return format(x)+"x" }, + unl() { return player.l.unl }, + currently() { return player.sp.total.div(5e5).add(1).sqrt() }, + effDisp(x) { return format(x)+"x" }, }, 42: { desc: "Life Essence speeds up the Life Power production.", - cost: new Decimal(1.5e6), - unl: function() { return player.l.unl }, - currently: function() { return player.l.points.add(1).log(1.5).add(1).cbrt() }, - effDisp: function(x) { return format(x)+"x" }, + cost: new Decimal(1e6), + unl() { return player.l.unl }, + currently() { + if (player.sp.upgrades.includes(15)) return Decimal.pow(6, player.l.points.max(1).log10().cbrt()) + return player.l.points.add(1).log10().times(100).add(1).cbrt() + }, + effDisp(x) { return format(x)+"x" }, }, 43: { desc: "Gain more Hyperspace Energy based on total SP.", cost: new Decimal(6e5), - unl: function() { return player.hs.unl }, - currently: function() { return player.sp.total.div(7.5e5).add(1).sqr() }, - effDisp: function(x) { return format(x)+"x" }, + unl() { return player.hs.unl }, + currently() { return player.sp.total.div(7.5e5).add(1).sqr() }, + effDisp(x) { return format(x)+"x" }, }, 44: { desc: "Unlock 5 new Balance Upgrades.", cost: new Decimal(1.2e6), - unl: function() { return player.hs.unl }, - } + unl() { return player.hs.unl }, + }, + 15: { + desc: "Life Essence speeds up the Life Power production more.", + cost: new Decimal(1e18), + unl() { return player.ps.upgrades.includes(23) }, + }, + 25: { + desc: "Super-Prestige Points strength all Subspace effects.", + cost: new Decimal(1.5e21), + unl() { return player.ps.upgrades.includes(23) }, + currently() { return player.sp.points.log10().div(15).sqrt().max(1) }, + effDisp(x) { return format(x.sub(1).times(100))+"%" }, + }, + 35: { + desc: "Reduce the cost scaling of Hyperspace by 20%.", + cost: new Decimal(2.222e22), + unl() { return player.ps.upgrades.includes(23) }, + }, + 45: { + desc: "Subtract the cost of Imperium Buildings by 3 and you build 10x faster.", + cost: new Decimal(1e23), + unl() { return player.ps.upgrades.includes(23) }, + }, }, } @@ -1751,6 +1777,7 @@ function load() { checkForVars(); convertToDecimal(); versionCheck(); + changeTheme(); changeTreeQuality(); updateTemp(); updateTemp(); @@ -1801,8 +1828,10 @@ function versionCheck() { } if (setVersion) { + if (player.versionType == "real" && VERSION.num > player.version) player.keepGoing = false player.versionType = getStartPlayer().versionType - player.version = getStartPlayer().version + player.version = VERSION.num + player.beta = VERSION.beta } } @@ -1913,7 +1942,7 @@ function changeTreeQuality() { var on = player.hqTree document.body.style.setProperty('--hqProperty1', on ? "2px solid" : "4px solid") document.body.style.setProperty('--hqProperty2a', on ? "-4px -4px 4px rgba(0, 0, 0, 0.25) inset" : "-4px -4px 4px rgba(0, 0, 0, 0) inset") - document.body.style.setProperty('--hqProperty2b', on ? "0px 0px 20px black" : "") + document.body.style.setProperty('--hqProperty2b', on ? "0px 0px 20px var(--background)" : "") document.body.style.setProperty('--hqProperty3', on ? "2px 2px 4px rgba(0, 0, 0, 0.25)" : "none") } @@ -2014,7 +2043,7 @@ function canBuyMax(layer) { return player.ba.best.gte(8) break; case "ps": - return player.ps.best.gte(3) + return player.ps.best.gte(5) break; case "i": return player.i.best.gte(3) @@ -2051,7 +2080,7 @@ function getLayerReq(layer) { if (player.l.order>0) req = new Decimal("1e345") break; case "hs": - if (player.hs.order>0) req = new Decimal(900) + if (player.hs.order>0) req = new Decimal(910) break; } return req @@ -2134,7 +2163,6 @@ function getLayerGainMult(layer) { case "sp": if (player.sp.upgrades.includes(24)) mult = mult.times(LAYER_UPGS.sp[24].currently()) if (player.sp.upgrades.includes(33)) mult = mult.times(LAYER_UPGS.sp[33].currently()) - if (tmp.s !== undefined && tmp.s.trueSbUnl >= 10) mult = mult.times(tmp.s.sbEff[10]) break; case "l": if (player.sp.upgrades.includes(41)) mult = mult.times(LAYER_UPGS.sp[41].currently()) @@ -2178,7 +2206,7 @@ function getResetGain(layer) { } if (gain.gte(1225)) gain = gain.times(Decimal.pow(1225, 9)).pow(0.1) } - return gain.floor().sub(player[layer].points).plus(1).max(1); + return gain.floor().sub(player[layer].points).add(1).max(1); } else { if (tmp.layerAmt[layer].lt(tmp.layerReqs[layer])) return new Decimal(0) let gain = tmp.layerAmt[layer].div(tmp.layerReqs[layer]).pow(LAYER_EXP[layer]).times(tmp.gainMults[layer]).pow(tmp.gainExp[layer]) @@ -2202,7 +2230,7 @@ function getNextAt(layer) { if (LAYER_RES_CEIL.includes(layer)) cost = cost.ceil() return cost; } else { - let next = tmp.resetGain[layer].plus(1) + let next = tmp.resetGain[layer].add(1) if (next.gte("e1e7")) next = next.div("e5e6").pow(2) next = next.root(tmp.gainExp[layer]).div(tmp.gainMults[layer]).root(LAYER_EXP[layer]).times(tmp.layerReqs[layer]).max(tmp.layerReqs[layer]) if (LAYER_RES_CEIL.includes(layer)) next = next.ceil() @@ -2282,20 +2310,23 @@ function layerShown(layer) { case "i": return player.ps.unl && player.hs.unl break + /* case "mb": - return false //player.ps.unl && player.hs.unl + return player.i.unl break case "ge": - return false //player.ps.unl && player.hs.unl + return player.i.unl break case "ma": - return false //player.ps.unl && player.hs.unl + return player.i.unl break + */ } + return } function layerUnl(layer) { - return LAYERS.includes(layer) && (player[layer].unl || tmp.layerAmt[layer].gte(tmp.layerReqs[layer])) + return LAYERS.includes(layer) && (player[layer].unl || (tmp.layerAmt[layer].gte(tmp.layerReqs[layer]) && layerShown(layer))) } function rowReset(row, layer) { @@ -2464,9 +2495,9 @@ function rowReset(row, layer) { } function addPoints(layer, gain) { - player[layer].points = player[layer].points.plus(gain).max(0) + player[layer].points = player[layer].points.add(gain).max(0) player[layer].best = player[layer].best.max(player[layer].points) - if (player[layer].total) player[layer].total = player[layer].total.plus(gain) + if (player[layer].total) player[layer].total = player[layer].total.add(gain) } function generatePoints(layer, diff) { @@ -2560,15 +2591,15 @@ function getScaling12Boosters() { function addToBoosterBase() { let toAdd = new Decimal(0) - if (player.b.upgrades.includes(12)) toAdd = toAdd.plus(LAYER_UPGS.b[12].currently()) - if (player.b.upgrades.includes(13)) toAdd = toAdd.plus(LAYER_UPGS.b[13].currently()) - if (player.t.upgrades.includes(11)&&!(tmp.challActive?tmp.challActive.h[12]:true)) toAdd = toAdd.plus(LAYER_UPGS.t[11].currently()) - if (player.t.upgrades.includes(31)&&!(tmp.challActive?tmp.challActive.h[12]:true)) toAdd = toAdd.plus(25) - if (player.t.upgrades.includes(33)&&!(tmp.challActive?tmp.challActive.h[12]:true)) toAdd = toAdd.plus(40) - if (player.e.unl) toAdd = toAdd.plus(tmp.enhEff2) - if (player.e.upgrades.includes(11)&&!(tmp.challActive?tmp.challActive.h[12]:true)) toAdd = toAdd.plus(LAYER_UPGS.e[11].currently().b) - if (player.s.unl && tmp.s !== undefined) toAdd = toAdd.plus(tmp.s.sbEff[2]) - if (player.sb.upgrades.includes(21)) toAdd = toAdd.plus(LAYER_UPGS.sb[21].currently()) + if (player.b.upgrades.includes(12)) toAdd = toAdd.add(LAYER_UPGS.b[12].currently()) + if (player.b.upgrades.includes(13)) toAdd = toAdd.add(LAYER_UPGS.b[13].currently()) + if (player.t.upgrades.includes(11)&&!(tmp.challActive?tmp.challActive.h[12]:true)) toAdd = toAdd.add(LAYER_UPGS.t[11].currently()) + if (player.t.upgrades.includes(31)&&!(tmp.challActive?tmp.challActive.h[12]:true)) toAdd = toAdd.add(25) + if (player.t.upgrades.includes(33)&&!(tmp.challActive?tmp.challActive.h[12]:true)) toAdd = toAdd.add(40) + if (player.e.unl) toAdd = toAdd.add(tmp.enhEff2) + if (player.e.upgrades.includes(11)&&!(tmp.challActive?tmp.challActive.h[12]:true)) toAdd = toAdd.add(LAYER_UPGS.e[11].currently().b) + if (player.s.unl && tmp.s !== undefined) toAdd = toAdd.add(tmp.s.sbEff[2]) + if (player.sb.upgrades.includes(21)) toAdd = toAdd.add(LAYER_UPGS.sb[21].currently()) if (player.b.upgrades.includes(31)) toAdd = toAdd.times(LAYER_UPGS.b[31].currently()) if (player.q.upgrades.includes(53)) toAdd = toAdd.times(tmp.enhEff2) @@ -2578,9 +2609,9 @@ function addToBoosterBase() { function getFreeBoosters() { let free = new Decimal(0) - if (player.t.upgrades.includes(24)&&!(tmp.challActive?tmp.challActive.h[12]:true)) free = free.plus(18) - if (player.b.upgrades.includes(32)) free = free.plus(LAYER_UPGS.b[32].currently()) - if (player.b.upgrades.includes(33)) free = free.plus(100) + if (player.t.upgrades.includes(24)&&!(tmp.challActive?tmp.challActive.h[12]:true)) free = free.add(18) + if (player.b.upgrades.includes(32)) free = free.add(LAYER_UPGS.b[32].currently()) + if (player.b.upgrades.includes(33)) free = free.add(100) return free } @@ -2593,12 +2624,12 @@ function getBoosterPower() { function addToGenBase() { let toAdd = new Decimal(0) - if (player.g.upgrades.includes(12)) toAdd = toAdd.plus(LAYER_UPGS.g[12].currently()) - if (player.g.upgrades.includes(13)) toAdd = toAdd.plus(LAYER_UPGS.g[13].currently()) - if (player.g.upgrades.includes(33)) toAdd = toAdd.plus(LAYER_UPGS.g[33].currently()) - if (player.e.unl) toAdd = toAdd.plus(tmp.enhEff2) - if (player.e.upgrades.includes(11)&&!(tmp.challActive?tmp.challActive.h[12]:true)) toAdd = toAdd.plus(LAYER_UPGS.e[11].currently().g) - if (player.s.unl && tmp.s !== undefined) toAdd = toAdd.plus(tmp.s.sbEff[2]) + if (player.g.upgrades.includes(12)) toAdd = toAdd.add(LAYER_UPGS.g[12].currently()) + if (player.g.upgrades.includes(13)) toAdd = toAdd.add(LAYER_UPGS.g[13].currently()) + if (player.g.upgrades.includes(33)) toAdd = toAdd.add(LAYER_UPGS.g[33].currently()) + if (player.e.unl) toAdd = toAdd.add(tmp.enhEff2) + if (player.e.upgrades.includes(11)&&!(tmp.challActive?tmp.challActive.h[12]:true)) toAdd = toAdd.add(LAYER_UPGS.e[11].currently().g) + if (player.s.unl && tmp.s !== undefined) toAdd = toAdd.add(tmp.s.sbEff[2]) if (player.h.challs.includes(51)) toAdd = toAdd.times(LAYER_CHALLS.h[51].currently()) if (player.q.upgrades.includes(53)) toAdd = toAdd.times(tmp.enhEff2) @@ -2626,7 +2657,7 @@ function getGenPowerGainMult() { function getGenPowerEffExp() { let exp = new Decimal(1/3) - if (player.s.upgrades.includes(34)&&!(tmp.challActive?tmp.challActive.h[12]:true)) exp = exp.plus(LAYER_UPGS.s[34].currently()) + if (player.s.upgrades.includes(34)&&!(tmp.challActive?tmp.challActive.h[12]:true)) exp = exp.add(LAYER_UPGS.s[34].currently()) if (player.b.upgrades.includes(21)) exp = exp.times(2) if (player.b.upgrades.includes(22)) exp = exp.times(1.2) if (player.e.upgrades.includes(21)&&!(tmp.challActive?tmp.challActive.h[12]:true)) exp = exp.times(1.15) @@ -2637,7 +2668,7 @@ function getGenPowerEffExp() { function getGenPowerEff() { if (tmp.challActive ? tmp.challActive.h[11] : true) return new Decimal(1) - let eff = player.g.power.plus(1).pow(getGenPowerEffExp()); + let eff = player.g.power.add(1).pow(getGenPowerEffExp()); return eff } @@ -2697,21 +2728,21 @@ function buyEnhancer() { let cost = getEnhancerCost() if (player.e.points.lt(cost)) return player.e.points = player.e.points.sub(cost) - player.e.enhancers = player.e.enhancers.plus(1) + player.e.enhancers = player.e.enhancers.add(1) } function maxEnhancers() { let target = player.e.points.max(1).log(2).root(1.5) if (target.gte(25)) target = target.times(25).sqrt() - target = target.plus(1).floor() + target = target.add(1).floor() if (target.lte(player.e.enhancers)) return player.e.enhancers = player.e.enhancers.max(target) } function getFreeExtCapsules() { let amt = new Decimal(0) - if (player.t.upgrades.includes(12)&&!(tmp.challActive?tmp.challActive.h[12]:true)) amt = amt.plus(1) - if (player.h.unl) amt = amt.plus(tmp.layerEffs.h) + if (player.t.upgrades.includes(12)&&!(tmp.challActive?tmp.challActive.h[12]:true)) amt = amt.add(1) + if (player.h.unl) amt = amt.add(tmp.layerEffs.h) return amt } @@ -2733,7 +2764,7 @@ function getTimeEnergyEff() { if (!player.t.unl) return new Decimal(1) let exp = 1.2 if (player.t.upgrades.includes(21)&&!(tmp.challActive?tmp.challActive.h[12]:true)) exp = 1.75 - let eff = player.t.energy.plus(1).pow(exp) + let eff = player.t.energy.add(1).pow(exp) return eff; } @@ -2764,7 +2795,7 @@ function getTimeEnergyLimitMult() { function getExtCapsuleCost() { let amt = player.t.extCapsules if (amt.gte(25) && !player.ba.upgrades.includes(43)) amt = amt.pow(2).div(25) - let cost = amt.times(0.4).pow(1.2).plus(1).times(10) + let cost = amt.times(0.4).pow(1.2).add(1).times(10) return cost.floor() } @@ -2773,19 +2804,19 @@ function buyExtCapsule() { let cost = getExtCapsuleCost() if (player.b.points.lt(cost)) return player.b.points = player.b.points.sub(cost) - player.t.extCapsules = player.t.extCapsules.plus(1) + player.t.extCapsules = player.t.extCapsules.add(1) } function maxExtTimeCapsules() { - let target = player.b.points.plus(1).div(10).sub(1).root(1.2).div(0.4) + let target = player.b.points.add(1).div(10).sub(1).root(1.2).div(0.4) if (target.gte(25)&&!player.ba.upgrades.includes(43)) target = target.times(25).sqrt() - target = target.plus(1).floor().max(0) + target = target.add(1).floor().max(0) player.t.extCapsules = player.t.extCapsules.max(target) } function addToTimeBase() { let toAdd = new Decimal(0) - if (player.m.upgrades.includes(44)) toAdd = toAdd.plus(LAYER_UPGS.m[44].currently()) + if (player.m.upgrades.includes(44)) toAdd = toAdd.add(LAYER_UPGS.m[44].currently()) return toAdd } @@ -2797,10 +2828,10 @@ function multiplyToTimeBase() { function getSpace() { let baseSpace = player.s.best.pow(1.1).times(3).floor() - if (player.s.upgrades.includes(13)&&!(tmp.challActive?tmp.challActive.h[12]:true)) baseSpace = baseSpace.plus(2); - if (player.s.upgrades.includes(24)&&!(tmp.challActive?tmp.challActive.h[12]:true)) baseSpace = baseSpace.plus(3); - if (player.ss.unl) baseSpace = baseSpace.plus(tmp.ssEff1) - if (player.ss.upgrades.includes(11)) baseSpace = baseSpace.plus(LAYER_UPGS.ss[11].currently()) + if (player.s.upgrades.includes(13)&&!(tmp.challActive?tmp.challActive.h[12]:true)) baseSpace = baseSpace.add(2); + if (player.s.upgrades.includes(24)&&!(tmp.challActive?tmp.challActive.h[12]:true)) baseSpace = baseSpace.add(3); + if (player.ss.unl) baseSpace = baseSpace.add(tmp.ssEff1) + if (player.ss.upgrades.includes(11)) baseSpace = baseSpace.add(LAYER_UPGS.ss[11].currently()) return baseSpace.sub(player.s.spent).max(0) } @@ -2808,97 +2839,102 @@ let SPACE_BUILDINGS = { max: 10, 1: { cost: new Decimal(1e3), - eff: function(x) { + eff(x) { let ret = Decimal.pow(Decimal.add(1, x.pow((player.s.upgrades.includes(31)&&!(tmp.challActive?tmp.challActive.h[12]:true))?2.75:1)), player.s.points.sqrt()).times(Decimal.mul(4, x.pow((player.s.upgrades.includes(31)&&!(tmp.challActive?tmp.challActive.h[12]:true))?2.75:1))).max(1) if (player.ba.upgrades.includes(42)) ret = ret.pow(LAYER_UPGS.ba[42].currently()) return ret }, - effDesc: function(x) { + effDesc(x) { return "Space Energy boosts Point gain & Prestige Point gain ("+format(x)+"x)" } }, 2: { cost: new Decimal(1e10), - eff: function(x) { - if (player.s.upgrades.includes(43)) return Decimal.pow(1.0001, x).times(x.sqrt()) - else return x.sqrt() + eff(x) { + if (player.s.upgrades.includes(43)) { + x = Decimal.pow(1.0001, x).times(x.sqrt()) + if (x.gte("e600")) x = Decimal.pow(10, x.log10().times(600).sqrt()) + return x + } else return x.sqrt() }, - effDesc: function(x) { + effDesc(x) { return "Adds to base of Booster/Generator effects by "+format(x) } }, 3: { cost: new Decimal(1e25), - eff: function(x) { - return Decimal.pow(1e18, x.pow(0.9)) + eff(x) { + x = Decimal.pow(1e18, x.pow(0.9)) + if (x.gte("e3e9")) x = Decimal.pow(10, x.log10().times(9e18).cbrt()) + return x }, - effDesc: function(x) { + effDesc(x) { return "Makes Boosters/Generators cheaper by "+format(x)+"x" } }, 4: { cost: new Decimal(1e48), - eff: function(x) { - let ret = x.plus(1).pow(1.25) + eff(x) { + let ret = x.add(1).pow(1.25) if (ret.gte(1e6)) ret = ret.log10().times(1e6/6) return ret; }, - effDesc: function(x) { + effDesc(x) { return "Booster Upgrade 6's effect is raised to the power of "+format(x) } }, 5: { cost: new Decimal(1e100), - eff: function(x) { + eff(x) { return x.sqrt().times(2) }, - effDesc: function(x) { + effDesc(x) { return "Add "+format(x)+" free levels to all previous Space Buildings" } }, 6: { cost: new Decimal("e6000000"), - eff: function(x) { - return x.div(1e3).add(1).cbrt() + eff(x) { + return x.div(1e3).add(1).sqrt() }, - effDesc: function(x) { + effDesc(x) { return "You produce Life Power " + format(x) + "x faster" } }, 7: { - cost: new Decimal(1e100), - eff: function(x) { + cost: new Decimal("e6500000"), + eff(x) { return Decimal.pow(1.1, x) }, - effDesc: function(x) { + effDesc(x) { return "Reduce the requirement of Phantom Souls by " + format(x) + "x" } }, 8: { - cost: new Decimal(1e100), - eff: function(x) { - return x.pow(0.25).div(10) + cost: new Decimal("e7000000"), + eff(x) { + return x.pow(0.1).div(4) }, - effDesc: function(x) { + effDesc(x) { return "Gain " + format(x) + " free extra Quirk layers" } }, 9: { - cost: new Decimal(1e100), - eff: function(x) { - return x.max(1).log10().add(1) + cost: new Decimal("e8000000"), + eff(x) { + return x.max(1).log10().div(2).add(1).cbrt() }, - effDesc: function(x) { - return "Boost all previous Space Buildings by " + format(x.sub(1).times(100)) + "%" + effDesc(x) { + return "Reduce the cost scaling of Hyperspace by " + format(Decimal.sub(1, x.recip()).times(100)) + "%" } }, 10: { - cost: new Decimal(1e100), - eff: function(x) { - return Decimal.pow(1.1, x.sqrt()) + cost: new Decimal("e9500000"), + eff(x) { + return x.max(1).log10().div(5).max(1) }, - effDesc: function(x) { - return "Gain " + format(x) + "x more Super-Prestige Points" + effDesc(x) { + return "Super-Upgrades are " + format(x.sub(1).times(100)) + "% stronger" } }, } @@ -2931,7 +2967,7 @@ function getSpaceBuildingTarg(x) { let inputVal = SPACE_BUILDINGS[x].cost let target = player.g.power.div(tmp.s.sbCostMult).div(inputVal).max(1).log(inputVal).pow(1/1.35).div(tmp.s.sbCostMod) if (target.gte(100)) target = target.times(100).sqrt() - return target.plus(1).floor() + return target.add(1).floor() } function getSpaceBuildingPow() { @@ -2951,10 +2987,10 @@ function getSpaceBuildingPow() { function getExtraBuildingLevels() { let lvl = new Decimal(0) - if (player.s.upgrades.includes(11)&&!(tmp.challActive?tmp.challActive.h[12]:true)) lvl = lvl.plus(1); - if (player.s.upgrades.includes(14)&&!(tmp.challActive?tmp.challActive.h[12]:true)) lvl = lvl.plus(1); - if (player.q.upgrades.includes(31)) lvl = lvl.plus(1); - if (player.m.upgrades.includes(32)) lvl = lvl.plus(LAYER_UPGS.m[32].currently()) + if (player.s.upgrades.includes(11)&&!(tmp.challActive?tmp.challActive.h[12]:true)) lvl = lvl.add(1); + if (player.s.upgrades.includes(14)&&!(tmp.challActive?tmp.challActive.h[12]:true)) lvl = lvl.add(1); + if (player.q.upgrades.includes(31)) lvl = lvl.add(1); + if (player.m.upgrades.includes(32)) lvl = lvl.add(LAYER_UPGS.m[32].currently()) return lvl } @@ -2962,12 +2998,11 @@ function getSpaceBuildingEff(x) { let bought if (!player.s.unl) bought = new Decimal(0) else { - bought = tmp.s.sb[x].plus(tmp.s.sbExtra) - if (x<9) bought = bought.times(fixValue(tmp.s.sbEff[9], 1)) - if (x<5) bought = bought.plus(fixValue(tmp.s.sbEff[5])) + bought = tmp.s.sb[x].add(tmp.s.sbExtra) + if (x<5) bought = bought.add(fixValue(tmp.s.sbEff[5])) var compressLvl = new Decimal(1) - if (tmp.i !== undefined && layerUnl("i") && tmp.i.compressed >= x) compressLvl = tmp.s.sbUnl.sub(x - SPACE_BUILDINGS.max - 1).ceil() + if (tmp.i !== undefined && layerUnl("i") && tmp.i.compressed >= x) compressLvl = tmp.s.sbUnl.sub(x - SPACE_BUILDINGS.max - 1).ceil().cbrt() bought = bought.times(tmp.s.sbPow).times(compressLvl) if (tmp.hs !== undefined && layerUnl("hs")) { @@ -3053,9 +3088,9 @@ function getSuperBoosterPow() { function addToSBBase() { let toAdd = new Decimal(0) - if (player.h.challs.includes(22)) toAdd = toAdd.plus(0.25) - if (player.h.challs.includes(41)) toAdd = toAdd.plus(0.25) - if (player.sb.upgrades.includes(22)) toAdd = toAdd.plus(LAYER_UPGS.sb[22].currently()) + if (player.h.challs.includes(22)) toAdd = toAdd.add(0.25) + if (player.h.challs.includes(41)) toAdd = toAdd.add(0.25) + if (player.sb.upgrades.includes(22)) toAdd = toAdd.add(LAYER_UPGS.sb[22].currently()) if (player.hb.unl) toAdd = toAdd.times(tmp.layerEffs.hb) return toAdd } @@ -3069,16 +3104,16 @@ function getQuirkLayerCostBase() { function getQuirkLayerCost(layers) { if (layers === undefined) layers = player.q.layers if (layers.gte(20)) layers = Decimal.pow(1.05, layers.sub(20)).times(20) - if (player.ba.upgrades.includes(55)) layers = layers.div(LAYER_UPGS.ba[55].currently()) + if (player.ba.upgrades.includes(55)) layers = layers.sub(LAYER_UPGS.ba[55].currently()) let cost = Decimal.pow(tmp.qCB, Decimal.pow(tmp.qCB, layers).sub(1)) return cost.max(1); } function getQuirkLayerTarg() { let targ = player.q.points.log(tmp.qCB).add(1).log(tmp.qCB) - if (player.ba.upgrades.includes(55)) targ = targ.times(LAYER_UPGS.ba[55].currently()) - if (targ.gte(20)) targ = targ.div(20).log(1.05).plus(20) - return targ.plus(1).floor() + if (player.ba.upgrades.includes(55)) targ = targ.add(LAYER_UPGS.ba[55].currently()) + if (targ.gte(20)) targ = targ.div(20).log(1.05).add(20) + return targ.add(1).floor() } function getQuirkLayerMult() { @@ -3094,9 +3129,9 @@ function getQuirkLayerMult() { function getExtraQuirkLayers() { let layers = new Decimal(0); - if (player.q.upgrades.includes(51)) layers = layers.plus(LAYER_UPGS.q[51].currently()) - if (player.m.upgrades.includes(24)) layers = layers.plus(LAYER_UPGS.m[24].currently()) - if (player.m.upgrades.includes(34)) layers = layers.plus(1) + if (player.q.upgrades.includes(51)) layers = layers.add(LAYER_UPGS.q[51].currently()) + if (player.m.upgrades.includes(24)) layers = layers.add(LAYER_UPGS.m[24].currently()) + if (player.m.upgrades.includes(34)) layers = layers.add(1) if (tmp.s !== undefined && tmp.s.trueSbUnl >= 8) layers = layers.add(tmp.s.sbEff[8]) return layers; } @@ -3104,13 +3139,13 @@ function getExtraQuirkLayers() { function getQuirkEnergyGainExp() { let mult = new Decimal(1) if (spellActive(3)) mult = mult.times(tmp.spellEffs[3]) - return player.q.layers.plus(getExtraQuirkLayers()).sub(1).times(mult) + return player.q.layers.add(getExtraQuirkLayers()).sub(1).times(mult) } function getQuirkEnergyEff() { - let eff = player.q.energy.plus(1).pow(2) + let eff = player.q.energy.add(1).pow(2) if (player.q.upgrades.includes(12)) { - let mod = player.q.energy.plus(1).log10().plus(1).log10().plus(1) + let mod = player.q.energy.add(1).log10().add(1).log10().add(1) if (mod.gte(2)) { eff = eff.times(mod.div(2).pow(10)) mod = new Decimal(2) @@ -3128,7 +3163,7 @@ function buyQuirkLayer() { let cost = getQuirkLayerCost() if (player.q.points.lt(cost)) return player.q.points = player.q.points.sub(cost) - player.q.layers = player.q.layers.plus(1) + player.q.layers = player.q.layers.add(1) } function maxQuirkLayers() { @@ -3145,7 +3180,7 @@ const LAYER_CHALLS = { h: { rows: 7, cols: 2, - active: function(x) { + active(x) { if (x<71&&x!=42&&x!=52) if (this.active(71)) return true if (x==11||x==41) if (this.active(51)) return true if (x==31||x==32) if (this.active(61)) return true @@ -3154,118 +3189,118 @@ const LAYER_CHALLS = { 11: { name: "Skip the Second", desc: "Boosters and Generator Power do nothing", - unl: function() { return player.h.best.gt(0) }, + unl() { return player.h.best.gt(0) }, goal: new Decimal("1e2400"), reward: "The generator power effect is raised to the power of 1.25", }, 12: { name: "Anti-Upgrades", desc: "Row 3 Upgrades do nothing", - unl: function() { return player.h.challs.includes(11) }, + unl() { return player.h.challs.includes(11) }, goal: new Decimal("1e840"), reward: "Quirk gain is boosted by your Quirk Layers", - currently: function() { return Decimal.pow(1.5, player.q.layers.times(player.sp.upgrades.includes(22)?250:1)) }, - effDisp: function(x) { return format(x)+"x" }, + currently() { return Decimal.pow(1.5, player.q.layers.times(player.sp.upgrades.includes(22)?250:1)) }, + effDisp(x) { return format(x)+"x" }, }, 21: { name: "Prestigeless", desc: "Prestige Point gain is raised to the power of 0.01", - unl: function() { return player.h.challs.includes(12) }, + unl() { return player.h.challs.includes(12) }, goal: new Decimal("1e1200"), reward: "Hindrance Spirit & Quirks make Time Capsules & Space Energy cheaper.", - currently: function() { return player.h.points.plus(player.q.points).div(2).plus(1).pow(1000).pow(player.sp.upgrades.includes(22)?250:1) }, - effDisp: function(x) { return format(x)+"x cheaper" }, + currently() { return player.h.points.add(player.q.points).div(2).add(1).pow(1000).pow(player.sp.upgrades.includes(22)?250:1) }, + effDisp(x) { return format(x)+"x cheaper" }, }, 22: { name: "Impaired Nodes", desc: "Enhancers, Extra Time Capsules, and Space Buildings do nothing.", - unl: function() { return player.h.challs.includes(12) }, + unl() { return player.h.challs.includes(12) }, goal: new Decimal("1e4600"), reward: "Add 0.25 to the Super-Booster base.", }, 31: { name: "Flattened Curve", desc: "Point generation is tetrated by 0.1", - unl: function() { return player.h.challs.includes(21)||player.h.challs.includes(22) }, + unl() { return player.h.challs.includes(21)||player.h.challs.includes(22) }, goal: new Decimal(1e208), reward: "Enhancers are twice as strong.", }, 32: { name: "Surprise Junction", desc: "Prestige Upgrade 2 does nothing", - unl: function() { return player.h.challs.includes(21)&&player.h.challs.includes(22) }, + unl() { return player.h.challs.includes(21)&&player.h.challs.includes(22) }, goal: new Decimal("1e2580"), reward: "Unlock 2 new Super-Booster Upgrades and 7 new Quirk Upgrades.", }, 41: { name: "Skip the Third", desc: "Enhancers, Time Capsules, Space Buildings, and Super-Boosters do nothing.", - unl: function() { return player.h.challs.includes(31)||player.h.challs.includes(32) }, + unl() { return player.h.challs.includes(31)||player.h.challs.includes(32) }, goal: new Decimal("4.444e4444"), reward: "Add 0.25 to the Super-Booster base.", }, 42: { name: "Slowed to a Halt", desc: "Time slows down over time, halting to a stop after 10 seconds. Hint: This also impacts auto Enhance Point generation, so make sure to manually press E!", - unl: function() { return player.h.challs.includes(31)&&player.h.challs.includes(32) }, + unl() { return player.h.challs.includes(31)&&player.h.challs.includes(32) }, goal: new Decimal("1e16500"), reward: "Cube the Generator Power effect.", }, 51: { name: "It's all Gone", desc: '"Skip the Second" and "Skip the Third" are both applied at once.', - unl: function() { return player.h.challs.includes(41)&&player.h.challs.includes(42) }, + unl() { return player.h.challs.includes(41)&&player.h.challs.includes(42) }, goal: new Decimal("1e2840"), reward: "Super-Boosters multiply the Generator base.", - currently: function() { return player.sb.points.plus(1).sqrt() }, - effDisp: function(x) { return format(x)+"x" }, + currently() { return player.sb.points.add(1).sqrt() }, + effDisp(x) { return format(x)+"x" }, }, 52: { name: "Anti-Enhancers", desc: "You lose Enhancers over time, which can make your Enhancer amount get below 0. Hint: Maybe it's best to not have any Time Capsules or Space Energy?", - unl: function() { return player.h.challs.includes(41)&&player.h.challs.includes(42)&&player.h.challs.includes(51) }, + unl() { return player.h.challs.includes(41)&&player.h.challs.includes(42)&&player.h.challs.includes(51) }, goal: new Decimal("1e440000"), reward: "Quirk Layers are faster based on your Hindrance Spirit & Quirks.", - currently: function() { + currently() { let h = player.h.points.times(player.q.points).sqrt(); if (h.gte(1e150)) h = h.log10().pow(50).times(1e150/Math.pow(150, 50)).min(h) if (h.gte(1e100)) h = h.times(1e100).sqrt() - let ret = h.plus(1).pow(0.04); + let ret = h.add(1).pow(0.04); return ret; }, - effDisp: function(x) { return format(x)+"x" }, + effDisp(x) { return format(x)+"x" }, }, 61: { name: "Microanalysis", desc: '"Flattened Curve" and "Surprised Junction" are both applied at once.', - unl: function() { return player.m.upgrades.includes(12) }, + unl() { return player.m.upgrades.includes(12) }, goal: new Decimal("1e12300"), reward: "Hindrance Spirit & Quirk Energy are 20% stronger.", }, 62: { name: "Truly Prestigeless", desc: "You cannot gain Prestige Points.", - unl: function() { return player.m.upgrades.includes(12) }, + unl() { return player.m.upgrades.includes(12) }, goal: new Decimal("1e134000"), reward: "Unlock Super-Generators.", }, 71: { name: "The Final Stockade", desc: 'All previous Hindrances (except "Slowed to a Halt" and "Anti-Enhancers") are applied at once.', - unl: function() { return player.m.upgrades.includes(31) }, + unl() { return player.m.upgrades.includes(31) }, goal: new Decimal("1e1150"), reward: "Gain more Hindrance Spirit based on your Quirk Energy.", - currently: function() { - let ret = player.q.energy.plus(1).sqrt() + currently() { + let ret = player.q.energy.add(1).sqrt() if (ret.gte("1.8e308")) ret = ret.sqrt().times(Decimal.sqrt("1.8e308")) return ret; }, - effDisp: function(x) { return format(x)+"x" }, + effDisp(x) { return format(x)+"x" }, }, 72: { name: "You shouldn't be seeing this", desc: "Never gonna give you up, never gonna let you down, never gonna run around and dessert you", - unl: function() { return false }, + unl() { return false }, goal: new Decimal(1/0), reward: "???", }, @@ -3276,7 +3311,7 @@ const LAYER_CHALLS = { 11: { name: "You shouldn't be seeing this", desc: "Never gonna give you up, never gonna let you down, never gonna run around and dessert you", - unl: function() { return true }, + unl() { return true }, goal: new Decimal(0), reward: "???", }, @@ -3332,21 +3367,24 @@ function milestoneShown(complete, auto=false) { function getSubspaceEff1() { if (!player.ss.unl) return new Decimal(0) - let eff = player.ss.subspace.times(player.ss.points).plus(1).log10().times(100) + let eff = player.ss.subspace.times(player.ss.points).add(1).log10().times(100) + if (player.sp.upgrades.includes(25)) eff = eff.times(LAYER_UPGS.sp[25].currently()) return eff.floor(); } function getSubspaceEff2() { if (!player.ss.unl) return new Decimal(1) - let eff = player.ss.subspace.plus(1).pow(750) + let eff = player.ss.subspace.add(1).pow(750) + if (player.sp.upgrades.includes(25)) eff = eff.pow(LAYER_UPGS.sp[25].currently()) return eff; } function getSubspaceEff3() { if (!player.ss.unl) return new Decimal(1) - let eff = player.ss.subspace.plus(1).log10().plus(1).log10().div(2.5).plus(1) + let eff = player.ss.subspace.add(1).log10().add(1).log10().div(2.5).add(1) if (player.ss.upgrades.includes(13)) eff = eff.times(1.5) - if (eff.gte(2)) eff = eff.log2().plus(1) + if (player.sp.upgrades.includes(25)) eff = eff.times(LAYER_UPGS.sp[25].currently()) + if (eff.gte(2)) eff = eff.log2().add(1) return eff; } @@ -3362,8 +3400,8 @@ function getSubspaceGainMult() { function addToHBBase() { let toAdd = new Decimal(0) - if (player.m.upgrades.includes(13)) toAdd = toAdd.plus(LAYER_UPGS.m[13].currently()) - if (player.m.upgrades.includes(33)) toAdd = toAdd.plus(LAYER_UPGS.m[33].currently()) + if (player.m.upgrades.includes(13)) toAdd = toAdd.add(LAYER_UPGS.m[13].currently()) + if (player.m.upgrades.includes(33)) toAdd = toAdd.add(LAYER_UPGS.m[33].currently()) return toAdd } @@ -3386,16 +3424,16 @@ function getHyperBoosterPow() { } function getBalancePowerEff() { - let eff = player.ba.power.times(2).plus(1).pow(2/3) + let eff = player.ba.power.times(2).add(1).pow(2/3) if (player.ba.upgrades.includes(14)) eff = eff.pow(3.85) if (player.ba.upgrades.includes(33)) eff = eff.pow(2) return eff; } function getBalanceTypesEff() { - let mod = player.ba.positivity.plus(1).log10().plus(1).div(player.ba.negativity.plus(1).log10().plus(1)).log10().abs().plus(1).pow(-1) - let pos = player.ba.positivity.plus(1).log10().plus(1) - let neg = player.ba.negativity.plus(1).log10().plus(1) + let mod = player.ba.positivity.add(1).log10().add(1).div(player.ba.negativity.add(1).log10().add(1)).log10().abs().add(1).pow(-1) + let pos = player.ba.positivity.add(1).log10().add(1) + let neg = player.ba.negativity.add(1).log10().add(1) if (player.ba.upgrades.includes(34)) mod = mod.times(1.5) if (player.ba.upgrades.includes(53)) mod = mod.times(LAYER_UPGS.ba[53].currently()) let eff = pos.times(neg).pow(mod) @@ -3456,7 +3494,7 @@ function getSpellPower(x) { if (player.m.upgrades.includes(22) && (x==2)) power = power.times(10) if (player.m.upgrades.includes(41)) { let casted = player.m.casted[x] - power = power.times(casted.max(1).log10().plus(1).log10().div(5).plus(1)) + power = power.times(casted.max(1).log10().add(1).log10().div(5).add(1)) } if (player.sp.upgrades.includes(23)) power = power.times(LAYER_UPGS.sp[23].currently()) if (player.ps.upgrades.includes(13)) power = power.times(LAYER_UPGS.ps[13].currently()) @@ -3469,7 +3507,7 @@ function getSpellEff(x) { let base = SPELL_BASE[x] let power = getSpellPower(x) let eff = Decimal.pow(base, power) - if (x==4) eff = Decimal.sub(2, Decimal.div(base, power.log2().plus(1))) + if (x==4) eff = Decimal.sub(2, Decimal.div(base, power.log2().add(1))) return eff } @@ -3504,7 +3542,7 @@ function activateSpell(x, force=false) { if (player.sp.total.lt(2)) player.m.points = player.m.points.sub(toCast).max(0) player.m.casted[x] = toCast player.m.spellTimes[x] = getSpellTime() - if (!force) player.m.hexes = player.m.hexes.plus(getHexGain()) + if (!force) player.m.hexes = player.m.hexes.add(getHexGain()) } function getHexGain() { @@ -3545,7 +3583,7 @@ function updateToCast(id) { function getSGenPowEff() { if (!player.sg.unl) return new Decimal(1) - let eff = player.sg.power.plus(1).pow(3) + let eff = player.sg.power.add(1).pow(3) return eff } @@ -3557,13 +3595,13 @@ function getSuperGenPowerGainMult() { function addToSGBase() { let toAdd = new Decimal(0) - if (player.ba.upgrades.includes(23)) toAdd = toAdd.plus(LAYER_UPGS.ba[23].currently()) - if (player.sp.upgrades.includes(21)) toAdd = toAdd.plus(LAYER_UPGS.sp[21].currently()) + if (player.ba.upgrades.includes(23)) toAdd = toAdd.add(LAYER_UPGS.ba[23].currently()) + if (player.sp.upgrades.includes(21)) toAdd = toAdd.add(LAYER_UPGS.sp[21].currently()) return toAdd } function getLifePowerMult() { - let x = tmp.layerEffs.ps.mult.div(10) + let x = tmp.layerEffs.ps.mult.div(30) if (player.sp.upgrades.includes(42)) x = x.times(LAYER_UPGS.sp[42].currently()) if (tmp.s !== undefined && tmp.s.trueSbUnl >= 6) x = x.times(tmp.s.sbEff[6]) return x @@ -3575,7 +3613,7 @@ function getLifePowerExp() { } function getLifePowerSoftcapStart() { - let x = player.l.points.times(10).max(1).log10() + let x = player.l.points.times(5).max(1).log10() return x } @@ -3586,187 +3624,216 @@ function getLifePowerSoftcapExp() { let LIFE_BOOSTERS = { max: 5, - unl: function() { + unl() { if (player.ps.upgrades.includes(21)) return 5 return 4 }, - eff: function() { + eff() { return player.l.power.add(1).log10() }, - req: function(x) { + req(x) { return tmp.l.lb[x].times(this[x].reqMult).add(this[x].req) }, - reqTarget: function(x) { - return player.ps.points.sub(this[x].req).div(this[x].reqMult).floor().add(1) + reqTarget(x) { + return player.ps.points.sub(this[x].req).div(this[x].reqMult).add(1).floor() }, 1: { req: new Decimal(1), reqMult: new Decimal(1), - eff: function(str) { + eff(str) { return str.pow(0.15).div(3) }, - effDesc: function(x) { + effDesc(x) { return "Add " + format(x) + " Hyper-Boosters to its effect" } }, 2: { req: new Decimal(1.5), reqMult: new Decimal(1.5), - eff: function(str) { - let x = Decimal.pow(1e15, str.pow(0.75)) - if (x.gte("1e1000")) x = Decimal.pow(10, x.log10().times(100).pow(0.6)) + eff(str) { + let x = Decimal.pow(1e20, str.pow(0.75)) + if (x.gte("1e400")) x = Decimal.pow(10, x.log10().times(400).sqrt()) return x }, - effDesc: function(x) { + effDesc(x) { return "Gain " + format(x) + "x more Hexes" } }, 3: { - req: new Decimal(4.5), - reqMult: new Decimal(1.5), - eff: function(str) { + req: new Decimal(3.5), + reqMult: new Decimal(2.5), + eff(str) { return str.div(1.5).max(1).log10().add(1) }, - effDesc: function(x) { + effDesc(x) { return "Multiply the base of Time Capsule effect by " + format(x) + "x" } }, 4: { - req: new Decimal(9), + req: new Decimal(10), reqMult: new Decimal(3), - eff: function(str) { + eff(str) { return str.div(40).add(1) }, - effDesc: function(x) { + effDesc(x) { return "Reduce the requirement of Super-Boosters, Super-Generators, and Hyper-Boosters by " + format(x) + "x" } }, 5: { - req: new Decimal(3), - reqMult: new Decimal(100), - eff: function(str) { - return Decimal.pow(1.5, str) + req: new Decimal(5), + reqMult: new Decimal(6), + eff(str) { + return Decimal.pow(3, str.sqrt()) }, - effDesc: function(x) { + effDesc(x) { return "Gain " + format(x) + "x more Hyperspace Energy" } }, } let HYPERSPACE = { - cost: function(x) { + cost(x) { if (x === undefined) x = player.hs.space + if (player.sp.upgrades.includes(35)) x = x.times(0.8) + if (tmp.s !== undefined && tmp.s.trueSbUnl >= 9) x = x.div(tmp.s.sbEff[9]) let reduction = this.costReduction() return { hs: Decimal.pow(2, x.sqr()).div(reduction).floor(), ba: Decimal.pow(10, x.max(x.div(2).sqr()).times(20).add(150)).div(reduction).floor() } }, - costReduction: function() { + costReduction() { let r = new Decimal(1) if (player.ba.upgrades.includes(45)) r = LAYER_UPGS.ba[45].currently() return r }, - canBuy: function() { + canBuy() { let cost = this.cost() return player.hs.points.gte(cost.hs) && player.ba.points.gte(cost.ba) }, - buy: function() { + buy() { let cost = this.cost() if (!this.canBuy()) return player.ba.points = player.ba.points.sub(cost.ba) player.hs.points = player.hs.points.sub(cost.hs) player.hs.space = player.hs.space.add(1) }, - canSuperUpg: function(x) { + canSuperUpg(x) { return player.hs.space.gt(player.hs.spent) && tmp.hs.su[x].lt(player.hs.superUpgradeCap) }, - superUpg: function(x) { + superUpg(x) { if (!this.canSuperUpg(x)) return player.hs.spent = player.hs.spent.add(1) tmp.hs.su[x] = tmp.hs.su[x].add(1) player.hs.superUpgrades[x] = tmp.hs.su[x] }, - respec: function(x) { + respec(x) { if (!player.hs.unl || !confirm("Are you sure?")) return player.hs.spent = new Decimal(0) player.hs.superUpgrades = {} doReset("hs", true) }, - eff: function() { + eff() { let r = new Decimal(1) - if (player.ba.upgrades.includes(35)) r = new Decimal(1.25) + if (player.ba.upgrades.includes(35)) r = r.times(1.25) + if (tmp.s !== undefined && tmp.s.trueSbUnl >= 10) r = r.times(tmp.s.sbEff[10]) return r }, - nextCapReq: function(x) { + nextCapReq(x) { if (x === undefined) x = player.hs.superUpgradeCap return Decimal.times(x, 200).add(1300) }, - nextCapTarget: function() { + nextCapTarget() { let x = player.g.points.sub(1300).div(200) return x.floor().add(1) }, effs: { - 1: function(sb, su) { - return sb.add(1).pow(su.sqrt().times(2)) + 1(sb, su) { + return sb.add(1).pow(su.sqrt().times(2.5)) }, - 2: function(sb, su) { - return sb.pow(0.25).times(su.sqrt()).div(100).add(1) + 2(sb, su) { + return sb.pow(0.25).times(su.sqrt()).div(120).add(1) }, - 3: function(sb, su) { + 3(sb, su) { return sb.cbrt().times(su.sqrt()).times(0.75).add(1) }, - 4: function(sb, su) { - return Decimal.pow(2, sb.cbrt().times(su.sqrt())) + 4(sb, su) { + return Decimal.pow(2.5, sb.cbrt().times(su.sqrt())) }, - 5: function(sb, su) { + 5(sb, su) { return sb.add(10).log10().times(su.sqrt()).div(1.75).max(1) }, - 6: function(sb, su) { - return sb.cbrt().times(su.sqrt()).max(1) + 6(sb, su) { + return Decimal.pow(sb.div(1e3).add(1), su) }, - 7: function(sb, su) { - return sb.times(su).max(1) + 7(sb, su) { + return sb.add(1).log10().times(su.cbrt()).div(25).add(1) }, - 8: function(sb, su) { - return sb.times(su).max(1) + 8(sb, su) { + return sb.times(su).div(100).max(1).log10().add(1) }, - 9: function(sb, su) { - return sb.times(su).max(1) + 9(sb, su) { + return sb.times(su).max(1).log10().add(1) }, - 10: function(sb, su) { - return sb.times(su).max(1) + 10(sb, su) { + return sb.add(1).pow(su.cbrt().div(3)) } } } +let VERSION = { + num: 1.1, + name: "The Life Update" +} + +VERSION.withoutName = "v" + VERSION.num + (VERSION.beta ? " Beta " + VERSION.beta : "") +VERSION.withName = VERSION.withoutName + (VERSION.name ? ": " + VERSION.name : "") + let IMPERIUM = { - lifeReq: function() { - return Decimal.pow(10, player.i.lifeBricks.times(6).plus(18)) + lifeReq() { + return Decimal.pow(10, player.i.lifeBricks.times(2).sqr().add(15)) }, - lifeTarget: function() { - return player.l.power.log10().sub(18).div(6).floor().add(1) + lifeTarget() { + return player.l.power.log10().sub(15).sqrt().div(2).add(1).floor() }, - canBuild: function() { - return player.i.building || true + canBuild() { + let cost = this.cost() + return player.i.building || (player.i.points.gte(cost.i) && player.i.lifeBricks.gte(cost.l)) }, - build: function() { + build() { if (!this.canBuild()) return if (player.i.building) { if (!confirm("Are you sure?")) return delete player.i.building } else { + let cost = this.cost() + player.i.points = player.i.points.sub(cost.i) + player.i.lifeBricks = player.i.lifeBricks.sub(cost.l) player.i.building = 1 doReset("i", true) } player.i.progress = 0 }, - speed: function() { - return Decimal.pow(10, player.i.extraBuildings.times(10).add(2)).recip().times(player.l.power.add(1).pow(0.05)) + cost(x) { + if (x === undefined) x = player.i.extraBuildings + let sub = player.sp.upgrades.includes(45) ? 3 : 0 + return { + i: x.times(2).add(1).sub(sub).ceil(), + l: x.times(1.5).add(1).sub(sub).ceil() + } + }, + speed() { + let x = Decimal.pow(4, player.i.extraBuildings.add(5)).recip() + x = x.times(IMPERIUM.sgSpeedBoost()) + if (player.sp.upgrades.includes(45)) x = x.times(10) + return x + }, + sgSpeedBoost() { + return player.sg.power.add(1).pow(0.01) } } -const ENDGAME = new Decimal(1/0); +const ENDGAME = new Decimal("e290000000"); function keepGoing() { player.keepGoing = true; @@ -3774,12 +3841,14 @@ function keepGoing() { } function gameLoop(diff) { - if (player.points.gte(ENDGAME)) gameEnded = true; + if (player.points.gte(ENDGAME) || gameEnded) gameEnded = 1 + if (isNaN(diff)) diff = 0 if (gameEnded && !player.keepGoing) { diff = 0 player.tab = "gameEnded" } + if (player.devSpeed) diff *= player.devSpeed player.timePlayed += diff player.h.time += diff if (tmp.challActive ? tmp.challActive.h[42] : true) { @@ -3788,26 +3857,26 @@ function gameLoop(diff) { } if (diff === 0) return - if (player.p.upgrades.includes(11)) player.points = player.points.plus(tmp.pointGen.times(diff)).max(0) - if (player.g.unl) player.g.power = player.g.power.plus(tmp.layerEffs.g.times(diff)).max(0) + if (player.p.upgrades.includes(11)) player.points = player.points.add(tmp.pointGen.times(diff)).max(0) + if (player.g.unl) player.g.power = player.g.power.add(tmp.layerEffs.g.times(diff)).max(0) if (player.g.best.gte(10)) generatePoints("p", diff) if (player.t.unl) { let data = tmp.layerEffs.t - player.t.energy = player.t.energy.plus(data.gain.times(diff)).min(data.limit).max(0) + player.t.energy = player.t.energy.add(data.gain.times(diff)).min(data.limit).max(0) } - if (player.sg.unl) player.sg.power = player.sg.power.plus(tmp.layerEffs.sg.times(diff)).max(0) + if (player.sg.unl) player.sg.power = player.sg.power.add(tmp.layerEffs.sg.times(diff)).max(0) if (player.q.unl) { let mult = getQuirkLayerMult() - player.q.time = player.q.time.plus(mult.times(diff)).max(0) + player.q.time = player.q.time.add(mult.times(diff)).max(0) let exp = getQuirkEnergyGainExp() - if (exp.gte(0)) player.q.energy = player.q.energy.plus(player.q.time.pow(exp).times(mult).times(diff)).max(0) + if (exp.gte(0)) player.q.energy = player.q.energy.add(player.q.time.pow(exp).times(mult).times(diff)).max(0) } if (player.q.best.gte(15)) generatePoints("e", diff) - if (player.ss.unl) player.ss.subspace = player.ss.subspace.plus(tmp.layerEffs.ss.times(diff)).max(0) + if (player.ss.unl) player.ss.subspace = player.ss.subspace.add(tmp.layerEffs.ss.times(diff)).max(0) if (player.ba.unl) { - player.ba.power = player.ba.power.plus(tmp.layerEffs.ba.power.times(tmp.balEff2).times(getBalPowGainMult()).times(diff)).max(0) - player.ba.positivity = player.ba.positivity.plus(tmp.layerEffs.ba.pos.times(getPosGainMult()).times(diff)).max(0) - player.ba.negativity = player.ba.negativity.plus(tmp.layerEffs.ba.neg.times(getNegGainMult()).times(diff)).max(0) + player.ba.power = player.ba.power.add(tmp.layerEffs.ba.power.times(tmp.balEff2).times(getBalPowGainMult()).times(diff)).max(0) + player.ba.positivity = player.ba.positivity.add(tmp.layerEffs.ba.pos.times(getPosGainMult()).times(diff)).max(0) + player.ba.negativity = player.ba.negativity.add(tmp.layerEffs.ba.neg.times(getNegGainMult()).times(diff)).max(0) } if (player.m.unl) { for (let i=1;i<=tmp.spellsUnl;i++) { @@ -3818,12 +3887,12 @@ function gameLoop(diff) { generatePoints("h", diff) generatePoints("q", diff) } - if (player.m.total.gte(2.5e9)) player.m.hexes = player.m.hexes.plus(getHexGain().times(diff)).max(0) + if (player.m.total.gte(2.5e9)) player.m.hexes = player.m.hexes.add(getHexGain().times(diff)).max(0) if (player.sp.total.gte(10)) { generatePoints("m", diff) generatePoints("ba", diff) } - if (player.hs.best.gte(2e4)) generatePoints("sp", Decimal.div(diff, 10)) + if (player.hs.best.gte(2e4)) generatePoints("sp", Decimal.div(diff, 100)) if (player.l.unl) { let exp = getLifePowerExp() let cap = getLifePowerSoftcapStart() @@ -3867,7 +3936,7 @@ function gameLoop(diff) { player.m.toCast[i] = player.m.points } if (player.m.auto&&player.m.total.gte(50)) for (let i=1;i<=tmp.spellsUnl;i++) activateSpell(i) - if (player.ps.auto&&player.ps.best.gte(3)) doReset("ps") + if (player.ps.auto&&player.ps.best.gte(2)) doReset("ps") if (player.hasNaN&&!NaNalert) { alert("We have detected a corruption in your save. Please visit https://discord.gg/wwQfgPa for help.") @@ -3906,6 +3975,35 @@ var interval = setInterval(function() { gameLoop(diff) }, 50) +const themes = { + 1: "aqua" +} +const theme_names = { + aqua: "Aqua" +} + +function changeTheme() { + let aqua = player.theme == "aqua" + colors_theme = colors[player.theme || "default"] + document.body.style.setProperty('--background', aqua ? "#002f3f" : "#000000") + document.body.style.setProperty('--color', aqua ? "#bfefff" : "#bfbfbf") + document.body.style.setProperty('--points', aqua ? "#dff7ff" : "#ffffff") +} + +function getThemeName() { + return player.theme ? theme_names[player.theme] : "Default" +} + +function switchTheme() { + if (player.theme === undefined) player.theme = themes[1] + else { + player.theme = themes[Object.keys(themes)[player.theme] + 1] + if (!player.theme) delete player.theme + } + changeTheme() + resizeCanvas() +} + document.onkeydown = function(e) { if (player===undefined) return; if (gameEnded&&!player.keepGoing) return; diff --git a/js/temp.js b/js/temp.js index a621d66..f9354c6 100644 --- a/js/temp.js +++ b/js/temp.js @@ -41,7 +41,7 @@ function updateTemp() { tmp.enhEff2 = getEnhancerEff2() tmp.subbedEnh = new Decimal(0) if (tmp.challActive ? tmp.challActive.h[52] : true) { - tmp.subbedEnh = tmp.subbedEnh.plus(new Decimal(player.h.time).times(40).plus(1).log10().pow(10).max(10)).round() + tmp.subbedEnh = tmp.subbedEnh.add(new Decimal(player.h.time).times(40).add(1).log10().pow(10).max(10)).round() } tmp.freeExtCap = getFreeExtCapsules() @@ -121,7 +121,7 @@ function updateTemp() { data.compressed = tmp.s.sbUnl.sub(SPACE_BUILDINGS.max).max(0).floor().toNumber() data.work = new Decimal(1) - if (player.i.building) data.work = data.work.add(player.i.extraBuildings.add(1).log10().add(2).div(5)) + if (player.i.building) data.work = data.work.add(player.i.extraBuildings.add(4).sqrt().div(5)) data.workEff = Decimal.pow(2, data.work.sub(1)) } } diff --git a/js/v.js b/js/v.js index 100b570..7fa9a13 100644 --- a/js/v.js +++ b/js/v.js @@ -35,6 +35,7 @@ function loadVue() { formatWhole, formatTime, focused, + getThemeName, layerUnl, getLayerEffDesc, doReset, @@ -56,6 +57,8 @@ function loadVue() { spellActive, updateToCast, keepGoing, + VERSION, + ENDGAME, LAYERS, LAYER_RES, LAYER_TYPE, diff --git a/options_wheel.png b/options_wheel.png index 22a93b0501136aeb164e632076511469b17af6b0..9a60fff4c724a67754ac451c3d0e157b59fed738 100644 GIT binary patch delta 4399 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 delta 4794 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 Up|r($WdHyG07*qoM6N<$g4qQVdjJ3c diff --git a/style.css b/style.css index 7076d21..af8ef39 100644 --- a/style.css +++ b/style.css @@ -13,9 +13,12 @@ } body { - background-color: black; - color: #dfdfdf; + background-color: var(--background); + color: var(--color); overflow: hidden; + --background: #000000; + --color: #dfdfdf; + --points: #ffffff; } html, body { @@ -79,7 +82,7 @@ h1, h2, h3, b, input { .can:hover { transform: scale(1.15, 1.15); - box-shadow: 0px 0px 20px rgba(255, 255, 255, 0.5) + box-shadow: 0px 0px 20px var(--points) } .treeNode.notify { @@ -91,7 +94,7 @@ h1, h2, h3, b, input { .treeNode.can:hover { transform: scale(1.15, 1.15); - box-shadow: var(--hqProperty2a), 0px 0px 20px rgba(255, 255, 255, 0.5); + box-shadow: var(--hqProperty2a), 0px 0px 20px var(--points); z-index: 4 } @@ -104,16 +107,16 @@ h1, h2, h3, b, input { position: absolute; top: 0px; left: 0px; - background-color: black; - border: 1px solid black; - color: white; + background-color: var(--background); + border: 1px solid var(--background); + color: var(--color); font-size: 40px; cursor: pointer; } .back:hover { transform: scale(1.1, 1.1); - text-shadow: 0px 0px 7px white; + text-shadow: 0px 0px 7px var(--color); } .reset { @@ -144,6 +147,7 @@ h1, h2, h3, b, input { .longUpg { height: 50px; width: 120px; + background: var(--points); border-radius: 50%; border: 2px solid; border-color: rgba(255, 255, 255, 0.125) rgba(0, 0, 0, 0.25) rgba(0, 0, 0, 0.25) rgba(255, 255, 255, 0.125); @@ -159,8 +163,8 @@ h1, h2, h3, b, input { } #points { - color: white; - text-shadow: 0px 0px 10px white; + color: var(--points); + text-shadow: 0px 0px 10px var(--points); } .p { @@ -425,13 +429,26 @@ h1, h2, h3, b, input { -3px 0px 12px #02f2f2; } +#discord { + position: absolute; + top: 120px; + left: 4px; + width: 40px; + height: 40px; + cursor: pointer +} + +#discord:hover { + transform: scale(1.2, 1.2); +} + #version { position: absolute; right: 4px; top: 4px; text-align: right; - color: white; - text-shadow: 0px 0px 10px #ffffff; + color: var(--points); + text-shadow: 0px 0px 10px var(--points); cursor: pointer; } @@ -471,7 +488,7 @@ a { width: 100px; border-radius: 25%; border: 4px solid; - background-color: #a1a1a1; + background-color: var(--color); border-color: rgba(255, 255, 255, 0.125) rgba(0, 0, 0, 0.25) rgba(0, 0, 0, 0.25) rgba(255, 255, 255, 0.125); color: rgba(0, 0, 0, 0.5); cursor: pointer; @@ -553,7 +570,7 @@ a { } .vl { - border-left: 6px solid #969696; + border-left: 6px solid var(--color); height: 100%; position: absolute; left: 50%;