2020-08-19 02:50:24 +00:00
<!DOCTYPE html>
< head >
2020-09-24 15:54:41 +00:00
< title > The Candy Tree< / title >
2020-08-19 02:50:24 +00:00
< link rel = "stylesheet" type = "text/css" href = "style.css" / >
2020-09-08 23:22:22 +00:00
< link href = "https://fonts.googleapis.com/css?family=Inconsolata" rel = "stylesheet" >
2020-09-10 01:28:47 +00:00
< script src = "https://cdn.jsdelivr.net/npm/vue@2.6.12" > < / script >
2020-08-26 14:16:23 +00:00
< script type = "text/javascript" src = "js/break_eternity.js" > < / script >
2020-09-24 15:54:41 +00:00
< script type = "text/javascript" src = "js/layers.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-09-10 01:46:36 +00:00
< div class = "vl" v-if = "player.tab!='tree'&&player.tab!='gameEnded'" > < / div >
2020-09-10 01:28:47 +00:00
< div v-if = "player.tab=='gameEnded'" class = "fullWidth" >
2020-09-14 19:26:10 +00:00
< br >
2020-09-24 15:54:41 +00:00
< h2 > The Candy Tree {{VERSION.withoutName}}< / h2 > < br > < br >
2020-09-14 19:26:10 +00:00
< h3 > Congratulations! You have reached the end and beaten this game, but for now...< / h3 > < br >
< h3 > Please check the Discord to see there are new content updates!< / h3 > < br > < br >
< div v-if = "!player.timePlayedReset" > It took you {{formatTime(player.timePlayed)}} to beat the game.< / div >
< div v-if = "player.timePlayedReset" > Make sure that you record the time in your stream or else your speedrun won't count!< / div >
< br >
2020-09-10 01:39:08 +00:00
< button class = "longUpg can" onclick = "hardReset(true)" > Play Again< / button > < button class = "longUpg can" onclick = "keepGoing()" > Keep Going< / button >
2020-09-14 19:26:10 +00:00
< br > < br > < br >
2020-09-24 15:54:41 +00:00
< a class = "link" href = "http://discord.gg/wwQfgPa" target = "_blank" > Main Prestige Tree Discord< / a > < br >
2020-09-14 19:26:10 +00:00
< br > < br >
If you would like to speedrun this, press Play Again and record your attempt, then submit on the Discord Server in the channel #speedrun-submissions.
< br > < br > < br >
< h1 > Oh, you are still reading this?< / h1 >
< br >
2020-09-10 01:28:47 +00:00
< / div >
2020-08-20 04:55:26 +00:00
< div v-if = "player.tab=='changelog'" class = "col right" >
2020-09-11 02:15:05 +00:00
< button class = "back" onclick = "showTab('tree')" > ←< / button > < br >
2020-09-24 15:54:41 +00:00
< h3 > v0.0.1: Technically something< / h3 >
2020-09-10 01:39:08 +00:00
< ul >
2020-09-24 15:54:41 +00:00
< li > There is a game, but not the right game.< / li >
2020-09-10 01:39:08 +00:00
< / ul > < br >
2020-09-24 15:54:41 +00:00
< div class = "link" onclick = "showTab('Old Stuff')" > Alpha / Beta< / div > < br >
2020-09-07 02:33:31 +00:00
< / div >
< div v-if = "player.tab=='changelog_beta'" class = "col right" >
< button class = "back" onclick = "showTab('changelog')" > ←< / button > < br >
2020-09-24 15:54:41 +00:00
< h3 > v0.0 Literally nothing< / h3 >
2020-09-04 02:25:24 +00:00
< ul >
2020-09-24 15:54:41 +00:00
< li > Added nothing< / li >
2020-09-04 02:25:24 +00:00
< / ul > < br >
2020-09-24 15:54:41 +00:00
2020-08-25 22:42:43 +00:00
< / div >
2020-08-19 22:12:31 +00:00
< div v-if = "player.tab=='info'" class = "col right" >
2020-09-07 02:33:31 +00:00
< button class = "back" onclick = "showTab('tree')" > ←< / button > < br >
2020-09-24 15:54:41 +00:00
< h2 > The Candy Tree< / h2 >
2020-09-07 02:33:31 +00:00
< br >
2020-09-14 19:26:10 +00:00
< h3 > {{VERSION.withName}}< / h3 >
2020-09-07 02:33:31 +00:00
< br >
2020-09-24 15:54:41 +00:00
The Candy Tree and code refactor by Acamaeda
< br >
The Prestige Tree made by Jacorb and Aarex
2020-09-07 02:33:31 +00:00
< br >
2020-09-24 15:54:41 +00:00
Original idea by papyrus (on discord)
2020-09-07 02:33:31 +00:00
< br > < br >
< div class = "link" onclick = "showTab('changelog')" > Changelog< / div > < br >
2020-09-24 15:54:41 +00:00
< a class = "link" href = "http://discord.gg/wwQfgPa" target = "_blank" > Main Prestige Tree server< / a > < br >
2020-09-07 02:33:31 +00:00
< br >
Note by Jacorb: 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 > .
< br > < br >
Time Played: {{ formatTime(player.timePlayed) }}< br > < br >
< h3 > Hotkeys< / h3 > < br >
2020-09-24 15:54:41 +00:00
< span v-if = "player.c.unl" > < br > C: Reset candies for lollipops.< / span >
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-09-07 02:33:31 +00:00
< button class = "back" onclick = "showTab('tree')" > ←< / button > < br >
2020-08-19 02:50:24 +00:00
< table >
< tr >
< td > < button class = "opt" onclick = "save()" > Save< / button > < / td >
2020-09-07 14:16:04 +00:00
< td > < button class = "opt" onclick = "toggleOpt('autosave')" > Autosave: {{ player.autosave?"ON":"OFF" }}< / button > < / td >
2020-08-19 02:50:24 +00:00
< td > < button class = "opt" onclick = "hardReset()" > HARD RESET< / button > < / td >
< / tr >
< tr >
2020-09-03 21:59:23 +00:00
< td > < button class = "opt" onclick = "exportSave()" > Export to clipboard< / button > < / td >
2020-08-19 02:50:24 +00:00
< td > < button class = "opt" onclick = "importSave()" > Import< / button > < / td >
2020-09-07 14:16:04 +00:00
< td > < button class = "opt" onclick = "toggleOpt('offlineProd')" > Offline Prod: {{ player.offlineProd?"ON":"OFF" }}< / button > < / td >
2020-08-19 02:50:24 +00:00
< / tr >
< tr >
2020-09-14 19:26:10 +00:00
< td > < button class = "opt" onclick = "switchTheme()" > Theme: {{ getThemeName() }}< / button > < / td >
2020-08-27 19:12:20 +00:00
< td > < button class = "opt" onclick = "adjustMSDisp()" > Show Milestones: {{ player.msDisplay.toUpperCase() }}< / button > < / td >
2020-09-07 14:16:04 +00:00
< td > < button class = "opt" onclick = "toggleOpt('hqTree')" > High-Quality Tree: {{ player.hqTree?"ON":"OFF" }}< / button > < / td >
2020-08-19 02:50:24 +00:00
< / tr >
< / table >
< / div >
2020-09-11 02:15:05 +00:00
< div id = "treeTab" v-if = "player.tab!='gameEnded'" onscroll = "resizeCanvas()" v-bind:class = "{ fullWidth: player.tab == 'tree', col: player.tab != 'tree', left: player.tab != 'tree'}" >
2020-09-14 19:26:10 +00:00
< div id = "version" onclick = "showTab('changelog')" > {{VERSION.withoutName}}< / div >
2020-08-19 22:20:42 +00:00
< img id = "optionWheel" v-if = "player.tab!='options'" src = "options_wheel.png" onclick = "showTab('options')" > < / img >
2020-09-02 02:30:37 +00:00
< div id = "info" v-if = "player.tab!='info'" onclick = "showTab('info')" > < br > i< / div >
2020-09-14 19:26:10 +00:00
< img id = "discord" onclick = "window.open('https://discord.gg/wwQfgPa','mywindow')" src = "discord.png" target = "_blank" > < / img >
< span v-if = "player.devSpeed && player.devSpeed != 1" >
< br > Dev Speed: {{format(player.devSpeed)}}x< br >
< / span >
2020-09-15 19:27:33 +00:00
< span v-if = "player.offTime !== undefined" >
< br > Offline Time: {{formatTime(player.offTime.remain)}}< br >
2020-09-01 00:39:33 +00:00
< / span >
2020-09-24 15:54:41 +00:00
< span v-if = "false && !player.keepGoing" >
2020-09-14 19:26:10 +00:00
< br > Reach {{formatWhole(ENDGAME)}} to beat the game!< br >
< / span >
2020-09-11 02:15:05 +00:00
< br >
< span v-if = "player.points.lt('1e1000')" > You have < / span >
2020-09-24 15:54:41 +00:00
< h2 id = "candies" > {{format(player.points)}}< / h2 >
< span v-if = "player.points.lt('1e1e6')" > candies< / span >
2020-08-19 02:50:24 +00:00
< br > < br > < br > < br > < br >
< table >
2020-09-24 15:54:41 +00:00
< td > < layer-node layer = 'c' abb = 'C' > < / layer-node > < / td >
2020-08-19 02:50:24 +00:00
< / table > < table >
2020-09-07 02:33:31 +00:00
< td > < button class = "treeNode hidden" > < / button > < / td >
2020-08-19 02:50:24 +00:00
< / table > < table >
2020-09-24 15:54:41 +00:00
< td v-if = "player.tab=='tree'&&(player.c.unl||player.c.unl)" class = "left" > < br > < br > < img class = "remove" src = "remove.png" onclick = "resetRow(1)" > < / img > < / td >
< td > < layer-node layer = 'f' abb = 'F' > < / layer-node > < / td >
2020-08-26 01:45:22 +00:00
< / table > < table >
2020-09-07 02:33:31 +00:00
< td > < button class = "treeNode hidden" > < / button > < / td >
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 >
2020-09-24 15:54:41 +00:00
< span v-if = "player[layer].points.lt('1e1000')" > You have < / span > < h2 v-bind:style = "{'color': layers[layer].color, 'text-shadow': '0px 0px 10px' + layers[layer].color}" > {{formatWhole(player[layer].points)}}< / h2 > {{layers[layer].resource}}< span v-if = "layers[layer].effects != undefined" > , {{layers[layer].effectDescription()}}< / span >
2020-08-19 02:50:24 +00:00
< br > < br >
2020-09-24 15:54:41 +00:00
< button v-if = "layers[layer].type=='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-bind:style = "{'background-color': layers[layer].color}" v-on:click = "doReset(layer)" > < span v-if = "player[layer].points.lt(1e3)" > Reset for < / span > +< b > {{formatWhole(tmp.resetGain[layer])}}< / b > {{layers[layer].resource}}< span v-if = "tmp.resetGain[layer].lt(100) && player[layer].points.lt(1e3)" > < br > < br > Next at {{ (layers[layer].resCeil ? formatWhole(tmp.nextAt[layer]) : format(tmp.nextAt[layer])) }} {{ layers[layer].baseResource }}< / span > < / button >
< button v-if = "layers[layer].type=='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-bind:style = "{'background-color': layers[layer].color}" v-on:click = "doReset(layer)" > < span v-if = "player[layer].points.lt(10)" > Reset for < / span > +< b > {{formatWhole(tmp.resetGain[layer])}}< / b > {{layers[layer].resource}}< br > < br > < span v-if = "player[layer].points.lt(10)" > Req: {{formatWhole(tmp.layerAmt[layer])}} / < / span > {{(layers[layer].resCeil ? formatWhole(tmp.nextAt[layer]) : format(tmp.nextAt[layer]))}} {{ layers[layer].baseResource }}< / button >
< span v-if = "layers[layer].type=='normal' && tmp.resetGain[layer].lt(100) && player[layer].points.lt(1e3)" > < br > You have {{formatWhole(tmp.layerAmt[layer])}} {{layers[layer].baseResource}}< / span >
2020-09-09 22:14:05 +00:00
< br > < br >
2020-09-24 15:54:41 +00:00
< span v-if = "layer!='c'" > Your best {{layers[layer].resource}} is {{formatWhole(player[layer].best)}}< br > < / span >
< span v-if = "player[layer].total" > You have made a total of {{formatWhole(player[layer].total)}} {{layers[layer].resource}}< br > < / span >
2020-09-24 21:46:57 +00:00
< div v-if = "layers[layer].milestones" >
2020-09-14 02:41:42 +00:00
< table >
2020-09-24 21:46:57 +00:00
< tr v-for = "id in Object.keys(layers[layer].milestones)" >
< div > < td v-if = "milestoneShown(layer, id)" v-bind:class = "{milestone: !player[layer].milestones.includes(id), milestoneDone: player[layer].milestones.includes(id)}" > < h3 > {{layers[layer].milestones[id].requirementDesc}}< / h3 > < br > {{layers[layer].milestones[id].effectDesc}}< br > < span v-if = "(layers[layer].milestones[id].toggles)&&(player[layer].milestones.includes(id))" v-for = "toggle in layers[layer].milestones[id].toggles" > < button class = "smallUpg can" v-bind:style = "{'background-color': layers[toggle[0]].color}" v-on:click = "toggleAuto(toggle)" > {{player[toggle[0]][toggle[1]]?"ON":"OFF"}}< / button > < / span > < / td > < / tr >
< / tr >
2020-09-14 02:41:42 +00:00
< / table >
< / div >
2020-09-09 22:14:05 +00:00
< br > < br >
2020-09-24 15:54:41 +00:00
< div v-if = "layers[layer].upgrades != undefined" class = "upgTable" >
< div v-for = "row in layers[layer].upgrades.rows" class = "upgRow" >
< div v-for = "col in layers[layer].upgrades.cols" class = "upgAlign" >
< button v-if = "layers[layer].upgrades[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: (!(canAffordUpg(layer, row*10+col))&&!player[layer].upgrades.includes(row*10+col)), can: (canAffordUpg(layer, row*10+col)&&!player[layer].upgrades.includes(row*10+col))}" v-bind:style = "{'background-color': layers[layer].color}" > {{ layers[layer].upgrades[row*10+col].desc }}< span v-if = "layers[layer].upgrades[row*10+col].effect" > < br > Currently: {{layers[layer].upgrades[row*10+col].effDisp(layers[layer].upgrades[row*10+col].effect())}}< / span > < br > < br > Cost: {{ formatWhole(layers[layer].upgrades[row*10+col].cost) }} {{(layers[layer].upgrades[row*10+col].currencyDisplayName ? layers[layer].upgrades[row*10+col].currencyDisplayName : layers[layer].resource)}}< / button >
2020-09-07 14:16:04 +00:00
< / div >
2020-08-24 02:01:14 +00:00
< / div >
< / div >
2020-09-24 15:54:41 +00:00
< div v-if = "layers[layer].challs" class = "upgTable" >
< div v-for = "row in layers[layer].challs.rows" class = "upgRow" >
< div v-for = "col in layers[layer].challs.cols" >
< div v-if = "layers[layer].challs[row*10+col].unl()" v-bind:class = "{hChall: true, done: player[layer].challs.includes(row*10+col), canComplete: (player.points.gte(layers[layer].challs[row*10+col].goal)&&tmp.challActive[layer][row*10+col]&&!player[layer].challs.includes(row*10+col))}" >
< br > < h3 > {{layers[layer].challs[row*10+col].name}}< / h3 > < br > < br >
< button v-bind:class = "{ longUpg: true, can: true, [layer]: true }" v-on:click = "startChall(layer, row*10+col)" > {{player[layer].active==(row*10+col)?(player.points.gte(layers[layer].challs[row*10+col].goal)?"Finish":"Exit Early"):(player[layer].challs.includes(row*10+col)?"Completed":"Start")}}< / button > < br > < br >
{{layers[layer].challs[row*10+col].desc}}< br >
Goal: {{format(layers[layer].challs[row*10+col].goal)}} Points< br >
Reward: {{layers[layer].challs[row*10+col].reward}}< br >
< span v-if = "layers[layer].challs[row*10+col].effDisp!==undefined" > Currently: {{layers[layer].challs[row*10+col].effDisp(layers[layer].challs[row*10+col].effect())}}< / 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 >
2020-09-13 02:38:32 +00:00
< script >
// Mod Identifier, for ~~btpt~~ any userscripts. Consider adding this to your mod!
const modInfo = {
2020-09-24 15:54:41 +00:00
name: "The Candy Tree",
id: "crossover"
2020-09-13 02:38:32 +00:00
}
< / script >
2020-08-19 02:50:24 +00:00
< / body >