Advertisement
Jacorb90

Reality

May 2nd, 2019
206
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 128.71 KB | None | 0 0
  1. reality = {
  2. points: new Decimal(0),
  3. times: new Decimal(0),
  4. mult: new Decimal(1),
  5. multCost: new Decimal(1),
  6. multCostIncrease: new Decimal(10),
  7. galaxyMult: new Decimal(1),
  8. dimMult: new Decimal(1),
  9. upgrades: 0,
  10. epmultBuyer: false,
  11. timeDimBuyer: false,
  12. costMs: [new Decimal(player.dimensionMultDecrease),new Decimal(player.tickSpeedMultDecrease)],
  13. costMMs: [1.015,1.01],
  14. speed: 1,
  15. autoEP: false,
  16. actual_upgrades: [0,0,0],
  17. actual_costs: [new Decimal(1),new Decimal(1),new Decimal(1)],
  18. actual_increases: [new Decimal(3),new Decimal(5),new Decimal(10)],
  19. }
  20.  
  21. function getRealityPoints() {
  22. return Decimal.floor(Decimal.max(player.eternityPoints.pow(0.00098).minus(1),new Decimal(0)))
  23. }
  24.  
  25. function getRealityMilestones() {
  26. if (reality.times.gte(1)) {
  27. defaultStart.achievements = player.achievements
  28. defaultStart.options = player.options
  29. }
  30. if (reality.times.gte(2)) {
  31. defaultStart.challenges = player.challenges
  32. defaultStart.autobuyers = player.autobuyers
  33. defaultStart.break = true
  34. }
  35. if (reality.times.gte(3)) {
  36. defaultStart.eternities = 100
  37. defaultStart.infMultBuyer = true
  38. defaultStart.replicanti.auto = [true,true,true]
  39. defaultStart.infinityUpgrades = player.infinityUpgrades
  40. defaultStart.infDimBuyers = [true,true,true,true,true,true,true,true]
  41.  
  42. }
  43. if (reality.times.gte(4)) {
  44. defaultStart.eternities = 100000
  45. defaultStart.eternityUpgrades = player.eternityUpgrades
  46. defaultStart.eternityChalls = player.eternityChalls
  47. }
  48. if (reality.times.gte(5)) {
  49. reality.epmultBuyer = true
  50. reality.autoEP = true
  51. }
  52. if (reality.times.gte(6)) reality.timeDimBuyer = true
  53. if (reality.times.gte(7)) defaultStart.timestudy.studies = player.timestudy.studies
  54. if (reality.times.gte(8)) defaultStart.dilation.studies = [1]
  55. if (reality.times.gte(9)) defaultStart.dilation.upgrades = player.dilation.upgrades
  56. if (reality.times.gte(10)) defaultStart.dilation.studies = player.dilation.studies
  57. if (reality.times.gte(15)) defaultStart.dilation.rebuyables = player.dilation.rebuyables
  58. if (reality.times.gte(20)) defaultStart.infMult = player.epmult
  59. if (reality.times.gte(50)) defaultStart.epmult = player.epmult.pow(0.2)
  60. }
  61.  
  62. function buyRPMult() {
  63. if (reality.points.gte(reality.multCost)) {
  64. reality.points = reality.points.minus(reality.multCost)
  65. reality.mult = reality.mult.times(2)
  66. reality.multCost = reality.multCost.times(reality.multCostIncrease)
  67. if (reality.multCost.gte(1e10)) reality.multCostIncrease = reality.multCostIncrease.times(1.1)
  68. if (reality.multCost.gte(1e100)) reality.multCostIncrease = reality.multCostIncrease.times(1.2)
  69. if (reality.multCost.gte(1e1000)) reality.multCostIncrease = reality.multCostIncrease.times(1.5)
  70. if (reality.multCost.gte(1e10000)) reality.multCostIncrease = reality.multCostIncrease.times(reality.multCost.log10()/5000)
  71. }
  72. }
  73.  
  74. function buyRPUpgrade(id) {
  75. if (reality.points.gte(reality.actual_costs[id])) {
  76. reality.points = reality.points.minus(reality.actual_costs[id])
  77. reality.actual_upgrades[id] = reality.actual_upgrades[id] + 1
  78. reality.actual_costs[id] = reality.actual_costs[id].times(reality.actual_increases[id])
  79. if (reality.actual_costs[id].gte(1e10)) reality.actual_increases[id] = reality.actual_increases[id].times(1.2)
  80. if (reality.actual_costs[id].gte(1e100)) reality.actual_increases[id] = reality.actual_increases[id].times(1.5)
  81. if (reality.actual_costs[id].gte(1e1000)) reality.actual_increases[id] = reality.actual_increases[id].times(3)
  82. if (reality.actual_costs[id].gte(1e10000)) reality.actual_increases[id] = reality.actual_increases[id].times(reality.actual_costs[id].log10()/1000)
  83. }
  84. }
  85.  
  86. function getRealityUpgrades() {
  87. for(var i=1;i<9;i++) {
  88. if (reality.upgrades >= i) defaultStart["timeDimension"+i].power.exponent = 1
  89. else defaultStart["timeDimension"+i].power.exponent = 0
  90. }
  91. if (reality.upgrades >= 10) defaultStart.dilation.nextThreshold.exponent=0
  92. else defaultStart.dilation.nextThreshold.exponent=3
  93. }
  94.  
  95. function getRealityMults() {
  96. reality.galaxyMult = Math.log10(player.money.log10()) + 1
  97. reality.dimMult = Decimal.pow(player.money,0.01).plus(1)
  98. }
  99.  
  100. let html = '<div id="RealityTab" class="tab" align="center" style="display: none"><table><tr><td><button id="reality" class="storebtn" style="color: #FF4500;background: black;border: 2px solid #b341e0;font-weight: bold;border-radius: 4px;transition-duration: 0.2s;cursor: pointer;" style="color:black; width: 200px; height: 55px; font-size: 20px">LOCKED</button></td></tr><tr><td><div><p id="realityPoints" class="storebtn" style="color: #FF4500;background: black;border: 2px solid #b341e0;font-weight: bold;border-radius: 4px;transition-duration: 0.2s;cursor: pointer;">Reality Points: 0</p></div></td><td><div><button id="RPMult" onclick="buyRPMult()" class="storebtn" style="color:black; width: 200px; height: 55px; font-size:120%">Buy RP 2x Mult:<br>Cost: 1 RP</button></div></td><td><div><button id="GalaxyGen" onclick="buyRPUpgrade(0)" class="storebtn" style="color:black; width: 200px; height: 55px; font-size:120%">Buy Galaxy Generator:<br>Cost: 1 RP</button></div></td><td><div><button id="Supernova" onclick="buyRPUpgrade(1)" class="storebtn" style="color:black; width: 200px; height: 55px; font-size:120%">Buy Supernova (More Galaxy Efficency):<br>Cost: 1 RP</button></div></td></tr><tr><td><div><button id="SpeedIncrease" onclick="buyRPUpgrade(2)" class="storebtn" style="color:black; width: 200px; height: 55px; font-size:120%">Buy Game Speed Increase:<br>Cost: 1 RP</button></div></td></tr></table></div>'
  101. let newNode = document.createElement("div");
  102. newNode.innerHTML = html
  103. let parentDiv = document.getElementById("eternitystore").parentNode;
  104. let sp2 = document.getElementById("eternitystore");
  105. parentDiv.insertBefore(newNode, sp2);
  106.  
  107. html = '<button id="RealityTabBtn" style="font-family: Typewriter; font-size: 20px; display: none; color: purple;" class="tabbtn">Reality</button>'
  108. newNode = document.createElement("div");
  109. newNode.innerHTML = html
  110. parentDiv = document.getElementById("shopbtn").parentNode;
  111. sp2 = document.getElementById("shopbtn");
  112. parentDiv.insertBefore(newNode, sp2);
  113.  
  114. document.getElementById("reality").style.display = "block"
  115.  
  116. document.getElementById("RealityTabBtn").onclick = function() {
  117. showTab("RealityTab")
  118. }
  119.  
  120. setInterval(function() {
  121. if (player.eternityPoints.gte(Number.MAX_VALUE) || reality.times.gte(1)) {
  122. document.getElementById("RealityTabBtn").style.display = "inline-block"
  123. }
  124. if (player.eternityPoints.gte(Number.MAX_VALUE)) document.getElementById("reality").textContent = "Reality for " +formatValue(player.options.notation,getRealityPoints().times(reality.mult),2,1) +" RP"
  125. else document.getElementById("reality").textContent = "LOCKED"
  126. reality.upgrades = Math.floor(Decimal.log(reality.points.plus(1),2))
  127. getRealityUpgrades()
  128. if (reality.epmultBuyer) buyMaxEPMult()
  129. if (reality.timeDimBuyer) buyMaxTimeDimensions();
  130. document.getElementById("realityPoints").textContent = "Reality Points: " +formatValue(player.options.notation, reality.points, 2, 1)
  131. if (reality.times.gte(1)) {
  132. document.getElementById("realityPoints").style.display = "block"
  133. document.getElementById("RPMult").innerHTML = "Buy RP 2x Mult:<br>Cost: " +formatValue(player.options.notation, reality.multCost, 2, 1) +" RP"
  134. document.getElementById("GalaxyGen").innerHTML = "Buy Galaxy Generator:<br>Cost: " +formatValue(player.options.notation, reality.actual_costs[0], 2, 1) +" RP"
  135. document.getElementById("Supernova").innerHTML = "Buy Supernova (More Galaxy Efficiency):<br>Cost: " +formatValue(player.options.notation, reality.actual_costs[1], 2, 1) +" RP"
  136. document.getElementById("SpeedIncrease").innerHTML = "Buy Game Speed Increase:<br>Cost: " +formatValue(player.options.notation, reality.actual_costs[2], 2, 1) +" RP"
  137. document.getElementById("RPMult").style.display = "block"
  138. document.getElementById("GalaxyGen").style.display = "block"
  139. document.getElementById("Supernova").style.display = "block"
  140. document.getElementById("SpeedIncrease").style.display = "block"
  141. } else {
  142. document.getElementById("realityPoints").style.display = "none"
  143. document.getElementById("RPMult").style.display = "none"
  144. document.getElementById("GalaxyGen").style.display = "none"
  145. document.getElementById("Supernova").style.display = "none"
  146. document.getElementById("SpeedIncrease").style.display = "none"
  147. }
  148. }, player.options.updateRate)
  149.  
  150. setInterval(function() {
  151. clearInterval(gameLoopIntervalId);
  152. gameLoopIntervalId = setInterval(gameLoop, player.options.updateRate);
  153. }, 1000)
  154.  
  155. setInterval(function() {
  156. if (getDimensionFinalMultiplier(1).gte(new Decimal("1e308")) &&
  157. getDimensionFinalMultiplier(2).gte(new Decimal("1e308")) &&
  158. getDimensionFinalMultiplier(3).gte(new Decimal("1e308")) &&
  159. getDimensionFinalMultiplier(4).gte(new Decimal("1e308")) &&
  160. getDimensionFinalMultiplier(5).gte(new Decimal("1e308")) &&
  161. getDimensionFinalMultiplier(6).gte(new Decimal("1e308")) &&
  162. getDimensionFinalMultiplier(7).gte(new Decimal("1e308")) &&
  163. getDimensionFinalMultiplier(8).gte(new Decimal("1e308"))) giveAchievement("Can't hold all these infinities")
  164.  
  165. if (getDimensionFinalMultiplier(1).lt(getDimensionFinalMultiplier(2)) &&
  166. getDimensionFinalMultiplier(2).lt(getDimensionFinalMultiplier(3)) &&
  167. getDimensionFinalMultiplier(3).lt(getDimensionFinalMultiplier(4)) &&
  168. getDimensionFinalMultiplier(4).lt(getDimensionFinalMultiplier(5)) &&
  169. getDimensionFinalMultiplier(5).lt(getDimensionFinalMultiplier(6)) &&
  170. getDimensionFinalMultiplier(6).lt(getDimensionFinalMultiplier(7)) &&
  171. getDimensionFinalMultiplier(7).lt(getDimensionFinalMultiplier(8))) giveAchievement("How the antitables have turned")
  172.  
  173.  
  174.  
  175. if (player.infinitied == 0 && player.infinityPoints.lt(new Decimal(1e50)) && player.eternities <= 0) document.getElementById("infinityPoints2").style.display = "none"
  176. else document.getElementById("infinityPoints2").style.display = "inline-block"
  177.  
  178. if (blink && !player.achievements.includes("r78")) {
  179. document.getElementById("Blink of an eye").style.display = "none"
  180. blink = false
  181. }
  182. else {
  183. document.getElementById("Blink of an eye").style.display = "block"
  184. blink = true
  185. }
  186. if (player.challenges.includes("postc1")) {
  187. let temp = 1
  188. for (var i=0; i < player.challenges.length; i++) {
  189. if (player.challenges[i].includes("post")) {
  190. temp *= 1.3
  191. document.getElementById("infchallengesbtn").style.display = "inline-block"
  192. }
  193. }
  194. infDimPow = temp
  195. } else {
  196. document.getElementById("infchallengesbtn").style.display = "none"
  197. }
  198.  
  199. if (player.money.gte(new Decimal("1e2000")) || Object.keys(player.eternityChalls).length > 0 || player.eternityChallUnlocked !== 0) document.getElementById("challTabButtons").style.display = "table"
  200.  
  201. document.getElementById("kongip").textContent = "Double your IP gain from all sources (additive). Forever. Currently: x"+kongIPMult+", next: x"+(kongIPMult==1? 2: kongIPMult+2)
  202. document.getElementById("kongep").textContent = "Triple your EP gain from all sources (additive). Forever. Currently: x"+kongEPMult+", next: x"+(kongEPMult==1? 3: kongEPMult+3)
  203. document.getElementById("kongdim").textContent = "Double all your normal dimension multipliers (multiplicative). Forever. Currently: x"+kongDimMult+", next: x"+(kongDimMult*2)
  204. document.getElementById("kongalldim").textContent = "Double ALL the dimension multipliers (Normal, Infinity, Time) (multiplicative until 32x). Forever. Currently: x"+kongAllDimMult+", next: x"+((kongAllDimMult < 32) ? kongAllDimMult * 2 : kongAllDimMult + 32)
  205. document.getElementById("eternityPoints2").innerHTML = "You have <span class=\"EPAmount2\">"+shortenDimensions(player.eternityPoints)+"</span> Eternity point"+((player.eternityPoints.eq(1)) ? "." : "s.")
  206.  
  207. document.getElementById("eternitybtn").style.display = (player.infinityPoints.gte(player.eternityChallGoal) && (player.infDimensionsUnlocked[7] || player.eternities > 24)) ? "inline-block" : "none"
  208.  
  209.  
  210. if (player.eternities !== 0)document.getElementById("eternitystorebtn").style.display = "inline-block"
  211. for (var i=1; i <=8; i++) {
  212. document.getElementById("postc"+i+"goal").textContent = "Goal: "+shortenCosts(goals[i-1])
  213. }
  214.  
  215. if (player.replicanti.galaxybuyer !== undefined) document.getElementById("replicantiresettoggle").style.display = "inline-block"
  216. else document.getElementById("replicantiresettoggle").style.display = "none"
  217.  
  218. if (player.eternities > 0) document.getElementById("infmultbuyer").style.display = "inline-block"
  219. else document.getElementById("infmultbuyer").style.display = "none"
  220. if (player.eternities > 4) document.getElementById("togglecrunchmode").style.display = "inline-block"
  221. else document.getElementById("togglecrunchmode").style.display = "none"
  222. if (player.eternities > 8) document.getElementById("galaxybulk").style.display = "inline-block"
  223. else document.getElementById("galaxybulk").style.display = "none"
  224.  
  225. document.getElementById("replicantichance").className = (player.infinityPoints.gte(player.replicanti.chanceCost) && player.replicanti.chance < 1) ? "storebtn" : "unavailablebtn"
  226. document.getElementById("replicantiinterval").className = (player.infinityPoints.gte(player.replicanti.intervalCost) && ((player.replicanti.interval !== 50) || player.timestudy.studies.includes(22)) && (player.replicanti.interval !== 1)) ? "storebtn" : "unavailablebtn"
  227. document.getElementById("replicantimax").className = (player.infinityPoints.gte(player.replicanti.galCost)) ? "storebtn" : "unavailablebtn"
  228. document.getElementById("replicantireset").className = (player.replicanti.galaxies < player.replicanti.gal && player.replicanti.amount.gte(Number.MAX_VALUE)) ? "storebtn" : "unavailablebtn"
  229. document.getElementById("replicantiunlock").className = (player.infinityPoints.gte(1e140)) ? "storebtn" : "unavailablebtn"
  230. updateTheoremButtons()
  231.  
  232. if (getTickSpeedMultiplier().lt(0.001)) giveAchievement("Do you even bend time bro?")
  233.  
  234. if (player.eternities > 9) document.getElementById("bulklabel").textContent = "Buy max dimboosts every X seconds:"
  235. else document.getElementById("bulklabel").textContent = "Bulk DimBoost Amount:"
  236.  
  237. if (player.eternities > 10) {
  238. for (var i=1;i<player.eternities-9 && i < 9; i++) {
  239. document.getElementById("infauto"+i).style.visibility = "visible"
  240. }
  241. document.getElementById("toggleallinfdims").style.visibility = "visible"
  242. } else {
  243. for (var i=1; i<9; i++) {
  244. document.getElementById("infauto"+i).style.visibility = "hidden"
  245. }
  246. document.getElementById("toggleallinfdims").style.visibility = "hidden"
  247. }
  248.  
  249. if (player.eternities !== 0) document.getElementById("eternityconf").style.display = "inline-block"
  250. else document.getElementById("eternityconf").style.display = "none"
  251. if (player.eternities >= 40) document.getElementById("replauto1").style.visibility = "visible"
  252. else document.getElementById("replauto1").style.visibility = "hidden"
  253. if (player.eternities >= 60) document.getElementById("replauto2").style.visibility = "visible"
  254. else document.getElementById("replauto2").style.visibility = "hidden"
  255. if (player.eternities >= 80) document.getElementById("replauto3").style.visibility = "visible"
  256. else document.getElementById("replauto3").style.visibility = "hidden"
  257. if (player.eternities >= 100) document.getElementById("autoBuyerEter").style.display = "inline-block"
  258.  
  259. if (player.eternities == 0) document.getElementById("pasteternities").style.display = "none"
  260. else document.getElementById("pasteternities").style.display = "inline-block"
  261. if (player.challenges.length > 1) document.getElementById("challengetimesbtn").style.display = "inline-block"
  262. else document.getElementById("challengetimesbtn").style.display = "none"
  263. if (player.infinitied > 0 || player.eternities > 0) document.getElementById("pastinfs").style.display = "inline-block"
  264. else document.getElementById("pastinfs").style.display = "none"
  265.  
  266. if (player.infinitied !== 0 || player.eternities !== 0) document.getElementById("bigCrunchAnimBtn").style.display = "inline-block"
  267. else document.getElementById("bigCrunchAnimBtn").style.display = "none"
  268. if (!player.dilation.tachyonParticles.eq(0)) document.getElementById("tachyonParticleAnimBtn").style.display = "inline-block"
  269. else document.getElementById("tachyonParticleAnimBtn").style.display = "none"
  270.  
  271. if (player.eternities > 10 && player.currentEternityChall !== "eterc8") {
  272. for (var i=1;i<player.eternities-9 && i < 9; i++) {
  273. if (player.infDimBuyers[i-1]) {
  274. buyMaxInfDims(i)
  275. buyManyInfinityDimension(i)
  276. }
  277. }
  278. }
  279.  
  280. if (player.eternities >= 40 && player.replicanti.auto[0] && player.currentEternityChall !== "eterc8") {
  281. while (player.infinityPoints.gte(player.replicanti.chanceCost) && player.currentEternityChall !== "eterc8" && player.replicanti.chance < 1) upgradeReplicantiChance()
  282. }
  283.  
  284. if (player.eternities >= 60 && player.replicanti.auto[1] && player.currentEternityChall !== "eterc8") {
  285. while (player.infinityPoints.gte(player.replicanti.intervalCost) && player.currentEternityChall !== "eterc8" && ((player.timestudy.studies.includes(22)) ? player.replicanti.interval > 1 : player.replicanti.interval > 50)) upgradeReplicantiInterval()
  286. }
  287.  
  288. if (player.eternities >= 80 && player.replicanti.auto[2] && player.currentEternityChall !== "eterc8") {
  289. while (upgradeReplicantiGalaxy()) continue
  290. }
  291.  
  292. document.getElementById("eterc1goal").textContent = "Goal: "+shortenCosts(new Decimal("1e1800").times(new Decimal("1e200").pow(ECTimesCompleted("eterc1"))).max(new Decimal("1e1800"))) + " IP"
  293. document.getElementById("eterc1completed").textContent = "Completed "+ECTimesCompleted("eterc1")+" times."
  294.  
  295. document.getElementById("eterc2goal").textContent = "Goal: "+shortenCosts(new Decimal("1e975").times(new Decimal("1e175").pow(ECTimesCompleted("eterc2"))).max(new Decimal("1e975"))) + " IP"
  296. document.getElementById("eterc2completed").textContent = "Completed "+ECTimesCompleted("eterc2")+" times."
  297.  
  298. document.getElementById("eterc3goal").textContent = "Goal: "+shortenCosts(new Decimal("1e600").times(new Decimal("1e75").pow(ECTimesCompleted("eterc3"))).max(new Decimal("1e575"))) + " IP"
  299. document.getElementById("eterc3completed").textContent = "Completed "+ECTimesCompleted("eterc3")+" times."
  300.  
  301. document.getElementById("eterc4goal").textContent = "Goal: "+shortenCosts(new Decimal("1e2750").times(new Decimal("1e550").pow(ECTimesCompleted("eterc4"))).max(new Decimal("1e2750"))) + " IP in "+Math.max((16 - (ECTimesCompleted("eterc4")*4)), 0)+" infinities or less."
  302. document.getElementById("eterc4completed").textContent = "Completed "+ECTimesCompleted("eterc4")+" times."
  303.  
  304. document.getElementById("eterc5goal").textContent = "Goal: "+shortenCosts(new Decimal("1e750").times(new Decimal("1e400").pow(ECTimesCompleted("eterc5"))).max(new Decimal("1e750"))) + " IP"
  305. document.getElementById("eterc5completed").textContent = "Completed "+ECTimesCompleted("eterc5")+" times."
  306.  
  307. document.getElementById("eterc6goal").textContent = "Goal: "+shortenCosts(new Decimal("1e850").times(new Decimal("1e250").pow(ECTimesCompleted("eterc6"))).max(new Decimal("1e850"))) + " IP"
  308. document.getElementById("eterc6completed").textContent = "Completed "+ECTimesCompleted("eterc6")+" times."
  309.  
  310. document.getElementById("eterc7goal").textContent = "Goal: "+shortenCosts(new Decimal("1e2000").times(new Decimal("1e530").pow(ECTimesCompleted("eterc7"))).max(new Decimal("1e2000"))) + " IP"
  311. document.getElementById("eterc7completed").textContent = "Completed "+ECTimesCompleted("eterc7")+" times."
  312.  
  313. document.getElementById("eterc8goal").textContent = "Goal: "+shortenCosts(new Decimal("1e1300").times(new Decimal("1e900").pow(ECTimesCompleted("eterc8"))).max(new Decimal("1e1300"))) + " IP"
  314. document.getElementById("eterc8completed").textContent = "Completed "+ECTimesCompleted("eterc8")+" times."
  315.  
  316. document.getElementById("eterc9goal").textContent = "Goal: "+shortenCosts(new Decimal("1e1750").times(new Decimal("1e250").pow(ECTimesCompleted("eterc9"))).max(new Decimal("1e1750"))) + " IP"
  317. document.getElementById("eterc9completed").textContent = "Completed "+ECTimesCompleted("eterc9")+" times."
  318.  
  319. document.getElementById("eterc10goal").textContent = "Goal: "+shortenCosts(new Decimal("1e3000").times(new Decimal("1e300").pow(ECTimesCompleted("eterc10"))).max(new Decimal("1e3000"))) + " IP"
  320. document.getElementById("eterc10completed").textContent = "Completed "+ECTimesCompleted("eterc10")+" times."
  321.  
  322. document.getElementById("eterc11goal").textContent = "Goal: "+shortenCosts(new Decimal("1e500").times(new Decimal("1e200").pow(ECTimesCompleted("eterc11"))).max(new Decimal("1e500"))) + " IP"
  323. document.getElementById("eterc11completed").textContent = "Completed "+ECTimesCompleted("eterc11")+" times."
  324.  
  325. document.getElementById("eterc12goal").textContent = "Goal: "+shortenCosts(new Decimal("1e110000").times(new Decimal("1e12000").pow(ECTimesCompleted("eterc12"))).max(new Decimal("1e110000"))) + " IP in "+(Math.max(10 - ECTimesCompleted("eterc12")*2, 1)/10) + ((ECTimesCompleted("eterc12") === 0) ? " second or less." :" seconds or less." )
  326. document.getElementById("eterc12completed").textContent = "Completed "+ECTimesCompleted("eterc12")+" times."
  327. updateECUnlockButtons()
  328.  
  329.  
  330.  
  331.  
  332. if (player.currentEternityChall == "eterc8") {
  333. document.getElementById("eterc8repl").style.display = "block"
  334. document.getElementById("eterc8ids").style.display = "block"
  335. document.getElementById("eterc8repl").textContent = "You have "+player.eterc8repl+" purchases left."
  336. document.getElementById("eterc8ids").textContent = "You have "+player.eterc8ids+" purchases left."
  337. } else {
  338. document.getElementById("eterc8repl").style.display = "none"
  339. document.getElementById("eterc8ids").style.display = "none"
  340. }
  341.  
  342. if (player.currentEternityChall == "eterc12" && player.thisEternity >= Math.max(2 * (5 - ECTimesCompleted("eterc12")), 1)) {
  343. document.getElementById("challfail").style.display = "block"
  344. setTimeout(exitChallenge, 500)
  345. giveAchievement("You're a mistake")
  346. failureCount++
  347. if (failureCount > 9) giveAchievement("You're a failure")
  348. }
  349.  
  350. document.getElementById("infinitiedBank").style.display = (player.infinitiedBank > 0) ? "block" : "none"
  351. document.getElementById("infinitiedBank").textContent = "You have " + player.infinitiedBank.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",") + " banked infinities."
  352.  
  353. if (infchallengeTimes < 7.5) giveAchievement("Never again")
  354. if (player.infinityPoints.gte(new Decimal("1e22000")) && player.timestudy.studies.length == 0) giveAchievement("What do I have to do to get rid of you")
  355. if (player.replicanti.galaxies >= 180*player.galaxies && player.galaxies > 0) giveAchievement("Popular music")
  356. if (player.eternityPoints.gte(Number.MAX_VALUE)) giveAchievement("But I wanted another prestige layer...")
  357. if (player.infinityPoints.gte(1e100) && player.firstAmount.equals(0) && player.infinitied == 0 && player.resets <= 4 && player.galaxies <= 1 && player.replicanti.galaxies == 0) giveAchievement("Like feasting on a behind")
  358. if (player.infinityPoints.gte('9.99999e999')) giveAchievement("This achievement doesn't exist II");
  359. if (player.infinityPoints.gte('1e30008')) giveAchievement("Can you get infinite IP?");
  360. if (player.infinitied > 2e6) giveAchievement("2 Million Infinities")
  361. if (player.money.gte("9.9999e9999")) giveAchievement("This achievement doesn't exist")
  362. if (player.money.gte("1e35000")) giveAchievement("I got a few to spare")
  363. if (player.infinityPower.gt(1)) giveAchievement("A new beginning.");
  364. if (player.infinityPower.gt(1e6)) giveAchievement("1 million is a lot"); //TBD
  365. if (player.infinityPower.gt(1e260)) giveAchievement("Minute of infinity"); //TBD
  366. if (player.totalTickGained >= 308) giveAchievement("Infinite time");
  367. if (player.firstPow >= 10e30) giveAchievement("I forgot to nerf that")
  368. if (player.money >= 10e79) giveAchievement("Antimatter Apocalypse")
  369. if (player.totalTimePlayed >= 10 * 60 * 60 * 24 * 8) giveAchievement("One for each dimension")
  370. if (player.seventhAmount > 1e12) giveAchievement("Multidimensional");
  371. if (player.tickspeed.lt(1e-26)) giveAchievement("Faster than a potato");
  372. if (player.tickspeed.lt(1e-55)) giveAchievement("Faster than a squared potato");
  373. if (Math.random() < 0.00001) giveAchievement("Do you feel lucky? Well do ya punk?");
  374. if ((player.matter.gte(2.586e15) && player.currentChallenge == "postc6") || player.matter.gte(Number.MAX_VALUE)) giveAchievement("It's not called matter dimensions is it?")
  375.  
  376. document.getElementById("dilationTabbtn").style.display = (player.dilation.studies.includes(1)) ? "inline-block" : "none"
  377. updateDilationUpgradeButtons()
  378.  
  379. if (player.infinityDimension1.baseAmount == 0 &&
  380. player.infinityDimension2.baseAmount == 0 &&
  381. player.infinityDimension3.baseAmount == 0 &&
  382. player.infinityDimension4.baseAmount == 0 &&
  383. player.infinityDimension5.baseAmount == 0 &&
  384. player.infinityDimension6.baseAmount == 0 &&
  385. player.infinityDimension7.baseAmount == 0 &&
  386. player.infinityDimension8.baseAmount == 0 &&
  387. player.infMultCost.equals(10) &&
  388. player.infinityPoints.gt(new Decimal("1e140000"))) {
  389. giveAchievement("I never liked this infinity stuff anyway")
  390. }
  391. if (reality.autoEP) player.eternityPoints = player.eternityPoints.plus(gainedEternityPoints().dividedBy(1000))
  392. if (reality.actual_upgrades[2] >= 1) reality.speed = reality.actual_upgrades[2]+1
  393. if (reality.actual_upgrades[0] >= 1) player.galaxies += (reality.actual_upgrades[0]/(1+player.galaxies))/10
  394. if (player.replicanti.amount.gt(new Decimal("1e20000"))) giveAchievement("When will it be enough?")
  395. if (player.tickspeed.e < -8296262) giveAchievement("Faster than a potato^286078")
  396. if (player.timestudy.studies.length == 0 && player.dilation.active && player.infinityPoints.e >= 20000) giveAchievement("This is what I have to do to get rid of you.")
  397. if (player.why >= 1e6) giveAchievement("Should we tell them about buy max...")
  398.  
  399. }, 100)
  400.  
  401. function updateDimensions() {
  402. if (document.getElementById("antimatterdimensions").style.display == "block" && document.getElementById("dimensions").style.display == "block") {
  403.  
  404. for (let tier = 1; tier <= 8; ++tier) {
  405. var name = TIER_NAMES[tier];
  406. if (!canBuyDimension(tier) && document.getElementById(name + "Row").style.display !== "table-row") {
  407. break;
  408. }
  409. document.getElementById(name + "D").childNodes[0].nodeValue = DISPLAY_NAMES[tier] + " Dimension x" + formatValue(player.options.notation, getDimensionFinalMultiplier(tier), 1, 1);
  410. document.getElementById(name + "Amount").textContent = getDimensionDescription(tier);
  411. }
  412.  
  413.  
  414.  
  415. for (let tier = 1; tier <= 8; ++tier) {
  416. var name = TIER_NAMES[tier];
  417. if (!canBuyDimension(tier)) {
  418. break;
  419. }
  420.  
  421. document.getElementById(name + "Row").style.display = "table-row";
  422. document.getElementById(name + "Row").style.visibility = "visible";
  423.  
  424.  
  425. }
  426.  
  427. var shiftRequirement = getShiftRequirement(0);
  428. if (player.currentChallenge == "challenge4" ? shiftRequirement.tier < 6 : shiftRequirement.tier < 8) {
  429. document.getElementById("resetLabel").textContent = 'Dimension Shift ('+ player.resets +'): requires ' + shiftRequirement.amount + " " + DISPLAY_NAMES[shiftRequirement.tier] + " Dimensions"
  430. }
  431. else document.getElementById("resetLabel").textContent = 'Dimension Boost ('+ player.resets +'): requires ' + shiftRequirement.amount + " " + DISPLAY_NAMES[shiftRequirement.tier] + " Dimensions"
  432.  
  433. if (player.currentChallenge == "challenge4" ? player.resets > 2 : player.resets > 3) {
  434. document.getElementById("softReset").textContent = "Reset the game for a Boost"
  435. } else {
  436. document.getElementById("softReset").textContent = "Reset the game for a new Dimension"
  437. }
  438. let extraGals = player.replicanti.galaxies
  439. if (player.timestudy.studies.includes(225)) extraGals += Math.floor(player.replicanti.amount.e / 1000)
  440. if (player.timestudy.studies.includes(226)) extraGals += Math.floor(player.replicanti.gal / 15)
  441. var galString = ""
  442. if (player.galaxies >= 800) galString += "Remote Antimatter Galaxies (";
  443. else if (player.galaxies >= getGalaxyCostScalingStart() || player.currentEternityChall === "eterc5") galString += "Distant Antimatter Galaxies (";
  444. else galString += "Antimatter Galaxies (";
  445. galString += player.galaxies;
  446. if (extraGals > 0) galString += " + "+extraGals;
  447. if (player.dilation.freeGalaxies > 0) galString += " + "+player.dilation.freeGalaxies;
  448. galString += "): requires " + getGalaxyRequirement()
  449. if (player.currentChallenge == "challenge4") galString += " Sixth Dimensions";
  450. else galString += " Eighth Dimensions";
  451. document.getElementById("secondResetLabel").textContent = galString;
  452. }
  453.  
  454. if (canBuyTickSpeed() || player.currentEternityChall == "eterc9") {
  455. var tickmult = getTickSpeedMultiplier()
  456. if (tickmult.lt(1e-9)) document.getElementById("tickLabel").textContent = "Divide the tick interval by " + shortenDimensions(tickmult.pow(-1)) + '.'
  457. else {
  458. var places = 0
  459. if (tickmult.lt(0.2)) places = Math.floor(Decimal.log10(Decimal.round(tickmult.pow(-1))))
  460. document.getElementById("tickLabel").textContent = 'Reduce the tick interval by ' + ((tickmult.times(-1).plus(1)).times(100)).toFixed(places) + '%.'
  461. }
  462.  
  463. document.getElementById("tickSpeed").style.visibility = "visible";
  464. document.getElementById("tickSpeedMax").style.visibility = "visible";
  465. document.getElementById("tickLabel").style.visibility = "visible";
  466. document.getElementById("tickSpeedAmount").style.visibility = "visible";
  467. } else {
  468. document.getElementById("tickSpeed").style.visibility = "hidden";
  469. document.getElementById("tickSpeedMax").style.visibility = "hidden";
  470. document.getElementById("tickLabel").style.visibility = "hidden";
  471. document.getElementById("tickSpeedAmount").style.visibility = "hidden";
  472. }
  473.  
  474. if (player.bestInfinityTime == 9999999999) {
  475. document.getElementById("bestInfinity").textContent = ""
  476. document.getElementById("infinitied").textContent = ""
  477. document.getElementById("thisInfinity").textContent = ""
  478. } else {
  479. document.getElementById("bestInfinity").textContent = "Your fastest Infinity is in " + timeDisplay(player.bestInfinityTime) + "."
  480. document.getElementById("thisInfinity").textContent = "You have spent " + timeDisplay(player.thisInfinityTime) + " in this Infinity."
  481. if (player.infinityPoints.equals(1)) {
  482. document.getElementById("infinityPoints1").textContent = "You have 1 Infinity point."
  483. document.getElementById("infinityPoints2").textContent = "You have 1 Infinity point."
  484. }
  485. else {
  486. document.getElementById("infinityPoints1").innerHTML = "You have <span class=\"IPAmount1\">"+shortenDimensions(player.infinityPoints)+"</span> Infinity points."
  487. document.getElementById("infinityPoints2").innerHTML = "You have <span class=\"IPAmount2\">"+shortenDimensions(player.infinityPoints)+"</span> Infinity points."
  488. }
  489. if (player.infinitied == 1) document.getElementById("infinitied").textContent = "You have infinitied 1 time."
  490. else document.getElementById("infinitied").textContent = "You have infinitied " + player.infinitied.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",") + " times."
  491. if (player.infinitiedBank > 0) document.getElementById("infinitied").textContent = "You have infinitied " + player.infinitied.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",") + " times this eternity."
  492.  
  493. }
  494.  
  495. if (document.getElementById("stats").style.display == "block" && document.getElementById("statistics").style.display == "block") {
  496. document.getElementById("totalmoney").textContent = 'You have made a total of ' + shortenMoney(player.totalmoney) + ' antimatter.'
  497. document.getElementById("totalresets").textContent = 'You have done ' + player.resets + ' dimensional boosts/shifts.'
  498. document.getElementById("galaxies").textContent = 'You have ' + Math.round(player.galaxies) + ' Antimatter Galaxies.'
  499. document.getElementById("totalTime").textContent = "You have played for " + timeDisplay(player.totalTimePlayed) + "."
  500.  
  501. if (player.eternities == 0) {
  502. document.getElementById("eternitied").textContent = ""
  503. document.getElementById("besteternity").textContent = ""
  504. document.getElementById("thiseternity").textContent = ""
  505. } else {
  506. document.getElementById("eternitied").textContent = "You have Eternitied " + player.eternities.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",") + " times."
  507. document.getElementById("besteternity").textContent = "You have spent "+timeDisplay(player.thisEternity)+" in this Eternity."
  508. document.getElementById("thiseternity").textContent = "Your fastest Eternity is in "+timeDisplay(player.bestEternity)+"."
  509. }
  510. }
  511.  
  512. if (document.getElementById("infinity").style.display == "block") {
  513. if (document.getElementById("preinf").style.display == "block") {
  514. document.getElementById("infi11").innerHTML = "Normal dimensions gain a multiplier based on time played <br>Currently: " + (Math.pow(0.5 * player.totalTimePlayed / 600, 0.15)).toFixed(2) + "x<br>Cost: 1 IP"
  515. document.getElementById("infi12").innerHTML = "First and Eighth Dimensions gain a multiplier based on infinitied stat<br>Currently: " + formatValue(player.options.notation, dimMults(), 1, 1) + "x<br>Cost: 1 IP"
  516. document.getElementById("infi13").innerHTML = "Third and Sixth Dimensions gain a multiplier based on infinitied stat<br>Currently: " + formatValue(player.options.notation, dimMults(), 1, 1) + "x<br>Cost: 1 IP"
  517. document.getElementById("infi22").innerHTML = "Second and seventh Dimensions gain a multiplier based on infinitied stat<br>Currently: " + formatValue(player.options.notation, dimMults(), 1, 1) + "x<br>Cost: 1 IP"
  518. document.getElementById("infi23").innerHTML = "Fourth and Fifth Dimensions gain a multiplier based on infinitied stat<br>Currently: " + formatValue(player.options.notation, dimMults(), 1, 1) + "x<br>Cost: 1 IP"
  519. document.getElementById("infi31").innerHTML = "Normal dimensions gain a multiplier based on time spent in current infinity<br>Currently: " + Decimal.max(Math.pow(player.thisInfinityTime / 2400, 0.25), 1).toFixed(2) + "x<br>Cost: 3 IP"
  520. document.getElementById("infi32").innerHTML = "Multiplier for unspent Infinity Points on 1st Dimension<br>Currently: " + formatValue(player.options.notation, player.infinityPoints.dividedBy(2).pow(1.5).plus(1), 2, 2) + "x<br>Cost: 5 IP"
  521. document.getElementById("infi34").innerHTML = "Infinity Point generation based on fastest infinity <br>Currently: "+shortenDimensions(player.infMult.times(kongIPMult))+" every " + timeDisplay(player.bestInfinityTime*10) + "<br>Cost: 10 IP"
  522. }
  523. else if (document.getElementById("postinf").style.display == "block") {
  524. document.getElementById("postinfi11").innerHTML = "Power up all dimensions based on total antimatter produced<br>Currently: "+ Math.pow(player.totalmoney.e+1, 0.5).toFixed(2)+"x<br>Cost: "+shortenCosts(1e4)+" IP"
  525. document.getElementById("postinfi21").innerHTML = "Power up all dimensions based on current antimatter<br>Currently: "+ Math.pow(player.money.e+1, 0.5).toFixed(2)+"x<br>Cost: "+shortenCosts(5e4)+" IP"
  526. document.getElementById("postinfi31").innerHTML = "Tickspeed cost multiplier increase <br>"+shortenCosts(reality.costMs)+"x -> "+shortenCosts(reality.costMs[1].minus(1))+"x<br>Cost: "+shortenDimensions(reality.costMs[1]) +" IP"
  527. if (player.tickSpeedMultDecrease <= 2) document.getElementById("postinfi31").innerHTML = "Tickspeed cost multiplier increase <br>"+shortenCosts(reality.costMs[1])+"x"
  528. document.getElementById("postinfi22").innerHTML = "Power up all dimensions based on achievements completed <br>Currently: "+achievementMult.toFixed(2)+"x<br>Cost: "+shortenCosts(1e6)+" IP"
  529. document.getElementById("postinfi12").innerHTML = "Power up all dimensions based on amount infinitied <br>Currently: "+(1+Math.log10(getInfinitied()+1)*10).toFixed(2)+"x<br>Cost: "+shortenCosts(1e5)+" IP"
  530. if (player.timestudy.studies.includes(31)) document.getElementById("postinfi12").innerHTML = "Power up all dimensions based on amount infinitied <br>Currently: "+shortenMoney(Math.pow((Math.log10(getInfinitied()+1)*10).toFixed(2), 4))+"x<br>Cost: "+shortenCosts(1e5)+" IP"
  531. document.getElementById("postinfi41").innerHTML = "Makes galaxies 50% stronger <br>Cost: "+shortenCosts(5e11)+" IP"
  532. document.getElementById("postinfi32").innerHTML = "Power up all dimensions based on slowest challenge run<br>Currently:"+Decimal.max(10*3000/worstChallengeTime, 1).toFixed(2)+"x<br>Cost: "+shortenCosts(1e7)+" IP"
  533. document.getElementById("postinfi42").innerHTML = "Dimension cost multiplier increase <br>"+shortenCosts(reality.costMs[0])+"x -> "+shortenCosts(reality.costMs[0].minus(1))+"x<br>Cost: "+shortenCosts(player.dimensionMultDecreaseCost) +" IP"
  534.  
  535. document.getElementById("postinfi13").innerHTML = "You passively generate Infinitied stat based on your fastest infinity.<br>1 Infinity every "+timeDisplay(player.bestInfinityTime*5)+ " <br>Cost: "+shortenCosts(20e6)+" IP"
  536. document.getElementById("postinfi23").innerHTML = "Option to bulk buy Dimension Boosts <br>Cost: "+shortenCosts(5e9)+" IP"
  537. document.getElementById("postinfi33").innerHTML = "Autobuyers work twice as fast <br>Cost:"+shortenCosts(1e15)+" IP"
  538. if (player.dimensionMultDecrease <= 3) document.getElementById("postinfi42").innerHTML = "Dimension cost multiplier increase <br>"+shortenCosts(reality.costMs[0])+"x"
  539.  
  540. document.getElementById("offlineProd").innerHTML = "Generates "+player.offlineProd+"% > "+Math.max(Math.max(5, player.offlineProd + 5), Math.min(50, player.offlineProd + 5))+"% of your best IP/min from last 10 infinities, works offline<br>Currently: "+shortenMoney(bestRunIppm.times(player.offlineProd/100)) +"IP/min<br> Cost: "+shortenCosts(player.offlineProdCost)+" IP"
  541. if (player.offlineProd == 50) document.getElementById("offlineProd").innerHTML = "Generates "+player.offlineProd+"% of your best IP/min from last 10 infinities, works offline<br>Currently: "+shortenMoney(bestRunIppm.times(player.offlineProd/100)) +" IP/min"
  542. }
  543. }
  544.  
  545. if (document.getElementById("eternityupgrades").style.display == "block" && document.getElementById("eternitystore").style.display == "block") {
  546. document.getElementById("eter1").innerHTML = "Infinity Dimensions multiplier based on unspent EP (x+1)<br>Currently: "+shortenMoney(player.eternityPoints.plus(1))+"x<br>Cost: 5 EP"
  547. document.getElementById("eter2").innerHTML = "Infinity Dimension multiplier based on eternities ((x/200)^log4(2x))<br>Currently: "+shortenMoney(Decimal.pow(Math.min(player.eternities, 100000)/200 + 1, Math.log(Math.min(player.eternities, 100000)*2+1)/Math.log(4)).times(new Decimal((player.eternities-100000)/200 + 1).times(Math.log((player.eternities- 100000)*2+1)/Math.log(4)).max(1)))+"x<br>Cost: 10 EP"
  548. document.getElementById("eter3").innerHTML = "Infinity Dimensions multiplier based on sum of Infinity Challenge times<br>Currently: "+shortenMoney(Decimal.pow(2,300/Math.max(infchallengeTimes, player.achievements.includes("r112") ? 6.1 : 7.5)))+"x<br>Cost: "+shortenCosts(50e3)+" EP"
  549. document.getElementById("eter4").innerHTML = "Your achievement bonus affects Time Dimensions"+"<br>Cost: "+shortenCosts(1e16)+" EP"
  550. document.getElementById("eter5").innerHTML = "Time Dimensions are multiplied by your unspent time theorems"+"<br>Cost: "+shortenCosts(1e40)+" EP"
  551. document.getElementById("eter6").innerHTML = "Time Dimensions are multiplied by days played"+"<br>Cost: "+shortenCosts(1e50)+" EP"
  552. }
  553.  
  554. if (document.getElementById("dilation").style.display == "block") {
  555. if (player.dilation.active) {
  556. if (Math.pow(Decimal.log10(player.money) / 400, 1.5) * (Math.pow(3, player.dilation.rebuyables[3])) - player.dilation.totalTachyonParticles <= 0) {
  557. document.getElementById("enabledilation").innerHTML = "Disable dilation.<br>Reach " + shortenMoney(Decimal.pow(10, Math.pow(player.dilation.tachyonParticles * Math.pow(400, 1.5) / Math.pow(3, player.dilation.rebuyables[3]), 2/3))) + " antimatter to gain more Tachyon Particles."
  558. } else {
  559. document.getElementById("enabledilation").textContent = "Disable dilation."
  560. }
  561. }
  562. else document.getElementById("enabledilation").textContent = "Dilate time."
  563. }
  564. }
  565.  
  566. function getTickSpeedMultiplier() {
  567. if (player.currentChallenge == "postc3") return new Decimal(1);
  568. if (player.galaxies + player.replicanti.galaxies + player.dilation.freeGalaxies < 3) {
  569. let baseMultiplier = 0.9;
  570. if (player.galaxies == 0) baseMultiplier = 0.89
  571. if (player.currentChallenge == "challenge6" || player.currentChallenge == "postc1") baseMultiplier = 0.93;
  572. let perGalaxy = 0.02;
  573. let galaxies = player.galaxies+player.replicanti.galaxies+player.dilation.freeGalaxies
  574. if (player.timestudy.studies.includes(133)) galaxies += player.replicanti.galaxies/2
  575. if (player.timestudy.studies.includes(132)) galaxies += player.replicanti.galaxies*0.4
  576. if (player.timestudy.studies.includes(225)) galaxies += Math.floor(player.replicanti.amount.e / 1000)
  577. if (player.timestudy.studies.includes(226)) galaxies += Math.floor(player.replicanti.gal / 15)
  578. galaxies += Math.min(player.replicanti.galaxies, player.replicanti.gal) * Math.max(Math.pow(Math.log10(player.infinityPower.plus(1).log10()+1), 0.03 * ECTimesCompleted("eterc8"))-1, 0)
  579. if (player.infinityUpgrades.includes("galaxyBoost")) perGalaxy *= 2;
  580. if (player.infinityUpgrades.includes("postGalaxy")) perGalaxy *= 1.5;
  581. if (player.challenges.includes("postc5")) perGalaxy *= 1.1;
  582. if (player.achievements.includes("r86")) perGalaxy *= 1.01;
  583. if (player.timestudy.studies.includes(212)) perGalaxy *= Math.min(Math.pow(player.timeShards.max(2).log2(), 0.005), 1.1)
  584. perGalaxy *= reality.actual_upgrades[1]+1
  585. return new Decimal(baseMultiplier-(player.galaxies*perGalaxy));
  586. } else {
  587. let baseMultiplier = new Decimal(0.8)
  588. if (player.currentChallenge == "challenge6" || player.currentChallenge == "postc1") baseMultiplier = new Decimal(0.83)
  589. let perGalaxy = new Decimal(0.965)
  590. let galaxies = player.galaxies-2+player.replicanti.galaxies+player.dilation.freeGalaxies
  591. if (player.timestudy.studies.includes(133)) galaxies += player.replicanti.galaxies/2
  592. if (player.timestudy.studies.includes(132)) galaxies += player.replicanti.galaxies*0.4
  593. if (player.timestudy.studies.includes(225)) galaxies += Math.floor(player.replicanti.amount.e / 1000)
  594. if (player.timestudy.studies.includes(226)) galaxies += Math.floor(player.replicanti.gal / 15)
  595. galaxies += Math.min(player.replicanti.galaxies, player.replicanti.gal) * Math.max(Math.pow(Math.log10(player.infinityPower.plus(1).log10()+1), 0.03 * ECTimesCompleted("eterc8"))-1, 0)
  596. if (player.infinityUpgrades.includes("galaxyBoost")) galaxies *= 2;
  597. if (player.infinityUpgrades.includes("postGalaxy")) galaxies *= 1.5;
  598. if (player.challenges.includes("postc5")) galaxies *= 1.1;
  599. if (player.achievements.includes("r86")) galaxies *= 1.01
  600. if (player.timestudy.studies.includes(212)) galaxies *= Math.min(Math.pow(player.timeShards.max(2).log2(), 0.005), 1.1)
  601. if (player.timestudy.studies.includes(232)) galaxies *= Math.pow(1+player.galaxies/1000, 0.2)
  602. galaxies *= reality.actual_upgrades[1]+1
  603. return baseMultiplier.times(Decimal.pow(perGalaxy, (galaxies-2))).dividedBy(reality.galaxyMult)
  604. }
  605. }
  606.  
  607. function getDimensionFinalMultiplier(tier) {
  608. //if (player.currentEternityChall == "eterc3" && tier > 4) return new Decimal(0)
  609. var name = TIER_NAMES[tier];
  610.  
  611. let multiplier = new Decimal(player[name + 'Pow']);
  612.  
  613. if (player.currentEternityChall == "eterc11") return player.infinityPower.pow(7).max(1).times(getDimensionBoostPower().pow(player.resets - tier + 1).max(1))
  614. if (player.currentChallenge == "challenge7") {
  615. if (tier == 4) multiplier = multiplier.pow(1.4)
  616. if (tier == 2) multiplier = multiplier.pow(1.7)
  617. }
  618.  
  619. multiplier = multiplier.times(player.achPow);
  620. multiplier = multiplier.times(kongDimMult)
  621. multiplier = multiplier.times(kongAllDimMult)
  622.  
  623. if (player.currentEternityChall == "eterc9") multiplier = multiplier;
  624. else multiplier = multiplier.times(player.infinityPower.pow(7).max(1))
  625.  
  626. if (player.infinityUpgrades.includes("totalMult")) multiplier = multiplier.times(totalMult)
  627. if (player.infinityUpgrades.includes("currentMult")) multiplier = multiplier.times(currentMult)
  628. if (player.infinityUpgrades.includes("infinitiedMult")) multiplier = multiplier.times(infinitiedMult)
  629. if (player.infinityUpgrades.includes("achievementMult")) multiplier = multiplier.times(achievementMult)
  630. if (player.infinityUpgrades.includes("challengeMult")) multiplier = multiplier.times(challengeMult)
  631.  
  632. if (hasInfinityMult(tier)) multiplier = multiplier.times(dimMults());
  633. if (tier == 1) {
  634. if (player.infinityUpgrades.includes("unspentBonus")) multiplier = multiplier.times(unspentBonus);
  635. if (player.achievements.includes("r28")) multiplier = multiplier.times(1.1);
  636. if (player.achievements.includes("r31")) multiplier = multiplier.times(1.05);
  637. if (player.achievements.includes("r71")) multiplier = multiplier.times(3);
  638. if (player.achievements.includes("r68")) multiplier = multiplier.times(1.5);
  639. }
  640.  
  641. multiplier = multiplier.times(timeMult());
  642. if (tier == 8 && player.achievements.includes("r23")) multiplier = multiplier.times(1.1);
  643. else if (player.achievements.includes("r34")) multiplier = multiplier.times(1.02);
  644. if (tier <= 4 && player.achievements.includes("r43")) multiplier = multiplier.times(1.25);
  645. if (player.achievements.includes("r48")) multiplier = multiplier.times(1.1);
  646. if (player.achievements.includes("r72")) multiplier = multiplier.times(1.1); // tbd
  647. if (player.achievements.includes("r74") && player.currentChallenge != "") multiplier = multiplier.times(1.4);
  648. if (player.achievements.includes("r77")) multiplier = multiplier.times(1+tier/100);
  649. if (player.achievements.includes("r56") && player.thisInfinityTime < 1800) multiplier = multiplier.times(3600/(player.thisInfinityTime+1800));
  650. if (player.achievements.includes("r78") && player.thisInfinityTime < 3) multiplier = multiplier.times(3.3/(player.thisInfinityTime+0.3));
  651. if (player.achievements.includes("r65") && player.currentChallenge != "" && player.thisInfinityTime < 1800) multiplier = multiplier.times(Math.max(2400/(player.thisInfinityTime+600), 1))
  652. if (player.achievements.includes("r91") && player.thisInfinityTime < 50) multiplier = multiplier.times(Math.max(301-player.thisInfinityTime*6, 1))
  653. if (player.achievements.includes("r92") && player.thisInfinityTime < 600) multiplier = multiplier.times(Math.max(101-player.thisInfinityTime/6, 1));
  654. if (player.achievements.includes("r84")) multiplier = multiplier.times(player.money.pow(0.00004).plus(1));
  655. else if (player.achievements.includes("r73")) multiplier = multiplier.times(player.money.pow(0.00002).plus(1));
  656.  
  657.  
  658. if (player.timestudy.studies.includes(71) && tier !== 8) multiplier = multiplier.times(calcTotalSacrificeBoost().pow(0.25).min("1e210000"));
  659. if (player.timestudy.studies.includes(91)) multiplier = multiplier.times(Decimal.pow(10, Math.min(player.thisEternity, 18000)/60));
  660. if (player.timestudy.studies.includes(101)) multiplier = multiplier.times(Decimal.max(player.replicanti.amount, 1))
  661. if (player.timestudy.studies.includes(161)) multiplier = multiplier.times(new Decimal("1e616"))
  662. if (player.timestudy.studies.includes(234) && tier == 1) multiplier = multiplier.times(calcTotalSacrificeBoost())
  663.  
  664. multiplier = multiplier.times(player.postC3Reward)
  665. if (player.challenges.includes("postc8") && tier < 8 && tier > 1) multiplier = multiplier.times(mult18);
  666.  
  667. if (player.currentChallenge == "postc6") multiplier = multiplier.dividedBy(player.matter.max(1))
  668. if (player.currentChallenge == "postc8") multiplier = multiplier.times(postc8Mult)
  669.  
  670. if (player.currentChallenge == "postc4" && player.postC4Tier != tier) multiplier = multiplier.pow(0.25)
  671. if (player.challenges.includes("postc4")) multiplier = multiplier.pow(1.05);
  672. if (player.currentEternityChall == "eterc10") multiplier = multiplier.times(ec10bonus)
  673. if (player.timestudy.studies.includes(193)) multiplier = multiplier.times(Decimal.pow(1.03, player.eternities).min("1e13000"))
  674. if (tier == 8 && player.timestudy.studies.includes(214)) multiplier = multiplier.times((calcTotalSacrificeBoost().pow(8)).min("1e46000").times(calcTotalSacrificeBoost().pow(1.1).min(new Decimal("1e125000"))))
  675. if (multiplier.lt(1)) multiplier = new Decimal(1)
  676. if (player.dilation.active) {
  677. multiplier = Decimal.pow(10, Math.pow(multiplier.log10(), 0.75))
  678. if (player.dilation.upgrades.includes(9)) {
  679. multiplier = Decimal.pow(10, Math.pow(multiplier.log10(), 1.05))
  680. }
  681. }
  682. multiplier = multiplier.times(reality.dimMult)
  683. if (player.dilation.upgrades.includes(6)) multiplier = multiplier.times(player.dilation.dilatedTime.pow(308))
  684. return multiplier;
  685. }
  686.  
  687. document.getElementById("reality").onclick = function () {
  688. if (player.eternityPoints.gte(Number.MAX_VALUE)) {
  689. if (forceHardReset) {
  690. reality.points = reality.points.plus(reality.mult.times(getRealityPoints()))
  691. reality.times = reality.times.plus(1)
  692. getRealityMilestones()
  693. if (window.location.href.split("//")[1].length > 20) set_save('dimensionTestSave', currentSave, defaultStart);
  694. else set_save('dimensionSave', currentSave, defaultStart);
  695. player = defaultStart
  696. infDimPow = 1;
  697. save_game();
  698. load_game();
  699. updateCosts();
  700. document.getElementById("secondRow").style.display = "none";
  701. document.getElementById("thirdRow").style.display = "none";
  702. document.getElementById("tickSpeed").style.visibility = "hidden";
  703. document.getElementById("tickSpeedMax").style.visibility = "hidden";
  704. document.getElementById("tickLabel").style.visibility = "hidden";
  705. document.getElementById("tickSpeedAmount").style.visibility = "hidden";
  706. document.getElementById("fourthRow").style.display = "none";
  707. document.getElementById("fifthRow").style.display = "none";
  708. document.getElementById("sixthRow").style.display = "none";
  709. document.getElementById("seventhRow").style.display = "none";
  710. document.getElementById("eightRow").style.display = "none";
  711. showDimTab('antimatterdimensions')
  712. updateTickSpeed();
  713. updateDimensions();
  714. updateChallenges();
  715. updateAutobuyers();
  716. } else if (confirm("Do you really want to erase all your progress?")) {
  717. reality.points = reality.points.plus(reality.mult.times(getRealityPoints()))
  718. reality.times = reality.times.plus(1)
  719. getRealityMilestones()
  720. if (window.location.href.split("//")[1].length > 20) set_save('dimensionTestSave', currentSave, defaultStart);
  721. else set_save('dimensionSave', currentSave, defaultStart);
  722. player = defaultStart
  723. infDimPow = 1;
  724. save_game();
  725. load_game();
  726. updateCosts();
  727. document.getElementById("secondRow").style.display = "none";
  728. document.getElementById("thirdRow").style.display = "none";
  729. document.getElementById("tickSpeed").style.visibility = "hidden";
  730. document.getElementById("tickSpeedMax").style.visibility = "hidden";
  731. document.getElementById("tickLabel").style.visibility = "hidden";
  732. document.getElementById("tickSpeedAmount").style.visibility = "hidden";
  733. document.getElementById("fourthRow").style.display = "none";
  734. document.getElementById("fifthRow").style.display = "none";
  735. document.getElementById("sixthRow").style.display = "none";
  736. document.getElementById("seventhRow").style.display = "none";
  737. document.getElementById("eightRow").style.display = "none";
  738. showDimTab('antimatterdimensions')
  739. updateTickSpeed();
  740. updateDimensions();
  741. updateChallenges();
  742. updateAutobuyers();
  743. }
  744. showTab('dimensions')
  745. document.getElementById("RealityTab").style.display = "none"
  746. }
  747. };
  748.  
  749. function buyOneDimension(tier) {
  750. var name = TIER_NAMES[tier];
  751. var cost = player[name + 'Cost'];
  752. auto = false;
  753.  
  754. if (player.currentChallenge != "challenge10" && player.currentChallenge != "postc1") {
  755. if (!canBuyDimension(tier)) {
  756. return false;
  757. }
  758. } else {
  759. if (tier >= 3) {
  760. if (player[TIER_NAMES[tier-2] + 'Amount'].lt(cost)) return false
  761. }
  762. else if (!canBuyDimension(tier)) {
  763. return false;
  764. } else if (tier < 3 && !canAfford(cost)){
  765. return false;
  766. }
  767. }
  768.  
  769.  
  770.  
  771. if (player.currentChallenge != "challenge10" && player.currentChallenge != "postc1") {
  772. if (!canAfford(cost)) {
  773. return false;
  774. }
  775. }
  776.  
  777.  
  778. if ((player.currentChallenge != "challenge10" && player.currentChallenge != "postc1") || tier < 3) {
  779. player.money = player.money.minus(cost);
  780. } else {
  781. player[TIER_NAMES[tier-2] + 'Amount'] = player[TIER_NAMES[tier-2] + 'Amount'].minus(cost)
  782. }
  783.  
  784. player[name + 'Amount'] = player[name + 'Amount'].plus(1);
  785. player[name + 'Bought']++;
  786.  
  787. if (dimBought(tier) === 0) {
  788. player[name + 'Pow'] = player[name + 'Pow'].times(getDimensionPowerMultiplier(tier));
  789. if (player.currentChallenge != "challenge5" && player.currentChallenge != "postc5") player[name + 'Cost'] = player[name + 'Cost'].times(getDimensionCostMultiplier(tier));
  790. else if (player.currentChallenge == "postc5") multiplyPC5Costs(player[name + 'Cost'], tier)
  791. else multiplySameCosts(cost);
  792. if (player[name + "Cost"].lt(new Decimal("1e1000000"))) reality.costMs = [new Decimal(player.dimensionMultDecrease),new Decimal(player.tickSpeedMultDecrease)]
  793. if (player[name + 'Cost'].gte(Number.MAX_VALUE)) player.costMultipliers[tier-1] = player.costMultipliers[tier-1].times(reality.costMs[0])
  794. if (player[name + "Cost"].gte(new Decimal("1e1000000"))) reality.costMs = reality.costMs.times(reality.costMMs[0])
  795. floatText(name+"D", "x" + shortenMoney(getDimensionPowerMultiplier(tier)))
  796. }
  797.  
  798. if (player.currentChallenge == "challenge2" || player.currentChallenge == "postc1") player.chall2Pow = 0;
  799. if (player.currentChallenge == "challenge8" || player.currentChallenge == "postc1") clearDimensions(tier-1);
  800.  
  801. onBuyDimension(tier);
  802.  
  803.  
  804. return true;
  805. }
  806.  
  807. function buyManyDimension(tier) {
  808. var name = TIER_NAMES[tier];
  809. var cost = player[name + 'Cost'].times(10 - dimBought(tier));
  810.  
  811. auto = false;
  812.  
  813. if ((player.currentChallenge == "challenge12" || player.currentChallenge == "postc1" || player.currentChallenge == "postc6") && player.matter.equals(0)) player.matter = new Decimal(1);
  814. if (player.currentChallenge != "challenge10" && player.currentChallenge != "postc1") {
  815. if (!canBuyDimension(tier)) {
  816. return false;
  817. }
  818. } else {
  819. if (tier >= 3) {
  820. if (!canBuyDimension(tier)) return false
  821. if (player[TIER_NAMES[tier-2] + 'Amount'].lt(cost)) return false
  822. }
  823. else if (!canBuyDimension(tier)) {
  824. return false;
  825. } else if (tier < 3 && !canAfford(cost)){
  826. return false;
  827. }
  828. }
  829.  
  830.  
  831.  
  832. if (player.currentChallenge != "challenge10" && player.currentChallenge != "postc1") {
  833. if (!canAfford(cost)) {
  834. return false;
  835. }
  836. }
  837.  
  838. if ((player.currentChallenge != "challenge10" && player.currentChallenge != "postc1") || tier < 3) {
  839. player.money = player.money.minus(cost);
  840. } else {
  841. player[TIER_NAMES[tier-2] + 'Amount'] = player[TIER_NAMES[tier-2] + 'Amount'].minus(cost)
  842. }
  843.  
  844. player[name + 'Amount'] = player[name + 'Amount'].plus(10 - dimBought(tier));
  845. player[name + 'Bought'] = player[name + 'Bought'] + (10 - dimBought(tier));
  846. player[name + 'Pow'] = player[name + 'Pow'].times(getDimensionPowerMultiplier(tier));
  847. if (player.currentChallenge != "challenge5" && player.currentChallenge != "postc5" ) player[name + 'Cost'] = player[name + 'Cost'].times((getDimensionCostMultiplier(tier)));
  848. else if (player.currentChallenge == "postc5") multiplyPC5Costs(player[name + 'Cost'], tier)
  849. else multiplySameCosts(player[name + 'Cost']);
  850. if (player[name + "Cost"].lt(new Decimal("1e1000000"))) reality.costMs = [new Decimal(player.dimensionMultDecrease),new Decimal(player.tickSpeedMultDecrease)]
  851. if (player[name + 'Cost'].gte(Number.MAX_VALUE)) player.costMultipliers[tier-1] = player.costMultipliers[tier-1].times(reality.costMs[0])
  852. if (player[name + "Cost"].gte(new Decimal("1e1000000"))) reality.costMs[0] = reality.costMs[0].times(reality.costMMs[0])
  853. if (player.currentChallenge == "challenge2" || player.currentChallenge == "postc1") player.chall2Pow = 0;
  854. if (player.currentChallenge == "challenge8" || player.currentChallenge == "postc1") clearDimensions(tier-1);
  855. floatText(name+"D", "x" + shortenMoney(getDimensionPowerMultiplier(tier)))
  856. onBuyDimension(tier);
  857.  
  858. return true;
  859. }
  860.  
  861. function buyManyDimensionAutobuyer(tier, bulk) {
  862.  
  863. var name = TIER_NAMES[tier];
  864. var cost = player[name + 'Cost'].times(10 - dimBought(tier))
  865. if (!player.break && player.money.gt(Number.MAX_VALUE)) return false;
  866.  
  867. if (tier >= 3 && (player.currentChallenge == "challenge10" || player.currentChallenge == "postc1")) {
  868. if (!canBuyDimension(tier)) return false
  869. if (player[TIER_NAMES[tier-2] + 'Amount'].lt(cost)) return false
  870. if (canBuyDimension(tier)) {
  871. if (cost.lt(player[TIER_NAMES[tier-2]+"Amount"]) && dimBought(tier) != 0) {
  872. player[TIER_NAMES[tier-2]+"Amount"] = player[TIER_NAMES[tier-2]+"Amount"].minus(cost)
  873. player[name + "Amount"] = Decimal.round(player[name + "Amount"].plus(10 - dimBought(tier)))
  874. player[name + 'Bought'] += (10 - dimBought(tier));
  875. player[name + 'Pow'] = player[name + 'Pow'].times(getDimensionPowerMultiplier(tier))
  876. player[name + "Cost"] = player[name + "Cost"].times(getDimensionCostMultiplier(tier))
  877. }
  878. var x = bulk
  879. while (player[TIER_NAMES[tier-2]+"Amount"].gt(player[name + "Cost"].times(10)) && x > 0) {
  880. player[TIER_NAMES[tier-2]+"Amount"] = player[TIER_NAMES[tier-2]+"Amount"].minus(player[name + "Cost"].times(10))
  881. player[name + "Cost"] = player[name + "Cost"].times(getDimensionCostMultiplier(tier))
  882. player[name + "Amount"] = Decimal.round(player[name + "Amount"].plus(10))
  883. player[name + 'Bought'] += 10
  884. player[name + "Pow"] = player[name + "Pow"].times(getDimensionPowerMultiplier(tier))
  885. if (player[name + "Cost"].lt(new Decimal("1e1000000"))) reality.costMs = [new Decimal(player.dimensionMultDecrease),new Decimal(player.tickSpeedMultDecrease)]
  886. if (player[name + 'Cost'].gte(Number.MAX_VALUE)) player.costMultipliers[tier-1] = player.costMultipliers[tier-1].times(reality.costMs[0])
  887. if (player[name + "Cost"].gte(new Decimal("1e1000000"))) reality.costMs[0] = reality.costMs[0].times(reality.costMMs[0])
  888. x--;
  889. }
  890.  
  891.  
  892. onBuyDimension(tier);
  893. }
  894. } else {
  895. if (!canBuyDimension(tier)) return false
  896. if (cost.lt(player.money) && dimBought(tier) != 0) {
  897. player.money = player.money.minus(cost)
  898. player[name + "Amount"] = Decimal.round(player[name + "Amount"].plus(10 - dimBought(tier)))
  899. player[name + 'Bought'] += (10 - dimBought(tier));
  900. player[name + 'Pow'] = player[name + 'Pow'].times(getDimensionPowerMultiplier(tier))
  901. player[name + "Cost"] = player[name + "Cost"].times(getDimensionCostMultiplier(tier))
  902. }
  903. if (player.money.lt(player[name + "Cost"].times(10))) return false
  904. var x = bulk
  905.  
  906. if ((player.dimensionMultDecrease > 3 || player.currentChallenge == "postc5" || player.currentChallenge == "challenge5")) {
  907. while (player.money.gte(player[name + "Cost"].times(10)) && x > 0) {
  908. player.money = player.money.minus(player[name + "Cost"].times(10))
  909. if (player.currentChallenge != "challenge5" && player.currentChallenge != "postc5") player[name + "Cost"] = player[name + "Cost"].times(getDimensionCostMultiplier(tier))
  910. else if (player.currentChallenge == "postc5") multiplyPC5Costs(player[name + 'Cost'], tier)
  911. else multiplySameCosts(player[name + 'Cost'])
  912. player[name + "Amount"] = Decimal.round(player[name + "Amount"].plus(10))
  913. player[name + 'Bought'] += 10
  914. player[name + "Pow"] = player[name + "Pow"].times(getDimensionPowerMultiplier(tier))
  915. if (player[name + "Cost"].lt(new Decimal("1e1000000"))) reality.costMs = [new Decimal(player.dimensionMultDecrease),new Decimal(player.tickSpeedMultDecrease)]
  916. if (player[name + 'Cost'].gte(Number.MAX_VALUE)) player.costMultipliers[tier-1] = player.costMultipliers[tier-1].times(reality.costMs[0])
  917. if (player[name + "Cost"].gte(new Decimal("1e1000000"))) reality.costMs[0] = reality.costMs[0].times(reality.costMMs[0])
  918. if (player.currentChallenge == "challenge8") clearDimensions(tier-1)
  919. x--;
  920. }
  921. } else {
  922. if (player[name + "Cost"].lt(Number.MAX_VALUE)) {
  923. let failsafe = 0
  924. while (player.money.gt(player[name + "Cost"].times(10)) && x > 0 && player[name + "Cost"].lte(Number.MAX_VALUE) && failsafe < 150) {
  925. player.money = player.money.minus(player[name + "Cost"].times(10))
  926. if (player.currentChallenge != "challenge5" && player.currentChallenge != "postc5") player[name + "Cost"] = player[name + "Cost"].times(getDimensionCostMultiplier(tier))
  927. else if (player.currentChallenge == "postc5") multiplyPC5Costs(player[name + 'Cost'], tier)
  928. else multiplySameCosts(player[name + 'Cost'])
  929. player[name + "Amount"] = Decimal.round(player[name + "Amount"].plus(10))
  930. player[name + 'Bought'] += 10
  931. player[name + "Pow"] = player[name + "Pow"].times(getDimensionPowerMultiplier(tier))
  932. if (player[name + "Cost"].lt(new Decimal("1e1000000"))) reality.costMs = [new Decimal(player.dimensionMultDecrease),new Decimal(player.tickSpeedMultDecrease)]
  933. if (player[name + 'Cost'].gte(Number.MAX_VALUE)) player.costMultipliers[tier-1] = player.costMultipliers[tier-1].times(reality.costMs[0])
  934. if (player[name + "Cost"].gte(new Decimal("1e1000000"))) reality.costMs[0] = reality.costMs[0].times(reality.costMMs[0])
  935. if (player.currentChallenge == "challenge8") clearDimensions(tier-1)
  936. x--;
  937. failsafe++;
  938. }
  939. }
  940. if (player[name + "Cost"].gte(Number.MAX_VALUE)) {
  941. var a = Decimal.log10(Decimal.sqrt(reality.costMs[0]))
  942. var b = player.costMultipliers[tier-1].dividedBy(Decimal.sqrt(reality.costMs[0])).log10()
  943. var c = player[name + "Cost"].dividedBy(player.money).log10()
  944. var discriminant = Math.pow(b, 2) - (c *a* 4)
  945. if (discriminant < 0) return false
  946. var buying = Math.floor((Math.sqrt(Math.pow(b, 2) - (c *a *4))-b)/(2 * a))+1
  947. if (buying <= 0) return false
  948. if (buying > bulk) buying = bulk
  949. player[name+"Amount"] = Decimal.round(player[name+"Amount"].plus(10*buying))
  950. preInfBuy = Math.floor(1 + (308 - initCost[tier].log10()) / costMults[tier].log10())
  951. postInfBuy = player[name + 'Bought']/10+buying - preInfBuy - 1
  952. postInfInitCost = initCost[tier].times(Decimal.pow(costMults[tier], preInfBuy))
  953. player[name + 'Bought'] += 10*buying
  954. player[name + "Pow"] = player[name + "Pow"].times(Decimal.pow(getDimensionPowerMultiplier(tier), buying))
  955.  
  956. newCost = postInfInitCost.times(Decimal.pow(costMults[tier], postInfBuy)).times(Decimal.pow(reality.costMs[0], postInfBuy * (postInfBuy+1)/2))
  957. newMult = costMults[tier].times(Decimal.pow(reality.costMs[0], postInfBuy+1))
  958. //if (buying > 0 )player[name + "Cost"] = player.costMultipliers[tier-1].times(Decimal.pow(reality.costMs[0], (buying * buying - buying)/2)).times(player[name + "Cost"])
  959.  
  960. player[name + "Cost"] = newCost
  961. player.costMultipliers[tier-1] = newMult
  962. if (player.money.gte(player[name + "Cost"])) player.money = player.money.minus(player[name + "Cost"])
  963. if (player[name + "Cost"].lt(new Decimal("1e1000000"))) reality.costMs = [new Decimal(player.dimensionMultDecrease),new Decimal(player.tickSpeedMultDecrease)]
  964. player[name + "Cost"] = player[name + "Cost"].times(player.costMultipliers[tier-1])
  965. player.costMultipliers[tier-1] = player.costMultipliers[tier-1].times(reality.costMs[0])
  966. if (player[name + "Cost"].gte(new Decimal("1e1000000"))) reality.costMs[0] = reality.costMs[0].times(reality.costMMs[0])
  967. }
  968. }
  969. }
  970. if ((player.currentChallenge == "challenge12" || player.currentChallenge == "postc1" || player.currentChallenge == "postc6") && player.matter.equals(0)) player.matter = new Decimal(1);
  971. if (player.currentChallenge == "challenge2" || player.currentChallenge == "postc1") player.chall2Pow = 0;
  972. if (player.currentChallenge == "postc1") clearDimensions(tier-1);
  973. player.postC4Tier = tier;
  974. if (tier != 8) player.dimlife = false
  975. if (tier != 1) player.dead = false
  976. }
  977.  
  978. function buyTickSpeed() {
  979. if (!canBuyTickSpeed()) {
  980. return false;
  981. }
  982.  
  983. if (!canAfford(player.tickSpeedCost)) {
  984. return false;
  985. }
  986.  
  987. player.money = player.money.minus(player.tickSpeedCost);
  988. if (player.currentChallenge != "challenge5" && player.currentChallenge != "postc5") player.tickSpeedCost = player.tickSpeedCost.times(player.tickspeedMultiplier);
  989. else multiplySameCosts(player.tickSpeedCost)
  990. if (player.tickSpeedCost.lt(new Decimal("1e1000000"))) reality.costMs = [new Decimal(player.dimensionMultDecrease),new Decimal(player.tickSpeedMultDecrease)]
  991. if (player.tickSpeedCost.gte(Number.MAX_VALUE)) player.tickspeedMultiplier = player.tickspeedMultiplier.times(reality.costMs[1]);
  992. if (player.tickSpeedCost.gte(new Decimal("1e1000000"))) reality.costMs[1] = reality.costMs[1].times(reality.costMMs[1])
  993. if (player.currentChallenge == "challenge2" || player.currentChallenge == "postc1") player.chall2Pow = 0
  994. player.tickspeed = player.tickspeed.times(getTickSpeedMultiplier());
  995. if (player.challenges.includes("postc3") || player.currentChallenge == "postc3") player.postC3Reward = player.postC3Reward.times(1.05+(player.galaxies*0.005))
  996. postc8Mult = new Decimal(1)
  997. player.why = player.why + 1
  998. return true;
  999. }
  1000.  
  1001. document.getElementById("tickSpeed").onclick = function () {
  1002. buyTickSpeed();
  1003.  
  1004. updateTickSpeed();
  1005. };
  1006.  
  1007. function buyMaxTickSpeed() {
  1008. if (!canBuyTickSpeed()) return false
  1009. var mult = getTickSpeedMultiplier()
  1010. if (player.currentChallenge == "challenge2" || player.currentChallenge == "postc1") player.chall2Pow = 0
  1011. if (player.currentChallenge == "challenge5" || player.currentChallenge == "postc5" || player.tickSpeedCost.lt(Number.MAX_VALUE) || player.tickSpeedMultDecrease > 2) {
  1012. while (player.money.gt(player.tickSpeedCost) && (player.tickSpeedCost.lt(Number.MAX_VALUE) || player.tickSpeedMultDecrease > 2 || player.currentChallenge == "postc5")) {
  1013. player.money = player.money.minus(player.tickSpeedCost);
  1014. if (player.currentChallenge != "challenge5" && player.currentChallenge != "postc5") player.tickSpeedCost = player.tickSpeedCost.times(player.tickspeedMultiplier);
  1015. else multiplySameCosts(player.tickSpeedCost)
  1016. if (player.tickSpeedCost.lt(new Decimal("1e1000000"))) reality.costMs = [new Decimal(player.dimensionMultDecrease),new Decimal(player.tickSpeedMultDecrease)]
  1017. if (player.tickSpeedCost.gte(Number.MAX_VALUE)) player.tickspeedMultiplier = player.tickspeedMultiplier.times(reality.costMs[1]);
  1018. if (player.tickSpeedCost.gte(new Decimal("1e1000000"))) reality.costMs[1] = reality.costMs[1].times(reality.costMMs[1])
  1019. player.tickspeed = player.tickspeed.times(mult);
  1020. if (player.challenges.includes("postc3") || player.currentChallenge == "postc3") player.postC3Reward = player.postC3Reward.times(1.05+(player.galaxies*0.005))
  1021. postc8Mult = new Decimal(1)
  1022. if (player.tickSpeedCost.gt(Number.MAX_VALUE)) buyMaxTickSpeed()
  1023. }
  1024. } else {
  1025.  
  1026. var a = Math.log10(Decimal.sqrt(reality.costMs[1]))
  1027. var b = player.tickspeedMultiplier.dividedBy(Decimal.sqrt(reality.costMs[1])).log10()
  1028. var c = player.tickSpeedCost.dividedBy(player.money).log10()
  1029. var discriminant = Math.pow(b, 2) - (c *a* 4)
  1030. if (discriminant < 0) return false
  1031. var buying = Math.floor((Math.sqrt(Math.pow(b, 2) - (c *a *4))-b)/(2 * a))+1
  1032. if (buying <= 0) return false
  1033. player.tickspeed = player.tickspeed.times(Decimal.pow(mult, buying));
  1034. if (player.challenges.includes("postc3") || player.currentChallenge == "postc3") player.postC3Reward = player.postC3Reward.times(Decimal.pow(1.05+(player.galaxies*0.005), buying))
  1035. for (var i = 0; i<buying-1; i++) {
  1036. if (player.tickSpeedCost.lt(new Decimal("1e1000000"))) reality.costMs = [new Decimal(player.dimensionMultDecrease),new Decimal(player.tickSpeedMultDecrease)]
  1037. player.tickSpeedCost = player.tickSpeedCost.times(player.tickspeedMultiplier)
  1038. player.tickspeedMultiplier = player.tickspeedMultiplier.times(reality.costMs[1])
  1039. if (player.tickSpeedCost.gte(new Decimal("1e1000000"))) reality.costMs[1] = reality.costMs[1].times(reality.costMMs[1])
  1040. }
  1041. if (player.money.gte(player.tickSpeedCost)) player.money = player.money.minus(player.tickSpeedCost)
  1042. if (player.tickSpeedCost.lt(new Decimal("1e1000000"))) reality.costMs = [new Decimal(player.dimensionMultDecrease),new Decimal(player.tickSpeedMultDecrease)]
  1043. player.tickSpeedCost = player.tickSpeedCost.times(player.tickspeedMultiplier)
  1044. player.tickspeedMultiplier = player.tickspeedMultiplier.times(reality.costMs[1])
  1045. if (player.tickSpeedCost.gte(new Decimal("1e1000000"))) reality.costMs[1] = reality.costMs[1].times(reality.costMMs[1])
  1046. }
  1047.  
  1048. updateTickSpeed()
  1049. }
  1050.  
  1051. function gameLoop(diff) {
  1052. var thisUpdate = new Date().getTime();
  1053. if (thisUpdate - player.lastUpdate >= 21600000) giveAchievement("Don't you dare to sleep")
  1054. if (typeof diff === 'undefined') var diff = Math.min(thisUpdate - player.lastUpdate, 21600000);
  1055. diff = diff / 100;
  1056. if (diff < 0) diff = 1;
  1057. if (player.currentEternityChall === "eterc12") diff = diff / 1000;
  1058. if (reality.speed != 1) diff = diff * reality.speed
  1059. if (player.thisInfinityTime < -10) player.thisInfinityTime = Infinity
  1060. if (player.bestInfinityTime < -10) player.bestInfinityTime = Infinity
  1061. if (diff > player.autoTime && !player.break) player.infinityPoints = player.infinityPoints.plus(player.autoIP.times(diff/player.autoTime))
  1062. /*if (player.currentChallenge == "postc6" && player.matter.gte(1)) player.matter = player.matter.plus(diff/10)
  1063. else */
  1064. player.matter = player.matter.times(Decimal.pow((1.03 + player.resets/200 + player.galaxies/100), diff));
  1065. if (player.matter.gt(player.money) && (player.currentChallenge == "challenge12" || player.currentChallenge == "postc1")) {
  1066. if (player.resets > 0) player.resets--;
  1067. softReset(0);
  1068. }
  1069.  
  1070. if (player.currentChallenge == "postc8") postc8Mult = postc8Mult.times(Math.pow(0.000000046416, diff))
  1071.  
  1072. if (player.currentChallenge == "challenge3" || player.matter.gte(1)) player.chall3Pow = player.chall3Pow.times(Decimal.pow(1.00038, diff));
  1073. player.chall2Pow = Math.min(player.chall2Pow + diff/1800, 1);
  1074. if (player.currentChallenge == "postc2") {
  1075. postC2Count++;
  1076. if (postC2Count >= 8 || diff > 80) {
  1077. sacrifice();
  1078. postC2Count = 0;
  1079. }
  1080. }
  1081. if (player.infinityUpgrades.includes("passiveGen")) player.partInfinityPoint += diff / player.bestInfinityTime;
  1082. if (player.partInfinityPoint >= 100) {
  1083. player.infinityPoints = player.infinityPoints.plus(player.infMult.times(kongIPMult * (player.partInfinityPoint/10)));
  1084. player.partInfinityPoint = 0;
  1085. }
  1086.  
  1087. if (player.partInfinityPoint >= 10) {
  1088. player.partInfinityPoint -= 10;
  1089. player.infinityPoints = player.infinityPoints.plus(player.infMult.times(kongIPMult));
  1090. }
  1091.  
  1092.  
  1093.  
  1094. if (player.infinityUpgrades.includes("infinitiedGeneration") && player.currentEternityChall !== "eterc4") player.partInfinitied += diff / player.bestInfinityTime;
  1095. if (player.partInfinitied >= 50) {
  1096. player.infinitied += Math.floor(player.partInfinitied/5)
  1097. player.partInfinitied = 0;
  1098. }
  1099.  
  1100. if (player.partInfinitied >= 5) {
  1101. player.partInfinitied -= 5;
  1102. player.infinitied ++;
  1103. }
  1104.  
  1105. player.infinityPoints = player.infinityPoints.plus(bestRunIppm.times(player.offlineProd/100).times(diff/600))
  1106.  
  1107. if (player.money.lte(Number.MAX_VALUE) || (player.break && player.currentChallenge == "") || (player.currentChallenge != "" && player.money.lte(player.challengeTarget))) {
  1108.  
  1109. if (player.currentChallenge != "challenge7" && player.currentEternityChall != "eterc3") {
  1110. for (let tier = 7; tier >= 1; --tier) {
  1111. var name = TIER_NAMES[tier];
  1112.  
  1113. player[name + 'Amount'] = player[name + 'Amount'].plus(getDimensionProductionPerSecond(tier + 1).times(diff / 100));
  1114. }
  1115. } else if (player.currentEternityChall != "eterc3") {
  1116. for (let tier = 6; tier >= 1; --tier) {
  1117. var name = TIER_NAMES[tier];
  1118.  
  1119. player[name + 'Amount'] = player[name + 'Amount'].plus(getDimensionProductionPerSecond(tier + 2).times(diff / 100));
  1120. }
  1121. } else {
  1122. for (let tier = 3; tier >= 1; --tier) {
  1123. var name = TIER_NAMES[tier];
  1124.  
  1125. player[name + 'Amount'] = player[name + 'Amount'].plus(getDimensionProductionPerSecond(tier + 1).times(diff / 100));
  1126. }
  1127. }
  1128.  
  1129. if (player.currentChallenge == "challenge3" || player.currentChallenge == "postc1") {
  1130. player.money = player.money.plus(getDimensionProductionPerSecond(1).times(diff/10).times(player.chall3Pow));
  1131. player.totalmoney = player.totalmoney.plus(getDimensionProductionPerSecond(1).times(diff/10).times(player.chall3Pow));
  1132. } else {
  1133. player.money = player.money.plus(getDimensionProductionPerSecond(1).times(diff/10));
  1134. player.totalmoney = player.totalmoney.plus(getDimensionProductionPerSecond(1).times(diff/10));
  1135. }
  1136. if (player.currentChallenge == "challenge7") {
  1137. player.money = player.money.plus(getDimensionProductionPerSecond(2).times(diff/10));
  1138. player.totalmoney = player.totalmoney.plus(getDimensionProductionPerSecond(2).times(diff/10))
  1139. }
  1140. }
  1141.  
  1142. document.getElementById("dimTabButtons").style.display = "none"
  1143.  
  1144. if (player.currentEternityChall === "eterc12") player.totalTimePlayed += diff*1000
  1145. else player.totalTimePlayed += diff
  1146. player.thisInfinityTime += diff
  1147. player.thisEternity += diff
  1148.  
  1149. if (player.eternities > 0) document.getElementById("tdtabbtn").style.display = "inline-block"
  1150.  
  1151. for (let tier=1;tier<9;tier++) {
  1152. if (tier != 8 && (player.infDimensionsUnlocked[tier-1] || ECTimesCompleted("eterc7") > 0)) player["infinityDimension"+tier].amount = player["infinityDimension"+tier].amount.plus(DimensionProduction(tier+1).times(diff/100))
  1153. if (player.infDimensionsUnlocked[tier-1]) {
  1154. document.getElementById("infRow"+tier).style.display = "inline-block"
  1155. document.getElementById("dimTabButtons").style.display = "inline-block"
  1156. var idtabshown = true;
  1157. } else {
  1158. document.getElementById("infRow"+tier).style.display = "none"
  1159. document.getElementById("idtabbtn").style.display = "none"
  1160. }
  1161. if (idtabshown === true || player.eternities >= 1) {
  1162. document.getElementById("idtabbtn").style.display = "inline-block"
  1163. }
  1164.  
  1165. if (tier <8) player["timeDimension"+tier].amount = player["timeDimension"+tier].amount.plus(getTimeDimensionProduction(tier+1).times(diff/100))
  1166. }
  1167.  
  1168. if (player.infinitied > 0 && player.eternities < 1) {
  1169. document.getElementById("dimTabButtons").style.display = "inline-block"
  1170. document.getElementById("dtabbtn").style.display = "inline-block"
  1171. document.getElementById("prodtabbtn").style.display = "inline-block"
  1172. }
  1173. if (player.eternities > 0) document.getElementById("dimTabButtons").style.display = "inline-block"
  1174.  
  1175. if (player.currentEternityChall !== "eterc7") player.infinityPower = player.infinityPower.plus(DimensionProduction(1).times(diff/10))
  1176. else if (player.currentChallenge !== "challenge4" && player.currentChallenge !== "postc1") player.seventhAmount = player.seventhAmount.plus(DimensionProduction(1).times(diff/10))
  1177.  
  1178.  
  1179.  
  1180.  
  1181. if (player.currentEternityChall == "eterc7") player.infinityDimension8.amount = player.infinityDimension8.amount.plus(getTimeDimensionProduction(1).times(diff/10))
  1182. else player.timeShards = player.timeShards.plus(getTimeDimensionProduction(1).times(diff/10))
  1183.  
  1184. if (getTimeDimensionProduction(1).gt(0) && ECTimesCompleted("eterc7") > 0) player.infinityDimension8.amount = player.infinityDimension8.amount.plus(getTimeDimensionProduction(1).pow(ECTimesCompleted("eterc7")*0.2).minus(1).times(diff/10))
  1185.  
  1186. let gain;
  1187. if (player.timeShards.gt(0)) {
  1188. if (player.timestudy.studies.includes(171)) gain = Math.ceil(new Decimal(player.timeShards).dividedBy(player.tickThreshold).log10() / Math.log10(1.25))
  1189. else gain = Math.ceil(new Decimal(player.timeShards).dividedBy(player.tickThreshold).log10() / Math.log10(1.33))
  1190. player.totalTickGained += gain
  1191. player.tickspeed = player.tickspeed.times(Decimal.pow(getTickSpeedMultiplier(), gain))
  1192. if (player.timestudy.studies.includes(171)) player.tickThreshold = new Decimal(1).times(1.25).pow(player.totalTickGained)
  1193. else player.tickThreshold = new Decimal(1).times(1.33).pow(player.totalTickGained)
  1194. document.getElementById("totaltickgained").textContent = "You've gained "+player.totalTickGained.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",")+" tickspeed upgrades."
  1195. updateTickSpeed();
  1196. }
  1197.  
  1198. if (player.eternities == 0) {
  1199. document.getElementById("eternityPoints2").style.display = "none"
  1200. document.getElementById("eternitystorebtn").style.display = "none"
  1201. }
  1202. else {
  1203. document.getElementById("eternityPoints2").style.display = "inline-block"
  1204. }
  1205.  
  1206.  
  1207. if (player.money.gte(Number.MAX_VALUE) && (!player.break || (player.currentChallenge != "" && player.money.gte(player.challengeTarget)))) {
  1208. document.getElementById("bigcrunch").style.display = 'inline-block';
  1209. if ((player.currentChallenge == "" || player.options.retryChallenge) && (player.bestInfinityTime <= 600 || player.break)) {}
  1210. else showTab('emptiness');
  1211. } else document.getElementById("bigcrunch").style.display = 'none';
  1212.  
  1213. if (player.break && player.money.gte(Number.MAX_VALUE) && player.currentChallenge == "") {
  1214. document.getElementById("postInfinityButton").style.display = "inline-block"
  1215. } else {
  1216. document.getElementById("postInfinityButton").style.display = "none"
  1217. }
  1218.  
  1219.  
  1220. if (player.break) document.getElementById("iplimit").style.display = "inline"
  1221. else document.getElementById("iplimit").style.display = "none"
  1222.  
  1223. var currentIPmin = gainedInfinityPoints().dividedBy(player.thisInfinityTime/600)
  1224. if (currentIPmin.gt(IPminpeak)) IPminpeak = currentIPmin
  1225. if (IPminpeak.lte("1e100000")) document.getElementById("postInfinityButton").innerHTML = "<b>Big Crunch for "+shortenDimensions(gainedInfinityPoints())+" Infinity Points.</b><br>"+shortenDimensions(currentIPmin) + " IP/min"+"<br>Peaked at "+shortenDimensions(IPminpeak)+" IP/min"
  1226. else document.getElementById("postInfinityButton").innerHTML = "<b>Big Crunch for "+shortenDimensions(gainedInfinityPoints())+" Infinity Points.</b>"
  1227.  
  1228. if (nextAt[player.postChallUnlocked] === undefined) document.getElementById("nextchall").textContent = " "
  1229. else if (!player.achievements.includes("r133")) {
  1230. document.getElementById("nextchall").textContent = "Next challenge unlocks at "+ shortenCosts(nextAt[player.postChallUnlocked]) + " antimatter."
  1231. while (player.money.gte(nextAt[player.postChallUnlocked]) && player.challenges.includes("postc8") === false && player.postChallUnlocked != 8) {
  1232. if (player.postChallUnlocked != 8) player.postChallUnlocked += 1
  1233. if (player.eternities > 6) player.challenges.push("postc"+player.postChallUnlocked)
  1234. updateChallenges()
  1235. }
  1236. }
  1237. let interval = player.replicanti.interval
  1238. if (player.timestudy.studies.includes(62)) interval = interval/3
  1239. if (player.timestudy.studies.includes(133) || player.replicanti.amount.gt(Number.MAX_VALUE)) interval *= 10
  1240. if (player.timestudy.studies.includes(213)) interval /= 20
  1241. if (player.replicanti.amount.lt(Number.MAX_VALUE) && player.achievements.includes("r134")) interval /= 2
  1242. if (player.replicanti.amount.gt(Number.MAX_VALUE)) interval = Math.max(interval * Math.pow(1.2, (player.replicanti.amount.log10() - 308)/308), interval)
  1243. var est = Math.log(player.replicanti.chance+1) * 1000 / interval
  1244.  
  1245. var current = player.replicanti.amount.ln()
  1246.  
  1247. if (player.replicanti.unl && (diff > 5 || interval < 50 || player.timestudy.studies.includes(192))) {
  1248. var gained = Decimal.pow(Math.E, current +(diff*est/10))
  1249. if (player.timestudy.studies.includes(192)) gained = Decimal.pow(Math.E, current +Math.log((diff*est/10) * (Math.log10(1.2)/308)+1) / (Math.log10(1.2)/308))
  1250. player.replicanti.amount = Decimal.min(Number.MAX_VALUE, gained)
  1251. if (player.timestudy.studies.includes(192)) player.replicanti.amount = gained
  1252. replicantiTicks = 0
  1253. } else {
  1254. if (interval <= replicantiTicks && player.replicanti.unl) {
  1255. if (player.replicanti.amount.lte(100)) {
  1256. var temp = player.replicanti.amount
  1257. for (var i=0; temp.gt(i); i++) {
  1258. if (player.replicanti.chance > Math.random()) player.replicanti.amount = player.replicanti.amount.plus(1)
  1259. }
  1260. } else {
  1261. var temp = Decimal.round(player.replicanti.amount.dividedBy(100))
  1262. if (Math.round(player.replicanti.chance) !== 1) {
  1263. let counter = 0
  1264. for (var i=0; i<100; i++) {
  1265. if (player.replicanti.chance > Math.random()) {
  1266. counter++;
  1267. }
  1268. }
  1269. player.replicanti.amount = Decimal.min(Number.MAX_VALUE, temp.times(counter).plus(player.replicanti.amount))
  1270. if (player.timestudy.studies.includes(192)) player.replicanti.amount = temp.times(counter).plus(player.replicanti.amount)
  1271. counter = 0
  1272. } else {
  1273. if (player.timestudy.studies.includes(192)) player.replicanti.amount = player.replicanti.amount.times(2)
  1274. else player.replicanti.amount = Decimal.min(Number.MAX_VALUE, player.replicanti.amount.times(2))
  1275.  
  1276. }
  1277. }
  1278. replicantiTicks -= interval
  1279. }
  1280.  
  1281. }
  1282. if (player.replicanti.amount.gt(0)) replicantiTicks += player.options.updateRate
  1283.  
  1284.  
  1285. if (current == Decimal.ln(Number.MAX_VALUE) && player.thisInfinityTime < 600*30) giveAchievement("Is this safe?");
  1286. if (player.replicanti.galaxies >= 10 && player.thisInfinityTime < 150) giveAchievement("The swarm");
  1287.  
  1288. if (player.replicanti.galaxybuyer && player.replicanti.amount.gte(Number.MAX_VALUE) && !player.timestudy.studies.includes(131)) {
  1289. document.getElementById("replicantireset").click()
  1290. }
  1291. if (player.timestudy.studies.includes(22) ? player.replicanti.interval !== 1 : (player.replicanti.interval !== 50)) document.getElementById("replicantiinterval").innerHTML = "Interval: "+(interval).toFixed(3)+"ms<br>-> "+Math.max(interval*0.9).toFixed(3)+" Costs: "+shortenCosts(player.replicanti.intervalCost)+" IP"
  1292. else document.getElementById("replicantiinterval").textContent = "Interval: "+(interval).toFixed(3)+"ms"
  1293.  
  1294.  
  1295. if (player.infMultBuyer) {
  1296. var dif = player.infinityPoints.e - player.infMultCost.e +1
  1297. if (dif > 0) {
  1298. player.infMult = player.infMult.times(Decimal.pow(2, dif))
  1299. player.infMultCost = player.infMultCost.times(Decimal.pow(10, dif))
  1300. document.getElementById("infiMult").innerHTML = "Multiply infinity points from all sources by 2 <br>currently: "+shorten(player.infMult.times(kongIPMult)) +"x<br>Cost: "+shortenCosts(player.infMultCost)+" IP"
  1301. player.infinityPoints = player.infinityPoints.minus(player.infMultCost.dividedBy(10))
  1302. if (player.autobuyers[11].priority !== undefined && player.autobuyers[11].priority !== null && player.autoCrunchMode == "amount") player.autobuyers[11].priority = player.autobuyers[11].priority.times(Decimal.pow(2, dif));
  1303. if (player.autoCrunchMode == "amount") document.getElementById("priority12").value = player.autobuyers[11].priority
  1304. }
  1305. }
  1306.  
  1307.  
  1308. var estimate = Math.max((Math.log(Number.MAX_VALUE) - current) / est, 0)
  1309. document.getElementById("replicantiapprox").textContent ="Approximately "+ timeDisplay(estimate*10) + " Until Infinite Replicanti"
  1310.  
  1311. document.getElementById("replicantiamount").textContent = shortenDimensions(player.replicanti.amount)
  1312. var replmult = Decimal.pow(Decimal.log2(Decimal.max(player.replicanti.amount, 1)), 2)
  1313. if (player.timestudy.studies.includes(21)) replmult = replmult.plus(Decimal.pow(player.replicanti.amount, 0.032))
  1314. if (player.timestudy.studies.includes(102))replmult = replmult.times(Decimal.pow(5, player.replicanti.galaxies, 150))
  1315. document.getElementById("replicantimult").textContent = shorten(replmult.max(1))
  1316.  
  1317. var currentEPmin = gainedEternityPoints().dividedBy(player.thisEternity/600)
  1318. if (currentEPmin.gt(EPminpeak) && player.infinityPoints.gte(Number.MAX_VALUE)) EPminpeak = currentEPmin
  1319. document.getElementById("eternitybtn").innerHTML = (player.eternities == 0) ? "Other times await.. I need to become Eternal" : "<b>I need to become Eternal.</b><br>"+"Gain <b>"+shortenDimensions(gainedEternityPoints())+"</b> Eternity points.<br>"+shortenDimensions(currentEPmin)+ " EP/min<br>Peaked at "+shortenDimensions(EPminpeak)+" EP/min"
  1320. if (gainedEternityPoints().gte(1e6)) document.getElementById("eternitybtn").innerHTML = "Gain <b>"+shortenDimensions(gainedEternityPoints())+"</b> Eternity points.<br>"+shortenDimensions(currentEPmin)+ " EP/min<br>Peaked at "+shortenDimensions(EPminpeak)+" EP/min"
  1321. if (player.dilation.active) document.getElementById("eternitybtn").innerHTML = "Gain <b>"+shortenDimensions(gainedEternityPoints())+"</b> Eternity points.<br>"+"+"+shortenMoney(Math.round(Math.max(Math.pow(Decimal.log10(player.money) / 400, 1.5) * (Math.pow(3, player.dilation.rebuyables[3])) - player.dilation.totalTachyonParticles, 0) * 10)/10) +" Tachyon particles."
  1322. if (player.currentEternityChall !== "") document.getElementById("eternitybtn").textContent = "Other challenges await.. I need to become Eternal"
  1323. updateMoney();
  1324. updateCoinPerSec();
  1325. updateDimensions()
  1326. updateInfCosts()
  1327. updateInfinityDimensions();
  1328. updateInfPower();
  1329. updateTimeDimensions()
  1330. updateTimeShards()
  1331. updateDilation()
  1332. if (getDimensionProductionPerSecond(1).gt(player.money) && !player.achievements.includes("r44")) {
  1333. Marathon+=player.options.updateRate/1000;
  1334. if (Marathon >= 30) giveAchievement("Over in 30 seconds");
  1335. } else {
  1336. Marathon = 0;
  1337. }
  1338. if (DimensionProduction(1).gt(player.infinityPower) && player.currentEternityChall != "eterc7" && !player.achievements.includes("r113")) {
  1339. Marathon2+=player.options.updateRate/1000;
  1340. if (Marathon2 >= 60) giveAchievement("Long lasting relationship");
  1341. } else {
  1342. Marathon2 = 0;
  1343. }
  1344. if (player.eternities >= 1 && (player.options.notation == "Standard" || player.options.notation == "Emojis" || player.options.notation == "Brackets")) {
  1345. painTimer += player.options.updateRate/1000;
  1346. if (painTimer >= 600) giveAchievement("Do you enjoy pain?");
  1347. }
  1348.  
  1349. if(player.money.gt(Math.pow(10,63))) giveAchievement("Supersanic");
  1350.  
  1351. for (let tier = 1; tier <= 8; ++tier) {
  1352. var name = TIER_NAMES[tier];
  1353. if (player.currentChallenge != "challenge10" && player.currentChallenge != "postc1") {
  1354. document.getElementById(name).className = canAfford(player[name + 'Cost']) ? 'storebtn' : 'unavailablebtn';
  1355. document.getElementById(name + 'Max').className = canAfford(player[name + 'Cost'].times(10 - dimBought(tier))) ? 'storebtn' : 'unavailablebtn';
  1356. } else {
  1357. if (tier >= 3) {
  1358. document.getElementById(name).className = player[TIER_NAMES[tier-2] + 'Amount'].gte(player[name + 'Cost']) ? 'storebtn' : 'unavailablebtn';
  1359. document.getElementById(name + 'Max').className = player[TIER_NAMES[tier-2] + 'Amount'].gte(player[name + 'Cost'].times(10 - dimBought(tier))) ? 'storebtn' : 'unavailablebtn';
  1360. } else {
  1361. document.getElementById(name).className = canAfford(player[name + 'Cost']) ? 'storebtn' : 'unavailablebtn';
  1362. document.getElementById(name + 'Max').className = canAfford(player[name + 'Cost'].times(10 - dimBought(tier))) ? 'storebtn' : 'unavailablebtn';
  1363. }
  1364. }
  1365. }
  1366. if (player.firstAmount.lt(1)) document.getElementById("first").className = 'storebtn';
  1367.  
  1368. for (var tier = 1; tier < 9; tier++) {
  1369. if (player.infinityPoints.gte(player["infinityDimension"+tier].cost)) document.getElementById("infMax"+tier).className = "storebtn"
  1370. else document.getElementById("infMax"+tier).className = "unavailablebtn"
  1371. }
  1372.  
  1373. for (var tier = 1; tier < 9; tier++) {
  1374. if (player.eternityPoints.gte(player["timeDimension"+tier].cost)) document.getElementById("timeMax"+tier).className = "storebtn"
  1375. else document.getElementById("timeMax"+tier).className = "unavailablebtn"
  1376. }
  1377.  
  1378. if (player.dilation.studies.includes(1)) player.dilation.dilatedTime = player.dilation.dilatedTime.plus(player.dilation.tachyonParticles*Math.pow(2, player.dilation.rebuyables[1])*diff/10)
  1379.  
  1380. if (player.dilation.nextThreshold.lte(player.dilation.dilatedTime)) {
  1381. let thresholdMult = 1.35 + 3.65 * Math.pow(0.8, player.dilation.rebuyables[2])
  1382. // for (var i = 0; i < player.dilation.rebuyables[2]; i++) {
  1383. // thresholdMult *= Math.min( 1 - (Math.pow(0.8, i) / 10), 0.999)
  1384. // }
  1385. player.dilation.nextThreshold = player.dilation.nextThreshold.times(thresholdMult)
  1386. player.dilation.freeGalaxies += 1
  1387. if (player.dilation.upgrades.includes(4)) player.dilation.freeGalaxies += 1
  1388. }
  1389.  
  1390.  
  1391.  
  1392.  
  1393. if (canAfford(player.tickSpeedCost)) {
  1394. document.getElementById("tickSpeed").className = 'storebtn';
  1395. document.getElementById("tickSpeedMax").className = 'storebtn';
  1396. } else {
  1397. document.getElementById("tickSpeed").className = 'unavailablebtn';
  1398. document.getElementById("tickSpeedMax").className = 'unavailablebtn';
  1399. }
  1400.  
  1401. if (player.infinityPoints.gt(0) || player.eternities !== 0) {
  1402. document.getElementById("infinitybtn").style.display = "block";
  1403. document.getElementById("infi11").className = "infinistorebtn1"
  1404. document.getElementById("infi21").className = "infinistorebtn2"
  1405. if (player.infinityUpgrades.includes("timeMult")) document.getElementById("infi12").className = "infinistorebtn1"
  1406. else document.getElementById("infi12").className = "infinistorebtnlocked"
  1407. if (player.infinityUpgrades.includes("dimMult")) document.getElementById("infi22").className = "infinistorebtn2"
  1408. else document.getElementById("infi22").className = "infinistorebtnlocked"
  1409. if (player.infinityUpgrades.includes("18Mult")) document.getElementById("infi13").className = "infinistorebtn1"
  1410. else document.getElementById("infi13").className = "infinistorebtnlocked"
  1411. if (player.infinityUpgrades.includes("27Mult")) document.getElementById("infi23").className = "infinistorebtn2"
  1412. else document.getElementById("infi23").className = "infinistorebtnlocked"
  1413. if (player.infinityUpgrades.includes("36Mult")) document.getElementById("infi14").className = "infinistorebtn1"
  1414. else document.getElementById("infi14").className = "infinistorebtnlocked"
  1415. if (player.infinityUpgrades.includes("45Mult") && player.infinityPoints.gte(2)) document.getElementById("infi24").className = "infinistorebtn2"
  1416. else document.getElementById("infi24").className = "infinistorebtnlocked"
  1417. if (player.infinityPoints.gte(3)) document.getElementById("infi31").className = "infinistorebtn3"
  1418. else document.getElementById("infi31").className = "infinistorebtnlocked"
  1419. if (player.infinityUpgrades.includes("timeMult2") && player.infinityPoints.gte(5)) document.getElementById("infi32").className = "infinistorebtn3"
  1420. else document.getElementById("infi32").className = "infinistorebtnlocked"
  1421. if (player.infinityUpgrades.includes("unspentBonus") && player.infinityPoints.gte(7)) document.getElementById("infi33").className = "infinistorebtn3"
  1422. else document.getElementById("infi33").className = "infinistorebtnlocked"
  1423. if (player.infinityUpgrades.includes("resetMult") && player.infinityPoints.gte(10)) document.getElementById("infi34").className = "infinistorebtn3"
  1424. else document.getElementById("infi34").className = "infinistorebtnlocked"
  1425. if (player.infinityPoints.gte(20)) document.getElementById("infi41").className = "infinistorebtn4"
  1426. else document.getElementById("infi41").className = "infinistorebtnlocked"
  1427. if (player.infinityUpgrades.includes("skipReset1") && player.infinityPoints.gte(40)) document.getElementById("infi42").className = "infinistorebtn4"
  1428. else document.getElementById("infi42").className = "infinistorebtnlocked"
  1429. if (player.infinityUpgrades.includes("skipReset2") && player.infinityPoints.gte(80)) document.getElementById("infi43").className = "infinistorebtn4"
  1430. else document.getElementById("infi43").className = "infinistorebtnlocked"
  1431. if (player.infinityUpgrades.includes("skipReset3") && player.infinityPoints.gte(500)) document.getElementById("infi44").className = "infinistorebtn4"
  1432. else document.getElementById("infi44").className = "infinistorebtnlocked"
  1433. if (player.infinityUpgrades.includes("skipResetGalaxy") && player.infinityUpgrades.includes("passiveGen") && player.infinityUpgrades.includes("galaxyBoost") && player.infinityUpgrades.includes("resetBoost") && player.infinityPoints.gte(player.infMultCost)) {
  1434. document.getElementById("infiMult").className = "infinimultbtn"
  1435. } else document.getElementById("infiMult").className = "infinistorebtnlocked"
  1436.  
  1437. if (player.infinityPoints.gte(1e4)) document.getElementById("postinfi11").className = "infinistorebtn1"
  1438. else document.getElementById("postinfi11").className = "infinistorebtnlocked"
  1439.  
  1440. if (player.infinityPoints.gte(5e4)) document.getElementById("postinfi21").className = "infinistorebtn1"
  1441. else document.getElementById("postinfi21").className = "infinistorebtnlocked"
  1442.  
  1443. if (player.infinityPoints.gte(player.tickSpeedMultDecreaseCost)) document.getElementById("postinfi31").className = "infinimultbtn"
  1444. else document.getElementById("postinfi31").className = "infinistorebtnlocked"
  1445.  
  1446. if (player.infinityPoints.gte(5e11)) document.getElementById("postinfi41").className = "infinistorebtn1"
  1447. else document.getElementById("postinfi41").className = "infinistorebtnlocked"
  1448.  
  1449. if (player.infinityPoints.gte(1e5)) document.getElementById("postinfi12").className = "infinistorebtn1"
  1450. else document.getElementById("postinfi12").className = "infinistorebtnlocked"
  1451.  
  1452. if (player.infinityPoints.gte(1e6)) document.getElementById("postinfi22").className = "infinistorebtn1"
  1453. else document.getElementById("postinfi22").className = "infinistorebtnlocked"
  1454.  
  1455. if (player.infinityPoints.gte(1e7)) document.getElementById("postinfi32").className = "infinistorebtn1"
  1456. else document.getElementById("postinfi32").className = "infinistorebtnlocked"
  1457.  
  1458. if (player.infinityPoints.gte(player.dimensionMultDecreaseCost)) document.getElementById("postinfi42").className = "infinimultbtn"
  1459. else document.getElementById("postinfi42").className = "infinistorebtnlocked"
  1460.  
  1461. if (player.infinityPoints.gte(20e6)) document.getElementById("postinfi13").className = "infinistorebtn1"
  1462. else document.getElementById("postinfi13").className = "infinistorebtnlocked"
  1463.  
  1464. if (player.infinityPoints.gte(5e9)) document.getElementById("postinfi23").className = "infinistorebtn1"
  1465. else document.getElementById("postinfi23").className = "infinistorebtnlocked"
  1466.  
  1467. if (player.infinityPoints.gte(1e15)) document.getElementById("postinfi33").className = "infinistorebtn1"
  1468. else document.getElementById("postinfi33").className = "infinistorebtnlocked"
  1469.  
  1470. if (player.infinityPoints.gte(player.offlineProdCost)) document.getElementById("offlineProd").className = "infinimultbtn"
  1471. else document.getElementById("offlineProd").className = "infinistorebtnlocked"
  1472.  
  1473. }
  1474. if (player.infinityPoints.equals(0)){
  1475. document.getElementById("infi11").className = "infinistorebtnlocked"
  1476. document.getElementById("infi12").className = "infinistorebtnlocked"
  1477. document.getElementById("infi13").className = "infinistorebtnlocked"
  1478. document.getElementById("infi14").className = "infinistorebtnlocked"
  1479. document.getElementById("infi21").className = "infinistorebtnlocked"
  1480. document.getElementById("infi22").className = "infinistorebtnlocked"
  1481. document.getElementById("infi23").className = "infinistorebtnlocked"
  1482. document.getElementById("infi24").className = "infinistorebtnlocked"
  1483. document.getElementById("infi31").className = "infinistorebtnlocked"
  1484. document.getElementById("infi32").className = "infinistorebtnlocked"
  1485. document.getElementById("infi33").className = "infinistorebtnlocked"
  1486. document.getElementById("infi34").className = "infinistorebtnlocked"
  1487. document.getElementById("infi41").className = "infinistorebtnlocked"
  1488. document.getElementById("infi42").className = "infinistorebtnlocked"
  1489. document.getElementById("infi43").className = "infinistorebtnlocked"
  1490. document.getElementById("infi44").className = "infinistorebtnlocked"
  1491. document.getElementById("infiMult").className = "infinistorebtnlocked"
  1492.  
  1493. }
  1494.  
  1495. if (player.autobuyers[11]%1 === 0 || player.autobuyers[11].interval>100) document.getElementById("break").className = "infinistorebtnlocked"
  1496. else document.getElementById("break").className = "infinistorebtn2"
  1497.  
  1498.  
  1499. if (player.resets > 4) {
  1500. document.getElementById("confirmation").style.display = "inline-block";
  1501. document.getElementById("sacrifice").style.display = "inline-block";
  1502. } else {
  1503. document.getElementById("confirmation").style.display = "none";
  1504. document.getElementById("sacrifice").style.display = "none";
  1505. }
  1506.  
  1507. if (player.infinitied > 0) document.getElementById("sacrifice").style.display = "inline-block";
  1508.  
  1509. if (player.eightAmount > 0 && player.resets > 4 && player.currentEternityChall !== "eterc3") document.getElementById("sacrifice").className = "storebtn"
  1510. else document.getElementById("sacrifice").className = "unavailablebtn"
  1511.  
  1512. if (player.autobuyers[11]%1 !== 0 && player.autobuyers[11].interval == 100) {
  1513. document.getElementById("postinftable").style.display = "inline-block"
  1514. } else {
  1515. document.getElementById("postinftable").style.display = "none"
  1516. }
  1517.  
  1518. if (player.autobuyers[11].interval == 100) document.getElementById("abletobreak").style.display = "none"
  1519.  
  1520.  
  1521. document.getElementById("infinitybtn").style.display = "none";
  1522. document.getElementById("challengesbtn").style.display = "none";
  1523.  
  1524. if (player.money.gte(Number.MAX_VALUE) && (((player.currentChallenge != "" && player.money.gte(player.challengeTarget)) && !player.options.retryChallenge) || (player.bestInfinityTime > 600 && !player.break))) {
  1525. document.getElementById("dimensionsbtn").style.display = "none";
  1526. document.getElementById("optionsbtn").style.display = "none";
  1527. document.getElementById("statisticsbtn").style.display = "none";
  1528. document.getElementById("achievementsbtn").style.display = "none";
  1529. document.getElementById("challengesbtn").style.display = "none";
  1530. document.getElementById("infinitybtn").style.display = "none";
  1531. document.getElementById("tickSpeed").style.visibility = "hidden";
  1532. document.getElementById("tickSpeedMax").style.visibility = "hidden";
  1533. document.getElementById("tickLabel").style.visibility = "hidden";
  1534. document.getElementById("tickSpeedAmount").style.visibility = "hidden";
  1535. } else {
  1536. document.getElementById("dimensionsbtn").style.display = "inline-block";
  1537. document.getElementById("optionsbtn").style.display = "inline-block";
  1538. document.getElementById("statisticsbtn").style.display = "inline-block";
  1539. document.getElementById("achievementsbtn").style.display = "inline-block";
  1540. if (player.infinitied > 0) {
  1541. document.getElementById("infinitybtn").style.display = "inline-block";
  1542. document.getElementById("challengesbtn").style.display = "inline-block";
  1543. }
  1544. }
  1545.  
  1546. document.getElementById("epmult").className = player.eternityPoints.gte(player.epmultCost) ? "eternityupbtn" : "eternityupbtnlocked"
  1547.  
  1548. if (player.infinityUpgrades.includes("bulkBoost")) document.getElementById("bulkdimboost").style.display = "inline"
  1549. else document.getElementById("bulkdimboost").style.display = "none"
  1550.  
  1551. if (player.infinityUpgrades.includes("timeMult")) document.getElementById("infi11").className = "infinistorebtnbought"
  1552. if (player.infinityUpgrades.includes("dimMult")) document.getElementById("infi21").className = "infinistorebtnbought"
  1553. if (player.infinityUpgrades.includes("18Mult")) document.getElementById("infi12").className = "infinistorebtnbought"
  1554. if (player.infinityUpgrades.includes("27Mult")) document.getElementById("infi22").className = "infinistorebtnbought"
  1555. if (player.infinityUpgrades.includes("36Mult")) document.getElementById("infi13").className = "infinistorebtnbought"
  1556. if (player.infinityUpgrades.includes("45Mult")) document.getElementById("infi23").className = "infinistorebtnbought"
  1557. if (player.infinityUpgrades.includes("resetBoost")) document.getElementById("infi14").className = "infinistorebtnbought"
  1558. if (player.infinityUpgrades.includes("galaxyBoost")) document.getElementById("infi24").className = "infinistorebtnbought"
  1559. if (player.infinityUpgrades.includes("timeMult2")) document.getElementById("infi31").className = "infinistorebtnbought"
  1560. if (player.infinityUpgrades.includes("unspentBonus")) document.getElementById("infi32").className = "infinistorebtnbought"
  1561. if (player.infinityUpgrades.includes("resetMult")) document.getElementById("infi33").className = "infinistorebtnbought"
  1562. if (player.infinityUpgrades.includes("passiveGen")) document.getElementById("infi34").className = "infinistorebtnbought"
  1563. if (player.infinityUpgrades.includes("skipReset1")) document.getElementById("infi41").className = "infinistorebtnbought"
  1564. if (player.infinityUpgrades.includes("skipReset2")) document.getElementById("infi42").className = "infinistorebtnbought"
  1565. if (player.infinityUpgrades.includes("skipReset3")) document.getElementById("infi43").className = "infinistorebtnbought"
  1566. if (player.infinityUpgrades.includes("skipResetGalaxy")) document.getElementById("infi44").className = "infinistorebtnbought"
  1567.  
  1568. if (player.infinityUpgrades.includes("totalMult")) document.getElementById("postinfi11").className = "infinistorebtnbought"
  1569. if (player.infinityUpgrades.includes("currentMult")) document.getElementById("postinfi21").className = "infinistorebtnbought"
  1570. if (player.tickSpeedMultDecrease <= 2) document.getElementById("postinfi31").className = "infinistorebtnbought"
  1571. if (player.infinityUpgrades.includes("achievementMult")) document.getElementById("postinfi22").className = "infinistorebtnbought"
  1572. if (player.infinityUpgrades.includes("infinitiedMult")) document.getElementById("postinfi12").className = "infinistorebtnbought"
  1573. if (player.infinityUpgrades.includes("postGalaxy")) document.getElementById("postinfi41").className = "infinistorebtnbought"
  1574. if (player.infinityUpgrades.includes("challengeMult")) document.getElementById("postinfi32").className = "infinistorebtnbought"
  1575. if (player.dimensionMultDecrease <= 3) document.getElementById("postinfi42").className = "infinistorebtnbought"
  1576. if (player.offlineProd == 50) document.getElementById("offlineProd").className = "infinistorebtnbought"
  1577.  
  1578.  
  1579. if (player.infinityUpgrades.includes("infinitiedGeneration")) document.getElementById("postinfi13").className = "infinistorebtnbought"
  1580. if (player.infinityUpgrades.includes("bulkBoost")) document.getElementById("postinfi23").className = "infinistorebtnbought"
  1581. if (player.infinityUpgrades.includes("autoBuyerUpgrade")) document.getElementById("postinfi33").className = "infinistorebtnbought"
  1582.  
  1583. if (player.currentChallenge !== "") {
  1584. document.getElementById("progressbar").style.width = Decimal.min((Decimal.log10(player.money.plus(1)) / Decimal.log10(player.challengeTarget) * 100), 100).toFixed(2) + "%"
  1585. document.getElementById("progresspercent").textContent = Decimal.min((Decimal.log10(player.money.plus(1)) / Decimal.log10(player.challengeTarget) * 100), 100).toFixed(2) + "%"
  1586. document.getElementById("progresspercent").setAttribute('ach-tooltip',"Percentage to challenge goal")
  1587. } else if (!player.break) {
  1588. document.getElementById("progressbar").style.width = Decimal.min((Decimal.log10(player.money.plus(1)) / Decimal.log10(Number.MAX_VALUE) * 100), 100).toFixed(2) + "%"
  1589. document.getElementById("progresspercent").textContent = Decimal.min((Decimal.log10(player.money.plus(1)) / Decimal.log10(Number.MAX_VALUE) * 100), 100).toFixed(2) + "%"
  1590. document.getElementById("progresspercent").setAttribute('ach-tooltip',"Percentage to Infinity")
  1591. } else if (player.infDimensionsUnlocked.includes(false)) {
  1592. document.getElementById("progressbar").style.width = Decimal.min(player.money.e / getNewInfReq().e * 100, 100).toFixed(2) + "%"
  1593. document.getElementById("progresspercent").textContent = Decimal.min(player.money.e / getNewInfReq().e * 100, 100).toFixed(2) + "%"
  1594. document.getElementById("progresspercent").setAttribute('ach-tooltip',"Percentage to next dimension unlock")
  1595. } else {
  1596. document.getElementById("progressbar").style.width = Decimal.min(Decimal.log10(player.infinityPoints.plus(1)) / Decimal.log10(Number.MAX_VALUE) * 100, 100).toFixed(2) + "%"
  1597. document.getElementById("progresspercent").textContent = Decimal.min(Decimal.log10(player.infinityPoints.plus(1)) / Decimal.log10(Number.MAX_VALUE) * 100, 100).toFixed(2) + "%"
  1598. document.getElementById("progresspercent").setAttribute('ach-tooltip',"Percentage to Eternity")
  1599. }
  1600.  
  1601. if (player.eternities > 0) {
  1602. document.getElementById("infinitybtn").style.display = "inline-block";
  1603. document.getElementById("challengesbtn").style.display = "inline-block";
  1604. }
  1605.  
  1606. document.getElementById("ec1reward").textContent = "Reward: "+shortenMoney(Math.pow(Math.max(player.thisEternity*10, 1), 0.3+(ECTimesCompleted("eterc1")*0.05)))+"x on all Time Dimensions (based on time spent this Eternity)"
  1607. document.getElementById("ec2reward").textContent = "Reward: Infinity power affects 1st Infinity Dimension with reduced effect, Currently: "+shortenMoney(player.infinityPower.pow(1.5/(700 - ECTimesCompleted("eterc2")*100)).min(new Decimal("1e100")).max(1))+"x"
  1608. document.getElementById("ec3reward").textContent = "Reward: Increase the multiplier for buying 10 dimensions, Currently: "+getDimensionPowerMultiplier().toFixed(2)+"x"
  1609. document.getElementById("ec4reward").textContent = "Reward: Infinity Dimension multiplier from unspent IP, Currently: "+shortenMoney(player.infinityPoints.pow(0.003 + ECTimesCompleted("eterc4")*0.002).min(new Decimal("1e200")))+"x"
  1610. document.getElementById("ec5reward").textContent = "Reward: Galaxy cost scaling starts "+((ECTimesCompleted("eterc5")*5))+" galaxies later."
  1611. document.getElementById("ec6reward").textContent = "Reward: Further reduce the dimension cost multiplier increase, Currently: "+player.dimensionMultDecrease.toFixed(1)+"x "
  1612. document.getElementById("ec7reward").textContent = "Reward: First Time dimension produces Eighth Infinity Dimensions, Currently: "+shortenMoney(getTimeDimensionProduction(1).pow(ECTimesCompleted("eterc7")*0.2).minus(1).max(0))+" per second. "
  1613. document.getElementById("ec8reward").textContent = "Reward: Infinity power powers up replicanti galaxies, Currently: " + (Math.max(Math.pow(Math.log10(player.infinityPower.plus(1).log10()+1), 0.03 * ECTimesCompleted("eterc8"))-1, 0) * 100).toFixed(2) + "%"
  1614. document.getElementById("ec9reward").textContent = "Reward: Infinity Dimension multiplier based on time shards, Currently: "+shortenMoney(player.timeShards.pow(ECTimesCompleted("eterc9")*0.1).min(new Decimal("1e400")))+"x "
  1615. document.getElementById("ec10reward").textContent = "Reward: Time dimensions gain a multiplier from infinitied stat, Currently: "+shortenMoney(new Decimal(Math.max(Math.pow(getInfinitied(), 0.9) * ECTimesCompleted("eterc10") * 0.000002+1, 1)).pow((player.timestudy.studies.includes(31)) ? 4 : 1))+"x "
  1616. document.getElementById("ec11reward").textContent = "Reward: Further reduce the tickspeed cost multiplier increase, Currently: "+player.tickSpeedMultDecrease.toFixed(2)+"x "
  1617. document.getElementById("ec12reward").textContent = "Reward: Infinity Dimension cost multipliers are reduced. (x^"+(1-ECTimesCompleted("eterc12")*0.008)+")"
  1618.  
  1619. // let extraGals = 0
  1620. // if (player.timestudy.studies.includes(225)) extraGals += Math.floor(player.replicanti.amount.e / 2500)
  1621. // if (player.timestudy.studies.includes(226)) extraGals += Math.floor(player.replicanti.gal / 40)
  1622. // if (extraGals !== 0) document.getElementById("replicantireset").innerHTML = "Reset replicanti amount, but get a free galaxy<br>"+player.replicanti.galaxies + "+"+extraGals+ " replicated galaxies created."
  1623. // else document.getElementById("replicantireset").innerHTML = "Reset replicanti amount, but get a free galaxy<br>"+player.replicanti.galaxies + " replicated galaxies created."
  1624.  
  1625. document.getElementById("ec10span").textContent = shortenMoney(ec10bonus) + "x"
  1626. var scale1 = [2.82e-45,1e-42,7.23e-30,5e-21,9e-17,6.2e-11,5e-8,3.555e-6,7.5e-4,1,2.5e3,2.6006e6,3.3e8,5e12,4.5e17,1.08e21,1.53e24,1.41e27,5e32,8e36,1.7e45,1.7e48,3.3e55,3.3e61,5e68,1e73,3.4e80,1e113,Number.MAX_VALUE,new Decimal("1e65000")];
  1627. var scale2 = [" protons."," nucleui."," Hydrogen atoms."," viruses."," red blood cells."," grains of sand."," grains of rice."," teaspoons."," wine bottles."," fridge-freezers."," Olympic-sized swimming pools."," Great Pyramids of Giza."," Great Walls of China."," large asteroids.",
  1628. " dwarf planets."," Earths."," Jupiters."," Suns."," red giants."," hypergiant stars."," nebulas."," Oort clouds."," Local Bubbles."," galaxies."," Local Groups."," Sculptor Voids."," observable universes."," Dimensions.", " Infinity Dimensions.", " Time Dimensions."];
  1629. var id = 0;
  1630. if (player.money.times(4.22419e-105).gt(2.82e-45)) {
  1631. if (player.money.times(4.22419e-105).gt(scale1[scale1.length - 1])) id = scale1.length - 1;
  1632. else {
  1633. while (player.money.times(4.22419e-105).gt(scale1[id])) id++;
  1634. if (id > 0) id--;
  1635. }
  1636. if (id >= 7 && id < 11) document.getElementById("infoScale").textContent = "If every antimatter were a planck volume, you would have enough to fill " + formatValue(player.options.notation, player.money * 4.22419e-105 / scale1[id], 2, 1) + scale2[id];
  1637. else document.getElementById("infoScale").textContent = "If every antimatter were a planck volume, you would have enough to make " + formatValue(player.options.notation, player.money.times(4.22419e-105).dividedBy(scale1[id]), 2, 1) + scale2[id];
  1638. } else { //does this part work correctly? i doubt it does
  1639. if (player.money.times(1e-54) < 2.82e-45) document.getElementById("infoScale").textContent = "If every antimatter were " + formatValue(player.options.notation,2.82e-45 / 1e-54 / player.money, 2, 1) + " attometers cubed, you would have enough to make a proton."
  1640. else if (player.money * 1e-63 < 2.82e-45) document.getElementById("infoScale").textContent = "If every antimatter were " + formatValue(player.options.notation,2.82e-45 / 1e-63 / player.money, 2, 1) + " zeptometers cubed, you would have enough to make a proton."
  1641. else if (player.money * 1e-72 < 2.82e-45) document.getElementById("infoScale").textContent = "If every antimatter were " + formatValue(player.options.notation,2.82e-45 / 1e-72 / player.money, 2, 1) + " yoctometers cubed, you would have enough to make a proton."
  1642. else document.getElementById("infoScale").textContent = "If every antimatter were " + formatValue(player.options.notation,2.82e-45 / 4.22419e-105 / player.money, 2, 1) + " planck volumes, you would have enough to make a proton."
  1643. }
  1644. if (player.money.gt(new Decimal("1e100000"))) {
  1645. document.getElementById("infoScale").innerHTML = "<br>If you wrote 3 numbers a second, it would take you <br>" + timeDisplay(player.money.log10()*10/3) + "<br> to write down your antimatter amount.";
  1646. }
  1647.  
  1648. var shiftRequirement = getShiftRequirement(0);
  1649.  
  1650. if (player[TIER_NAMES[shiftRequirement.tier] + 'Amount'] >= shiftRequirement.amount) {
  1651. document.getElementById("softReset").className = 'storebtn';
  1652. } else {
  1653. document.getElementById("softReset").className = 'unavailablebtn';
  1654. }
  1655.  
  1656. if (player.eightAmount >= getGalaxyRequirement()) {
  1657. document.getElementById("secondSoftReset").className = 'storebtn';
  1658. } else {
  1659. document.getElementById("secondSoftReset").className = 'unavailablebtn';
  1660. }
  1661.  
  1662. if (player.currentChallenge == "challenge4" && player.sixthAmount >= getGalaxyRequirement()) {
  1663. document.getElementById("secondSoftReset").className = 'storebtn';
  1664. }
  1665.  
  1666. if (player.currentChallenge == "challenge2" || player.currentChallenge == "postc1") document.getElementById("chall2Pow").style.display = "inline-block"
  1667. else document.getElementById("chall2Pow").style.display = "none"
  1668. if (player.currentChallenge == "challenge3" || player.currentChallenge == "postc1") document.getElementById("chall3Pow").style.display = "inline-block"
  1669. else document.getElementById("chall3Pow").style.display = "none"
  1670.  
  1671. document.getElementById("chall2Pow").textContent = (player.chall2Pow*100).toFixed(2) + "%"
  1672. document.getElementById("chall3Pow").textContent = shorten(player.chall3Pow*100) + "%"
  1673.  
  1674.  
  1675. if (player.infDimensionsUnlocked[7] == false && player.break && player.eternities <= 24) {
  1676. document.getElementById("newDimensionButton").style.display = "inline-block"
  1677. } else document.getElementById("newDimensionButton").style.display = "none"
  1678.  
  1679. if (player.money.gte(getNewInfReq())) document.getElementById("newDimensionButton").className = "newdim"
  1680. else document.getElementById("newDimensionButton").className = "newdimlocked"
  1681.  
  1682. var infdimpurchasewhileloop = 1;
  1683. while (player.eternities > 24 && getNewInfReq().lt(player.money) && player.infDimensionsUnlocked[7] === false) {
  1684. for (i=0; i<8; i++) {
  1685. if (player.infDimensionsUnlocked[i]) infdimpurchasewhileloop++
  1686. }
  1687. newDimension()
  1688. if (player.infDimBuyers[i-1]) buyMaxInfDims(infdimpurchasewhileloop)
  1689. infdimpurchasewhileloop = 1;
  1690. }
  1691.  
  1692. document.getElementById("newDimensionButton").textContent = "Get " + shortenCosts(getNewInfReq()) + " antimatter to unlock a new Dimension."
  1693.  
  1694. document.getElementById("sacrifice").setAttribute('ach-tooltip', "Boosts 8th Dimension by " + formatValue(player.options.notation, calcSacrificeBoost(), 2, 2) + "x");
  1695.  
  1696. document.getElementById("sacrifice").textContent = "Dimensional Sacrifice ("+formatValue(player.options.notation, calcSacrificeBoost(), 2, 2)+"x)"
  1697. if (isNaN(player.totalmoney)) player.totalmoney = new Decimal(10)
  1698. if (player.timestudy.studies.includes(181)) player.infinityPoints = player.infinityPoints.plus(gainedInfinityPoints().times(diff/1000))
  1699. if (player.dilation.upgrades.includes(10)) {
  1700. player.timestudy.theorem += parseFloat(player.dilation.tachyonParticles.div(20000).times(diff/10).toString())
  1701. if (document.getElementById("timestudies").style.display != "none" && document.getElementById("eternitystore").style.display != "none") {
  1702. if (player.timestudy.theorem>99999) document.getElementById("timetheorems").innerHTML = "You have <span style='display:inline' class=\"TheoremAmount\">"+shortenMoney(player.timestudy.theorem)+"</span> Time "+"Theorems."
  1703. else document.getElementById("timetheorems").innerHTML = "You have <span style='display:inline' class=\"TheoremAmount\">"+player.timestudy.theorem.toFixed(0)+"</span> Time "+ (player.timestudy.theorem == 1 ? "Theorem." : "Theorems.")
  1704. updateTimeStudyButtons()
  1705. }
  1706. }
  1707.  
  1708. document.getElementById("infinityPoints1").innerHTML = "You have <span class=\"IPAmount1\">"+shortenDimensions(player.infinityPoints)+"</span> Infinity points."
  1709. document.getElementById("infinityPoints2").innerHTML = "You have <span class=\"IPAmount2\">"+shortenDimensions(player.infinityPoints)+"</span> Infinity points."
  1710.  
  1711. player.lastUpdate = thisUpdate;
  1712. }
  1713.  
  1714. document.getElementById("maxall").onclick = function () {
  1715. if (!player.break && player.money.gt(Number.MAX_VALUE)) return false;
  1716. buyMaxTickSpeed();
  1717.  
  1718. for (var tier=1; tier<9;tier++) {
  1719. var name = TIER_NAMES[tier];
  1720. var cost = player[name + 'Cost'].times(10 - dimBought(tier))
  1721. var multBefore = player[name + 'Pow']
  1722. if (tier >= 3 && (player.currentChallenge == "challenge10" || player.currentChallenge == "postc1")) {
  1723. if (!canBuyDimension(tier)) continue
  1724. if (player[TIER_NAMES[tier-2] + 'Amount'].lt(cost)) continue
  1725. if (canBuyDimension(tier)) {
  1726. if (cost.lt(player[TIER_NAMES[tier-2]+"Amount"]) && dimBought(tier) != 0) {
  1727. player[TIER_NAMES[tier-2]+"Amount"] = player[TIER_NAMES[tier-2]+"Amount"].minus(cost)
  1728. player[name + "Amount"] = Decimal.round(player[name + "Amount"].plus(10 - dimBought(tier)))
  1729. player[name + 'Bought'] += (10 - dimBought(tier));
  1730. player[name + 'Pow'] = player[name + 'Pow'].times(getDimensionPowerMultiplier(tier))
  1731. player[name + "Cost"] = player[name + "Cost"].times(getDimensionCostMultiplier(tier))
  1732. }
  1733. while (player[TIER_NAMES[tier-2]+"Amount"].gt(player[name + "Cost"].times(10))) {
  1734. player[TIER_NAMES[tier-2]+"Amount"] = player[TIER_NAMES[tier-2]+"Amount"].minus(player[name + "Cost"].times(10))
  1735. player[name + "Cost"] = player[name + "Cost"].times(getDimensionCostMultiplier(tier))
  1736. player[name + "Amount"] = Decimal.round(player[name + "Amount"].plus(10))
  1737. player[name + 'Bought'] += 10
  1738. player[name + "Pow"] = player[name + "Pow"].times(getDimensionPowerMultiplier(tier))
  1739. if (player[name + 'Cost'].gte(Number.MAX_VALUE)) player.costMultipliers[tier-1] = player.costMultipliers[tier-1].times(reality.costMs[0])
  1740. if (player[name + "Cost"].gte(new Decimal("1e1000000"))) reality.costMs[0] = reality.costMs[0].times(reality.costMMs[0])
  1741. }
  1742.  
  1743.  
  1744. onBuyDimension(tier);
  1745. }
  1746. } else {
  1747. if (!canBuyDimension(tier)) continue
  1748. if (cost.lt(player.money) && dimBought(tier) != 0) {
  1749. player.money = player.money.minus(cost)
  1750. player[name + "Amount"] = Decimal.round(player[name + "Amount"].plus(10 - dimBought(tier)))
  1751. player[name + 'Bought'] += (10 - dimBought(tier));
  1752. player[name + 'Pow'] = player[name + 'Pow'].times(getDimensionPowerMultiplier(tier))
  1753. player[name + "Cost"] = player[name + "Cost"].times(getDimensionCostMultiplier(tier))
  1754. }
  1755. if (player.money.lt(player[name + "Cost"].times(10))) continue
  1756.  
  1757. if ((player.dimensionMultDecrease > 3 || player.currentChallenge == "postc5" || player.currentChallenge == "challenge5")) {
  1758. while ((player.money.gte(player[name + "Cost"].times(10)) && player.money.lte(Number.MAX_VALUE)) || (player.money.gte(player[name + "Cost"].times(10)) && player.currentChallenge != "challenge5")) {
  1759. player.money = player.money.minus(player[name + "Cost"].times(10))
  1760. if (player.currentChallenge != "challenge5" && player.currentChallenge != "postc5") player[name + "Cost"] = player[name + "Cost"].times(getDimensionCostMultiplier(tier))
  1761. else if (player.currentChallenge == "postc5") multiplyPC5Costs(player[name + 'Cost'], tier)
  1762. else multiplySameCosts(player[name + 'Cost'])
  1763. player[name + "Amount"] = Decimal.round(player[name + "Amount"].plus(10))
  1764. player[name + 'Bought'] += 10
  1765. player[name + "Pow"] = player[name + "Pow"].times(getDimensionPowerMultiplier(tier))
  1766. if (player[name + 'Cost'].gte(Number.MAX_VALUE)) player.costMultipliers[tier-1] = player.costMultipliers[tier-1].times(reality.costMs[0])
  1767. if (player[name + "Cost"].gte(new Decimal("1e1000000"))) reality.costMs[0] = reality.costMs[0].times(reality.costMMs[0])
  1768. if (player.currentChallenge == "challenge8") clearDimensions(tier-1)
  1769. }
  1770. } else {
  1771. if (player[name + "Cost"].lt(Number.MAX_VALUE)) {
  1772. while (player.money.gte(player[name + "Cost"].times(10)) && player[name + "Cost"].lte(Number.MAX_VALUE)) {
  1773. player.money = player.money.minus(player[name + "Cost"].times(10))
  1774. if (player.currentChallenge != "challenge5" && player.currentChallenge != "postc5") player[name + "Cost"] = player[name + "Cost"].times(getDimensionCostMultiplier(tier))
  1775. else if (player.currentChallenge == "postc5") multiplyPC5Costs(player[name + 'Cost'], tier)
  1776. else multiplySameCosts(player[name + 'Cost'])
  1777. player[name + "Amount"] = Decimal.round(player[name + "Amount"].plus(10))
  1778. player[name + 'Bought'] += 10
  1779. player[name + "Pow"] = player[name + "Pow"].times(getDimensionPowerMultiplier(tier))
  1780. if (player[name + 'Cost'].gte(Number.MAX_VALUE)) player.costMultipliers[tier-1] = player.costMultipliers[tier-1].times(reality.costMs[0])
  1781. if (player[name + "Cost"].gte(new Decimal("1e1000000"))) reality.costMs[0] = reality.costMs[0].times(reality.costMMs[0])
  1782. if (player.currentChallenge == "challenge8") clearDimensions(tier-1)
  1783. }
  1784. }
  1785.  
  1786. if (player[name + "Cost"].gte(Number.MAX_VALUE)) {
  1787. var a = Math.log10(Math.sqrt(player.dimensionMultDecrease))
  1788. var b = player.costMultipliers[tier-1].dividedBy(Math.sqrt(player.dimensionMultDecrease)).log10()
  1789. var c = player[name + "Cost"].dividedBy(player.money).log10()
  1790. var discriminant = Math.pow(b, 2) - (c *a* 4)
  1791. if (discriminant < 0) continue
  1792. var buying = Math.floor((Math.sqrt(Math.pow(b, 2) - (c *a *4))-b)/(2 * a))+1
  1793. if (buying <= 0) return false
  1794. player[name+"Amount"] = Decimal.round(player[name+"Amount"].plus(10*buying))
  1795. preInfBuy = Math.floor(1 + (308 - initCost[tier].log10()) / costMults[tier].log10())
  1796. postInfBuy = player[name + 'Bought']/10+buying - preInfBuy - 1
  1797. postInfInitCost = initCost[tier].times(Decimal.pow(costMults[tier], preInfBuy))
  1798. player[name + 'Bought'] += 10*buying
  1799. player[name + "Pow"] = player[name + "Pow"].times(Decimal.pow(getDimensionPowerMultiplier(tier), buying))
  1800.  
  1801. newCost = postInfInitCost.times(Decimal.pow(costMults[tier], postInfBuy)).times(Decimal.pow(player.dimensionMultDecrease, postInfBuy * (postInfBuy+1)/2))
  1802. newMult = costMults[tier].times(Decimal.pow(player.dimensionMultDecrease, postInfBuy+1))
  1803. //if (buying > 0 )player[name + "Cost"] = player.costMultipliers[tier-1].times(Decimal.pow(player.dimensionMultDecrease, (buying * buying - buying)/2)).times(player[name + "Cost"])
  1804.  
  1805. player[name + "Cost"] = newCost
  1806. player.costMultipliers[tier-1] = newMult
  1807. if (player.money.gte(player[name + "Cost"]))player.money = player.money.minus(player[name + "Cost"])
  1808. player[name + "Cost"] = player[name + "Cost"].times(player.costMultipliers[tier-1])
  1809. player.costMultipliers[tier-1] = player.costMultipliers[tier-1].times(reality.costMs[0])
  1810. if (player[name + "Cost"].gte(new Decimal("1e1000000"))) reality.costMs[0] = reality.costMs[0].times(reality.costMMs[0])
  1811. }
  1812.  
  1813.  
  1814. }
  1815. }
  1816. if ((player.currentChallenge == "challenge12" || player.currentChallenge == "postc1" || player.currentChallenge == "postc6") && player.matter.equals(0)) player.matter = new Decimal(1);
  1817. if (player.currentChallenge == "challenge2" || player.currentChallenge == "postc1") player.chall2Pow = 0;
  1818. if (player.currentChallenge == "postc1") clearDimensions(tier-1);
  1819. player.postC4Tier = tier;
  1820. onBuyDimension(tier)
  1821. floatText(name + "D", "x" + shortenMoney(player[name + "Pow"].dividedBy(multBefore)))
  1822. }
  1823. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement