2020-08-19 02:50:24 +00:00
<!DOCTYPE html>
< head >
< title > The Prestige Tree< / title >
< link rel = "stylesheet" type = "text/css" href = "style.css" / >
< script src = "https://cdn.jsdelivr.net/npm/vue/dist/vue.js" > < / script >
2020-08-26 14:16:23 +00:00
< script type = "text/javascript" src = "js/break_eternity.js" > < / script >
2020-08-21 19:02:34 +00:00
< script type = "text/javascript" src = "js/temp.js" > < / script >
2020-08-23 19:36:03 +00:00
< script type = "text/javascript" src = "js/saves.js" > < / script >
2020-08-19 02:50:24 +00:00
< script type = "text/javascript" src = "js/game.js" > < / script >
< script type = "text/javascript" src = "js/v.js" > < / script >
< script type = "text/javascript" src = "js/canvas.js" > < / script >
< / head >
< body onload = "load()" >
< div id = "app" >
2020-08-19 22:12:31 +00:00
< div id = "info" v-if = "player.tab=='tree'" onclick = "showTab('info')" > < br > i< / div >
2020-08-19 19:53:14 +00:00
< div class = "vl" > < / div >
2020-08-20 04:55:26 +00:00
< div v-if = "player.tab=='changelog'" class = "col right" >
< button class = "back" onclick = "showTab('tree')" > ←< / button > < br > < br >
2020-08-29 19:45:18 +00:00
< h3 > Beta v1.1 Alpha 12< / h3 >
< ul >
< li > Balanced up to 1e20 Hindrance Spirit, 2e21 Quirks, and 1e72,000 Points< / li >
< / ul > < br >
2020-08-29 18:00:32 +00:00
< h3 > Beta v1.1 Alpha 11< / h3 >
< ul >
< li > Added a new Quirk Milestone< / li >
< li > Balanced up to 1e15 Hindrance Spirit, 1e16 Quirks, and 1e42,500 Points< / li >
< / ul > < br >
2020-08-29 16:43:58 +00:00
< h3 > Beta v1.1 Alpha 10< / h3 >
< ul >
< li > Balanced up to 2e13 Hindrance Spirit & Quirks, and 1e31,000 Points< / li >
< / ul > < br >
2020-08-27 19:12:20 +00:00
< h3 > Beta v1.1 Alpha 9< / h3 >
< ul >
< li > Added a new option< / li >
< li > Balanced up to 2e10 Hindrance Spirit & Quirks, and 1e27,500 Points< / li >
< / ul > < br >
2020-08-27 15:38:26 +00:00
< h3 > Beta v1.1 Alpha 8< / h3 >
< ul >
< li > Several bugfixes< / li >
< li > Balanced up to 1e9 Hindrance Spirit & Quirks, and 1e25,750 Points< / li >
< / ul > < br >
2020-08-26 22:42:19 +00:00
< h3 > Beta v1.1 Alpha 7< / h3 >
2020-08-20 04:55:26 +00:00
< ul >
2020-08-26 22:42:19 +00:00
< li > Reversed the order of the changelog< / li >
< li > Added the fourth Hindrance< / li >
< li > Balanced up to 50,000 Hindrance Spirit & Quirks< / li >
< / ul > < br >
< h3 > Beta v1.1 Alpha 6< / h3 >
2020-08-20 04:55:26 +00:00
< ul >
2020-08-26 22:42:19 +00:00
< li > Various bugfixes< / li >
< li > Added the third Hindrance< / li >
< li > Balanced up to 2,500 Hindrance Spirit & Quirks< / li >
2020-08-20 04:55:26 +00:00
< / ul > < br > < br >
2020-08-26 22:42:19 +00:00
< h3 > Beta v1.1 Alpha 5< / h3 >
2020-08-20 20:37:22 +00:00
< ul >
2020-08-26 22:42:19 +00:00
< li > Add the second Hindrance< / li >
< li > Balanced up to 200 Hindrance Spirit & Quirks< / li >
2020-08-20 20:37:22 +00:00
< / ul > < br > < br >
2020-08-26 22:42:19 +00:00
< h3 > Beta v1.1 Alpha 4< / h3 >
2020-08-21 03:33:13 +00:00
< ul >
2020-08-26 22:42:19 +00:00
< li > Add the first Hindrance< / li >
< li > Implemented some new milestones< / li >
< li > Balanced up to 60 Hindrance Spirit & Quirks< / li >
2020-08-21 03:33:13 +00:00
< / ul > < br > < br >
2020-08-26 22:42:19 +00:00
< h3 > Beta v1.1 Alpha 3< / h3 >
2020-08-21 19:02:34 +00:00
< ul >
2020-08-26 22:42:19 +00:00
< li > Fixed corruption bug< / li >
< li > Implemented some new milestones< / li >
< li > Balanced up to 15 Hindrance Spirit & 15 Quirks< / li >
2020-08-21 19:02:34 +00:00
< / ul > < br > < br >
2020-08-26 22:42:19 +00:00
< h3 > Beta v1.1 Alpha 2< / h3 >
2020-08-22 01:16:23 +00:00
< ul >
2020-08-26 22:42:19 +00:00
< li > Implemented some new milestones< / li >
< li > Balanced up to 5 Hindrance Spirit & 5 Quirks< / li >
2020-08-22 01:16:23 +00:00
< / ul > < br > < br >
2020-08-26 22:42:19 +00:00
< h3 > Beta v1.1 Alpha 1< / h3 >
2020-08-22 03:59:24 +00:00
< ul >
2020-08-26 22:42:19 +00:00
< li > Add the framework for the first two row 4 layers< / li >
< li > Balanced up to the second row 4 reset< / li >
2020-08-22 03:59:24 +00:00
< / ul > < br > < br >
2020-08-26 22:42:19 +00:00
< h3 > Beta v1.01< / h3 >
2020-08-23 19:36:03 +00:00
< ul >
2020-08-26 22:42:19 +00:00
< li > Display Generator Power in the Space tab< / li >
< li > Add a credits page in the info tab< / li >
< li > Implemented a few minor QoL/visual fixes< / li >
2020-08-23 19:36:03 +00:00
< / ul > < br > < br >
2020-08-24 02:01:14 +00:00
< h3 > Beta v1.0< / h3 >
< ul >
< li > Made sure any built-in saves had Auto-Save turned on< / li >
< li > Fixed a visual bug for mobile users< / li >
< li > Added a "time played" display in the info tab< / li >
< li > Implemented a NaN check system< / li >
< / ul > < br > < br >
2020-08-26 22:42:19 +00:00
< h3 > Alpha Build 10< / h3 >
2020-08-25 22:42:43 +00:00
< ul >
2020-08-26 22:42:19 +00:00
< li > Rebalanced the Super-Booster era (now up to 1e9,250 points)< / li >
< li > Implemented a game version variable< / li >
2020-08-25 22:42:43 +00:00
< / ul > < br > < br >
2020-08-26 22:42:19 +00:00
< h3 > Alpha Build 9< / h3 >
2020-08-26 01:45:22 +00:00
< ul >
2020-08-26 22:42:19 +00:00
< li > Fixed a visual bug with the Prestige Tree branches< / li >
< li > Added a hotkey for Super-Boosters< / li >
< li > Added a new Super-Booster milestone< / li >
< li > Fixed a bug with hotkeys< / li >
< li > Balanced up to 1e46,500 points< / li >
< / ul > < br > < br >
< h3 > Alpha Build 8< / h3 >
2020-08-26 03:32:27 +00:00
< ul >
2020-08-26 22:42:19 +00:00
< li > Implemented Super-Boosters< / li >
< li > Balanced up to 1e25,600 points< / li >
< / ul > < br > < br >
< h3 > Alpha Build 7< / h3 >
2020-08-26 14:16:23 +00:00
< ul >
2020-08-26 22:42:19 +00:00
< li > Made the new upgrades from Alpha Build 6 shown at proper times< / li >
< li > Balanced up to 1e4,175 points< / li >
< li > Setup a temp variable system (to prevent lag later on)< / li >
< / ul > < br > < br >
< h3 > Alpha Build 6< / h3 >
2020-08-26 16:26:46 +00:00
< ul >
2020-08-26 22:42:19 +00:00
< li > Made font work for Mac users< / li >
< li > Added 1 new Space & Time milestone each< / li >
< li > Balanced up to 1e3,375 points< / li >
< / ul > < br > < br >
< h3 > Alpha Build 5< / h3 >
2020-08-26 19:08:00 +00:00
< ul >
2020-08-26 22:42:19 +00:00
< li > Balanced up to 1e920 with all prestige tree paths (before unlocking third row 3 layer)< / li >
< / ul > < br > < br >
< h3 > Alpha Build 4< / h3 >
2020-08-26 20:40:54 +00:00
< ul >
2020-08-26 22:42:19 +00:00
< li > Implemented Auto-Boosters & Auto-Generators< / li >
< li > Fixed a balancing issue with a certain prestige tree path (1e660 -> 1e600)< / li >
< li > Added changelog< / li >
< li > Balanced up to 1e700 with all prestige tree paths< / li >
< / ul > < br > < br >
< h3 > Pre-Alpha Build 4< / h3 >
< ul >
< li > Implemented/balanced all row 1 & 2 prestige layers< / li >
< li > Added the options/info menus< / li >
< li > Balanced the row 3 prestige layers up to 1e560 points< / li >
< / ul > < br > < br >
2020-08-25 22:42:43 +00:00
< / div >
< div v-if = "player.tab=='credits'" class = "col right" >
< button class = "back" onclick = "showTab('tree')" > ←< / button > < br > < br > < br > < br > < br >
This game uses < a href = "https://github.com/Patashu/break_eternity.js/tree/master" target = "_blank" > break_eternity.js< / a > by Patashu.< br >
2020-08-27 15:38:26 +00:00
Made by Jacorb< br >
Idea by papyrus (on discord)< br >
2020-08-25 22:42:43 +00:00
Note: If anyone wishes to make a mod of this game, that is perfectly fine with me, just make sure to name it something different (ex: Prestige Tree NG+) and to let me know on < a href = "https://discord.gg/wwQfgPa" target = "_blank" > my discord< / a > .
2020-08-20 04:55:26 +00:00
< / div >
2020-08-19 22:12:31 +00:00
< div v-if = "player.tab=='info'" class = "col right" >
< button class = "back" onclick = "showTab('tree')" > ←< / button > < br > < br > < br > < br > < br >
2020-08-24 02:01:14 +00:00
Time Played: {{ formatTime(player.timePlayed) }}< br > < br > < br >
2020-08-25 22:42:43 +00:00
< div id = "cl" onclick = "showTab('credits')" > Credits< / div > < br >
2020-08-20 04:55:26 +00:00
< div id = "cl" onclick = "showTab('changelog')" > Changelog< / div > < br > < br > < br >
2020-08-19 22:12:31 +00:00
< h3 > Hotkeys< / h3 > < br > < br >
P: Prestige reset< br >
< span v-if = "player.b.unl" > B: Booster reset< / span > < br >
< span v-if = "player.g.unl" > G: Generator reset< / span > < br >
< span v-if = "player.t.unl" > T: Time reset< / span > < br >
< span v-if = "player.e.unl" > E: Enhance reset< / span > < br >
< span v-if = "player.s.unl" > S: Space reset< / span > < br >
2020-08-22 03:59:24 +00:00
< span v-if = "player.sb.unl" > Shift+B: Super-Booster reset< / span > < br >
2020-08-26 01:45:22 +00:00
< span v-if = "player.h.unl" > H: Hindrance reset< / span > < br >
< span v-if = "player.q.unl" > Q: Quirk reset< / span > < br >
2020-08-19 22:12:31 +00:00
< / div >
2020-08-19 19:53:14 +00:00
< div v-if = "player.tab=='options'" class = "col right" >
2020-08-19 02:50:24 +00:00
< button class = "back" onclick = "showTab('tree')" > ←< / button > < br > < br > < br > < br > < br >
< table >
< tr >
< td > < button class = "opt" onclick = "save()" > Save< / button > < / td >
< td > < button class = "opt" onclick = "hardReset()" > HARD RESET< / button > < / td >
< / tr >
< tr >
< td > < button class = "opt" onclick = "exportSave()" > Export< / button > < / td >
< td > < button class = "opt" onclick = "importSave()" > Import< / button > < / td >
< / tr >
< tr >
< td > < button class = "opt" onclick = "toggleOpt('autosave')" > Autosave: {{ player.autosave?"ON":"OFF" }}< / button > < / td >
2020-08-27 19:12:20 +00:00
< td > < button class = "opt" onclick = "adjustMSDisp()" > Show Milestones: {{ player.msDisplay.toUpperCase() }}< / button > < / td >
2020-08-19 02:50:24 +00:00
< / tr >
< / table >
< / div >
2020-08-25 22:42:43 +00:00
< div id = "treeTab" onscroll = "resizeCanvas()" class = "col left" >
2020-08-19 22:20:42 +00:00
< img id = "optionWheel" v-if = "player.tab!='options'" src = "options_wheel.png" onclick = "showTab('options')" > < / img >
< br > You have < h2 > {{format(player.points)}}< / h2 > Points
2020-08-19 02:50:24 +00:00
< br > < br > < br > < br > < br >
< table >
< tr >
2020-08-21 19:02:34 +00:00
< td id = "p" > < button onclick = "showTab('p')" v-bind:tooltip = "(player.points.gte(tmp.layerReqs.p)||player.p.unl) ? (formatWhole(player.p.points)+' prestige points') : ('Reach '+format(tmp.layerReqs.p)+' points to unlock')" v-bind:class = "{ treeNode: true, p: true, locked: (player.points.lt(tmp.layerReqs.p)&&!player.p.unl), can: (player.points.gte(tmp.layerReqs.p)||player.p.unl) }" > P< / button > < / td >
2020-08-19 02:50:24 +00:00
< / tr >
< / table > < table >
< tr >
< td > < button class = "treeNode hidden" > < / button > < / td >
< / tr >
< / table > < table >
< tr >
< td v-if = "player.b.unl||player.g.unl" class = "left" > < br > < br > < img class = "remove" src = "remove.png" onclick = "resetRow(1)" > < / img > < / td >
2020-08-21 19:02:34 +00:00
< td id = "b" v-if = "layerUnl('b')" > < button onclick = "showTab('b')" v-bind:tooltip = "((player.points.gte(tmp.layerReqs.b)||player.b.unl)&&layerUnl('b')) ? (formatWhole(player.b.points)+' boosters') : ('Reach '+format(tmp.layerReqs.b)+' points to unlock')" v-bind:class = "{ treeNode: true, b: true, locked: (player.points.lt(tmp.layerReqs.b)&&!player.b.unl), can: (player.points.gte(tmp.layerReqs.b)||player.b.unl) }" > B< / button > < / td >
< td id = "g" v-if = "layerUnl('g')" > < button onclick = "showTab('g')" v-bind:tooltip = "((player.points.gte(tmp.layerReqs.g)||player.g.unl)&&layerUnl('g')) ? (formatWhole(player.g.points)+' generators') : ('Reach '+format(tmp.layerReqs.g)+' points to unlock')" v-bind:class = "{ treeNode: true, g: true, locked: (player.points.lt(tmp.layerReqs.g)&&!player.g.unl), can: (player.points.gte(tmp.layerReqs.g)||player.g.unl) }" > G< / button > < / td >
2020-08-19 02:50:24 +00:00
< / tr >
< / table > < table >
< tr >
< td > < button class = "treeNode hidden" > < / button > < / td >
< / tr >
< / table > < table >
< tr >
2020-08-22 01:16:23 +00:00
< td v-if = "player.e.unl||player.t.unl||player.s.unl||player.sb.unl" class = "left" > < br > < br > < img class = "remove" src = "remove.png" onclick = "resetRow(2)" > < / img > < / td >
< td id = "sb" v-if = "layerUnl('sb')" > < button onclick = "showTab('sb')" v-bind:tooltip = "((player.b.points.gte(tmp.layerReqs.sb)||player.sb.unl)&&layerUnl('sb')) ? (formatWhole(player.sb.points)+' super-boosters') : ('Reach '+formatWhole(tmp.layerReqs.sb)+' boosters to unlock')" v-bind:class = "{ treeNode: true, sb: true, locked: (player.b.points.lt(tmp.layerReqs.sb)&&!player.sb.unl), can: (player.b.points.gte(tmp.layerReqs.sb)||player.sb.unl) }" > SB< / button > < / td >
2020-08-21 19:02:34 +00:00
< td id = "t" v-if = "layerUnl('t')" > < button onclick = "showTab('t')" v-bind:tooltip = "((player.points.gte(tmp.layerReqs.t)||player.t.unl)&&layerUnl('t')) ? (formatWhole(player.t.points)+' time capsules') : ('Reach '+format(tmp.layerReqs.t)+' points to unlock')" v-bind:class = "{ treeNode: true, t: true, locked: (player.points.lt(tmp.layerReqs.t)&&!player.t.unl), can: (player.points.gte(tmp.layerReqs.t)||player.t.unl) }" > T< / button > < / td >
< td id = "e" v-if = "layerUnl('e')" > < button onclick = "showTab('e')" v-bind:tooltip = "((player.points.gte(tmp.layerReqs.e)||player.e.unl)&&layerUnl('e')) ? (formatWhole(player.e.points)+' enhance points') : ('Reach '+format(tmp.layerReqs.e)+' points to unlock')" v-bind:class = "{ treeNode: true, e: true, locked: (player.points.lt(tmp.layerReqs.e)&&!player.e.unl), can: (player.points.gte(tmp.layerReqs.e)||player.e.unl) }" > E< / button > < / td >
< td id = "s" v-if = "layerUnl('s')" > < button onclick = "showTab('s')" v-bind:tooltip = "((player.points.gte(tmp.layerReqs.s)||player.s.unl)&&layerUnl('s')) ? (formatWhole(player.s.points)+' space energy') : ('Reach '+format(tmp.layerReqs.s)+' points to unlock')" v-bind:class = "{ treeNode: true, s: true, locked: (player.points.lt(tmp.layerReqs.s)&&!player.s.unl), can: (player.points.gte(tmp.layerReqs.s)||player.s.unl) }" > S< / button > < / td >
2020-08-19 02:50:24 +00:00
< / tr >
2020-08-26 01:45:22 +00:00
< / table > < table >
< tr >
< td > < button class = "treeNode hidden" > < / button > < / td >
< / tr >
< / table > < table >
< tr >
< td v-if = "player.h.unl||player.q.unl" class = "left" > < br > < br > < img class = "remove" src = "remove.png" onclick = "resetRow(3)" > < / img > < / td >
< td id = "h" v-if = "layerUnl('h')" > < button onclick = "showTab('h')" v-bind:tooltip = "((player.t.energy.gte(tmp.layerReqs.h)||player.h.unl)&&layerUnl('h')) ? (formatWhole(player.h.points)+' hindrance spirit') : ('Reach '+format(tmp.layerReqs.h)+' time energy to unlock')" v-bind:class = "{ treeNode: true, h: true, locked: (player.t.energy.lt(tmp.layerReqs.h)&&!player.h.unl), can: (player.t.energy.gte(tmp.layerReqs.h)||player.h.unl) }" > H< / button > < / td >
< td id = "q" v-if = "layerUnl('q')" > < button onclick = "showTab('q')" v-bind:tooltip = "((player.g.power.gte(tmp.layerReqs.q)||player.q.unl)&&layerUnl('q')) ? (formatWhole(player.q.points)+' quirks') : ('Reach '+format(tmp.layerReqs.q)+' generator power to unlock')" v-bind:class = "{ treeNode: true, q: true, locked: (player.g.power.lt(tmp.layerReqs.q)&&!player.q.unl), can: (player.g.power.gte(tmp.layerReqs.q)||player.q.unl) }" > Q< / button > < / td >
< / tr >
2020-08-19 02:50:24 +00:00
< / table >
< canvas id = "treeCanvas" class = "canvas" > < / canvas >
< / div >
< div v-for = "layer in LAYERS" >
2020-08-19 19:53:14 +00:00
< div v-if = "player.tab==layer" class = "col right" >
2020-08-19 02:50:24 +00:00
< button class = "back" onclick = "showTab('tree')" > ←< / button > < br > < br > < br >
You have < h2 v-bind:class = "{ [layer+'_txt']: true }" > {{formatWhole(player[layer].points)}}< / h2 > {{LAYER_RES[layer]}}< span v-if = "Object.keys(LAYER_EFFS).includes(layer)" > , {{getLayerEffDesc(layer)}}< / span >
< br > < br >
< div v-if = "layer=='b'" >
2020-08-27 19:12:20 +00:00
< table > < tr > < td v-if = "milestoneShown(player.b.best.gte(8))" v-bind:class = "{ milestone: player.b.best.lt(8)&&player.h.best.lt(1)&&player.q.best.lt(1), milestoneDone: player.b.best.gte(8)||player.h.best.gte(1)||player.q.best.gte(1) }" > 8 Boosters< br > Keep Prestige Upgrades on reset< / td > < / tr >
< tr > < td v-if = "milestoneShown(player.b.best.gte(15))" v-bind:class = "{ milestone: player.b.best.lt(15), milestoneDone: player.b.best.gte(15) }" > 15 Boosters< br > You can buy max Boosters< / td > < / tr > < / table >
2020-08-19 02:50:24 +00:00
< / div >
< div v-if = "layer=='g'" >
2020-08-21 19:02:34 +00:00
You have {{format(player.g.power)}} Generator Power, which multiplies Point gain by {{format(tmp.genPowEff)}}< br > < br >
2020-08-27 19:12:20 +00:00
< table > < tr > < td v-if = "milestoneShown(player.g.best.gte(8)||player.h.best.gte(1)||player.q.best.gte(1))" v-bind:class = "{ milestone: player.g.best.lt(8)&&player.h.best.lt(1)&&player.q.best.lt(1), milestoneDone: player.g.best.gte(8)||player.h.best.gte(1)||player.q.best.gte(1) }" > 8 Generators< br > Keep Prestige Upgrades on reset< / td > < / tr >
< tr > < td v-if = "milestoneShown(player.g.best.gte(10))" v-bind:class = "{ milestone: player.g.best.lt(10), milestoneDone: player.g.best.gte(10) }" > 10 Generators< br > Gain 100% of Prestige Point gain every second< / td > < / tr >
< tr > < td v-if = "milestoneShown(player.g.best.gte(15))" v-bind:class = "{ milestone: player.g.best.lt(15), milestoneDone: player.g.best.gte(15) }" > 15 Generators< br > You can buy max Generators< / td > < / tr > < / table >
2020-08-19 02:50:24 +00:00
< / div >
< div v-if = "layer=='e'" >
2020-08-27 19:12:20 +00:00
< table > < tr > < td v-if = "milestoneShown(player.e.best.gte(2))" v-bind:class = "{ milestone: player.e.best.lt(2), milestoneDone: player.e.best.gte(2) }" > 2 enhance points< br > Keep Booster/Generator milestones on reset< / td > < / tr >
< tr > < td v-if = "milestoneShown(player.e.best.gte(10)||player.h.best.gte(1)||player.q.best.gte(1))" v-bind:class = "{ milestone: player.e.best.lt(10)&&player.h.best.lt(1)&&player.q.best.lt(1), milestoneDone: player.e.best.gte(10)||player.h.best.gte(1)||player.q.best.gte(1) }" > 10 enhance points< br > Keep Prestige Upgrades on reset< / td > < / tr > < / table > < br > < br >
2020-08-21 19:02:34 +00:00
< button v-bind:class = "{ upgBig: true, can: player.e.points.gte(getEnhancerCost()), locked: player.e.points.lt(getEnhancerCost()), e: true }" onclick = "buyEnhancer()" > Buy an Enhancer< br > Cost: {{formatWhole(getEnhancerCost())}} Enhance Points< br > Amount: {{formatWhole(player.e.enhancers)}}< br > Multiplies Prestige Point gain by {{format(tmp.enhEff)}}< br > Adds to base of Booster/Generator effects by {{format(tmp.enhEff2)}}< / button >
2020-08-19 02:50:24 +00:00
< / div >
< div v-if = "layer=='t'" >
2020-08-21 19:02:34 +00:00
You have {{format(player.t.energy)}} Time Energy, which multiplies Point gain & Prestige Point gain by {{format(tmp.timeEff)}}< br > < br >
2020-08-27 19:12:20 +00:00
< table > < tr > < td v-if = "milestoneShown(player.t.best.gte(2))" v-bind:class = "{ milestone: player.t.best.lt(2), milestoneDone: player.t.best.gte(2) }" > 2 time capsules< br > Keep Booster/Generator milestones on reset< / td > < / tr >
< tr > < td v-if = "milestoneShown(player.t.best.gte(3)||player.h.best.gte(1)||player.q.best.gte(1))" v-bind:class = "{ milestone: player.t.best.lt(3)&&player.h.best.lt(1)&&player.q.best.lt(1), milestoneDone: player.t.best.gte(3)||player.h.best.gte(1)||player.q.best.gte(1) }" > 3 time capsules< br > Keep Prestige Upgrades on reset< / td > < / tr >
< tr > < td v-if = "milestoneShown(player.t.best.gte(4))" v-bind:class = "{ milestone: player.t.best.lt(4), milestoneDone: player.t.best.gte(4) }" > 4 time capsules< br > Keep Booster Upgrades on all row 3 resets< / td > < / tr >
< tr > < td v-if = "milestoneShown(player.t.best.gte(5), true)" v-bind:class = "{ milestone: player.t.best.lt(5), milestoneDone: player.t.best.gte(5) }" > 5 time capsules< br > Automatically purchase Boosters < button v-if = "player.t.best.gte(5)" class = "smallUpg can b" onclick = "toggleAuto('b')" > {{player.b.auto?"ON":"OFF"}}< / button > < / td > < / tr >
< tr > < td v-if = "milestoneShown(player.t.best.gte(12))" v-bind:class = "{ milestone: player.t.best.lt(12), milestoneDone: player.t.best.gte(12) }" > 12 time capsules< br > Boosters reset nothing< / td > < / tr >
2020-08-19 19:53:14 +00:00
< / table > < br > < br >
2020-08-19 02:50:24 +00:00
< button v-bind:class = "{ upgBig: true, can: (player.b.points.gte(getExtCapsuleCost())&&player.t.unl), locked: (player.b.points.lt(getExtCapsuleCost())||!player.t.unl), t: true }" onclick = "buyExtCapsule()" > Buy an extra Time Capsule< br > Cost: {{formatWhole(getExtCapsuleCost())}} Boosters< br > Amount: {{formatWhole(player.t.extCapsules)}}< / button >
< / div >
< div v-if = "layer=='s'" >
2020-08-25 22:42:43 +00:00
You have {{formatWhole(getSpace())}} Space remaining for Space Buildings.< br > < br >
2020-08-27 19:12:20 +00:00
< table > < tr > < td v-if = "milestoneShown(player.s.best.gte(2))" v-bind:class = "{ milestone: player.s.best.lt(2), milestoneDone: player.s.best.gte(2) }" > 2 space energy< br > Keep Booster/Generator milestones on reset< / td > < / tr >
< tr > < td v-if = "milestoneShown(player.s.best.gte(3)||player.h.best.gte(1)||player.h.best.gte(1))" v-bind:class = "{ milestone: player.s.best.lt(3)&&player.h.best.lt(1)&&player.q.best.lt(1), milestoneDone: player.s.best.gte(3)||player.h.best.gte(1)||player.q.best.gte(1) }" > 3 space energy< br > Keep Prestige Upgrades on reset< / td > < / tr >
< tr > < td v-if = "milestoneShown(player.s.best.gte(4))" v-bind:class = "{ milestone: player.s.best.lt(4), milestoneDone: player.s.best.gte(4) }" > 4 space energy< br > Keep Generator Upgrades on all row 3 resets< / td > < / tr >
< tr > < td v-if = "milestoneShown(player.s.best.gte(5), true)" v-bind:class = "{ milestone: player.s.best.lt(5), milestoneDone: player.s.best.gte(5) }" > 5 space energy< br > Automatically purchase Generators < button v-if = "player.s.best.gte(5)" class = "smallUpg can g" onclick = "toggleAuto('g')" > {{player.g.auto?"ON":"OFF"}}< / button > < / td > < / tr >
< tr > < td v-if = "milestoneShown(player.s.best.gte(12))" v-bind:class = "{ milestone: player.s.best.lt(12), milestoneDone: player.s.best.gte(12) }" > 12 space energy< br > Generators reset nothing< / td > < / tr >
2020-08-19 22:12:31 +00:00
< / table > < br > < br >
2020-08-25 22:42:43 +00:00
You have {{ format(player.g.power) }} Generator Power< br > < br >
2020-08-19 02:50:24 +00:00
< button onclick = "respecSpaceBuildings()" v-bind:class = "{ longUpg: true, can: player.s.unl, locked: !player.s.unl }" > Respec Space Buildings< / button > < br >
2020-08-24 02:01:14 +00:00
< div class = "upgRow" >
< div v-for = "id in 5" >
2020-08-29 18:00:32 +00:00
< button v-if = "tmp.sbUnl>=id" v-bind:class = "{ upg: true, can: (player.g.power.gte(getSpaceBuildingCost(id))&&player.s.unl&&getSpace().gte(1)), locked: (!(player.g.power.gte(getSpaceBuildingCost(id))&&player.s.unl&&getSpace().gte(1))), s: true }" v-on:click = "buyBuilding(id)" > Building {{id}}< br > Level: {{formatWhole(player.s.buildings[id])}}< br > Cost: {{format(getSpaceBuildingCost(id))}} Generator Power< br > Effect: {{getSpaceBuildingEffDesc(id)}}< / button > < br > < br >
< button v-if = "tmp.sbUnl>=id&&player.q.best.gte(2500)" v-bind:class = "{ longUpg: true, can: player.s.buildings[id].gte(1), locked: player.s.buildings[id].lt(1) }" v-on:click = "destroyBuilding(id)" > Destroy One< / button > < br >
< button v-if = "tmp.sbUnl>=id&&player.q.best.gte(2500)" v-bind:class = "{ longUpg: true, can: player.s.buildings[id].gte(1), locked: player.s.buildings[id].lt(1) }" v-on:click = "destroyBuilding(id, true)" > Destroy All< / button >
2020-08-24 02:01:14 +00:00
< / div >
< / div >
2020-08-19 02:50:24 +00:00
< / div >
2020-08-22 01:16:23 +00:00
< div v-if = "layer=='sb'" >
2020-08-27 19:12:20 +00:00
< table > < tr > < td v-if = "milestoneShown(player.sb.best.gte(3)||player.h.best.gte(1)||player.q.best.gte(1))" v-bind:class = "{ milestone: player.sb.best.lt(3)&&player.h.best.lt(1)&&player.q.best.lt(1), milestoneDone: player.sb.best.gte(3)||player.h.best.gte(1)||player.q.best.gte(1) }" > 3 Super-Boosters< br > Keep Prestige Upgrades on reset< / td > < / tr >
< tr > < td v-if = "milestoneShown(player.sb.best.gte(4))" v-bind:class = "{ milestone: player.sb.best.lt(4), milestoneDone: player.sb.best.gte(4) }" > 4 Super-Boosters< br > Keep Booster/Generator milestones on reset< / td > < / tr > < / table >
2020-08-22 01:16:23 +00:00
< / div >
2020-08-26 01:45:22 +00:00
< div v-if = "layer=='h'" >
2020-08-27 19:12:20 +00:00
< table > < tr > < td v-if = "milestoneShown(player.h.best.gte(1))" v-bind:class = "{ milestone: player.h.best.lt(1), milestoneDone: player.h.best.gte(1) }" > 1 Hindrance Spirit< br > Keep Prestige Upgrades on all previous resets, and gain 100x more Enhance Points< / td > < / tr >
< tr > < td v-if = "milestoneShown(player.h.best.gte(2))" v-bind:class = "{ milestone: player.h.best.lt(2), milestoneDone: player.h.best.gte(2) }" > 2 Hindrance Spirit< br > Keep all third row milestones on all fourth row resets, and start with your best-ever Space< / td > < / tr >
< tr > < td v-if = "milestoneShown(player.h.best.gte(4))" v-bind:class = "{ milestone: player.h.best.lt(4), milestoneDone: player.h.best.gte(4) }" > 4 Hindrance Spirit< br > Keep Time, Enhance, and Space Upgrades on all fourth row resets< / td > < / tr >
< tr > < td v-if = "milestoneShown(player.h.best.gte(5), true)" v-bind:class = "{ milestone: player.h.best.lt(5), milestoneDone: player.h.best.gte(5) }" > 5 Hindrance Spirit< br > Automatically purchase Extra Time Capsules < button v-if = "player.h.best.gte(5)" class = "smallUpg can t" onclick = "toggleAuto('t', 'Cap')" > {{player.t.autoCap?"ON":"OFF"}}< / button > < / td > < / tr >
< tr > < td v-if = "milestoneShown(player.h.best.gte(10))" v-bind:class = "{ milestone: player.h.best.lt(10), milestoneDone: player.h.best.gte(10) }" > 10 Hindrance Spirit< br > Keep Prestige & Super-Booster Upgrades on all fourth row resets< / td > < / tr >
< tr > < td v-if = "milestoneShown(player.h.best.gte(15), true)" v-bind:class = "{ milestone: player.h.best.lt(15), milestoneDone: player.h.best.gte(15) }" > 15 Hindrance Spirit< br > Automatically purchase Super-Boosters < button v-if = "player.h.best.gte(15)" class = "smallUpg can sb" onclick = "toggleAuto('sb')" > {{player.sb.auto?"ON":"OFF"}}< / button > < / td > < / tr >
< tr > < td v-if = "milestoneShown(player.h.best.gte(25))" v-bind:class = "{ milestone: player.h.best.lt(25), milestoneDone: player.h.best.gte(25) }" > 25 Hindrance Spirit< br > Time resets reset nothing< / td > < / tr >
< tr > < td v-if = "milestoneShown(player.h.best.gte(2500))" v-bind:class = "{ milestone: player.h.best.lt(2500), milestoneDone: player.h.best.gte(2500) }" > 2,500 Hindrance Spirit< br > Super-Boosters reset nothing< / td > < / tr >
2020-08-26 01:45:22 +00:00
< / table >
< / div >
< div v-if = "layer=='q'" >
You have {{format(player.q.energy)}} Quirk Energy (generated by Quirk Layers), which multiplies Point & Generator Power gain by {{format(tmp.quirkEff)}}< br > < br >
2020-08-27 19:12:20 +00:00
< table > < tr > < td v-if = "milestoneShown(player.q.best.gte(1))" v-bind:class = "{ milestone: player.q.best.lt(1), milestoneDone: player.q.best.gte(1) }" > 1 Quirk< br > Keep Prestige Upgrades on all previous resets, and gain 100x more Enhance Points< / td > < / tr >
< tr > < td v-if = "milestoneShown(player.q.best.gte(2))" v-bind:class = "{ milestone: player.q.best.lt(2), milestoneDone: player.q.best.gte(2) }" > 2 Quirks< br > You can buy max Time Capsules & Space Energy< / td > < / tr >
< tr > < td v-if = "milestoneShown(player.q.best.gte(4))" v-bind:class = "{ milestone: player.q.best.lt(4), milestoneDone: player.q.best.gte(4) }" > 4 Quirks< br > Keep Space Buildings on all fourth row resets< / td > < / tr >
< tr > < td v-if = "milestoneShown(player.q.best.gte(5), true)" v-bind:class = "{ milestone: player.q.best.lt(5), milestoneDone: player.q.best.gte(5) }" > 5 Quirks< br > Automatically purchase Enhancers < button v-if = "player.q.best.gte(5)" class = "smallUpg can e" onclick = "toggleAuto('e')" > {{player.e.auto?"ON":"OFF"}}< / button > < / td > < / tr >
< tr > < td v-if = "milestoneShown(player.q.best.gte(10), true)" v-bind:class = "{ milestone: player.q.best.lt(10), milestoneDone: player.q.best.gte(10) }" > 10 Quirks< br > Automatically purchase Time Capsules & Space Energy< br > < button v-if = "player.q.best.gte(10)" class = "smallUpg can t" onclick = "toggleAuto('t')" > {{player.t.auto?"ON":"OFF"}}< / button > < button v-if = "player.q.best.gte(10)" class = "smallUpg can s" onclick = "toggleAuto('s')" > {{player.s.auto?"ON":"OFF"}}< / button > < / td > < / tr >
< tr > < td v-if = "milestoneShown(player.q.best.gte(15))" v-bind:class = "{ milestone: player.q.best.lt(15), milestoneDone: player.q.best.gte(15) }" > 15 Quirks< br > Gain 100% of Enhance Point gain every second< / td > < / tr >
< tr > < td v-if = "milestoneShown(player.q.best.gte(25))" v-bind:class = "{ milestone: player.q.best.lt(25), milestoneDone: player.q.best.gte(25) }" > 25 Quirks< br > Space resets reset nothing< / td > < / tr >
2020-08-29 18:00:32 +00:00
< tr > < td v-if = "milestoneShown(player.q.best.gte(2500))" v-bind:class = "{ milestone: player.q.best.lt(2500), milestoneDone: player.q.best.gte(2500) }" > 2,500 Quirks< br > You can destroy individual Space Buildings< / td > < / tr >
2020-08-26 01:45:22 +00:00
< / table > < br > < br >
< button v-bind:class = "{ upgBig: true, can: player.q.points.gte(getQuirkLayerCost()), locked: player.q.points.lt(getQuirkLayerCost()), q: true }" onclick = "buyQuirkLayer()" > Increment your Quirk Layer< br > Cost: {{formatWhole(getQuirkLayerCost())}} Quirks< br > Layers: {{formatWhole(player.q.layers)}}< / button >
< / div >
2020-08-19 02:50:24 +00:00
< br > < br > < br >
2020-08-25 22:42:43 +00:00
< button v-if = "LAYER_TYPE[layer]=='normal'" v-bind:class = "{ [layer]: true, reset: true, locked: tmp.layerAmt[layer].lt(tmp.layerReqs[layer]), can: tmp.layerAmt[layer].gte(tmp.layerReqs[layer]) }" v-on:click = "doReset(layer)" > +{{formatWhole(tmp.resetGain[layer])}} {{LAYER_RES[layer]}}< br > Next at {{ (LAYER_RES_CEIL.includes(layer) ? formatWhole(tmp.nextAt[layer]) : format(tmp.nextAt[layer])) }} {{ LAYER_AMT_NAMES[layer] }}< / button >
< button v-if = "LAYER_TYPE[layer]=='static'" v-bind:class = "{ [layer]: true, reset: true, locked: tmp.layerAmt[layer].lt(tmp.nextAt[layer]), can: tmp.layerAmt[layer].gte(tmp.nextAt[layer]) }" v-on:click = "doReset(layer)" > +{{formatWhole(tmp.resetGain[layer])}} {{LAYER_RES[layer]}}< br > Req: {{(LAYER_RES_CEIL.includes(layer) ? formatWhole(tmp.nextAt[layer]) : format(tmp.nextAt[layer]))}} {{ LAYER_AMT_NAMES[layer] }}< / button >
2020-08-19 02:50:24 +00:00
< br > < br > < br >
2020-08-24 02:01:14 +00:00
< div class = "upgTable" >
< div v-for = "row in LAYER_UPGS[layer].rows" class = "upgRow" >
< div v-for = "col in LAYER_UPGS[layer].cols" > < button v-if = "LAYER_UPGS[layer][row*10+col].unl()" v-on:click = "buyUpg(layer, row*10+col)" v-bind:class = "{ [layer]: true, upg: true, bought: player[layer].upgrades.includes(row*10+col), locked: (player[layer].points.lt(LAYER_UPGS[layer][row*10+col].cost)&&!player[layer].upgrades.includes(row*10+col)), can: (player[layer].points.gte(LAYER_UPGS[layer][row*10+col].cost)&&!player[layer].upgrades.includes(row*10+col)) }" > {{ LAYER_UPGS[layer][row*10+col].desc }}< br > Cost: {{ formatWhole(LAYER_UPGS[layer][row*10+col].cost) }} {{LAYER_RES[layer]}}< span v-if = "LAYER_UPGS[layer][row*10+col].currently" > < br > Currently: {{LAYER_UPGS[layer][row*10+col].effDisp(LAYER_UPGS[layer][row*10+col].currently())}}< / span > < / button > < / div >
< / div >
< / div >
2020-08-26 16:26:46 +00:00
< br > < br >
< div v-if = "layer=='h'" class = "upgTable" >
< div v-for = "row in H_CHALLS.rows" class = "upgRow" >
< div v-for = "col in H_CHALLS.cols" >
2020-08-27 15:38:26 +00:00
< div v-if = "H_CHALLS[row*10+col].unl()" v-bind:class = "{hChall: true, done: player.h.challs.includes(row*10+col), canComplete: (player.points.gte(H_CHALLS[row*10+col].goal)&&tmp.hcActive[row*10+col]&&!player.h.challs.includes(row*10+col))}" >
2020-08-26 16:26:46 +00:00
< br > < h3 > {{H_CHALLS[row*10+col].name}}< / h3 > < br > < br >
2020-08-26 19:08:00 +00:00
< button class = "longUpg can h" v-on:click = "startHindrance(row*10+col)" > {{tmp.hcActive[row*10+col]?(player.points.gte(H_CHALLS[row*10+col].goal)?"Finish":"Exit Early"):(player.h.challs.includes(row*10+col)?"Completed":"Start")}}< / button > < br > < br >
2020-08-26 16:26:46 +00:00
{{H_CHALLS[row*10+col].desc}}< br >
Goal: {{format(H_CHALLS[row*10+col].goal)}} Points< br >
Reward: {{H_CHALLS[row*10+col].reward}}< br >
2020-08-26 19:08:00 +00:00
< span v-if = "H_CHALLS[row*10+col].effDisp!==undefined" > Currently: {{H_CHALLS[row*10+col].effDisp(H_CHALLS[row*10+col].currently())}}< / span >
2020-08-26 16:26:46 +00:00
< / div >
< / div >
< / div >
< / div >
< br > < br >
2020-08-19 02:50:24 +00:00
< / div >
< / div >
< / div >
< / body >