Jacorb90

AD GAME

Mar 25th, 2019
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 154.20 KB | None | 0 0
  1. function gameLoop(diff) {
  2. var thisUpdate = new Date().getTime();
  3. if (thisUpdate - player.lastUpdate >= 21600000) giveAchievement("Don't you dare to sleep")
  4. if (typeof diff === 'undefined') var diff = Math.min(thisUpdate - player.lastUpdate, 21600000);
  5. diff = diff / 100;
  6. if (diff < 0) diff = 1;
  7. if (player.currentEternityChall === "eterc12") diff = diff / 1000;
  8. if (player.thisInfinityTime < -10) player.thisInfinityTime = Infinity
  9. if (player.bestInfinityTime < -10) player.bestInfinityTime = Infinity
  10. if (diff > player.autoTime && !player.break) player.infinityPoints = player.infinityPoints.plus(player.autoIP.times(diff/player.autoTime))
  11. /*if (player.currentChallenge == "postc6" && player.matter.gte(1)) player.matter = player.matter.plus(diff/10)
  12. else */
  13. player.matter = player.matter.times(Decimal.pow((1.03 + player.resets/200 + player.galaxies/100), diff));
  14. if (player.matter.gt(player.money) && (player.currentChallenge == "challenge12" || player.currentChallenge == "postc1")) {
  15. if (player.resets > 0) player.resets--;
  16. softReset(0);
  17. }
  18.  
  19. if (player.currentChallenge == "postc8") postc8Mult = postc8Mult.times(Math.pow(0.000000046416, diff))
  20.  
  21. if (player.currentChallenge == "challenge3" || player.matter.gte(1)) player.chall3Pow = player.chall3Pow.times(Decimal.pow(1.00038, diff));
  22. player.chall2Pow = Math.min(player.chall2Pow + diff/1800, 1);
  23. if (player.currentChallenge == "postc2") {
  24. postC2Count++;
  25. if (postC2Count >= 8 || diff > 80) {
  26. sacrifice();
  27. postC2Count = 0;
  28. }
  29. }
  30. if (player.infinityUpgrades.includes("passiveGen")) player.partInfinityPoint += diff / player.bestInfinityTime;
  31. if (player.partInfinityPoint >= 100) {
  32. player.infinityPoints = player.infinityPoints.plus(player.infMult.times(kongIPMult * (player.partInfinityPoint/10)));
  33. player.partInfinityPoint = 0;
  34. }
  35.  
  36. if (player.partInfinityPoint >= 10) {
  37. player.partInfinityPoint -= 10;
  38. player.infinityPoints = player.infinityPoints.plus(player.infMult.times(kongIPMult));
  39. }
  40.  
  41.  
  42.  
  43. if (player.infinityUpgrades.includes("infinitiedGeneration") && player.currentEternityChall !== "eterc4") player.partInfinitied += diff / player.bestInfinityTime;
  44. if (player.partInfinitied >= 50) {
  45. player.infinitied += Math.floor(player.partInfinitied/5)
  46. player.partInfinitied = 0;
  47. }
  48.  
  49. if (player.partInfinitied >= 5) {
  50. player.partInfinitied -= 5;
  51. player.infinitied ++;
  52. }
  53.  
  54. player.infinityPoints = player.infinityPoints.plus(bestRunIppm.times(player.offlineProd/100).times(diff/600))
  55.  
  56. if (player.money.lte(Number.MAX_VALUE) || (player.break && player.currentChallenge == "") || (player.currentChallenge != "" && player.money.lte(player.challengeTarget))) {
  57.  
  58. if (player.currentChallenge != "challenge7" && player.currentEternityChall != "eterc3") {
  59. for (let tier = 7; tier >= 1; --tier) {
  60. var name = TIER_NAMES[tier];
  61.  
  62. player[name + 'Amount'] = player[name + 'Amount'].plus(getDimensionProductionPerSecond(tier + 1).times(diff / 100));
  63. }
  64. } else if (player.currentEternityChall != "eterc3") {
  65. for (let tier = 6; tier >= 1; --tier) {
  66. var name = TIER_NAMES[tier];
  67.  
  68. player[name + 'Amount'] = player[name + 'Amount'].plus(getDimensionProductionPerSecond(tier + 2).times(diff / 100));
  69. }
  70. } else {
  71. for (let tier = 3; tier >= 1; --tier) {
  72. var name = TIER_NAMES[tier];
  73.  
  74. player[name + 'Amount'] = player[name + 'Amount'].plus(getDimensionProductionPerSecond(tier + 1).times(diff / 100));
  75. }
  76. }
  77.  
  78. if (player.currentChallenge == "challenge3" || player.currentChallenge == "postc1") {
  79. player.money = player.money.plus(getDimensionProductionPerSecond(1).times(diff/10).times(player.chall3Pow));
  80. player.totalmoney = player.totalmoney.plus(getDimensionProductionPerSecond(1).times(diff/10).times(player.chall3Pow));
  81. } else {
  82. player.money = player.money.plus(getDimensionProductionPerSecond(1).times(diff/10));
  83. player.totalmoney = player.totalmoney.plus(getDimensionProductionPerSecond(1).times(diff/10));
  84. }
  85. if (player.currentChallenge == "challenge7") {
  86. player.money = player.money.plus(getDimensionProductionPerSecond(2).times(diff/10));
  87. player.totalmoney = player.totalmoney.plus(getDimensionProductionPerSecond(2).times(diff/10))
  88. }
  89. }
  90.  
  91. document.getElementById("dimTabButtons").style.display = "none"
  92.  
  93. if (player.currentEternityChall === "eterc12") player.totalTimePlayed += diff*1000
  94. else player.totalTimePlayed += diff
  95. player.thisInfinityTime += diff
  96. player.thisEternity += diff
  97.  
  98. if (player.eternities > 0) document.getElementById("tdtabbtn").style.display = "inline-block"
  99.  
  100. for (let tier=1;tier<9;tier++) {
  101. 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))
  102. if (player.infDimensionsUnlocked[tier-1]) {
  103. document.getElementById("infRow"+tier).style.display = "inline-block"
  104. document.getElementById("dimTabButtons").style.display = "inline-block"
  105. var idtabshown = true;
  106. } else {
  107. document.getElementById("infRow"+tier).style.display = "none"
  108. document.getElementById("idtabbtn").style.display = "none"
  109. }
  110. if (idtabshown === true || player.eternities >= 1) {
  111. document.getElementById("idtabbtn").style.display = "inline-block"
  112. }
  113.  
  114. if (tier <8) player["timeDimension"+tier].amount = player["timeDimension"+tier].amount.plus(getTimeDimensionProduction(tier+1).times(diff/100))
  115. }
  116.  
  117. if (player.infinitied > 0 && player.eternities < 1) {
  118. document.getElementById("dimTabButtons").style.display = "inline-block"
  119. document.getElementById("dtabbtn").style.display = "inline-block"
  120. document.getElementById("prodtabbtn").style.display = "inline-block"
  121. }
  122. if (player.eternities > 0) document.getElementById("dimTabButtons").style.display = "inline-block"
  123.  
  124. if (player.currentEternityChall !== "eterc7") player.infinityPower = player.infinityPower.plus(DimensionProduction(1).times(diff/10))
  125. else if (player.currentChallenge !== "challenge4" && player.currentChallenge !== "postc1") player.seventhAmount = player.seventhAmount.plus(DimensionProduction(1).times(diff/10))
  126.  
  127.  
  128.  
  129.  
  130. if (player.currentEternityChall == "eterc7") player.infinityDimension8.amount = player.infinityDimension8.amount.plus(getTimeDimensionProduction(1).times(diff/10))
  131. else player.timeShards = player.timeShards.plus(getTimeDimensionProduction(1).times(diff/10))
  132.  
  133. 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))
  134.  
  135. let gain;
  136. if (player.timeShards.gt(0)) {
  137. if (player.timestudy.studies.includes(171)) gain = Math.ceil(new Decimal(player.timeShards).dividedBy(player.tickThreshold).log10() / Math.log10(1.25))
  138. else gain = Math.ceil(new Decimal(player.timeShards).dividedBy(player.tickThreshold).log10() / Math.log10(1.33))
  139. player.totalTickGained += gain
  140. player.tickspeed = player.tickspeed.times(Decimal.pow(getTickSpeedMultiplier(), gain))
  141. if (player.timestudy.studies.includes(171)) player.tickThreshold = new Decimal(1).times(1.25).pow(player.totalTickGained)
  142. else player.tickThreshold = new Decimal(1).times(1.33).pow(player.totalTickGained)
  143. document.getElementById("totaltickgained").textContent = "You've gained "+player.totalTickGained.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",")+" tickspeed upgrades."
  144. updateTickSpeed();
  145. }
  146.  
  147. if (player.eternities == 0) {
  148. document.getElementById("eternityPoints2").style.display = "none"
  149. document.getElementById("eternitystorebtn").style.display = "none"
  150. }
  151. else {
  152. document.getElementById("eternityPoints2").style.display = "inline-block"
  153. }
  154.  
  155.  
  156. if (player.money.gte(Number.MAX_VALUE) && (!player.break || (player.currentChallenge != "" && player.money.gte(player.challengeTarget)))) {
  157. document.getElementById("bigcrunch").style.display = 'inline-block';
  158. if ((player.currentChallenge == "" || player.options.retryChallenge) && (player.bestInfinityTime <= 600 || player.break)) {}
  159. else showTab('emptiness');
  160. } else document.getElementById("bigcrunch").style.display = 'none';
  161.  
  162. if (player.break && player.money.gte(Number.MAX_VALUE) && player.currentChallenge == "") {
  163. document.getElementById("postInfinityButton").style.display = "inline-block"
  164. } else {
  165. document.getElementById("postInfinityButton").style.display = "none"
  166. }
  167.  
  168.  
  169. if (player.break) document.getElementById("iplimit").style.display = "inline"
  170. else document.getElementById("iplimit").style.display = "none"
  171.  
  172. var currentIPmin = gainedInfinityPoints().dividedBy(player.thisInfinityTime/600)
  173. if (currentIPmin.gt(IPminpeak)) IPminpeak = currentIPmin
  174. 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"
  175. else document.getElementById("postInfinityButton").innerHTML = "<b>Big Crunch for "+shortenDimensions(gainedInfinityPoints())+" Infinity Points.</b>"
  176.  
  177. if (nextAt[player.postChallUnlocked] === undefined) document.getElementById("nextchall").textContent = " "
  178. else if (!player.achievements.includes("r133")) {
  179. document.getElementById("nextchall").textContent = "Next challenge unlocks at "+ shortenCosts(nextAt[player.postChallUnlocked]) + " antimatter."
  180. while (player.money.gte(nextAt[player.postChallUnlocked]) && player.challenges.includes("postc8") === false && player.postChallUnlocked != 8) {
  181. if (player.postChallUnlocked != 8) player.postChallUnlocked += 1
  182. if (player.eternities > 6) player.challenges.push("postc"+player.postChallUnlocked)
  183. updateChallenges()
  184. }
  185. }
  186. let interval = player.replicanti.interval
  187. if (player.timestudy.studies.includes(62)) interval = interval/3
  188. if (player.timestudy.studies.includes(133) || player.replicanti.amount.gt(Number.MAX_VALUE)) interval *= 10
  189. if (player.timestudy.studies.includes(213)) interval /= 20
  190. if (player.replicanti.amount.lt(Number.MAX_VALUE) && player.achievements.includes("r134")) interval /= 2
  191. if (player.replicanti.amount.gt(Number.MAX_VALUE)) interval = Math.max(interval * Math.pow(1.2, (player.replicanti.amount.log10() - 308)/308), interval)
  192. var est = Math.log(player.replicanti.chance+1) * 1000 / interval
  193.  
  194. var current = player.replicanti.amount.ln()
  195.  
  196. if (player.replicanti.unl && (diff > 5 || interval < 50 || player.timestudy.studies.includes(192))) {
  197. var gained = Decimal.pow(Math.E, current +(diff*est/10))
  198. 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))
  199. player.replicanti.amount = Decimal.min(Number.MAX_VALUE, gained)
  200. if (player.timestudy.studies.includes(192)) player.replicanti.amount = gained
  201. replicantiTicks = 0
  202. } else {
  203. if (interval <= replicantiTicks && player.replicanti.unl) {
  204. if (player.replicanti.amount.lte(100)) {
  205. var temp = player.replicanti.amount
  206. for (var i=0; temp.gt(i); i++) {
  207. if (player.replicanti.chance > Math.random()) player.replicanti.amount = player.replicanti.amount.plus(1)
  208. }
  209. } else {
  210. var temp = Decimal.round(player.replicanti.amount.dividedBy(100))
  211. if (Math.round(player.replicanti.chance) !== 1) {
  212. let counter = 0
  213. for (var i=0; i<100; i++) {
  214. if (player.replicanti.chance > Math.random()) {
  215. counter++;
  216. }
  217. }
  218. player.replicanti.amount = Decimal.min(Number.MAX_VALUE, temp.times(counter).plus(player.replicanti.amount))
  219. if (player.timestudy.studies.includes(192)) player.replicanti.amount = temp.times(counter).plus(player.replicanti.amount)
  220. counter = 0
  221. } else {
  222. let repmult = 2
  223. if (stars.gte(400)) repmult = stars/10
  224. if (player.timestudy.studies.includes(192)) player.replicanti.amount = player.replicanti.amount.times(repmult)
  225. else player.replicanti.amount = Decimal.min(Number.MAX_VALUE, player.replicanti.amount.times(repmult))
  226.  
  227. }
  228. }
  229. replicantiTicks -= interval
  230. }
  231.  
  232. }
  233. if (player.replicanti.amount.gt(0)) replicantiTicks += player.options.updateRate
  234.  
  235.  
  236. if (current == Decimal.ln(Number.MAX_VALUE) && player.thisInfinityTime < 600*30) giveAchievement("Is this safe?");
  237. if (player.replicanti.galaxies >= 10 && player.thisInfinityTime < 150) giveAchievement("The swarm");
  238.  
  239. if (player.replicanti.galaxybuyer && player.replicanti.amount.gte(Number.MAX_VALUE) && !player.timestudy.studies.includes(131)) {
  240. document.getElementById("replicantireset").click()
  241. }
  242. 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"
  243. else document.getElementById("replicantiinterval").textContent = "Interval: "+(interval).toFixed(3)+"ms"
  244.  
  245.  
  246. if (player.infMultBuyer) {
  247. var dif = player.infinityPoints.e - player.infMultCost.e +1
  248. if (dif > 0) {
  249. player.infMult = player.infMult.times(Decimal.pow(2, dif))
  250. player.infMultCost = player.infMultCost.times(Decimal.pow(10, dif))
  251. 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"
  252. player.infinityPoints = player.infinityPoints.minus(player.infMultCost.dividedBy(10))
  253. 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));
  254. if (player.autoCrunchMode == "amount") document.getElementById("priority12").value = player.autobuyers[11].priority
  255. }
  256. }
  257.  
  258.  
  259. var estimate = Math.max((Math.log(Number.MAX_VALUE) - current) / est, 0)
  260. document.getElementById("replicantiapprox").textContent ="Approximately "+ timeDisplay(estimate*10) + " Until Infinite Replicanti"
  261.  
  262. document.getElementById("replicantiamount").textContent = shortenDimensions(player.replicanti.amount)
  263. var replmult = Decimal.pow(Decimal.log2(Decimal.max(player.replicanti.amount, 1)), 2)
  264. if (player.timestudy.studies.includes(21)) replmult = replmult.plus(Decimal.pow(player.replicanti.amount, 0.032))
  265. if (player.timestudy.studies.includes(102))replmult = replmult.times(Decimal.pow(5, player.replicanti.galaxies, 150))
  266. document.getElementById("replicantimult").textContent = shorten(replmult.max(1))
  267.  
  268. var currentEPmin = gainedEternityPoints().dividedBy(player.thisEternity/600)
  269. if (currentEPmin.gt(EPminpeak) && player.infinityPoints.gte(Number.MAX_VALUE)) EPminpeak = currentEPmin
  270. 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"
  271. 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"
  272. 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."
  273. if (player.currentEternityChall !== "") document.getElementById("eternitybtn").textContent = "Other challenges await.. I need to become Eternal"
  274. updateMoney();
  275. updateCoinPerSec();
  276. updateDimensions()
  277. updateInfCosts()
  278. updateInfinityDimensions();
  279. updateInfPower();
  280. updateTimeDimensions()
  281. updateTimeShards()
  282. updateDilation()
  283. if (getDimensionProductionPerSecond(1).gt(player.money) && !player.achievements.includes("r44")) {
  284. Marathon+=player.options.updateRate/1000;
  285. if (Marathon >= 30) giveAchievement("Over in 30 seconds");
  286. } else {
  287. Marathon = 0;
  288. }
  289. if (DimensionProduction(1).gt(player.infinityPower) && player.currentEternityChall != "eterc7" && !player.achievements.includes("r113")) {
  290. Marathon2+=player.options.updateRate/1000;
  291. if (Marathon2 >= 60) giveAchievement("Long lasting relationship");
  292. } else {
  293. Marathon2 = 0;
  294. }
  295. if (player.eternities >= 1 && (player.options.notation == "Standard" || player.options.notation == "Emojis" || player.options.notation == "Brackets")) {
  296. painTimer += player.options.updateRate/1000;
  297. if (painTimer >= 600) giveAchievement("Do you enjoy pain?");
  298. }
  299.  
  300. if(player.money.gt(Math.pow(10,63))) giveAchievement("Supersanic");
  301.  
  302. for (let tier = 1; tier <= 8; ++tier) {
  303. var name = TIER_NAMES[tier];
  304. if (player.currentChallenge != "challenge10" && player.currentChallenge != "postc1") {
  305. document.getElementById(name).className = canAfford(player[name + 'Cost']) ? 'storebtn' : 'unavailablebtn';
  306. document.getElementById(name + 'Max').className = canAfford(player[name + 'Cost'].times(10 - dimBought(tier))) ? 'storebtn' : 'unavailablebtn';
  307. } else {
  308. if (tier >= 3) {
  309. document.getElementById(name).className = player[TIER_NAMES[tier-2] + 'Amount'].gte(player[name + 'Cost']) ? 'storebtn' : 'unavailablebtn';
  310. document.getElementById(name + 'Max').className = player[TIER_NAMES[tier-2] + 'Amount'].gte(player[name + 'Cost'].times(10 - dimBought(tier))) ? 'storebtn' : 'unavailablebtn';
  311. } else {
  312. document.getElementById(name).className = canAfford(player[name + 'Cost']) ? 'storebtn' : 'unavailablebtn';
  313. document.getElementById(name + 'Max').className = canAfford(player[name + 'Cost'].times(10 - dimBought(tier))) ? 'storebtn' : 'unavailablebtn';
  314. }
  315. }
  316. }
  317. if (player.firstAmount.lt(1)) document.getElementById("first").className = 'storebtn';
  318.  
  319. for (var tier = 1; tier < 9; tier++) {
  320. if (player.infinityPoints.gte(player["infinityDimension"+tier].cost)) document.getElementById("infMax"+tier).className = "storebtn"
  321. else document.getElementById("infMax"+tier).className = "unavailablebtn"
  322. }
  323.  
  324. for (var tier = 1; tier < 9; tier++) {
  325. if (player.eternityPoints.gte(player["timeDimension"+tier].cost)) document.getElementById("timeMax"+tier).className = "storebtn"
  326. else document.getElementById("timeMax"+tier).className = "unavailablebtn"
  327. }
  328.  
  329. 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)
  330.  
  331. if ((stars.gte(350)) && (stars.lt(450))) player.dilation.tachyonParticles = player.dilation.tachyonParticles.plus(Decimal.pow(player.replicanti.amount,0.0002))
  332. if (stars.gte(450)) player.dilation.tachyonParticles = player.dilation.tachyonParticles.plus(Decimal.pow(player.replicanti.amount,0.00015)).times(Math.pow(3, player.dilation.rebuyables[3]))
  333.  
  334. if (player.dilation.nextThreshold.lte(player.dilation.dilatedTime)) {
  335. let thresholdMult = 1.35 + 3.65 * Math.pow(0.8, player.dilation.rebuyables[2])
  336. // for (var i = 0; i < player.dilation.rebuyables[2]; i++) {
  337. // thresholdMult *= Math.min( 1 - (Math.pow(0.8, i) / 10), 0.999)
  338. // }
  339. if (stars.gte(350)) {
  340. player.dilation.nextThreshold = player.dilation.nextThreshold.times(thresholdMult**1.5)
  341. } else {
  342. player.dilation.nextThreshold = player.dilation.nextThreshold.times(thresholdMult)
  343. }
  344. player.dilation.freeGalaxies += 1
  345. if (player.dilation.upgrades.includes(4)) player.dilation.freeGalaxies += 1
  346. }
  347.  
  348.  
  349.  
  350.  
  351. if (canAfford(player.tickSpeedCost)) {
  352. document.getElementById("tickSpeed").className = 'storebtn';
  353. document.getElementById("tickSpeedMax").className = 'storebtn';
  354. } else {
  355. document.getElementById("tickSpeed").className = 'unavailablebtn';
  356. document.getElementById("tickSpeedMax").className = 'unavailablebtn';
  357. }
  358.  
  359. if (player.infinityPoints.gt(0) || player.eternities !== 0) {
  360. document.getElementById("infinitybtn").style.display = "block";
  361. document.getElementById("infi11").className = "infinistorebtn1"
  362. document.getElementById("infi21").className = "infinistorebtn2"
  363. if (player.infinityUpgrades.includes("timeMult")) document.getElementById("infi12").className = "infinistorebtn1"
  364. else document.getElementById("infi12").className = "infinistorebtnlocked"
  365. if (player.infinityUpgrades.includes("dimMult")) document.getElementById("infi22").className = "infinistorebtn2"
  366. else document.getElementById("infi22").className = "infinistorebtnlocked"
  367. if (player.infinityUpgrades.includes("18Mult")) document.getElementById("infi13").className = "infinistorebtn1"
  368. else document.getElementById("infi13").className = "infinistorebtnlocked"
  369. if (player.infinityUpgrades.includes("27Mult")) document.getElementById("infi23").className = "infinistorebtn2"
  370. else document.getElementById("infi23").className = "infinistorebtnlocked"
  371. if (player.infinityUpgrades.includes("36Mult")) document.getElementById("infi14").className = "infinistorebtn1"
  372. else document.getElementById("infi14").className = "infinistorebtnlocked"
  373. if (player.infinityUpgrades.includes("45Mult") && player.infinityPoints.gte(2)) document.getElementById("infi24").className = "infinistorebtn2"
  374. else document.getElementById("infi24").className = "infinistorebtnlocked"
  375. if (player.infinityPoints.gte(3)) document.getElementById("infi31").className = "infinistorebtn3"
  376. else document.getElementById("infi31").className = "infinistorebtnlocked"
  377. if (player.infinityUpgrades.includes("timeMult2") && player.infinityPoints.gte(5)) document.getElementById("infi32").className = "infinistorebtn3"
  378. else document.getElementById("infi32").className = "infinistorebtnlocked"
  379. if (player.infinityUpgrades.includes("unspentBonus") && player.infinityPoints.gte(7)) document.getElementById("infi33").className = "infinistorebtn3"
  380. else document.getElementById("infi33").className = "infinistorebtnlocked"
  381. if (player.infinityUpgrades.includes("resetMult") && player.infinityPoints.gte(10)) document.getElementById("infi34").className = "infinistorebtn3"
  382. else document.getElementById("infi34").className = "infinistorebtnlocked"
  383. if (player.infinityPoints.gte(20)) document.getElementById("infi41").className = "infinistorebtn4"
  384. else document.getElementById("infi41").className = "infinistorebtnlocked"
  385. if (player.infinityUpgrades.includes("skipReset1") && player.infinityPoints.gte(40)) document.getElementById("infi42").className = "infinistorebtn4"
  386. else document.getElementById("infi42").className = "infinistorebtnlocked"
  387. if (player.infinityUpgrades.includes("skipReset2") && player.infinityPoints.gte(80)) document.getElementById("infi43").className = "infinistorebtn4"
  388. else document.getElementById("infi43").className = "infinistorebtnlocked"
  389. if (player.infinityUpgrades.includes("skipReset3") && player.infinityPoints.gte(500)) document.getElementById("infi44").className = "infinistorebtn4"
  390. else document.getElementById("infi44").className = "infinistorebtnlocked"
  391. if (player.infinityUpgrades.includes("skipResetGalaxy") && player.infinityUpgrades.includes("passiveGen") && player.infinityUpgrades.includes("galaxyBoost") && player.infinityUpgrades.includes("resetBoost") && player.infinityPoints.gte(player.infMultCost)) {
  392. document.getElementById("infiMult").className = "infinimultbtn"
  393. } else document.getElementById("infiMult").className = "infinistorebtnlocked"
  394.  
  395. if (player.infinityPoints.gte(1e4)) document.getElementById("postinfi11").className = "infinistorebtn1"
  396. else document.getElementById("postinfi11").className = "infinistorebtnlocked"
  397.  
  398. if (player.infinityPoints.gte(5e4)) document.getElementById("postinfi21").className = "infinistorebtn1"
  399. else document.getElementById("postinfi21").className = "infinistorebtnlocked"
  400.  
  401. if (player.infinityPoints.gte(player.tickSpeedMultDecreaseCost)) document.getElementById("postinfi31").className = "infinimultbtn"
  402. else document.getElementById("postinfi31").className = "infinistorebtnlocked"
  403.  
  404. if (player.infinityPoints.gte(5e11)) document.getElementById("postinfi41").className = "infinistorebtn1"
  405. else document.getElementById("postinfi41").className = "infinistorebtnlocked"
  406.  
  407. if (player.infinityPoints.gte(1e5)) document.getElementById("postinfi12").className = "infinistorebtn1"
  408. else document.getElementById("postinfi12").className = "infinistorebtnlocked"
  409.  
  410. if (player.infinityPoints.gte(1e6)) document.getElementById("postinfi22").className = "infinistorebtn1"
  411. else document.getElementById("postinfi22").className = "infinistorebtnlocked"
  412.  
  413. if (player.infinityPoints.gte(1e7)) document.getElementById("postinfi32").className = "infinistorebtn1"
  414. else document.getElementById("postinfi32").className = "infinistorebtnlocked"
  415.  
  416. if (player.infinityPoints.gte(player.dimensionMultDecreaseCost)) document.getElementById("postinfi42").className = "infinimultbtn"
  417. else document.getElementById("postinfi42").className = "infinistorebtnlocked"
  418.  
  419. if (player.infinityPoints.gte(20e6)) document.getElementById("postinfi13").className = "infinistorebtn1"
  420. else document.getElementById("postinfi13").className = "infinistorebtnlocked"
  421.  
  422. if (player.infinityPoints.gte(5e9)) document.getElementById("postinfi23").className = "infinistorebtn1"
  423. else document.getElementById("postinfi23").className = "infinistorebtnlocked"
  424.  
  425. if (player.infinityPoints.gte(1e15)) document.getElementById("postinfi33").className = "infinistorebtn1"
  426. else document.getElementById("postinfi33").className = "infinistorebtnlocked"
  427.  
  428. if (player.infinityPoints.gte(player.offlineProdCost)) document.getElementById("offlineProd").className = "infinimultbtn"
  429. else document.getElementById("offlineProd").className = "infinistorebtnlocked"
  430.  
  431. }
  432. if (player.infinityPoints.equals(0)){
  433. document.getElementById("infi11").className = "infinistorebtnlocked"
  434. document.getElementById("infi12").className = "infinistorebtnlocked"
  435. document.getElementById("infi13").className = "infinistorebtnlocked"
  436. document.getElementById("infi14").className = "infinistorebtnlocked"
  437. document.getElementById("infi21").className = "infinistorebtnlocked"
  438. document.getElementById("infi22").className = "infinistorebtnlocked"
  439. document.getElementById("infi23").className = "infinistorebtnlocked"
  440. document.getElementById("infi24").className = "infinistorebtnlocked"
  441. document.getElementById("infi31").className = "infinistorebtnlocked"
  442. document.getElementById("infi32").className = "infinistorebtnlocked"
  443. document.getElementById("infi33").className = "infinistorebtnlocked"
  444. document.getElementById("infi34").className = "infinistorebtnlocked"
  445. document.getElementById("infi41").className = "infinistorebtnlocked"
  446. document.getElementById("infi42").className = "infinistorebtnlocked"
  447. document.getElementById("infi43").className = "infinistorebtnlocked"
  448. document.getElementById("infi44").className = "infinistorebtnlocked"
  449. document.getElementById("infiMult").className = "infinistorebtnlocked"
  450.  
  451. }
  452.  
  453. if (player.autobuyers[11]%1 === 0 || player.autobuyers[11].interval>100) document.getElementById("break").className = "infinistorebtnlocked"
  454. else document.getElementById("break").className = "infinistorebtn2"
  455.  
  456.  
  457. if (player.resets > 4) {
  458. document.getElementById("confirmation").style.display = "inline-block";
  459. document.getElementById("sacrifice").style.display = "inline-block";
  460. } else {
  461. document.getElementById("confirmation").style.display = "none";
  462. document.getElementById("sacrifice").style.display = "none";
  463. }
  464.  
  465. if (player.infinitied > 0) document.getElementById("sacrifice").style.display = "inline-block";
  466.  
  467. if (player.eightAmount > 0 && player.resets > 4 && player.currentEternityChall !== "eterc3") document.getElementById("sacrifice").className = "storebtn"
  468. else document.getElementById("sacrifice").className = "unavailablebtn"
  469.  
  470. if (player.autobuyers[11]%1 !== 0 && player.autobuyers[11].interval == 100) {
  471. document.getElementById("postinftable").style.display = "inline-block"
  472. } else {
  473. document.getElementById("postinftable").style.display = "none"
  474. }
  475.  
  476. if (player.autobuyers[11].interval == 100) document.getElementById("abletobreak").style.display = "none"
  477.  
  478.  
  479. document.getElementById("infinitybtn").style.display = "none";
  480. document.getElementById("challengesbtn").style.display = "none";
  481.  
  482. if (player.money.gte(Number.MAX_VALUE) && (((player.currentChallenge != "" && player.money.gte(player.challengeTarget)) && !player.options.retryChallenge) || (player.bestInfinityTime > 600 && !player.break))) {
  483. document.getElementById("dimensionsbtn").style.display = "none";
  484. document.getElementById("optionsbtn").style.display = "none";
  485. document.getElementById("statisticsbtn").style.display = "none";
  486. document.getElementById("achievementsbtn").style.display = "none";
  487. document.getElementById("challengesbtn").style.display = "none";
  488. document.getElementById("infinitybtn").style.display = "none";
  489. document.getElementById("tickSpeed").style.visibility = "hidden";
  490. document.getElementById("tickSpeedMax").style.visibility = "hidden";
  491. document.getElementById("tickLabel").style.visibility = "hidden";
  492. document.getElementById("tickSpeedAmount").style.visibility = "hidden";
  493. } else {
  494. document.getElementById("dimensionsbtn").style.display = "inline-block";
  495. document.getElementById("optionsbtn").style.display = "inline-block";
  496. document.getElementById("statisticsbtn").style.display = "inline-block";
  497. document.getElementById("achievementsbtn").style.display = "inline-block";
  498. if (player.infinitied > 0) {
  499. document.getElementById("infinitybtn").style.display = "inline-block";
  500. document.getElementById("challengesbtn").style.display = "inline-block";
  501. }
  502. }
  503.  
  504. document.getElementById("epmult").className = player.eternityPoints.gte(player.epmultCost) ? "eternityupbtn" : "eternityupbtnlocked"
  505.  
  506. if (player.infinityUpgrades.includes("bulkBoost")) document.getElementById("bulkdimboost").style.display = "inline"
  507. else document.getElementById("bulkdimboost").style.display = "none"
  508.  
  509. if (player.infinityUpgrades.includes("timeMult")) document.getElementById("infi11").className = "infinistorebtnbought"
  510. if (player.infinityUpgrades.includes("dimMult")) document.getElementById("infi21").className = "infinistorebtnbought"
  511. if (player.infinityUpgrades.includes("18Mult")) document.getElementById("infi12").className = "infinistorebtnbought"
  512. if (player.infinityUpgrades.includes("27Mult")) document.getElementById("infi22").className = "infinistorebtnbought"
  513. if (player.infinityUpgrades.includes("36Mult")) document.getElementById("infi13").className = "infinistorebtnbought"
  514. if (player.infinityUpgrades.includes("45Mult")) document.getElementById("infi23").className = "infinistorebtnbought"
  515. if (player.infinityUpgrades.includes("resetBoost")) document.getElementById("infi14").className = "infinistorebtnbought"
  516. if (player.infinityUpgrades.includes("galaxyBoost")) document.getElementById("infi24").className = "infinistorebtnbought"
  517. if (player.infinityUpgrades.includes("timeMult2")) document.getElementById("infi31").className = "infinistorebtnbought"
  518. if (player.infinityUpgrades.includes("unspentBonus")) document.getElementById("infi32").className = "infinistorebtnbought"
  519. if (player.infinityUpgrades.includes("resetMult")) document.getElementById("infi33").className = "infinistorebtnbought"
  520. if (player.infinityUpgrades.includes("passiveGen")) document.getElementById("infi34").className = "infinistorebtnbought"
  521. if (player.infinityUpgrades.includes("skipReset1")) document.getElementById("infi41").className = "infinistorebtnbought"
  522. if (player.infinityUpgrades.includes("skipReset2")) document.getElementById("infi42").className = "infinistorebtnbought"
  523. if (player.infinityUpgrades.includes("skipReset3")) document.getElementById("infi43").className = "infinistorebtnbought"
  524. if (player.infinityUpgrades.includes("skipResetGalaxy")) document.getElementById("infi44").className = "infinistorebtnbought"
  525.  
  526. if (player.infinityUpgrades.includes("totalMult")) document.getElementById("postinfi11").className = "infinistorebtnbought"
  527. if (player.infinityUpgrades.includes("currentMult")) document.getElementById("postinfi21").className = "infinistorebtnbought"
  528. if (player.tickSpeedMultDecrease <= 2) document.getElementById("postinfi31").className = "infinistorebtnbought"
  529. if (player.infinityUpgrades.includes("achievementMult")) document.getElementById("postinfi22").className = "infinistorebtnbought"
  530. if (player.infinityUpgrades.includes("infinitiedMult")) document.getElementById("postinfi12").className = "infinistorebtnbought"
  531. if (player.infinityUpgrades.includes("postGalaxy")) document.getElementById("postinfi41").className = "infinistorebtnbought"
  532. if (player.infinityUpgrades.includes("challengeMult")) document.getElementById("postinfi32").className = "infinistorebtnbought"
  533. if (player.dimensionMultDecrease <= 3) document.getElementById("postinfi42").className = "infinistorebtnbought"
  534. if (player.offlineProd == 50) document.getElementById("offlineProd").className = "infinistorebtnbought"
  535.  
  536.  
  537. if (player.infinityUpgrades.includes("infinitiedGeneration")) document.getElementById("postinfi13").className = "infinistorebtnbought"
  538. if (player.infinityUpgrades.includes("bulkBoost")) document.getElementById("postinfi23").className = "infinistorebtnbought"
  539. if (player.infinityUpgrades.includes("autoBuyerUpgrade")) document.getElementById("postinfi33").className = "infinistorebtnbought"
  540.  
  541. if (player.currentChallenge !== "") {
  542. document.getElementById("progressbar").style.width = Decimal.min((Decimal.log10(player.money.plus(1)) / Decimal.log10(player.challengeTarget) * 100), 100).toFixed(2) + "%"
  543. document.getElementById("progresspercent").textContent = Decimal.min((Decimal.log10(player.money.plus(1)) / Decimal.log10(player.challengeTarget) * 100), 100).toFixed(2) + "%"
  544. document.getElementById("progresspercent").setAttribute('ach-tooltip',"Percentage to challenge goal")
  545. } else if (!player.break) {
  546. document.getElementById("progressbar").style.width = Decimal.min((Decimal.log10(player.money.plus(1)) / Decimal.log10(Number.MAX_VALUE) * 100), 100).toFixed(2) + "%"
  547. document.getElementById("progresspercent").textContent = Decimal.min((Decimal.log10(player.money.plus(1)) / Decimal.log10(Number.MAX_VALUE) * 100), 100).toFixed(2) + "%"
  548. document.getElementById("progresspercent").setAttribute('ach-tooltip',"Percentage to Infinity")
  549. } else if (player.infDimensionsUnlocked.includes(false)) {
  550. document.getElementById("progressbar").style.width = Decimal.min(player.money.e / getNewInfReq().e * 100, 100).toFixed(2) + "%"
  551. document.getElementById("progresspercent").textContent = Decimal.min(player.money.e / getNewInfReq().e * 100, 100).toFixed(2) + "%"
  552. document.getElementById("progresspercent").setAttribute('ach-tooltip',"Percentage to next dimension unlock")
  553. } else {
  554. document.getElementById("progressbar").style.width = Decimal.min(Decimal.log10(player.infinityPoints.plus(1)) / Decimal.log10(Number.MAX_VALUE) * 100, 100).toFixed(2) + "%"
  555. document.getElementById("progresspercent").textContent = Decimal.min(Decimal.log10(player.infinityPoints.plus(1)) / Decimal.log10(Number.MAX_VALUE) * 100, 100).toFixed(2) + "%"
  556. document.getElementById("progresspercent").setAttribute('ach-tooltip',"Percentage to Eternity")
  557. }
  558.  
  559. if (player.eternities > 0) {
  560. document.getElementById("infinitybtn").style.display = "inline-block";
  561. document.getElementById("challengesbtn").style.display = "inline-block";
  562. }
  563.  
  564. 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)"
  565. 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"
  566. document.getElementById("ec3reward").textContent = "Reward: Increase the multiplier for buying 10 dimensions, Currently: "+getDimensionPowerMultiplier().toFixed(2)+"x"
  567. 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"
  568. document.getElementById("ec5reward").textContent = "Reward: Galaxy cost scaling starts "+((ECTimesCompleted("eterc5")*5))+" galaxies later."
  569. document.getElementById("ec6reward").textContent = "Reward: Further reduce the dimension cost multiplier increase, Currently: "+player.dimensionMultDecrease.toFixed(1)+"x "
  570. 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. "
  571. 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) + "%"
  572. 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 "
  573. 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 "
  574. document.getElementById("ec11reward").textContent = "Reward: Further reduce the tickspeed cost multiplier increase, Currently: "+player.tickSpeedMultDecrease.toFixed(2)+"x "
  575. document.getElementById("ec12reward").textContent = "Reward: Infinity Dimension cost multipliers are reduced. (x^"+(1-ECTimesCompleted("eterc12")*0.008)+")"
  576.  
  577. // let extraGals = 0
  578. // if (player.timestudy.studies.includes(225)) extraGals += Math.floor(player.replicanti.amount.e / 2500)
  579. // if (player.timestudy.studies.includes(226)) extraGals += Math.floor(player.replicanti.gal / 40)
  580. // if (extraGals !== 0) document.getElementById("replicantireset").innerHTML = "Reset replicanti amount, but get a free galaxy<br>"+player.replicanti.galaxies + "+"+extraGals+ " replicated galaxies created."
  581. // else document.getElementById("replicantireset").innerHTML = "Reset replicanti amount, but get a free galaxy<br>"+player.replicanti.galaxies + " replicated galaxies created."
  582.  
  583. document.getElementById("ec10span").textContent = shortenMoney(ec10bonus) + "x"
  584. 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")];
  585. 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.",
  586. " 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."];
  587. var id = 0;
  588. if (player.money.times(4.22419e-105).gt(2.82e-45)) {
  589. if (player.money.times(4.22419e-105).gt(scale1[scale1.length - 1])) id = scale1.length - 1;
  590. else {
  591. while (player.money.times(4.22419e-105).gt(scale1[id])) id++;
  592. if (id > 0) id--;
  593. }
  594. 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];
  595. 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];
  596. } else { //does this part work correctly? i doubt it does
  597. 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."
  598. 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."
  599. 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."
  600. 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."
  601. }
  602. if (player.money.gt(new Decimal("1e100000"))) {
  603. 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.";
  604. }
  605.  
  606. var shiftRequirement = getShiftRequirement(0);
  607.  
  608. if (player[TIER_NAMES[shiftRequirement.tier] + 'Amount'] >= shiftRequirement.amount) {
  609. document.getElementById("softReset").className = 'storebtn';
  610. } else {
  611. document.getElementById("softReset").className = 'unavailablebtn';
  612. }
  613.  
  614. if (player.eightAmount >= getGalaxyRequirement()) {
  615. document.getElementById("secondSoftReset").className = 'storebtn';
  616. } else {
  617. document.getElementById("secondSoftReset").className = 'unavailablebtn';
  618. }
  619.  
  620. if (player.currentChallenge == "challenge4" && player.sixthAmount >= getGalaxyRequirement()) {
  621. document.getElementById("secondSoftReset").className = 'storebtn';
  622. }
  623.  
  624. if (player.currentChallenge == "challenge2" || player.currentChallenge == "postc1") document.getElementById("chall2Pow").style.display = "inline-block"
  625. else document.getElementById("chall2Pow").style.display = "none"
  626. if (player.currentChallenge == "challenge3" || player.currentChallenge == "postc1") document.getElementById("chall3Pow").style.display = "inline-block"
  627. else document.getElementById("chall3Pow").style.display = "none"
  628.  
  629. document.getElementById("chall2Pow").textContent = (player.chall2Pow*100).toFixed(2) + "%"
  630. document.getElementById("chall3Pow").textContent = shorten(player.chall3Pow*100) + "%"
  631.  
  632.  
  633. if (player.infDimensionsUnlocked[7] == false && player.break && player.eternities <= 24) {
  634. document.getElementById("newDimensionButton").style.display = "inline-block"
  635. } else document.getElementById("newDimensionButton").style.display = "none"
  636.  
  637. if (player.money.gte(getNewInfReq())) document.getElementById("newDimensionButton").className = "newdim"
  638. else document.getElementById("newDimensionButton").className = "newdimlocked"
  639.  
  640. var infdimpurchasewhileloop = 1;
  641. while (player.eternities > 24 && getNewInfReq().lt(player.money) && player.infDimensionsUnlocked[7] === false) {
  642. for (i=0; i<8; i++) {
  643. if (player.infDimensionsUnlocked[i]) infdimpurchasewhileloop++
  644. }
  645. newDimension()
  646. if (player.infDimBuyers[i-1]) buyMaxInfDims(infdimpurchasewhileloop)
  647. infdimpurchasewhileloop = 1;
  648. }
  649.  
  650. document.getElementById("newDimensionButton").textContent = "Get " + shortenCosts(getNewInfReq()) + " antimatter to unlock a new Dimension."
  651.  
  652. document.getElementById("sacrifice").setAttribute('ach-tooltip', "Boosts 8th Dimension by " + formatValue(player.options.notation, calcSacrificeBoost(), 2, 2) + "x");
  653.  
  654. document.getElementById("sacrifice").textContent = "Dimensional Sacrifice ("+formatValue(player.options.notation, calcSacrificeBoost(), 2, 2)+"x)"
  655. if (isNaN(player.totalmoney)) player.totalmoney = new Decimal(10)
  656. if (player.timestudy.studies.includes(181)) player.infinityPoints = player.infinityPoints.plus(gainedInfinityPoints().times(diff/1000))
  657. if (player.dilation.upgrades.includes(10)) {
  658. player.timestudy.theorem += parseFloat(player.dilation.tachyonParticles.div(20000).times(diff/10).toString())
  659. if (document.getElementById("timestudies").style.display != "none" && document.getElementById("eternitystore").style.display != "none") {
  660. if (player.timestudy.theorem>99999) document.getElementById("timetheorems").innerHTML = "You have <span style='display:inline' class=\"TheoremAmount\">"+shortenMoney(player.timestudy.theorem)+"</span> Time "+"Theorems."
  661. 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.")
  662. updateTimeStudyButtons()
  663. }
  664. }
  665.  
  666. document.getElementById("infinityPoints1").innerHTML = "You have <span class=\"IPAmount1\">"+shortenDimensions(player.infinityPoints)+"</span> Infinity points."
  667. document.getElementById("infinityPoints2").innerHTML = "You have <span class=\"IPAmount2\">"+shortenDimensions(player.infinityPoints)+"</span> Infinity points."
  668.  
  669. player.lastUpdate = thisUpdate;
  670. }
  671.  
  672. function galaxyReset() {
  673. if (autoS) auto = false;
  674. autoS = true;
  675. if (player.sacrificed == 0) giveAchievement("I don't believe in Gods");
  676. player = {
  677. money: player.achievements.includes("r111") ? player.money : new Decimal(10),
  678. tickSpeedCost: new Decimal(1000),
  679. tickspeed: new Decimal(1000),
  680. firstCost: new Decimal(10),
  681. secondCost: new Decimal(100),
  682. thirdCost: new Decimal(10000),
  683. fourthCost: new Decimal(1000000),
  684. fifthCost: new Decimal(1e9),
  685. sixthCost: new Decimal(1e13),
  686. seventhCost: new Decimal(1e18),
  687. eightCost: new Decimal(1e24),
  688. firstAmount: new Decimal(0),
  689. secondAmount: new Decimal(0),
  690. thirdAmount: new Decimal(0),
  691. fourthAmount: new Decimal(0),
  692. firstBought: 0,
  693. secondBought: 0,
  694. thirdBought: 0,
  695. fourthBought: 0,
  696. fifthAmount: new Decimal(0),
  697. sixthAmount: new Decimal(0),
  698. seventhAmount: new Decimal(0),
  699. eightAmount: new Decimal(0),
  700. fifthBought: 0,
  701. sixthBought: 0,
  702. seventhBought: 0,
  703. eightBought: 0,
  704. firstPow: new Decimal(1),
  705. secondPow: new Decimal(1),
  706. thirdPow: new Decimal(1),
  707. fourthPow: new Decimal(1),
  708. fifthPow: new Decimal(1),
  709. sixthPow: new Decimal(1),
  710. seventhPow: new Decimal(1),
  711. eightPow: new Decimal(1),
  712. sacrificed: new Decimal(0),
  713. achievements: player.achievements,
  714. challenges: player.challenges,
  715. currentChallenge: player.currentChallenge,
  716. infinityUpgrades: player.infinityUpgrades,
  717. infinityPoints: player.infinityPoints,
  718. infinitied: player.infinitied,
  719. infinitiedBank: player.infinitiedBank,
  720. totalTimePlayed: player.totalTimePlayed,
  721. bestInfinityTime: player.bestInfinityTime,
  722. thisInfinityTime: player.thisInfinityTime,
  723. resets: 0,
  724. galaxies: player.galaxies + 1,
  725. totalmoney: player.totalmoney,
  726. tickDecrease: player.tickDecrease - 0.03,
  727. interval: null,
  728. lastUpdate: player.lastUpdate,
  729. achPow: player.achPow,
  730. newsArray: player.newsArray,
  731. autobuyers: player.autobuyers,
  732. costMultipliers: [new Decimal(1e3), new Decimal(1e4), new Decimal(1e5), new Decimal(1e6), new Decimal(1e8), new Decimal(1e10), new Decimal(1e12), new Decimal(1e15)],
  733. tickspeedMultiplier: new Decimal(10),
  734. chall2Pow: player.chall2Pow,
  735. chall3Pow: new Decimal(0.01),
  736. matter: new Decimal(0),
  737. chall11Pow: new Decimal(1),
  738. partInfinityPoint: player.partInfinityPoint,
  739. partInfinitied: player.partInfinitied,
  740. break: player.break,
  741. challengeTimes: player.challengeTimes,
  742. infchallengeTimes: player.infchallengeTimes,
  743. lastTenRuns: player.lastTenRuns,
  744. lastTenEternities: player.lastTenEternities,
  745. infMult: player.infMult,
  746. infMultCost: player.infMultCost,
  747. tickSpeedMultDecrease: player.tickSpeedMultDecrease,
  748. tickSpeedMultDecreaseCost: player.tickSpeedMultDecreaseCost,
  749. dimensionMultDecrease: player.dimensionMultDecrease,
  750. dimensionMultDecreaseCost: player.dimensionMultDecreaseCost,
  751. version: player.version,
  752. overXGalaxies: player.overXGalaxies,
  753. spreadingCancer: player.spreadingCancer,
  754. infDimensionsUnlocked: player.infDimensionsUnlocked,
  755. infinityPower: player.infinityPower,
  756. postChallUnlocked: player.postChallUnlocked,
  757. postC4Tier: 1,
  758. postC3Reward: new Decimal(1),
  759. infinityDimension1: player.infinityDimension1,
  760. infinityDimension2: player.infinityDimension2,
  761. infinityDimension3: player.infinityDimension3,
  762. infinityDimension4: player.infinityDimension4,
  763. infinityDimension5: player.infinityDimension5,
  764. infinityDimension6: player.infinityDimension6,
  765. infinityDimension7: player.infinityDimension7,
  766. infinityDimension8: player.infinityDimension8,
  767. infDimBuyers: player.infDimBuyers,
  768. timeShards: player.timeShards,
  769. tickThreshold: player.tickThreshold,
  770. timeDimension1: player.timeDimension1,
  771. timeDimension2: player.timeDimension2,
  772. timeDimension3: player.timeDimension3,
  773. timeDimension4: player.timeDimension4,
  774. timeDimension5: player.timeDimension5,
  775. timeDimension6: player.timeDimension6,
  776. timeDimension7: player.timeDimension7,
  777. timeDimension8: player.timeDimension8,
  778. eternityPoints: player.eternityPoints,
  779. eternities: player.eternities,
  780. thisEternity: player.thisEternity,
  781. bestEternity: player.bestEternity,
  782. eternityUpgrades: player.eternityUpgrades,
  783. epmult: player.epmult,
  784. epmultCost: player.epmultCost,
  785. totalTickGained: player.totalTickGained,
  786. offlineProd: player.offlineProd,
  787. offlineProdCost: player.offlineProdCost,
  788. challengeTarget: player.challengeTarget,
  789. autoSacrifice: player.autoSacrifice,
  790. replicanti: player.replicanti,
  791. timestudy: player.timestudy,
  792. eternityChalls: player.eternityChalls,
  793. eternityChallGoal: player.eternityChallGoal,
  794. currentEternityChall: player.currentEternityChall,
  795. eternityChallUnlocked: player.eternityChallUnlocked,
  796. etercreq: player.etercreq,
  797. autoIP: player.autoIP,
  798. autoTime: player.autoTime,
  799. infMultBuyer: player.infMultBuyer,
  800. autoCrunchMode: player.autoCrunchMode,
  801. respec: player.respec,
  802. eternityBuyer: player.eternityBuyer,
  803. eterc8ids: player.eterc8ids,
  804. eterc8repl: player.eterc8repl,
  805. dimlife: player.dimlife,
  806. dead: player.dead,
  807. dilation: player.dilation,
  808. why: player.why,
  809. options: player.options
  810. };
  811.  
  812. if (player.currentChallenge == "challenge10" || player.currentChallenge == "postc1") {
  813. player.thirdCost = new Decimal(100)
  814. player.fourthCost = new Decimal(500)
  815. player.fifthCost = new Decimal(2500)
  816. player.sixthCost = new Decimal(2e4)
  817. player.seventhCost = new Decimal(2e5)
  818. player.eightCost = new Decimal(4e6)
  819. }
  820.  
  821. if (player.resets == 0 && player.currentChallenge == "") {
  822. if (player.infinityUpgrades.includes("skipReset1")) player.resets++;
  823. if (player.infinityUpgrades.includes("skipReset2")) player.resets++;
  824. if (player.infinityUpgrades.includes("skipReset3")) player.resets++;
  825. if (player.infinityUpgrades.includes("skipResetGalaxy")) {
  826. player.resets++;
  827. if (player.galaxies == 0) player.galaxies = 1
  828. }
  829. }
  830. if (player.currentChallenge == "postc2") {
  831. player.eightAmount = new Decimal(1);
  832. player.eightBought = 1;
  833. player.resets = 4;
  834. }
  835.  
  836. setInitialDimensionPower();
  837.  
  838.  
  839. if (player.options.notation == "Emojis") player.spreadingCancer+=1;
  840. if (player.spreadingCancer >= 10) giveAchievement("Spreading Cancer")
  841. if (player.spreadingCancer >= 1000000) giveAchievement("Cancer = Spread")
  842. if (player.achievements.includes("r36")) player.tickspeed = player.tickspeed.times(0.98);
  843. if (player.achievements.includes("r45")) player.tickspeed = player.tickspeed.times(0.98);
  844. if (player.achievements.includes("r83")) player.tickspeed = player.tickspeed.times(Decimal.pow(0.95,player.galaxies));
  845.  
  846. if (player.eternities < 30) {
  847. document.getElementById("secondRow").style.display = "none";
  848. document.getElementById("thirdRow").style.display = "none";
  849. document.getElementById("tickSpeed").style.visibility = "hidden";
  850. document.getElementById("tickSpeedMax").style.visibility = "hidden";
  851. document.getElementById("tickLabel").style.visibility = "hidden";
  852. document.getElementById("tickSpeedAmount").style.visibility = "hidden";
  853. document.getElementById("fourthRow").style.display = "none";
  854. document.getElementById("fifthRow").style.display = "none";
  855. document.getElementById("sixthRow").style.display = "none";
  856. document.getElementById("seventhRow").style.display = "none";
  857. document.getElementById("eightRow").style.display = "none";
  858. }
  859.  
  860. if (player.galaxies >= 50) giveAchievement("YOU CAN GET 50 GALAXIES!??")
  861. if (player.galaxies >= 2) giveAchievement("Double Galaxy");
  862. if (player.galaxies >= 1) giveAchievement("You got past The Big Wall");
  863. if (player.challenges.includes("challenge1")) player.money = new Decimal(100).max(player.money)
  864. if (player.achievements.includes("r37")) player.money = new Decimal(1000).max(player.money);
  865. if (player.achievements.includes("r54")) player.money = new Decimal(2e5).max(player.money);
  866. if (player.achievements.includes("r55")) player.money = new Decimal(1e10).max(player.money);
  867. if (player.achievements.includes("r78")) player.money = new Decimal(1e25).max(player.money);
  868. player.tickspeed = player.tickspeed.times(Decimal.pow(getTickSpeedMultiplier(),player.totalTickGained))
  869. if (player.achievements.includes("r66")) player.tickspeed = player.tickspeed.times(0.98);
  870. if (player.galaxies >= 540 && player.replicanti.galaxies == 0) giveAchievement("Unique snowflakes")
  871. updateTickSpeed();
  872. if (player.galaxies >= galaxyReq) {
  873. while (player.galaxies >= galaxyReq) {
  874. if (stars.gte(250)) {
  875. stars = stars.plus(stars.log10()+1)
  876. } else {
  877. stars = stars.plus(1)
  878. }
  879. galaxyReq = galaxyReq * 1.01 + 1
  880. }
  881.  
  882. };
  883. };
  884.  
  885. function getGalaxyRequirement() {
  886. let amount = 80 + ((player.galaxies) * 60);
  887. if (stars.gte(new Decimal(1))) {
  888. amount = 80 + ((player.galaxies) * (60/(stars.log10()+2)));
  889. if (player.timestudy.studies.includes(42)) amount = 80 + ((player.galaxies) * (52/(stars.log10()+2)))
  890. if (player.currentChallenge == "challenge4") amount = 99 + ((player.galaxies) * (90/(stars.log10()+2)))
  891.  
  892. let galaxyCostScalingStart = getGalaxyCostScalingStart()
  893. if (player.currentEternityChall == "eterc5") {
  894. amount += Math.pow(player.galaxies, 1+(1/(2+stars.log10()))) + player.galaxies
  895. }
  896. else if ((player.galaxies) >= galaxyCostScalingStart) {
  897. amount += Math.pow((player.galaxies)-(galaxyCostScalingStart-1),1+(1/(2+stars.log10())))+(player.galaxies)-(galaxyCostScalingStart-1)
  898. }
  899. if (player.galaxies >= 800) {
  900. amount = Math.floor(amount * Math.pow(1.002, (player.galaxies-(799+(2+stars.log10())))))
  901. }
  902. } else {
  903. amount = 80 + ((player.galaxies) * 60);
  904. if (player.timestudy.studies.includes(42)) amount = 80 + ((player.galaxies) * 52)
  905. if (player.currentChallenge == "challenge4") amount = 99 + ((player.galaxies) * 90)
  906.  
  907. let galaxyCostScalingStart = getGalaxyCostScalingStart()
  908. if (player.currentEternityChall == "eterc5") {
  909. amount += Math.pow(player.galaxies, 2) + player.galaxies
  910. }
  911. else if ((player.galaxies) >= galaxyCostScalingStart) {
  912. amount += Math.pow((player.galaxies)-(galaxyCostScalingStart-1),2)+(player.galaxies)-(galaxyCostScalingStart-1)
  913. }
  914. if (player.galaxies >= 800) {
  915. amount = Math.floor(amount * Math.pow(1.002, (player.galaxies-799)))
  916. }
  917. }
  918.  
  919. if (player.infinityUpgrades.includes("resetBoost")) amount -= 9;
  920. if (player.challenges.includes("postc5")) amount -= 1;
  921. return amount;
  922. }
  923.  
  924. function getTickSpeedMultiplier() {
  925. if (player.currentChallenge == "postc3") return 1;
  926. if (player.galaxies + player.replicanti.galaxies + player.dilation.freeGalaxies < 3) {
  927. let baseMultiplier = 0.9;
  928. if (player.galaxies == 0) baseMultiplier = 0.89
  929. if (player.currentChallenge == "challenge6" || player.currentChallenge == "postc1") baseMultiplier = 0.93;
  930. let perGalaxy = 0.02;
  931. let galaxies = player.galaxies+player.replicanti.galaxies+player.dilation.freeGalaxies
  932. if (player.timestudy.studies.includes(133)) galaxies += player.replicanti.galaxies/2
  933. if (player.timestudy.studies.includes(132)) galaxies += player.replicanti.galaxies*0.4
  934. if (player.timestudy.studies.includes(225)) galaxies += Math.floor(player.replicanti.amount.e / 1000)
  935. if (player.timestudy.studies.includes(226)) galaxies += Math.floor(player.replicanti.gal / 15)
  936. 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)
  937. if (player.infinityUpgrades.includes("galaxyBoost")) perGalaxy *= 2;
  938. if (player.infinityUpgrades.includes("postGalaxy")) perGalaxy *= 1.5;
  939. if (player.challenges.includes("postc5")) perGalaxy *= 1.1;
  940. if (player.achievements.includes("r86")) perGalaxy *= 1.01;
  941. if (player.timestudy.studies.includes(212)) perGalaxy *= Math.min(Math.pow(player.timeShards.max(2).log2(), 0.005), 1.1)
  942.  
  943. return new Decimal(baseMultiplier-(player.galaxies*perGalaxy));
  944. } else {
  945. let baseMultiplier = 0.8
  946. if (player.currentChallenge == "challenge6" || player.currentChallenge == "postc1") baseMultiplier = 0.83
  947. let perGalaxy = new Decimal(0.965)
  948. let galaxies = player.galaxies-2+player.replicanti.galaxies+player.dilation.freeGalaxies
  949. if (player.timestudy.studies.includes(133)) galaxies += player.replicanti.galaxies/2
  950. if (player.timestudy.studies.includes(132)) galaxies += player.replicanti.galaxies*0.4
  951. if (player.timestudy.studies.includes(225)) galaxies += Math.floor(player.replicanti.amount.e / 1000)
  952. if (player.timestudy.studies.includes(226)) galaxies += Math.floor(player.replicanti.gal / 15)
  953. 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)
  954. if (player.infinityUpgrades.includes("galaxyBoost")) galaxies *= 2;
  955. if (player.infinityUpgrades.includes("postGalaxy")) galaxies *= 1.5;
  956. if (player.challenges.includes("postc5")) galaxies *= 1.1;
  957. if (player.achievements.includes("r86")) galaxies *= 1.01;
  958. if (player.timestudy.studies.includes(212)) galaxies *= Math.min(Math.pow(player.timeShards.max(2).log2(), 0.005), 1.1);
  959. if (player.timestudy.studies.includes(232)) galaxies *= Math.pow(1+player.galaxies/1000, 0.2);
  960.  
  961.  
  962. return (Decimal.pow(perGalaxy,galaxies-2)).times(baseMultiplier)
  963. }
  964. }
  965.  
  966. function buyTickSpeed() {
  967. if (!canBuyTickSpeed()) {
  968. return false;
  969. }
  970.  
  971. if (!canAfford(player.tickSpeedCost)) {
  972. return false;
  973. }
  974.  
  975. player.money = player.money.minus(player.tickSpeedCost);
  976. if (player.currentChallenge != "challenge5" && player.currentChallenge != "postc5") player.tickSpeedCost = player.tickSpeedCost.times(player.tickspeedMultiplier);
  977. else multiplySameCosts(player.tickSpeedCost)
  978. if (player.tickSpeedCost.gte(Number.MAX_VALUE)) player.tickspeedMultiplier = player.tickspeedMultiplier.times(player.tickSpeedMultDecrease);
  979. if (player.currentChallenge == "challenge2" || player.currentChallenge == "postc1") player.chall2Pow = 0
  980. player.tickspeed = player.tickspeed.times(getTickSpeedMultiplier());
  981. if (player.challenges.includes("postc3") || player.currentChallenge == "postc3") player.postC3Reward = player.postC3Reward.times(1.05+(player.galaxies*0.005))
  982. postc8Mult = new Decimal(1)
  983. player.why = player.why + 1
  984. return true;
  985. }
  986.  
  987. function buyMaxTickSpeed() {
  988. if (!canBuyTickSpeed()) return false
  989. var mult = getTickSpeedMultiplier()
  990. if (player.currentChallenge == "challenge2" || player.currentChallenge == "postc1") player.chall2Pow = 0
  991. if (player.currentChallenge == "challenge5" || player.currentChallenge == "postc5" || player.tickSpeedCost.lt(Number.MAX_VALUE) || player.tickSpeedMultDecrease > 2) {
  992. while (player.money.gt(player.tickSpeedCost) && (player.tickSpeedCost.lt(Number.MAX_VALUE) || player.tickSpeedMultDecrease > 2 || player.currentChallenge == "postc5")) {
  993. player.money = player.money.minus(player.tickSpeedCost);
  994. if (player.currentChallenge != "challenge5" && player.currentChallenge != "postc5") player.tickSpeedCost = player.tickSpeedCost.times(player.tickspeedMultiplier);
  995. else multiplySameCosts(player.tickSpeedCost)
  996. if (player.tickSpeedCost.gte(Number.MAX_VALUE)) player.tickspeedMultiplier = player.tickspeedMultiplier.times(player.tickSpeedMultDecrease);
  997. player.tickspeed = player.tickspeed.times(mult);
  998. if (player.challenges.includes("postc3") || player.currentChallenge == "postc3") player.postC3Reward = player.postC3Reward.times(1.05+(player.galaxies*0.005))
  999. postc8Mult = new Decimal(1)
  1000. if (player.tickSpeedCost.gt(Number.MAX_VALUE)) buyMaxTickSpeed()
  1001. }
  1002. } else {
  1003.  
  1004. var a = Math.log10(Math.sqrt(player.tickSpeedMultDecrease))
  1005. var b = player.tickspeedMultiplier.dividedBy(Math.sqrt(player.tickSpeedMultDecrease)).log10()
  1006. var c = player.tickSpeedCost.dividedBy(player.money).log10()
  1007. var discriminant = Math.pow(b, 2) - (c *a* 4)
  1008. if (discriminant < 0) return false
  1009. var buying = Math.floor((Math.sqrt(Math.pow(b, 2) - (c *a *4))-b)/(2 * a))+1
  1010. if (buying <= 0) return false
  1011. player.tickspeed = player.tickspeed.times(Decimal.pow(mult, buying));
  1012. if (player.challenges.includes("postc3") || player.currentChallenge == "postc3") player.postC3Reward = player.postC3Reward.times(Decimal.pow(1.05+(player.galaxies*0.005), buying))
  1013. for (var i = 0; i<buying-1; i++) {
  1014. player.tickSpeedCost = player.tickSpeedCost.times(player.tickspeedMultiplier)
  1015. player.tickspeedMultiplier = player.tickspeedMultiplier.times(player.tickSpeedMultDecrease)
  1016. }
  1017. if (player.money.gte(player.tickSpeedCost)) player.money = player.money.minus(player.tickSpeedCost)
  1018. player.tickSpeedCost = player.tickSpeedCost.times(player.tickspeedMultiplier)
  1019. player.tickspeedMultiplier = player.tickspeedMultiplier.times(player.tickSpeedMultDecrease)
  1020. }
  1021.  
  1022. updateTickSpeed()
  1023. }
  1024.  
  1025. function updateDimensions() {
  1026. if (document.getElementById("antimatterdimensions").style.display == "block" && document.getElementById("dimensions").style.display == "block") {
  1027.  
  1028. for (let tier = 1; tier <= 8; ++tier) {
  1029. var name = TIER_NAMES[tier];
  1030. if (!canBuyDimension(tier) && document.getElementById(name + "Row").style.display !== "table-row") {
  1031. break;
  1032. }
  1033. document.getElementById(name + "D").childNodes[0].nodeValue = DISPLAY_NAMES[tier] + " Dimension x" + formatValue(player.options.notation, getDimensionFinalMultiplier(tier), 1, 1);
  1034. document.getElementById(name + "Amount").textContent = getDimensionDescription(tier);
  1035. }
  1036.  
  1037.  
  1038.  
  1039. for (let tier = 1; tier <= 8; ++tier) {
  1040. var name = TIER_NAMES[tier];
  1041. if (!canBuyDimension(tier)) {
  1042. break;
  1043. }
  1044.  
  1045. document.getElementById(name + "Row").style.display = "table-row";
  1046. document.getElementById(name + "Row").style.visibility = "visible";
  1047.  
  1048.  
  1049. }
  1050.  
  1051. var shiftRequirement = getShiftRequirement(0);
  1052. if (player.currentChallenge == "challenge4" ? shiftRequirement.tier < 6 : shiftRequirement.tier < 8) {
  1053. document.getElementById("resetLabel").textContent = 'Dimension Shift ('+ player.resets +'): requires ' + shiftRequirement.amount + " " + DISPLAY_NAMES[shiftRequirement.tier] + " Dimensions"
  1054. }
  1055. else document.getElementById("resetLabel").textContent = 'Dimension Boost ('+ player.resets +'): requires ' + shiftRequirement.amount + " " + DISPLAY_NAMES[shiftRequirement.tier] + " Dimensions"
  1056.  
  1057. if (player.currentChallenge == "challenge4" ? player.resets > 2 : player.resets > 3) {
  1058. document.getElementById("softReset").textContent = "Reset the game for a Boost"
  1059. } else {
  1060. document.getElementById("softReset").textContent = "Reset the game for a new Dimension"
  1061. }
  1062. let extraGals = player.replicanti.galaxies
  1063. if (player.timestudy.studies.includes(225)) extraGals += Math.floor(player.replicanti.amount.e / 1000)
  1064. if (player.timestudy.studies.includes(226)) extraGals += Math.floor(player.replicanti.gal / 15)
  1065. var galString = ""
  1066. if (player.galaxies >= 800) galString += "Remote Antimatter Galaxies (";
  1067. else if (player.galaxies >= getGalaxyCostScalingStart() || player.currentEternityChall === "eterc5") galString += "Distant Antimatter Galaxies (";
  1068. else galString += "Antimatter Galaxies (";
  1069. galString += player.galaxies;
  1070. if (extraGals > 0) galString += " + "+extraGals;
  1071. if (player.dilation.freeGalaxies > 0) galString += " + "+player.dilation.freeGalaxies;
  1072. galString += "): requires " + getGalaxyRequirement()
  1073. if (player.currentChallenge == "challenge4") galString += " Sixth Dimensions";
  1074. else galString += " Eighth Dimensions";
  1075. if (stars !== 0) galString += ", and you have " +formatValue(player.options.notation, stars, 1, 1) +" Stars.";
  1076. document.getElementById("secondResetLabel").textContent = galString;
  1077. }
  1078.  
  1079. if (canBuyTickSpeed() || player.currentEternityChall == "eterc9") {
  1080. var tickmult = getTickSpeedMultiplier()
  1081. if (tickmult.lt(1e-9)) document.getElementById("tickLabel").textContent = "Divide the tick interval by " + shortenDimensions(Decimal.pow(tickmult,-1)) + '.'
  1082. else {
  1083. var places = 0
  1084. if (tickmult.lt(0.2)) places = Decimal.floor(Decimal.pow(tickmult,-1)).log10()
  1085. document.getElementById("tickLabel").textContent = 'Reduce the tick interval by ' + ((tickmult.minus(tickmult.times(2)).plus(1)) * 100).toFixed(places) + '%.'
  1086. }
  1087.  
  1088. document.getElementById("tickSpeed").style.visibility = "visible";
  1089. document.getElementById("tickSpeedMax").style.visibility = "visible";
  1090. document.getElementById("tickLabel").style.visibility = "visible";
  1091. document.getElementById("tickSpeedAmount").style.visibility = "visible";
  1092. } else {
  1093. document.getElementById("tickSpeed").style.visibility = "hidden";
  1094. document.getElementById("tickSpeedMax").style.visibility = "hidden";
  1095. document.getElementById("tickLabel").style.visibility = "hidden";
  1096. document.getElementById("tickSpeedAmount").style.visibility = "hidden";
  1097. }
  1098.  
  1099. if (player.bestInfinityTime == 9999999999) {
  1100. document.getElementById("bestInfinity").textContent = ""
  1101. document.getElementById("infinitied").textContent = ""
  1102. document.getElementById("thisInfinity").textContent = ""
  1103. } else {
  1104. document.getElementById("bestInfinity").textContent = "Your fastest Infinity is in " + timeDisplay(player.bestInfinityTime) + "."
  1105. document.getElementById("thisInfinity").textContent = "You have spent " + timeDisplay(player.thisInfinityTime) + " in this Infinity."
  1106. if (player.infinityPoints.equals(1)) {
  1107. document.getElementById("infinityPoints1").textContent = "You have 1 Infinity point."
  1108. document.getElementById("infinityPoints2").textContent = "You have 1 Infinity point."
  1109. }
  1110. else {
  1111. document.getElementById("infinityPoints1").innerHTML = "You have <span class=\"IPAmount1\">"+shortenDimensions(player.infinityPoints)+"</span> Infinity points."
  1112. document.getElementById("infinityPoints2").innerHTML = "You have <span class=\"IPAmount2\">"+shortenDimensions(player.infinityPoints)+"</span> Infinity points."
  1113. }
  1114. if (player.infinitied == 1) document.getElementById("infinitied").textContent = "You have infinitied 1 time."
  1115. else document.getElementById("infinitied").textContent = "You have infinitied " + player.infinitied.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",") + " times."
  1116. if (player.infinitiedBank > 0) document.getElementById("infinitied").textContent = "You have infinitied " + player.infinitied.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",") + " times this eternity."
  1117.  
  1118. }
  1119.  
  1120. if (document.getElementById("stats").style.display == "block" && document.getElementById("statistics").style.display == "block") {
  1121. document.getElementById("totalmoney").textContent = 'You have made a total of ' + shortenMoney(player.totalmoney) + ' antimatter.'
  1122. document.getElementById("totalresets").textContent = 'You have done ' + player.resets + ' dimensional boosts/shifts.'
  1123. document.getElementById("galaxies").textContent = 'You have ' + Math.round(player.galaxies) + ' Antimatter Galaxies.'
  1124. document.getElementById("totalTime").textContent = "You have played for " + timeDisplay(player.totalTimePlayed) + "."
  1125.  
  1126. if (player.eternities == 0) {
  1127. document.getElementById("eternitied").textContent = ""
  1128. document.getElementById("besteternity").textContent = ""
  1129. document.getElementById("thiseternity").textContent = ""
  1130. } else {
  1131. document.getElementById("eternitied").textContent = "You have Eternitied " + player.eternities.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",") + " times."
  1132. document.getElementById("besteternity").textContent = "You have spent "+timeDisplay(player.thisEternity)+" in this Eternity."
  1133. document.getElementById("thiseternity").textContent = "Your fastest Eternity is in "+timeDisplay(player.bestEternity)+"."
  1134. }
  1135. }
  1136.  
  1137. if (document.getElementById("infinity").style.display == "block") {
  1138. if (document.getElementById("preinf").style.display == "block") {
  1139. 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"
  1140. 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"
  1141. 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"
  1142. 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"
  1143. 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"
  1144. 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"
  1145. 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"
  1146. 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"
  1147. }
  1148. else if (document.getElementById("postinf").style.display == "block") {
  1149. 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"
  1150. 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"
  1151. document.getElementById("postinfi31").innerHTML = "Tickspeed cost multiplier increase <br>"+player.tickSpeedMultDecrease+"x -> "+(player.tickSpeedMultDecrease-1)+"x<br>Cost: "+shortenDimensions(player.tickSpeedMultDecreaseCost) +" IP"
  1152. if (player.tickSpeedMultDecrease <= 2) document.getElementById("postinfi31").innerHTML = "Tickspeed cost multiplier increase <br>"+player.tickSpeedMultDecrease+"x"
  1153. document.getElementById("postinfi22").innerHTML = "Power up all dimensions based on achievements completed <br>Currently: "+achievementMult.toFixed(2)+"x<br>Cost: "+shortenCosts(1e6)+" IP"
  1154. 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"
  1155. 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"
  1156. document.getElementById("postinfi41").innerHTML = "Makes galaxies 50% stronger <br>Cost: "+shortenCosts(5e11)+" IP"
  1157. 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"
  1158. document.getElementById("postinfi42").innerHTML = "Dimension cost multiplier increase <br>"+player.dimensionMultDecrease+"x -> "+(player.dimensionMultDecrease-1)+"x<br>Cost: "+shortenCosts(player.dimensionMultDecreaseCost) +" IP"
  1159.  
  1160. 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"
  1161. document.getElementById("postinfi23").innerHTML = "Option to bulk buy Dimension Boosts <br>Cost: "+shortenCosts(5e9)+" IP"
  1162. document.getElementById("postinfi33").innerHTML = "Autobuyers work twice as fast <br>Cost:"+shortenCosts(1e15)+" IP"
  1163. if (player.dimensionMultDecrease <= 3) document.getElementById("postinfi42").innerHTML = "Dimension cost multiplier increase <br>"+player.dimensionMultDecrease.toFixed(1)+"x"
  1164.  
  1165. 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"
  1166. 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"
  1167. }
  1168. }
  1169.  
  1170. if (document.getElementById("eternityupgrades").style.display == "block" && document.getElementById("eternitystore").style.display == "block") {
  1171. 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"
  1172. 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"
  1173. 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"
  1174. document.getElementById("eter4").innerHTML = "Your achievement bonus affects Time Dimensions"+"<br>Cost: "+shortenCosts(1e16)+" EP"
  1175. document.getElementById("eter5").innerHTML = "Time Dimensions are multiplied by your unspent time theorems"+"<br>Cost: "+shortenCosts(1e40)+" EP"
  1176. document.getElementById("eter6").innerHTML = "Time Dimensions are multiplied by days played"+"<br>Cost: "+shortenCosts(1e50)+" EP"
  1177. }
  1178.  
  1179. if (document.getElementById("dilation").style.display == "block") {
  1180. if (player.dilation.active) {
  1181. if (Math.pow(Decimal.log10(player.money) / 400, 1.5) * (Math.pow(3, player.dilation.rebuyables[3])) - player.dilation.totalTachyonParticles <= 0) {
  1182. 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."
  1183. } else {
  1184. document.getElementById("enabledilation").textContent = "Disable dilation."
  1185. }
  1186. }
  1187. else document.getElementById("enabledilation").textContent = "Dilate time."
  1188. }
  1189. }
  1190.  
  1191. setInterval(function() {
  1192. if (getDimensionFinalMultiplier(1).gte(new Decimal("1e308")) &&
  1193. getDimensionFinalMultiplier(2).gte(new Decimal("1e308")) &&
  1194. getDimensionFinalMultiplier(3).gte(new Decimal("1e308")) &&
  1195. getDimensionFinalMultiplier(4).gte(new Decimal("1e308")) &&
  1196. getDimensionFinalMultiplier(5).gte(new Decimal("1e308")) &&
  1197. getDimensionFinalMultiplier(6).gte(new Decimal("1e308")) &&
  1198. getDimensionFinalMultiplier(7).gte(new Decimal("1e308")) &&
  1199. getDimensionFinalMultiplier(8).gte(new Decimal("1e308"))) giveAchievement("Can't hold all these infinities")
  1200.  
  1201. if (getDimensionFinalMultiplier(1).lt(getDimensionFinalMultiplier(2)) &&
  1202. getDimensionFinalMultiplier(2).lt(getDimensionFinalMultiplier(3)) &&
  1203. getDimensionFinalMultiplier(3).lt(getDimensionFinalMultiplier(4)) &&
  1204. getDimensionFinalMultiplier(4).lt(getDimensionFinalMultiplier(5)) &&
  1205. getDimensionFinalMultiplier(5).lt(getDimensionFinalMultiplier(6)) &&
  1206. getDimensionFinalMultiplier(6).lt(getDimensionFinalMultiplier(7)) &&
  1207. getDimensionFinalMultiplier(7).lt(getDimensionFinalMultiplier(8))) giveAchievement("How the antitables have turned")
  1208.  
  1209.  
  1210.  
  1211. if (player.infinitied == 0 && player.infinityPoints.lt(new Decimal(1e50)) && player.eternities <= 0) document.getElementById("infinityPoints2").style.display = "none"
  1212. else document.getElementById("infinityPoints2").style.display = "inline-block"
  1213.  
  1214. if (blink && !player.achievements.includes("r78")) {
  1215. document.getElementById("Blink of an eye").style.display = "none"
  1216. blink = false
  1217. }
  1218. else {
  1219. document.getElementById("Blink of an eye").style.display = "block"
  1220. blink = true
  1221. }
  1222. if (player.challenges.includes("postc1")) {
  1223. let temp = 1
  1224. for (var i=0; i < player.challenges.length; i++) {
  1225. if (player.challenges[i].includes("post")) {
  1226. temp *= 1.3
  1227. document.getElementById("infchallengesbtn").style.display = "inline-block"
  1228. }
  1229. }
  1230. infDimPow = temp
  1231. } else {
  1232. document.getElementById("infchallengesbtn").style.display = "none"
  1233. }
  1234.  
  1235. if (player.money.gte(new Decimal("1e2000")) || Object.keys(player.eternityChalls).length > 0 || player.eternityChallUnlocked !== 0) document.getElementById("challTabButtons").style.display = "table"
  1236.  
  1237. document.getElementById("kongip").textContent = "Double your IP gain from all sources (additive). Forever. Currently: x"+kongIPMult+", next: x"+(kongIPMult==1? 2: kongIPMult+2)
  1238. document.getElementById("kongep").textContent = "Triple your EP gain from all sources (additive). Forever. Currently: x"+kongEPMult+", next: x"+(kongEPMult==1? 3: kongEPMult+3)
  1239. document.getElementById("kongdim").textContent = "Double all your normal dimension multipliers (multiplicative). Forever. Currently: x"+kongDimMult+", next: x"+(kongDimMult*2)
  1240. 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)
  1241. document.getElementById("eternityPoints2").innerHTML = "You have <span class=\"EPAmount2\">"+shortenDimensions(player.eternityPoints)+"</span> Eternity point"+((player.eternityPoints.eq(1)) ? "." : "s.")
  1242.  
  1243. document.getElementById("eternitybtn").style.display = (player.infinityPoints.gte(player.eternityChallGoal) && (player.infDimensionsUnlocked[7] || player.eternities > 24)) ? "inline-block" : "none"
  1244.  
  1245.  
  1246. if (player.eternities !== 0)document.getElementById("eternitystorebtn").style.display = "inline-block"
  1247. for (var i=1; i <=8; i++) {
  1248. document.getElementById("postc"+i+"goal").textContent = "Goal: "+shortenCosts(goals[i-1])
  1249. }
  1250.  
  1251. if (player.replicanti.galaxybuyer !== undefined) document.getElementById("replicantiresettoggle").style.display = "inline-block"
  1252. else document.getElementById("replicantiresettoggle").style.display = "none"
  1253.  
  1254. if (player.eternities > 0) document.getElementById("infmultbuyer").style.display = "inline-block"
  1255. else document.getElementById("infmultbuyer").style.display = "none"
  1256. if (player.eternities > 4) document.getElementById("togglecrunchmode").style.display = "inline-block"
  1257. else document.getElementById("togglecrunchmode").style.display = "none"
  1258. if (player.eternities > 8) document.getElementById("galaxybulk").style.display = "inline-block"
  1259. else document.getElementById("galaxybulk").style.display = "none"
  1260.  
  1261. document.getElementById("replicantichance").className = (player.infinityPoints.gte(player.replicanti.chanceCost) && player.replicanti.chance < 1) ? "storebtn" : "unavailablebtn"
  1262. document.getElementById("replicantiinterval").className = (player.infinityPoints.gte(player.replicanti.intervalCost) && ((player.replicanti.interval !== 50) || player.timestudy.studies.includes(22)) && (player.replicanti.interval !== 1 || stars.gte(100))) ? "storebtn" : "unavailablebtn"
  1263. document.getElementById("replicantimax").className = (player.infinityPoints.gte(player.replicanti.galCost)) ? "storebtn" : "unavailablebtn"
  1264. document.getElementById("replicantireset").className = (player.replicanti.galaxies < player.replicanti.gal && player.replicanti.amount.gte(Number.MAX_VALUE)) ? "storebtn" : "unavailablebtn"
  1265. document.getElementById("replicantiunlock").className = (player.infinityPoints.gte(1e140)) ? "storebtn" : "unavailablebtn"
  1266. updateTheoremButtons()
  1267.  
  1268. if (getTickSpeedMultiplier().lt(0.001)) giveAchievement("Do you even bend time bro?")
  1269.  
  1270. if (player.eternities > 9) document.getElementById("bulklabel").textContent = "Buy max dimboosts every X seconds:"
  1271. else document.getElementById("bulklabel").textContent = "Bulk DimBoost Amount:"
  1272.  
  1273. if (player.eternities > 10) {
  1274. for (var i=1;i<player.eternities-9 && i < 9; i++) {
  1275. document.getElementById("infauto"+i).style.visibility = "visible"
  1276. }
  1277. document.getElementById("toggleallinfdims").style.visibility = "visible"
  1278. } else {
  1279. for (var i=1; i<9; i++) {
  1280. document.getElementById("infauto"+i).style.visibility = "hidden"
  1281. }
  1282. document.getElementById("toggleallinfdims").style.visibility = "hidden"
  1283. }
  1284.  
  1285. if (player.eternities !== 0) document.getElementById("eternityconf").style.display = "inline-block"
  1286. else document.getElementById("eternityconf").style.display = "none"
  1287. if (player.eternities >= 40) document.getElementById("replauto1").style.visibility = "visible"
  1288. else document.getElementById("replauto1").style.visibility = "hidden"
  1289. if (player.eternities >= 60) document.getElementById("replauto2").style.visibility = "visible"
  1290. else document.getElementById("replauto2").style.visibility = "hidden"
  1291. if (player.eternities >= 80) document.getElementById("replauto3").style.visibility = "visible"
  1292. else document.getElementById("replauto3").style.visibility = "hidden"
  1293. if (player.eternities >= 100) document.getElementById("autoBuyerEter").style.display = "inline-block"
  1294.  
  1295. if (player.eternities == 0) document.getElementById("pasteternities").style.display = "none"
  1296. else document.getElementById("pasteternities").style.display = "inline-block"
  1297. if (player.challenges.length > 1) document.getElementById("challengetimesbtn").style.display = "inline-block"
  1298. else document.getElementById("challengetimesbtn").style.display = "none"
  1299. if (player.infinitied > 0 || player.eternities > 0) document.getElementById("pastinfs").style.display = "inline-block"
  1300. else document.getElementById("pastinfs").style.display = "none"
  1301.  
  1302. if (player.infinitied !== 0 || player.eternities !== 0) document.getElementById("bigCrunchAnimBtn").style.display = "inline-block"
  1303. else document.getElementById("bigCrunchAnimBtn").style.display = "none"
  1304. if (!player.dilation.tachyonParticles.eq(0)) document.getElementById("tachyonParticleAnimBtn").style.display = "inline-block"
  1305. else document.getElementById("tachyonParticleAnimBtn").style.display = "none"
  1306.  
  1307. if (player.eternities > 10 && player.currentEternityChall !== "eterc8") {
  1308. for (var i=1;i<player.eternities-9 && i < 9; i++) {
  1309. if (player.infDimBuyers[i-1]) {
  1310. buyMaxInfDims(i)
  1311. buyManyInfinityDimension(i)
  1312. }
  1313. }
  1314. }
  1315.  
  1316. if (player.eternities >= 40 && player.replicanti.auto[0] && player.currentEternityChall !== "eterc8") {
  1317. while (player.infinityPoints.gte(player.replicanti.chanceCost) && player.currentEternityChall !== "eterc8" && player.replicanti.chance < 1) upgradeReplicantiChance()
  1318. }
  1319.  
  1320. if (player.eternities >= 60 && player.replicanti.auto[1] && player.currentEternityChall !== "eterc8") {
  1321. while (player.infinityPoints.gte(player.replicanti.intervalCost) && player.currentEternityChall !== "eterc8" && (((player.timestudy.studies.includes(22)) ? player.replicanti.interval > 1 : player.replicanti.interval > 50) || stars.gte(100))) upgradeReplicantiInterval()
  1322. }
  1323.  
  1324. if (player.eternities >= 80 && player.replicanti.auto[2] && player.currentEternityChall !== "eterc8") {
  1325. while (upgradeReplicantiGalaxy()) continue
  1326. }
  1327.  
  1328. document.getElementById("eterc1goal").textContent = "Goal: "+shortenCosts(new Decimal("1e1800").times(new Decimal("1e200").pow(ECTimesCompleted("eterc1"))).max(new Decimal("1e1800"))) + " IP"
  1329. document.getElementById("eterc1completed").textContent = "Completed "+ECTimesCompleted("eterc1")+" times."
  1330.  
  1331. document.getElementById("eterc2goal").textContent = "Goal: "+shortenCosts(new Decimal("1e975").times(new Decimal("1e175").pow(ECTimesCompleted("eterc2"))).max(new Decimal("1e975"))) + " IP"
  1332. document.getElementById("eterc2completed").textContent = "Completed "+ECTimesCompleted("eterc2")+" times."
  1333.  
  1334. document.getElementById("eterc3goal").textContent = "Goal: "+shortenCosts(new Decimal("1e600").times(new Decimal("1e75").pow(ECTimesCompleted("eterc3"))).max(new Decimal("1e575"))) + " IP"
  1335. document.getElementById("eterc3completed").textContent = "Completed "+ECTimesCompleted("eterc3")+" times."
  1336.  
  1337. 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."
  1338. document.getElementById("eterc4completed").textContent = "Completed "+ECTimesCompleted("eterc4")+" times."
  1339.  
  1340. document.getElementById("eterc5goal").textContent = "Goal: "+shortenCosts(new Decimal("1e750").times(new Decimal("1e400").pow(ECTimesCompleted("eterc5"))).max(new Decimal("1e750"))) + " IP"
  1341. document.getElementById("eterc5completed").textContent = "Completed "+ECTimesCompleted("eterc5")+" times."
  1342.  
  1343. document.getElementById("eterc6goal").textContent = "Goal: "+shortenCosts(new Decimal("1e850").times(new Decimal("1e250").pow(ECTimesCompleted("eterc6"))).max(new Decimal("1e850"))) + " IP"
  1344. document.getElementById("eterc6completed").textContent = "Completed "+ECTimesCompleted("eterc6")+" times."
  1345.  
  1346. document.getElementById("eterc7goal").textContent = "Goal: "+shortenCosts(new Decimal("1e2000").times(new Decimal("1e530").pow(ECTimesCompleted("eterc7"))).max(new Decimal("1e2000"))) + " IP"
  1347. document.getElementById("eterc7completed").textContent = "Completed "+ECTimesCompleted("eterc7")+" times."
  1348.  
  1349. document.getElementById("eterc8goal").textContent = "Goal: "+shortenCosts(new Decimal("1e1300").times(new Decimal("1e900").pow(ECTimesCompleted("eterc8"))).max(new Decimal("1e1300"))) + " IP"
  1350. document.getElementById("eterc8completed").textContent = "Completed "+ECTimesCompleted("eterc8")+" times."
  1351.  
  1352. document.getElementById("eterc9goal").textContent = "Goal: "+shortenCosts(new Decimal("1e1750").times(new Decimal("1e250").pow(ECTimesCompleted("eterc9"))).max(new Decimal("1e1750"))) + " IP"
  1353. document.getElementById("eterc9completed").textContent = "Completed "+ECTimesCompleted("eterc9")+" times."
  1354.  
  1355. document.getElementById("eterc10goal").textContent = "Goal: "+shortenCosts(new Decimal("1e3000").times(new Decimal("1e300").pow(ECTimesCompleted("eterc10"))).max(new Decimal("1e3000"))) + " IP"
  1356. document.getElementById("eterc10completed").textContent = "Completed "+ECTimesCompleted("eterc10")+" times."
  1357.  
  1358. document.getElementById("eterc11goal").textContent = "Goal: "+shortenCosts(new Decimal("1e500").times(new Decimal("1e200").pow(ECTimesCompleted("eterc11"))).max(new Decimal("1e500"))) + " IP"
  1359. document.getElementById("eterc11completed").textContent = "Completed "+ECTimesCompleted("eterc11")+" times."
  1360.  
  1361. 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." )
  1362. document.getElementById("eterc12completed").textContent = "Completed "+ECTimesCompleted("eterc12")+" times."
  1363. updateECUnlockButtons()
  1364.  
  1365.  
  1366.  
  1367.  
  1368. if (player.currentEternityChall == "eterc8") {
  1369. document.getElementById("eterc8repl").style.display = "block"
  1370. document.getElementById("eterc8ids").style.display = "block"
  1371. document.getElementById("eterc8repl").textContent = "You have "+player.eterc8repl+" purchases left."
  1372. document.getElementById("eterc8ids").textContent = "You have "+player.eterc8ids+" purchases left."
  1373. } else {
  1374. document.getElementById("eterc8repl").style.display = "none"
  1375. document.getElementById("eterc8ids").style.display = "none"
  1376. }
  1377.  
  1378. if (player.currentEternityChall == "eterc12" && player.thisEternity >= Math.max(2 * (5 - ECTimesCompleted("eterc12")), 1)) {
  1379. document.getElementById("challfail").style.display = "block"
  1380. setTimeout(exitChallenge, 500)
  1381. giveAchievement("You're a mistake")
  1382. failureCount++
  1383. if (failureCount > 9) giveAchievement("You're a failure")
  1384. }
  1385.  
  1386. document.getElementById("infinitiedBank").style.display = (player.infinitiedBank > 0) ? "block" : "none"
  1387. document.getElementById("infinitiedBank").textContent = "You have " + player.infinitiedBank.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",") + " banked infinities."
  1388.  
  1389. if (infchallengeTimes < 7.5) giveAchievement("Never again")
  1390. if (player.infinityPoints.gte(new Decimal("1e22000")) && player.timestudy.studies.length == 0) giveAchievement("What do I have to do to get rid of you")
  1391. if (player.replicanti.galaxies >= 180*player.galaxies && player.galaxies > 0) giveAchievement("Popular music")
  1392. if (player.eternityPoints.gte(Number.MAX_VALUE)) giveAchievement("But I wanted another prestige layer...")
  1393. 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")
  1394. if (player.infinityPoints.gte('9.99999e999')) giveAchievement("This achievement doesn't exist II");
  1395. if (player.infinityPoints.gte('1e30008')) giveAchievement("Can you get infinite IP?");
  1396. if (player.infinitied > 2e6) giveAchievement("2 Million Infinities")
  1397. if (player.money.gte("9.9999e9999")) giveAchievement("This achievement doesn't exist")
  1398. if (player.money.gte("1e35000")) giveAchievement("I got a few to spare")
  1399. if (player.infinityPower.gt(1)) giveAchievement("A new beginning.");
  1400. if (player.infinityPower.gt(1e6)) giveAchievement("1 million is a lot"); //TBD
  1401. if (player.infinityPower.gt(1e260)) giveAchievement("Minute of infinity"); //TBD
  1402. if (player.totalTickGained >= 308) giveAchievement("Infinite time");
  1403. if (player.firstPow >= 10e30) giveAchievement("I forgot to nerf that")
  1404. if (player.money >= 10e79) giveAchievement("Antimatter Apocalypse")
  1405. if (player.totalTimePlayed >= 10 * 60 * 60 * 24 * 8) giveAchievement("One for each dimension")
  1406. if (player.seventhAmount > 1e12) giveAchievement("Multidimensional");
  1407. if (player.tickspeed.lt(1e-26)) giveAchievement("Faster than a potato");
  1408. if (player.tickspeed.lt(1e-55)) giveAchievement("Faster than a squared potato");
  1409. if (Math.random() < 0.00001) giveAchievement("Do you feel lucky? Well do ya punk?")
  1410. if ((player.matter.gte(2.586e15) && player.currentChallenge == "postc6") || player.matter.gte(Number.MAX_VALUE)) giveAchievement("It's not called matter dimensions is it?")
  1411.  
  1412. document.getElementById("dilationTabbtn").style.display = (player.dilation.studies.includes(1)) ? "inline-block" : "none"
  1413. updateDilationUpgradeButtons()
  1414.  
  1415. if (player.infinityDimension1.baseAmount == 0 &&
  1416. player.infinityDimension2.baseAmount == 0 &&
  1417. player.infinityDimension3.baseAmount == 0 &&
  1418. player.infinityDimension4.baseAmount == 0 &&
  1419. player.infinityDimension5.baseAmount == 0 &&
  1420. player.infinityDimension6.baseAmount == 0 &&
  1421. player.infinityDimension7.baseAmount == 0 &&
  1422. player.infinityDimension8.baseAmount == 0 &&
  1423. player.infMultCost.equals(10) &&
  1424. player.infinityPoints.gt(new Decimal("1e140000"))) {
  1425. giveAchievement("I never liked this infinity stuff anyway")
  1426. }
  1427.  
  1428. if (player.replicanti.amount.gt(new Decimal("1e20000"))) giveAchievement("When will it be enough?")
  1429. if (player.tickspeed.e < -8296262) giveAchievement("Faster than a potato^286078")
  1430. 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.")
  1431. if (player.why >= 1e6) giveAchievement("Should we tell them about buy max...")
  1432.  
  1433. }, 1000)
  1434.  
  1435. function replicantiGalaxy() {
  1436. let inf = new Decimal(Number.MAX_VALUE)
  1437. let buff = 1
  1438. if (stars.gte(1) && player.replicanti.galaxies >= 10) buff = Math.round(player.replicanti.galaxies/10)
  1439. if ((player.replicanti.galaxies < player.replicanti.gal) && (player.replicanti.amount.gte(Decimal.pow(inf,buff))) && (!player.timestudy.studies.includes(131) ? player.replicanti.galaxies < (player.replicanti.gal+buff-1) : player.replicanti.galaxies < Math.floor(player.replicanti.gal * 1.5))) {
  1440. if (player.achievements.includes("r126")) player.replicanti.amount = player.replicanti.amount.dividedBy(Decimal.pow(inf,buff))
  1441. else player.replicanti.amount = new Decimal(1)
  1442. player.replicanti.galaxies += buff
  1443. player.galaxies-=1
  1444. if (player.replicanti.galaxies > player.replicanti.gal) player.replicanti.galaxies = player.replicanti.gal
  1445. galaxyReset()
  1446.  
  1447. }
  1448. }
  1449.  
  1450. function upgradeReplicantiInterval() {
  1451. if (player.infinityPoints.gte(player.replicanti.intervalCost) && (player.replicanti.interval > 50 || player.timestudy.studies.includes(22)) && (stars.lt(100)) && player.replicanti.interval !== 1 && player.eterc8repl !== 0) {
  1452. player.infinityPoints = player.infinityPoints.minus(player.replicanti.intervalCost)
  1453. player.replicanti.intervalCost = player.replicanti.intervalCost.times(1e10)
  1454. player.replicanti.interval *= 0.9
  1455. if (!player.timestudy.studies.includes(22) && player.replicanti.interval < 50 && stars.lt(100)) player.replicanti.interval = 50
  1456. if (player.timestudy.studies.includes(22) && player.replicanti.interval < 1 && stars.lt(100)) player.replicanti.interval = 1
  1457. var places = Math.floor(Math.log10(player.replicanti.interval/1000)) * (-1)
  1458. if (player.currentEternityChall == "eterc8") player.eterc8repl-=1
  1459. document.getElementById("eterc8repl").textContent = "You have "+player.eterc8repl+" purchases left."
  1460. } else if (player.infinityPoints.gte(player.replicanti.intervalCost) && (stars.gte(100))) {
  1461. player.infinityPoints = player.infinityPoints.minus(player.replicanti.intervalCost)
  1462. player.replicanti.intervalCost = Decimal.pow(player.replicanti.intervalCost,1.05).times(1e100)
  1463. player.replicanti.interval *= 0.9
  1464. }
  1465. }
  1466.  
  1467. function updateInfCosts() {
  1468.  
  1469. 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"
  1470. if (document.getElementById("replicantis").style.display == "block" && document.getElementById("infinity").style.display == "block") {
  1471. if (player.replicanti.chance < 1) document.getElementById("replicantichance").innerHTML = "Replicate chance: "+Math.round(player.replicanti.chance*100)+"%<br>+"+1+"% Costs: "+shortenCosts(player.replicanti.chanceCost)+" IP"
  1472. else document.getElementById("replicantichance").textContent = "Replicate chance: "+Math.round(player.replicanti.chance*100)+"%"
  1473. let replGalOver = 0
  1474. if (player.timestudy.studies.includes(131)) replGalOver += Math.floor(player.replicanti.gal / 2)
  1475. if (player.timestudy.studies.includes(233)) {
  1476. if (replGalOver !== 0) document.getElementById("replicantimax").innerHTML = "Max Replicanti galaxies: "+player.replicanti.gal+"+"+replGalOver+"<br>+1 Costs: "+shortenCosts(player.replicanti.galCost.dividedBy(player.replicanti.amount.pow(0.3)))+" IP"
  1477. else document.getElementById("replicantimax").innerHTML = "Max Replicanti galaxies: "+player.replicanti.gal+"<br>+1 Costs: "+shortenCosts(player.replicanti.galCost.dividedBy(player.replicanti.amount.pow(0.3)))+" IP"
  1478. } else {
  1479. if (replGalOver !== 0) document.getElementById("replicantimax").innerHTML = "Max Replicanti galaxies: "+player.replicanti.gal+"+"+replGalOver+"<br>+1 Costs: "+shortenCosts(player.replicanti.galCost)+" IP"
  1480. else document.getElementById("replicantimax").innerHTML = "Max Replicanti galaxies: "+player.replicanti.gal+"<br>+1 Costs: "+shortenCosts(player.replicanti.galCost)+" IP"
  1481. }
  1482. document.getElementById("replicantiunlock").innerHTML = "Unlock Replicantis<br>Cost: "+shortenCosts(1e140)+" IP"
  1483. let extraGals = 0
  1484. if (player.timestudy.studies.includes(225)) extraGals += Math.floor(player.replicanti.amount.e / 1000)
  1485. if (player.timestudy.studies.includes(226)) extraGals += Math.floor(player.replicanti.gal / 15)
  1486. if (extraGals !== 0) document.getElementById("replicantireset").innerHTML = "Reset replicanti amount, but get a free galaxy<br>"+player.replicanti.galaxies + "+"+extraGals+ " replicated galaxies created."
  1487. else document.getElementById("replicantireset").innerHTML = (player.replicanti.galaxies !== 1) ? "Reset replicanti amount, but get a free galaxy<br>"+player.replicanti.galaxies + " replicated galaxies created." : "Reset replicanti amount, but get a free galaxy<br>"+player.replicanti.galaxies + " replicated galaxy created."
  1488.  
  1489. document.getElementById("replicantichance").className = (player.infinityPoints.gte(player.replicanti.chanceCost) && player.replicanti.chance < 1) ? "storebtn" : "unavailablebtn"
  1490. document.getElementById("replicantiinterval").className = (player.infinityPoints.gte(player.replicanti.intervalCost) && ((player.replicanti.interval !== 50) || player.timestudy.studies.includes(22)) && (player.replicanti.interval !== 1 || stars.gte(100))) ? "storebtn" : "unavailablebtn"
  1491. document.getElementById("replicantimax").className = (player.infinityPoints.gte(player.replicanti.galCost)) ? "storebtn" : "unavailablebtn"
  1492. document.getElementById("replicantireset").className = ((player.replicanti.galaxies < player.replicanti.gal && player.replicanti.amount.gte(Number.MAX_VALUE)) || (player.replicanti.galaxies < Math.floor(player.replicanti.gal * 1.5) && player.replicanti.amount.gte(Number.MAX_VALUE) && player.timestudy.studies.includes(131))) ? "storebtn" : "unavailablebtn"
  1493. document.getElementById("replicantiunlock").className = (player.infinityPoints.gte(1e140)) ? "storebtn" : "unavailablebtn"
  1494. }
  1495.  
  1496. if (document.getElementById("timestudies").style.display == "block" && document.getElementById("eternitystore").style.display == "block") {
  1497. document.getElementById("11desc").textContent = "Currently: "+shortenMoney(Decimal.fromMantissaExponent(10 -player.tickspeed.dividedBy(1000).pow(0.005).times(0.95).plus(player.tickspeed.dividedBy(1000).pow(0.0003).times(0.05)).mantissa, Math.abs(player.tickspeed.dividedBy(1000).pow(0.005).times(0.95).plus(player.tickspeed.dividedBy(1000).pow(0.0003).times(0.05)).e)).min("1e2500").max(1))+"x"
  1498. document.getElementById("32desc").textContent = "You gain "+Math.max(player.resets, 1)+"x more infinitied stat (based on dimension boosts)"
  1499. document.getElementById("51desc").textContent = "You gain "+shortenCosts(1e15)+"x more IP"
  1500. document.getElementById("71desc").textContent = "Currently: "+shortenMoney(calcTotalSacrificeBoost().pow(0.25).max(1).min("1e210000"))+"x"
  1501. document.getElementById("72desc").textContent = "Currently: "+shortenMoney(calcTotalSacrificeBoost().pow(0.04).max(1).min("1e30000"))+"x"
  1502. document.getElementById("73desc").textContent = "Currently: "+shortenMoney(calcTotalSacrificeBoost().pow(0.005).max(1).min("1e1300"))+"x"
  1503. document.getElementById("82desc").textContent = "Currently: "+shortenMoney(Decimal.pow(1.0000109, Decimal.pow(player.resets, 2)))+"x"
  1504. document.getElementById("91desc").textContent = "Currently: "+shortenMoney(Decimal.pow(10, Math.min(player.thisEternity, 18000)/60))+"x"
  1505. document.getElementById("92desc").textContent = "Currently: "+shortenMoney(Decimal.pow(2, 600/Math.max(player.bestEternity, 20)))+"x"
  1506. document.getElementById("93desc").textContent = "Currently: "+shortenMoney(Decimal.pow(player.totalTickGained, 0.25))+"x"
  1507. document.getElementById("121desc").textContent = "Currently: "+((253 - averageEp.dividedBy(player.epmult).dividedBy(10).min(248).max(3))/5).toFixed(1)+"x"
  1508. document.getElementById("123desc").textContent = "Currently: "+Math.sqrt(1.39*player.thisEternity/10).toFixed(1)+"x"
  1509. document.getElementById("141desc").textContent = "Currently: "+shortenMoney(new Decimal(1e45).dividedBy(Decimal.pow(15, Math.log(player.thisInfinityTime)*Math.pow(player.thisInfinityTime, 0.125))).max(1))+"x"
  1510. document.getElementById("142desc").textContent = "You gain "+shortenCosts(1e25)+"x more IP"
  1511. document.getElementById("143desc").textContent = "Currently: "+shortenMoney(Decimal.pow(15, Math.log(player.thisInfinityTime)*Math.pow(player.thisInfinityTime, 0.125)))+"x"
  1512. document.getElementById("151desc").textContent = shortenCosts(1e4)+"x multiplier on all Time dimensions"
  1513. document.getElementById("161desc").textContent = shortenCosts(new Decimal("1e616"))+"x multiplier on all normal dimensions"
  1514. document.getElementById("162desc").textContent = shortenCosts(1e11)+"x multiplier on all Infinity dimensions"
  1515. document.getElementById("192desc").textContent = "You can get beyond "+shortenMoney(Number.MAX_VALUE)+" replicantis, but the interval is increased the more you have"
  1516. document.getElementById("193desc").textContent = "Currently: "+shortenMoney(Decimal.pow(1.03, player.eternities).min("1e13000"))+"x"
  1517. document.getElementById("212desc").textContent = "Currently: "+((Math.pow(player.timeShards.max(2).log2(), 0.005)-1)*100).toFixed(2)+"%"
  1518. document.getElementById("214desc").textContent = "Currently: "+shortenMoney(((calcTotalSacrificeBoost().pow(8)).min("1e46000").times(calcTotalSacrificeBoost().pow(1.1)).div(calcTotalSacrificeBoost())).max(1).min(new Decimal("1e125000")))+"x"
  1519.  
  1520. if (player.etercreq !== 1) document.getElementById("ec1unl").innerHTML = "Eternity Challenge 1<span>Requirement: "+(ECTimesCompleted("eterc1")+1)*20000+" Eternities<span>Cost: 30 Time Theorems"
  1521. else document.getElementById("ec1unl").innerHTML = "Eternity Challenge 1<span>Cost: 30 Time Theorems"
  1522. if (player.etercreq !== 2) document.getElementById("ec2unl").innerHTML = "Eternity Challenge 2<span>Requirement: "+(1300+(ECTimesCompleted("eterc2")*150))+" Tickspeed upgrades gained from time dimensions<span>Cost: 35 Time Theorems"
  1523. else document.getElementById("ec2unl").innerHTML = "Eternity Challenge 2<span>Cost: 35 Time Theorems"
  1524. if (player.etercreq !== 3) document.getElementById("ec3unl").innerHTML = "Eternity Challenge 3<span>Requirement: "+(17300+(ECTimesCompleted("eterc3")*1250))+" 8th dimensions<span>Cost: 40 Time Theorems"
  1525. else document.getElementById("ec3unl").innerHTML = "Eternity Challenge 3<span>Cost: 40 Time Theorems"
  1526. if (player.etercreq !== 4) document.getElementById("ec4unl").innerHTML = "Eternity Challenge 4<span>Requirement: "+(1e8 + (ECTimesCompleted("eterc4")*5e7)).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",")+" infinities<span>Cost: 70 Time Theorems"
  1527. else document.getElementById("ec4unl").innerHTML = "Eternity Challenge 4<span>Cost: 70 Time Theorems"
  1528. if (player.etercreq !== 5) document.getElementById("ec5unl").innerHTML = "Eternity Challenge 5<span>Requirement: "+(160+(ECTimesCompleted("eterc5")*14))+" galaxies<span>Cost: 130 Time Theorems"
  1529. else document.getElementById("ec5unl").innerHTML = "Eternity Challenge 5<span>Cost: 130 Time Theorems"
  1530. if (player.etercreq !== 6) document.getElementById("ec6unl").innerHTML = "Eternity Challenge 6<span>Requirement: "+(40+(ECTimesCompleted("eterc6")*5))+" replicanti galaxies<span>Cost: 85 Time Theorems"
  1531. else document.getElementById("ec6unl").innerHTML = "Eternity Challenge 6<span>Cost: 85 Time Theorems"
  1532. if (player.etercreq !== 7) document.getElementById("ec7unl").innerHTML = "Eternity Challenge 7<span>Requirement: "+shortenCosts(new Decimal("1e500000").times(new Decimal("1e300000").pow(ECTimesCompleted("eterc7"))))+" antimatter <span>Cost: 115 Time Theorems"
  1533. else document.getElementById("ec7unl").innerHTML = "Eternity Challenge 7<span>Cost: 115 Time Theorems"
  1534. if (player.etercreq !== 8) document.getElementById("ec8unl").innerHTML = "Eternity Challenge 8<span>Requirement: "+shortenCosts(new Decimal("1e4000").times(new Decimal("1e1000").pow(ECTimesCompleted("eterc8"))))+" IP <span>Cost: 115 Time Theorems"
  1535. else document.getElementById("ec8unl").innerHTML = "Eternity Challenge 8<span>Cost: 115 Time Theorems"
  1536. if (player.etercreq !== 9) document.getElementById("ec9unl").innerHTML = "Eternity Challenge 9<span>Requirement: "+shortenCosts(new Decimal("1e17500").times(new Decimal("1e2000").pow(ECTimesCompleted("eterc9"))))+" infinity power<span>Cost: 415 Time Theorems"
  1537. else document.getElementById("ec9unl").innerHTML = "Eternity Challenge 9<span>Cost: 415 Time Theorems"
  1538. if (player.etercreq !== 10) document.getElementById("ec10unl").innerHTML = "Eternity Challenge 10<span>Requirement: "+shortenCosts(new Decimal("1e100").times(new Decimal("1e20").pow(ECTimesCompleted("eterc10"))))+" EP<span>Cost: 550 Time Theorems"
  1539. else document.getElementById("ec10unl").innerHTML = "Eternity Challenge 10<span>Cost: 550 Time Theorems"
  1540.  
  1541. document.getElementById("ec11unl").innerHTML = "Eternity Challenge 11<span>Requirement: Use only the Normal Dimension path<span>Cost: 1 Time Theorem"
  1542. document.getElementById("ec12unl").innerHTML = "Eternity Challenge 12<span>Requirement: Use only the Time Dimension path<span>Cost: 1 Time Theorem"
  1543.  
  1544. if (player.dilation.studies.includes(1)) document.getElementById("dilstudy1").innerHTML = "Unlock time dilation<span>Cost: 5000 Time Theorems"
  1545. else document.getElementById("dilstudy1").innerHTML = "Unlock time dilation<span>Requirement: 5 EC11 and EC12 completions and 13000 total theorems<span>Cost: 5000 Time Theorems"
  1546. }
  1547. }
  1548.  
  1549. document.getElementById("bigcrunch").onclick = function () {
  1550. var challNumber = parseInt(player.currentChallenge[player.currentChallenge.length-1])
  1551. if (player.currentChallenge.length == 11) challNumber = parseInt("1"+player.currentChallenge[player.currentChallenge.length-1])
  1552. if ((player.money.gte(Number.MAX_VALUE) && !player.currentChallenge.includes("post")) || (player.currentChallenge !== "" && player.money.gte(player.challengeTarget))) {
  1553. if ((player.bestInfinityTime > 600 && !player.break) && player.eternities === 0 && implosionCheck === 0 && player.options.animations.bigCrunch) {
  1554. implosionCheck = 1;
  1555. document.getElementById("body").style.animation = "implode 2s 1";
  1556. setTimeout(function(){ document.getElementById("body").style.animation = ""; }, 2000)
  1557. setTimeout(function(){ document.getElementById("bigcrunch").onclick(); }, 1000)
  1558. return
  1559. }
  1560. implosionCheck = 0;
  1561. if (player.thisInfinityTime <= 72000) giveAchievement("That's fast!");
  1562. if (player.thisInfinityTime <= 6000) giveAchievement("That's faster!")
  1563. if (player.thisInfinityTime <= 600) giveAchievement("Forever isn't that long")
  1564. if (player.thisInfinityTime <= 2) giveAchievement("Blink of an eye")
  1565. if (player.eightAmount == 0) giveAchievement("You didn't need it anyway");
  1566. if (player.galaxies == 1) giveAchievement("Claustrophobic");
  1567. if (player.galaxies == 0 && player.resets == 0) giveAchievement("Zero Deaths")
  1568. if (player.currentChallenge == "challenge2" && player.thisInfinityTime <= 1800) giveAchievement("Many Deaths")
  1569. if (player.currentChallenge == "challenge11" && player.thisInfinityTime <= 1800) giveAchievement("Gift from the Gods")
  1570. if (player.currentChallenge == "challenge5" && player.thisInfinityTime <= 1800) giveAchievement("Is this hell?")
  1571. if (player.currentChallenge == "challenge3" && player.thisInfinityTime <= 100) giveAchievement("You did this again just for the achievement right?");
  1572. if (player.firstAmount == 1 && player.resets == 0 && player.galaxies == 0 && player.currentChallenge == "challenge12") giveAchievement("ERROR 909: Dimension not found")
  1573. if (player.currentChallenge != "" && player.challengeTimes[challNumber-2] > player.thisInfinityTime) player.challengeTimes[challNumber-2] = player.thisInfinityTime
  1574. if (player.currentChallenge.includes("post") && player.infchallengeTimes[challNumber-1] > player.thisInfinityTime) player.infchallengeTimes[challNumber-1] = player.thisInfinityTime
  1575. if (player.currentChallenge == "postc5" && player.thisInfinityTime <= 100) giveAchievement("Hevipelle did nothing wrong")
  1576. if ((player.bestInfinityTime > 600 && !player.break) || (player.currentChallenge != "" && !player.options.retryChallenge)) showTab("dimensions")
  1577. if (player.currentChallenge == "challenge5") {
  1578. kong.submitStats('Challenge 9 time record (ms)', Math.floor(player.thisInfinityTime*100));
  1579. }
  1580. if (player.currentChallenge != "" && !player.challenges.includes(player.currentChallenge)) {
  1581. player.challenges.push(player.currentChallenge);
  1582. }
  1583. if (player.challenges.length > 12) giveAchievement("Infinitely Challenging");
  1584. if (player.challenges.length == 20) giveAchievement("Anti-antichallenged");
  1585. if (!player.break || player.currentChallenge != "") {
  1586. var add = new Decimal(player.infMult.times(kongIPMult))
  1587. if (player.timestudy.studies.includes(51)) add = add.times(1e15)
  1588. player.infinityPoints = player.infinityPoints.plus(add);
  1589. addTime(player.thisInfinityTime, add)
  1590. }
  1591. else {
  1592. player.infinityPoints = player.infinityPoints.plus(gainedInfinityPoints())
  1593. addTime(player.thisInfinityTime, gainedInfinityPoints())
  1594. if (gainedInfinityPoints().gte(1e150)) giveAchievement("All your IP are belong to us")
  1595. if (gainedInfinityPoints().gte(1e200) && player.thisInfinityTime <= 20) giveAchievement("Ludicrous Speed")
  1596. if (gainedInfinityPoints().gte(1e250) && player.thisInfinityTime <= 200) giveAchievement("I brake for nobody")
  1597. }
  1598. if (!player.achievements.includes("r111") && player.lastTenRuns[9][1] != 1) {
  1599. var n = 0;
  1600. for (i=0; i<9; i++) {
  1601. if (player.lastTenRuns[i][1].gte(player.lastTenRuns[i+1][1].times(Number.MAX_VALUE))) n++;
  1602. }
  1603. if (n == 9) giveAchievement("Yo dawg, I heard you liked infinities...")
  1604. }
  1605. let infGain = 1;
  1606. if (player.thisInfinityTime > 50 && player.achievements.includes("r87")) infGain = 250;
  1607. if (player.timestudy.studies.includes(32)) infGain *= Math.max(player.resets,1);
  1608. if (player.currentEternityChall == "eterc4") {
  1609. infGain = 1
  1610. if (player.infinitied >= 16 - (ECTimesCompleted("eterc4")*4)) {
  1611. document.getElementById("challfail").style.display = "block"
  1612. setTimeout(exitChallenge, 500)
  1613. giveAchievement("You're a mistake")
  1614. failureCount++
  1615. if (failureCount > 9) giveAchievement("You're a failure")
  1616. }
  1617. }
  1618. if (autoS && auto) {
  1619. if (gainedInfinityPoints().dividedBy(player.thisInfinityTime).gt(player.autoIP) && !player.break) player.autoIP = gainedInfinityPoints().dividedBy(player.thisInfinityTime);
  1620. if (player.thisInfinityTime<player.autoTime) player.autoTime = player.thisInfinityTime;
  1621. }
  1622. auto = autoS; //only allow autoing if prev crunch was autoed
  1623. autoS = true;
  1624. player = {
  1625. money: new Decimal(10),
  1626. tickSpeedCost: new Decimal(1000),
  1627. tickspeed: new Decimal(1000),
  1628. firstCost: new Decimal(10),
  1629. secondCost: new Decimal(100),
  1630. thirdCost: new Decimal(10000),
  1631. fourthCost: new Decimal(1000000),
  1632. fifthCost: new Decimal(1e9),
  1633. sixthCost: new Decimal(1e13),
  1634. seventhCost: new Decimal(1e18),
  1635. eightCost: new Decimal(1e24),
  1636. firstAmount: new Decimal(0),
  1637. secondAmount: new Decimal(0),
  1638. thirdAmount: new Decimal(0),
  1639. fourthAmount: new Decimal(0),
  1640. firstBought: 0,
  1641. secondBought: 0,
  1642. thirdBought: 0,
  1643. fourthBought: 0,
  1644. fifthAmount: new Decimal(0),
  1645. sixthAmount: new Decimal(0),
  1646. seventhAmount: new Decimal(0),
  1647. eightAmount: new Decimal(0),
  1648. fifthBought: 0,
  1649. sixthBought: 0,
  1650. seventhBought: 0,
  1651. eightBought: 0,
  1652. firstPow: new Decimal(1),
  1653. secondPow: new Decimal(1),
  1654. thirdPow: new Decimal(1),
  1655. fourthPow: new Decimal(1),
  1656. fifthPow: new Decimal(1),
  1657. sixthPow: new Decimal(1),
  1658. seventhPow: new Decimal(1),
  1659. eightPow: new Decimal(1),
  1660. sacrificed: new Decimal(0),
  1661. achievements: player.achievements,
  1662. challenges: player.challenges,
  1663. currentChallenge: player.currentChallenge,
  1664. infinityUpgrades: player.infinityUpgrades,
  1665. infinityPoints: player.infinityPoints,
  1666. infinitied: player.infinitied + infGain,
  1667. infinitiedBank: player.infinitiedBank,
  1668. totalTimePlayed: player.totalTimePlayed,
  1669. bestInfinityTime: Math.min(player.bestInfinityTime, player.thisInfinityTime),
  1670. thisInfinityTime: 0,
  1671. resets: 0,
  1672. galaxies: 0,
  1673. tickDecrease: 0.9,
  1674. totalmoney: player.totalmoney,
  1675. interval: null,
  1676. lastUpdate: player.lastUpdate,
  1677. achPow: player.achPow,
  1678. autobuyers: player.autobuyers,
  1679. costMultipliers: [new Decimal(1e3), new Decimal(1e4), new Decimal(1e5), new Decimal(1e6), new Decimal(1e8), new Decimal(1e10), new Decimal(1e12), new Decimal(1e15)],
  1680. tickspeedMultiplier: new Decimal(10),
  1681. chall2Pow: 1,
  1682. chall3Pow: new Decimal(0.01),
  1683. newsArray: player.newsArray,
  1684. matter: new Decimal(0),
  1685. chall11Pow: new Decimal(1),
  1686. partInfinityPoint: player.partInfinityPoint,
  1687. partInfinitied: player.partInfinitied,
  1688. break: player.break,
  1689. challengeTimes: player.challengeTimes,
  1690. infchallengeTimes: player.infchallengeTimes,
  1691. lastTenRuns: player.lastTenRuns,
  1692. lastTenEternities: player.lastTenEternities,
  1693. infMult: player.infMult,
  1694. infMultCost: player.infMultCost,
  1695. tickSpeedMultDecrease: player.tickSpeedMultDecrease,
  1696. tickSpeedMultDecreaseCost: player.tickSpeedMultDecreaseCost,
  1697. dimensionMultDecrease: player.dimensionMultDecrease,
  1698. dimensionMultDecreaseCost: player.dimensionMultDecreaseCost,
  1699. version: player.version,
  1700. postChallUnlocked: player.postChallUnlocked,
  1701. postC4Tier: 1,
  1702. postC3Reward: new Decimal(1),
  1703. overXGalaxies: player.overXGalaxies,
  1704. spreadingCancer: player.spreadingCancer,
  1705. infDimensionsUnlocked: player.infDimensionsUnlocked,
  1706. infinityPower: player.infinityPower,
  1707. infinityDimension1: player.infinityDimension1,
  1708. infinityDimension2: player.infinityDimension2,
  1709. infinityDimension3: player.infinityDimension3,
  1710. infinityDimension4: player.infinityDimension4,
  1711. infinityDimension5: player.infinityDimension5,
  1712. infinityDimension6: player.infinityDimension6,
  1713. infinityDimension7: player.infinityDimension7,
  1714. infinityDimension8: player.infinityDimension8,
  1715. infDimBuyers: player.infDimBuyers,
  1716. timeShards: player.timeShards,
  1717. tickThreshold: player.tickThreshold,
  1718. timeDimension1: player.timeDimension1,
  1719. timeDimension2: player.timeDimension2,
  1720. timeDimension3: player.timeDimension3,
  1721. timeDimension4: player.timeDimension4,
  1722. timeDimension5: player.timeDimension5,
  1723. timeDimension6: player.timeDimension6,
  1724. timeDimension7: player.timeDimension7,
  1725. timeDimension8: player.timeDimension8,
  1726. eternityPoints: player.eternityPoints,
  1727. eternities: player.eternities,
  1728. thisEternity: player.thisEternity,
  1729. bestEternity: player.bestEternity,
  1730. eternityUpgrades: player.eternityUpgrades,
  1731. epmult: player.epmult,
  1732. epmultCost: player.epmultCost,
  1733. totalTickGained: player.totalTickGained,
  1734. offlineProd: player.offlineProd,
  1735. offlineProdCost: player.offlineProdCost,
  1736. challengeTarget: player.challengeTarget,
  1737. autoSacrifice: player.autoSacrifice,
  1738. replicanti: player.replicanti,
  1739. timestudy: player.timestudy,
  1740. eternityChalls: player.eternityChalls,
  1741. eternityChallGoal: player.eternityChallGoal,
  1742. currentEternityChall: player.currentEternityChall,
  1743. eternityChallUnlocked: player.eternityChallUnlocked,
  1744. etercreq: player.etercreq,
  1745. autoIP: player.autoIP,
  1746. autoTime: player.autoTime,
  1747. infMultBuyer: player.infMultBuyer,
  1748. autoCrunchMode: player.autoCrunchMode,
  1749. respec: player.respec,
  1750. eternityBuyer: player.eternityBuyer,
  1751. eterc8ids: player.eterc8ids,
  1752. eterc8repl: player.eterc8repl,
  1753. dimlife: player.dimlife,
  1754. dead: player.dead,
  1755. dilation: player.dilation,
  1756. why: player.why,
  1757. options: player.options
  1758. };
  1759.  
  1760. if (player.bestInfinityTime <= 0.01) giveAchievement("Less than or equal to 0.001");
  1761.  
  1762. if (!player.options.retryChallenge) player.currentChallenge = ""
  1763.  
  1764. if (player.resets == 0 && player.currentChallenge == "") {
  1765. if (player.infinityUpgrades.includes("skipReset1")) player.resets++;
  1766. if (player.infinityUpgrades.includes("skipReset2")) player.resets++;
  1767. if (player.infinityUpgrades.includes("skipReset3")) player.resets++;
  1768. if (player.infinityUpgrades.includes("skipResetGalaxy")) {
  1769. player.resets++;
  1770. if (player.galaxies == 0) player.galaxies = 1
  1771. }
  1772. }
  1773.  
  1774. if (player.replicanti.unl && !player.achievements.includes("r95")) player.replicanti.amount = new Decimal(1)
  1775.  
  1776. player.replicanti.galaxies = (player.timestudy.studies.includes(33)) ? Math.floor(player.replicanti.galaxies/2) :0
  1777.  
  1778. setInitialDimensionPower();
  1779.  
  1780.  
  1781. if (player.currentChallenge == "challenge12" || player.currentChallenge == "postc1" || player.currentChallenge == "postc6") document.getElementById("matter").style.display = "block";
  1782. else document.getElementById("matter").style.display = "none";
  1783.  
  1784. document.getElementById("replicantireset").innerHTML = "Reset replicanti amount, but get a free galaxy<br>"+player.replicanti.galaxies + " replicated galaxies created."
  1785.  
  1786. if (player.achievements.includes("r36")) player.tickspeed = player.tickspeed.times(0.98);
  1787. if (player.achievements.includes("r45")) player.tickspeed = player.tickspeed.times(0.98);
  1788. if (player.achievements.includes("r66")) player.tickspeed = player.tickspeed.times(0.98);
  1789. if (player.achievements.includes("r83")) player.tickspeed = player.tickspeed.times(Decimal.pow(0.95,player.galaxies));
  1790. if (player.eternities < 30) {
  1791. document.getElementById("secondRow").style.display = "none";
  1792. document.getElementById("thirdRow").style.display = "none";
  1793. document.getElementById("tickSpeed").style.visibility = "hidden";
  1794. document.getElementById("tickSpeedMax").style.visibility = "hidden";
  1795. document.getElementById("tickLabel").style.visibility = "hidden";
  1796. document.getElementById("tickSpeedAmount").style.visibility = "hidden";
  1797. document.getElementById("fourthRow").style.display = "none";
  1798. document.getElementById("fifthRow").style.display = "none";
  1799. document.getElementById("sixthRow").style.display = "none";
  1800. document.getElementById("seventhRow").style.display = "none";
  1801. document.getElementById("eightRow").style.display = "none";
  1802. }
  1803. document.getElementById("matter").style.display = "none";
  1804. document.getElementById("quickReset").style.display = "none";
  1805.  
  1806. checkForEndMe()
  1807.  
  1808. kong.submitStats('Infinitied', getInfinitied());
  1809. kong.submitStats('Fastest Infinity time (ms)', Math.floor(player.bestInfinityTime * 100));
  1810. giveAchievement("To infinity!");
  1811. if (player.infinitied >= 10) giveAchievement("That's a lot of infinites");
  1812. if (player.infinitied >= 1 && !player.challenges.includes("challenge1")) player.challenges.push("challenge1");
  1813.  
  1814.  
  1815. updateAutobuyers();
  1816. if (player.challenges.includes("challenge1")) player.money = new Decimal(100)
  1817. if (player.achievements.includes("r37")) player.money = new Decimal(1000);
  1818. if (player.achievements.includes("r54")) player.money = new Decimal(2e5);
  1819. if (player.achievements.includes("r55")) player.money = new Decimal(1e10);
  1820. if (player.achievements.includes("r78")) player.money = new Decimal(1e25);
  1821. if (player.challenges.length >= 2) giveAchievement("Daredevil");
  1822. if (player.challenges.length == 12) giveAchievement("AntiChallenged");
  1823. resetInfDimensions();
  1824. player.tickspeed = player.tickspeed.times(Decimal.pow(getTickSpeedMultiplier(), player.totalTickGained))
  1825. updateTickSpeed();
  1826. if (player.challenges.length == 20) giveAchievement("Anti-antichallenged");
  1827. IPminpeak = new Decimal(0)
  1828.  
  1829.  
  1830. if (player.eternities > 10 && player.currentEternityChall !== "eterc8" && player.currentEternityChall !== "eterc2" && player.currentEternityChall !== "eterc10") {
  1831. for (var i=1;i<player.eternities-9 && i < 9; i++) {
  1832. if (player.infDimBuyers[i-1]) {
  1833. buyMaxInfDims(i)
  1834. buyManyInfinityDimension(i)
  1835. }
  1836. }
  1837. }
  1838.  
  1839. if (player.eternities >= 40 && player.replicanti.auto[0] && player.currentEternityChall !== "eterc8") {
  1840. while (player.infinityPoints.gte(player.replicanti.chanceCost) && player.currentEternityChall !== "eterc8" && player.replicanti.chance < 1) upgradeReplicantiChance()
  1841. }
  1842.  
  1843. if (player.eternities >= 60 && player.replicanti.auto[1] && player.currentEternityChall !== "eterc8") {
  1844. while (player.infinityPoints.gte(player.replicanti.intervalCost) && player.currentEternityChall !== "eterc8" && (((player.timestudy.studies.includes(22)) ? player.replicanti.interval > 1 : player.replicanti.interval > 50) || stars.gte(100))) upgradeReplicantiInterval()
  1845. }
  1846.  
  1847. if (player.eternities >= 80 && player.replicanti.auto[2] && player.currentEternityChall !== "eterc8") {
  1848. while (player.infinityPoints.gte(player.replicanti.galCost)) upgradeReplicantiGalaxy()
  1849. }
  1850.  
  1851. Marathon2 = 0;
  1852.  
  1853. }
  1854. updateChallenges();
  1855. updateChallengeTimes()
  1856. updateLastTenRuns()
  1857.  
  1858.  
  1859. }
  1860.  
  1861. function buyTimeDimension(tier) {
  1862. var dim = player["timeDimension"+tier]
  1863. if (tier > 4 && !player.dilation.studies.includes(tier-3)) return false
  1864. if (player.eternityPoints.lt(dim.cost)) return false
  1865.  
  1866. player.eternityPoints = player.eternityPoints.minus(dim.cost)
  1867. dim.amount = dim.amount.plus(1);
  1868. dim.bought += 1
  1869. dim.cost = Decimal.pow(timeDimCostMults[tier], dim.bought).times(timeDimStartCosts[tier])
  1870. if (dim.cost.gte(Number.MAX_VALUE)) {
  1871. dim.cost = Decimal.pow(timeDimCostMults[tier]*1.5, dim.bought).times(timeDimStartCosts[tier])
  1872. }
  1873. if (dim.cost.gte("1e1300")) {
  1874. dim.cost = Decimal.pow(timeDimCostMults[tier]*2.2, dim.bought).times(timeDimStartCosts[tier])
  1875. }
  1876. if (tier > 4) {
  1877. dim.cost = Decimal.pow(timeDimCostMults[tier]*100, dim.bought).times(timeDimStartCosts[tier])
  1878. }
  1879. dim.power = dim.power.times(2)
  1880. if (stars.gte(200) && dim.cost.gte("1e10000")) {
  1881. dim.cost = Decimal.pow(dim.cost,Decimal.pow(1.1,dim.cost.e/1000-9))
  1882. }
  1883. updateEternityUpgrades()
  1884. return true
  1885. }
  1886.  
  1887. function buyEPMult() {
  1888. let mult = new Decimal(5)
  1889. if (player.eternityPoints.gte(player.epmultCost)) {
  1890. player.eternityBuyer.limit = player.eternityBuyer.limit.times(5)
  1891. document.getElementById("priority13").value = formatValue("Scientific", player.eternityBuyer.limit, 2, 0);
  1892. player.eternityPoints = player.eternityPoints.minus(player.epmultCost)
  1893. let count = player.epmult.ln()/Math.log(5)
  1894. if (player.epmultCost.gte("1e10000") && stars.gte(300)) {
  1895. epbulk = player.epmultCost.e/10000
  1896. player.epmultCost = player.epmultCost.times(Decimal.pow(1000, count + Math.pow(count-1699, 1.2)).times(500))
  1897. } else if (player.epmultCost.gte(new Decimal("1e4000"))) player.epmultCost = Decimal.pow(1000, count + Math.pow(count-1334, 1.2)).times(500)
  1898. else if (player.epmultCost.gte(new Decimal("1e1300"))) player.epmultCost = Decimal.pow(1000, count).times(500)
  1899. else if (player.epmultCost.gte(Number.MAX_VALUE)) player.epmultCost = Decimal.pow(500, count).times(500)
  1900. else if (player.epmultCost.gte(new Decimal("1e100"))) player.epmultCost = Decimal.pow(100, count).times(500)
  1901. else player.epmultCost = Decimal.pow(50, count).times(500)
  1902. player.epmult = player.epmult.times(new Decimal(mult,epbulk))
  1903. document.getElementById("epmult").innerHTML = "You gain " +shortenDimensions(Decimal.pow(mult,epbulk)) +" times more EP<p>Currently: "+shortenDimensions(player.epmult)+"x<p>Cost: "+shortenDimensions(player.epmultCost)+" EP"
  1904. updateEternityUpgrades()
  1905. }
  1906. }
  1907.  
  1908. function buyManyInfinityDimension(tier) {
  1909. if (player.eterc8ids <= 0 && player.currentEternityChall == "eterc8") return false
  1910. var dim = player["infinityDimension"+tier]
  1911. if (player.infinityPoints.lt(dim.cost)) return false
  1912. if (!player.infDimensionsUnlocked[tier-1]) return false
  1913. if (player.eterc8ids == 0) return false
  1914. player.infinityPoints = player.infinityPoints.minus(dim.cost)
  1915. dim.amount = dim.amount.plus(10);
  1916. if (ECTimesCompleted("eterc12")) {
  1917. dim.cost = Decimal.round(dim.cost.times(Math.pow(infCostMults[tier], 1-ECTimesCompleted("eterc12")*0.008)))
  1918. } else {
  1919. dim.cost = Decimal.round(dim.cost.times(infCostMults[tier]))
  1920. }
  1921. if (stars.gte(250) && (dim.cost.e >= 1e6)) {
  1922. dim.cost = Decimal.round(Decimal.pow(dim.cost,1.01))
  1923. }
  1924. dim.power = dim.power.times(infPowerMults[tier])
  1925. dim.baseAmount += 10
  1926.  
  1927. if (player.currentEternityChall == "eterc8") player.eterc8ids-=1
  1928. document.getElementById("eterc8ids").textContent = "You have "+player.eterc8ids+" purchases left."
  1929. return true
  1930. }
  1931.  
  1932. function upgradeReplicantiGalaxy() {
  1933. let cost = player.replicanti.galCost
  1934. if (player.timestudy.studies.includes(233)) cost = cost.dividedBy(player.replicanti.amount.pow(0.3))
  1935. if (player.infinityPoints.gte(cost) && player.eterc8repl !== 0) {
  1936. player.infinityPoints = player.infinityPoints.minus(cost)
  1937. if (player.currentEternityChall == "eterc6") player.replicanti.galCost = player.replicanti.galCost.times(Decimal.pow(1e2, player.replicanti.gal)).times(1e2)
  1938. else player.replicanti.galCost = player.replicanti.galCost.times(Decimal.pow(1e5, player.replicanti.gal)).times(1e25)
  1939. if (player.replicanti.gal >= 100) player.replicanti.galCost = player.replicanti.galCost.times(Decimal.pow(1e50, player.replicanti.gal - 95))
  1940. if ((player.replicanti.gal >= 300) && (stars.gte(400))) player.replicanti.galCost = player.replicanti.galCost.times(Decimal.pow(Decimal.pow(10,player.replicanti.gal-299).times(1e50), player.replicanti.gal - 95))
  1941. player.replicanti.gal += 1
  1942. if (player.currentEternityChall == "eterc8") player.eterc8repl-=1
  1943. document.getElementById("eterc8repl").textContent = "You have "+player.eterc8repl+" purchases left."
  1944. return true
  1945. }
  1946. return false
  1947. }
  1948.  
  1949. function eternity(force, auto) {
  1950. if ((player.infinityPoints.gte(Number.MAX_VALUE) && (!player.options.eternityconfirm || auto || confirm("Eternity will reset everything except achievements and challenge records. You will also gain an Eternity point and unlock various upgrades."))) || force === true) {
  1951. if (force) player.currentEternityChall = "";
  1952. if (player.currentEternityChall !== "" && player.infinityPoints.lt(player.eternityChallGoal)) return false
  1953. if (player.thisEternity<player.bestEternity && !force) {
  1954. player.bestEternity = player.thisEternity
  1955. if (player.bestEternity < 300) giveAchievement("That wasn't an eternity");
  1956. if (player.bestEternity <= 0.01) giveAchievement("Less than or equal to 0.001");
  1957. }
  1958. if (player.thisEternity < 2) giveAchievement("Eternities are the new infinity")
  1959. if (player.currentEternityChall == "eterc6" && ECTimesCompleted("eterc6") < 5) player.dimensionMultDecrease = parseFloat((player.dimensionMultDecrease - 0.2).toFixed(1))
  1960. if (player.currentEternityChall == "eterc11" && ECTimesCompleted("eterc11") < 5) player.tickSpeedMultDecrease = parseFloat((player.tickSpeedMultDecrease - 0.07).toFixed(2))
  1961. if (player.infinitied < 10 && !force) giveAchievement("Do you really need a guide for this?");
  1962. if (Decimal.round(player.replicanti.amount) == 9) giveAchievement("We could afford 9");
  1963. if (player.dimlife && !force) giveAchievement("8 nobody got time for that")
  1964. if (player.dead && !force) giveAchievement("You're already dead.")
  1965. if (player.infinitied <= 1 && !force) giveAchievement("Do I really need to infinity")
  1966. if (gainedEternityPoints().gte("1e600") && player.thisEternity <= 600 && player.dilation.active && !force) giveAchievement("Now you're thinking with dilation!")
  1967. temp = []
  1968. player.eternityPoints = player.eternityPoints.plus(gainedEternityPoints())
  1969. addEternityTime(player.thisEternity, gainedEternityPoints())
  1970. if (player.currentEternityChall !== "") {
  1971. if (player.eternityChalls[player.currentEternityChall] === undefined) {
  1972. player.eternityChalls[player.currentEternityChall] = 1
  1973. } else if (player.eternityChalls[player.currentEternityChall] < 5) player.eternityChalls[player.currentEternityChall] += 1
  1974. player.etercreq = 0
  1975. respecTimeStudies()
  1976. if (Object.keys(player.eternityChalls).length >= 10) {
  1977. var eterchallscompletedtotal = 0;
  1978. for (i=1; i<Object.keys(player.eternityChalls).length+1; i++) {
  1979. eterchallscompletedtotal += player.eternityChalls["eterc"+i]
  1980. }
  1981. if (eterchallscompletedtotal >= 50) {
  1982. giveAchievement("5 more eternities until the update");
  1983. }
  1984. }
  1985. }
  1986. for (var i=0; i<player.challenges.length; i++) {
  1987. if (!player.challenges[i].includes("post") && player.eternities > 1) temp.push(player.challenges[i])
  1988. }
  1989. if (player.timestudy.studies.includes(191)) player.infinitiedBank += Math.floor(player.infinitied*0.05)
  1990. if (player.achievements.includes("r131")) player.infinitiedBank += Math.floor(player.infinitied*0.05)
  1991. if (player.infinitiedBank > 5000000000) giveAchievement("No ethical consumption");
  1992. if (player.dilation.active && (!force || player.infinityPoints.gte(Number.MAX_VALUE))) {
  1993. let tachyonGain = Math.max(Math.pow(Decimal.log10(player.money) / 400, 1.5) * (Math.pow(3, player.dilation.rebuyables[3])) - player.dilation.totalTachyonParticles, 0)
  1994. player.dilation.totalTachyonParticles = player.dilation.totalTachyonParticles.plus(tachyonGain)
  1995. player.dilation.tachyonParticles = player.dilation.tachyonParticles.plus(tachyonGain)
  1996. player.challenges = temp
  1997. player = {
  1998. money: new Decimal(10),
  1999. tickSpeedCost: new Decimal(1000),
  2000. tickspeed: new Decimal(1000),
  2001. firstCost: new Decimal(10),
  2002. secondCost: new Decimal(100),
  2003. thirdCost: new Decimal(10000),
  2004. fourthCost: new Decimal(1000000),
  2005. fifthCost: new Decimal(1e9),
  2006. sixthCost: new Decimal(1e13),
  2007. seventhCost: new Decimal(1e18),
  2008. eightCost: new Decimal(1e24),
  2009. firstAmount: new Decimal(0),
  2010. secondAmount: new Decimal(0),
  2011. thirdAmount: new Decimal(0),
  2012. fourthAmount: new Decimal(0),
  2013. firstBought: 0,
  2014. secondBought: 0,
  2015. thirdBought: 0,
  2016. fourthBought: 0,
  2017. fifthAmount: new Decimal(0),
  2018. sixthAmount: new Decimal(0),
  2019. seventhAmount: new Decimal(0),
  2020. eightAmount: new Decimal(0),
  2021. fifthBought: 0,
  2022. sixthBought: 0,
  2023. seventhBought: 0,
  2024. eightBought: 0,
  2025. firstPow: new Decimal(1),
  2026. secondPow: new Decimal(1),
  2027. thirdPow: new Decimal(1),
  2028. fourthPow: new Decimal(1),
  2029. fifthPow: new Decimal(1),
  2030. sixthPow: new Decimal(1),
  2031. seventhPow: new Decimal(1),
  2032. eightPow: new Decimal(1),
  2033. sacrificed: new Decimal(0),
  2034. achievements: player.achievements,
  2035. challenges: (player.eternities > 0 && player.achievements.includes("r133")) ? ["challenge1", "challenge2", "challenge3", "challenge4", "challenge5", "challenge6", "challenge7", "challenge8", "challenge9", "challenge10", "challenge11", "challenge12", "postc1", "postc2", "postc3", "postc4", "postc5", "postc6", "postc7", "postc8"] : (player.eternities > 0) ? ["challenge1", "challenge2", "challenge3", "challenge4", "challenge5", "challenge6", "challenge7", "challenge8", "challenge9", "challenge10", "challenge11", "challenge12"] : [],
  2036. currentChallenge: "",
  2037. infinityUpgrades: player.infinityUpgrades,
  2038. infinityPoints: new Decimal(0),
  2039. infinitied: 0,
  2040. infinitiedBank: player.infinitiedBank,
  2041. totalTimePlayed: player.totalTimePlayed,
  2042. bestInfinityTime: 9999999999,
  2043. thisInfinityTime: 0,
  2044. resets: (player.eternities > 2) ? 4 : 0,
  2045. galaxies: (player.eternities > 2) ? 1 : 0,
  2046. tickDecrease: 0.9,
  2047. totalmoney: player.totalmoney,
  2048. interval: null,
  2049. lastUpdate: player.lastUpdate,
  2050. achPow: player.achPow,
  2051. autobuyers: (player.eternities > 0) ? player.autobuyers : [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12],
  2052. partInfinityPoint: 0,
  2053. partInfinitied: 0,
  2054. break: player.eternities > 0 ? player.break : false,
  2055. costMultipliers: [new Decimal(1e3), new Decimal(1e4), new Decimal(1e5), new Decimal(1e6), new Decimal(1e8), new Decimal(1e10), new Decimal(1e12), new Decimal(1e15)],
  2056. tickspeedMultiplier: new Decimal(10),
  2057. chall2Pow: 1,
  2058. chall3Pow: new Decimal(0.01),
  2059. newsArray: player.newsArray,
  2060. matter: new Decimal(0),
  2061. chall11Pow: new Decimal(1),
  2062. challengeTimes: player.challengeTimes,
  2063. infchallengeTimes: player.infchallengeTimes,
  2064. lastTenRuns: [[600*60*24*31, new Decimal(1)], [600*60*24*31, new Decimal(1)], [600*60*24*31, new Decimal(1)], [600*60*24*31, new Decimal(1)], [600*60*24*31, new Decimal(1)], [600*60*24*31, new Decimal(1)], [600*60*24*31, new Decimal(1)], [600*60*24*31, new Decimal(1)], [600*60*24*31, new Decimal(1)], [600*60*24*31, new Decimal(1)]],
  2065. lastTenEternities: player.lastTenEternities,
  2066. infMult: new Decimal(1),
  2067. infMultCost: new Decimal(10),
  2068. tickSpeedMultDecrease: player.eternities > 18 ? player.tickSpeedMultDecrease : 10,
  2069. tickSpeedMultDecreaseCost: player.eternities > 18 ? player.tickSpeedMultDecreaseCost : 3e6,
  2070. dimensionMultDecrease: player.eternities > 18 ? player.dimensionMultDecrease : 10,
  2071. dimensionMultDecreaseCost: player.eternities > 18 ? player.dimensionMultDecreaseCost : 1e8,
  2072. version: player.version,
  2073. postChallUnlocked: (player.achievements.includes("r133")) ? 8 : 0,
  2074. postC4Tier: 1,
  2075. postC3Reward: new Decimal(1),
  2076. overXGalaxies: player.overXGalaxies,
  2077. spreadingCancer: player.spreadingCancer,
  2078. infDimensionsUnlocked: [false, false, false, false, false, false, false, false],
  2079. infinityPower: new Decimal(1),
  2080. infinityDimension1 : {
  2081. cost: new Decimal(1e8),
  2082. amount: new Decimal(0),
  2083. bought: 0,
  2084. power: new Decimal(1),
  2085. baseAmount: 0
  2086. },
  2087. infinityDimension2 : {
  2088. cost: new Decimal(1e9),
  2089. amount: new Decimal(0),
  2090. bought: 0,
  2091. power: new Decimal(1),
  2092. baseAmount: 0
  2093. },
  2094. infinityDimension3 : {
  2095. cost: new Decimal(1e10),
  2096. amount: new Decimal(0),
  2097. bought: 0,
  2098. power: new Decimal(1),
  2099. baseAmount: 0
  2100. },
  2101. infinityDimension4 : {
  2102. cost: new Decimal(1e20),
  2103. amount: new Decimal(0),
  2104. bought: 0,
  2105. power: new Decimal(1),
  2106. baseAmount: 0
  2107. },
  2108. infinityDimension5 : {
  2109. cost: new Decimal(1e140),
  2110. amount: new Decimal(0),
  2111. bought: 0,
  2112. power: new Decimal(1),
  2113. baseAmount: 0
  2114. },
  2115. infinityDimension6 : {
  2116. cost: new Decimal(1e200),
  2117. amount: new Decimal(0),
  2118. bought: 0,
  2119. power: new Decimal(1),
  2120. baseAmount: 0
  2121. },
  2122. infinityDimension7 : {
  2123. cost: new Decimal(1e250),
  2124. amount: new Decimal(0),
  2125. bought: 0,
  2126. power: new Decimal(1),
  2127. baseAmount: 0
  2128. },
  2129. infinityDimension8 : {
  2130. cost: new Decimal(1e280),
  2131. amount: new Decimal(0),
  2132. bought: 0,
  2133. power: new Decimal(1),
  2134. baseAmount: 0
  2135. },
  2136. infDimBuyers: player.infDimBuyers,
  2137. timeShards: new Decimal(0),
  2138. tickThreshold: new Decimal(1),
  2139. totalTickGained: 0,
  2140. timeDimension1: player.timeDimension1,
  2141. timeDimension2: player.timeDimension2,
  2142. timeDimension3: player.timeDimension3,
  2143. timeDimension4: player.timeDimension4,
  2144. timeDimension5: player.timeDimension5,
  2145. timeDimension6: player.timeDimension6,
  2146. timeDimension7: player.timeDimension7,
  2147. timeDimension8: player.timeDimension8,
  2148. eternityPoints: player.eternityPoints,
  2149. eternities: player.eternities+1,
  2150. thisEternity: 0,
  2151. bestEternity: player.bestEternity,
  2152. eternityUpgrades: player.eternityUpgrades,
  2153. epmult: player.epmult,
  2154. epmultCost: player.epmultCost,
  2155. totalTickGained: 0,
  2156. offlineProd: player.eternities > 18 ? player.offlineProd : 0,
  2157. offlineProdCost: player.eternities > 18 ? player.offlineProdCost : 1e7,
  2158. challengeTarget: 0,
  2159. autoSacrifice: player.eternities > 5 ? player.autoSacrifice : 1,
  2160. replicanti: {
  2161. amount: player.eternities > 48 ? new Decimal(1) : new Decimal(0),
  2162. unl: player.eternities > 48 ? true : false,
  2163. chance: 0.01,
  2164. chanceCost: new Decimal(1e150),
  2165. interval: 1000,
  2166. intervalCost: new Decimal(1e140),
  2167. gal: 0,
  2168. galaxies: 0,
  2169. galCost: new Decimal(1e170),
  2170. galaxybuyer: (player.eternities > 1) ? player.replicanti.galaxybuyer : undefined,
  2171. auto: player.replicanti.auto
  2172. },
  2173. timestudy: player.timestudy,
  2174. eternityChalls: player.eternityChalls,
  2175. eternityChallGoal: new Decimal(Number.MAX_VALUE),
  2176. currentEternityChall: "",
  2177. eternityChallUnlocked: player.eternityChallUnlocked,
  2178. etercreq: player.etercreq,
  2179. autoIP: new Decimal(0),
  2180. autoTime: 1e300,
  2181. infMultBuyer: player.infMultBuyer,
  2182. autoCrunchMode: player.autoCrunchMode,
  2183. respec: player.respec,
  2184. eternityBuyer: player.eternityBuyer,
  2185. eterc8ids: 50,
  2186. eterc8repl: 40,
  2187. dimlife: true,
  2188. dead: true,
  2189. dilation: {
  2190. studies: player.dilation.studies,
  2191. active: false,
  2192. tachyonParticles: player.dilation.tachyonParticles,
  2193. dilatedTime: player.dilation.dilatedTime,
  2194. totalTachyonParticles: player.dilation.totalTachyonParticles,
  2195. nextThreshold: player.dilation.nextThreshold,
  2196. freeGalaxies: player.dilation.freeGalaxies,
  2197. upgrades: player.dilation.upgrades,
  2198. rebuyables: player.dilation.rebuyables
  2199. },
  2200. why: player.why,
  2201. options: player.options
  2202. };
  2203. if (player.respec) respecTimeStudies()
  2204. player.respec = false
  2205. giveAchievement("Time is relative")
  2206. if (player.eternities >= 100) giveAchievement("This mile took an Eternity");
  2207. if (player.replicanti.unl) player.replicanti.amount = new Decimal(1)
  2208. player.replicanti.galaxies = 0
  2209. document.getElementById("respec").className = "storebtn"
  2210. if (player.achievements.includes("r36")) player.tickspeed = player.tickspeed.times(0.98);
  2211. if (player.achievements.includes("r45")) player.tickspeed = player.tickspeed.times(0.98);
  2212.  
  2213. if (player.eternities <= 30) {
  2214. document.getElementById("secondRow").style.display = "none";
  2215. document.getElementById("thirdRow").style.display = "none";
  2216. document.getElementById("tickSpeed").style.visibility = "hidden";
  2217. document.getElementById("tickSpeedMax").style.visibility = "hidden";
  2218. document.getElementById("tickLabel").style.visibility = "hidden";
  2219. document.getElementById("tickSpeedAmount").style.visibility = "hidden";
  2220. document.getElementById("fourthRow").style.display = "none";
  2221. document.getElementById("fifthRow").style.display = "none";
  2222. document.getElementById("sixthRow").style.display = "none";
  2223. document.getElementById("seventhRow").style.display = "none";
  2224. document.getElementById("eightRow").style.display = "none";
  2225. }
  2226. document.getElementById("matter").style.display = "none";
  2227. document.getElementById("quickReset").style.display = "none";
  2228. if (player.infinitied >= 1 && !player.challenges.includes("challenge1")) player.challenges.push("challenge1");
  2229. var autobuyers = document.getElementsByClassName('autoBuyerDiv')
  2230. if (player.eternities < 2) {
  2231. for (var i=0; i<autobuyers.length;i++) autobuyers.item(i).style.display = "none"
  2232. document.getElementById("buyerBtnDimBoost").style.display = "inline-block"
  2233. document.getElementById("buyerBtnGalaxies").style.display = "inline-block"
  2234. document.getElementById("buyerBtnInf").style.display = "inline-block"
  2235. document.getElementById("buyerBtnTickSpeed").style.display = "inline-block"
  2236. }
  2237. updateAutobuyers();
  2238. if (player.achievements.includes("r37")) player.money = new Decimal(1000);
  2239. if (player.achievements.includes("r54")) player.money = new Decimal(2e5);
  2240. if (player.achievements.includes("r55")) player.money = new Decimal(1e10);
  2241. if (player.achievements.includes("r78")) player.money = new Decimal(1e25);
  2242. if (player.achievements.includes("r85")) player.infMult = player.infMult.times(4);
  2243. if (player.achievements.includes("r93")) player.infMult = player.infMult.times(4);
  2244. if (player.achievements.includes("r104")) player.infinityPoints = new Decimal(2e25);
  2245. resetInfDimensions();
  2246. updateChallenges();
  2247. updateChallengeTimes()
  2248. updateLastTenRuns()
  2249. updateLastTenEternities()
  2250. if (!player.achievements.includes("r133")) {
  2251. var infchalls = Array.from(document.getElementsByClassName('infchallengediv'))
  2252. for (var i = 0; i< infchalls.length; i++) infchalls[i].style.display = "none"
  2253. }
  2254. IPminpeak = new Decimal(0)
  2255. EPminpeak = new Decimal(0)
  2256. updateMilestones()
  2257. resetTimeDimensions()
  2258. if (player.eternities < 20) player.autobuyers[9].bulk = 1
  2259. if (player.eternities < 20) document.getElementById("bulkDimboost").value = player.autobuyers[9].bulk
  2260. if (player.eternities < 50) {
  2261. document.getElementById("replicantidiv").style.display="none"
  2262. document.getElementById("replicantiunlock").style.display="inline-block"
  2263. } else if (document.getElementById("replicantidiv").style.display === "none" && player.eternities >= 50) {
  2264. document.getElementById("replicantidiv").style.display="inline-block"
  2265. document.getElementById("replicantiunlock").style.display="none"
  2266. }
  2267. kong.submitStats('Eternities', player.eternities);
  2268. if (player.eternities > 2 && player.replicanti.galaxybuyer === undefined) player.replicanti.galaxybuyer = false
  2269. document.getElementById("infinityPoints1").innerHTML = "You have <span class=\"IPAmount1\">"+shortenDimensions(player.infinityPoints)+"</span> Infinity points."
  2270. document.getElementById("infinityPoints2").innerHTML = "You have <span class=\"IPAmount2\">"+shortenDimensions(player.infinityPoints)+"</span> Infinity points."
  2271. if (player.eternities < 2) document.getElementById("break").textContent = "BREAK INFINITY"
  2272. document.getElementById("replicantireset").innerHTML = "Reset replicanti amount, but get a free galaxy<br>"+player.replicanti.galaxies + " replicated galaxies created."
  2273. document.getElementById("eternitybtn").style.display = player.infinityPoints.gte(player.eternityChallGoal) ? "inline-block" : "none"
  2274. document.getElementById("eternityPoints2").style.display = "inline-block"
  2275. document.getElementById("eternitystorebtn").style.display = "inline-block"
  2276. 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"
  2277. updateEternityUpgrades()
  2278. document.getElementById("totaltickgained").textContent = "You've gained "+player.totalTickGained.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",")+" tickspeed upgrades."
  2279. updateTickSpeed();
  2280. playerInfinityUpgradesOnEternity()
  2281. document.getElementById("eternityPoints2").innerHTML = "You have <span class=\"EPAmount2\">"+shortenDimensions(player.eternityPoints)+"</span> Eternity point"+((player.eternityPoints.eq(1)) ? "." : "s.")
  2282. updateEternityChallenges()
  2283. if (player.eternities <= 1) {
  2284. showTab("dimensions")
  2285. showDimTab("timedimensions")
  2286. loadAutoBuyerSettings()
  2287. }
  2288. Marathon2 = 0;
  2289. }
  2290. }
  2291. }
Add Comment
Please, Sign In to add comment