2020-08-19 02:50:24 +00:00
<!DOCTYPE html>
< head >
2020-09-29 23:47:47 +00:00
< script >
const modInfo = {
name: "The Modding Tree",
id: "modbase",
2020-10-02 02:11:58 +00:00
pointsName: "points",
offlineLimit: 1 // In hours
2020-09-29 23:47:47 +00:00
}
< / script >
2020-09-27 03:42:41 +00:00
< title > The Modding 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-10-03 19:45:47 +00:00
< script type = "text/javascript" src = "js/layerSupport.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-10-03 21:52:51 +00:00
< script type = "text/javascript" src = "js/utils.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 >
2020-09-29 23:47:47 +00:00
2020-08-19 02:50:24 +00:00
< / 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-29 23:47:47 +00:00
< h2 > {{modInfo.name}} {{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-10-04 15:23:38 +00:00
< h3 > v1.2.4< / h3 >
< ul >
< li > Layers are now highlighted if you can buy an upgrade, and a new feature, shouldNotify, lets you make it highlight other ways.< / li >
< li > Fixed bugs with hasUpg, hasChall, hasMilestone, and inChallenge.< / li >
< li > Changed the sample code to use the above functions for convenience.< / li >
< / ul > < br >
2020-10-03 23:50:03 +00:00
< h3 > v1.2.3< / h3 >
< ul >
< li > Added a row component, which displays a list of objects in a row.< / li >
< li > Added a column component, which displays a list of objects in a column (useful within a row).< / li >
< li > Changed blanks to have a customizable width and height.< / li >
< / ul > < br >
2020-10-03 19:45:47 +00:00
< h3 > v1.2: This Changes Everything!< / h3 >
< ul >
< li > Many layer features can now be static values or functions. (This made some notations change, which will break things)< / li >
< li > You can now use the "this" keyword, to make code easier to transfer when making new layers. Also added "this.layer", which is the current layer's name, and works on existing subfeatures (e.g. individual upgrades) as well! Subfeatures also have "this.id".< / li >
< li > Fixed a big save issue. If you use a unique mod id, your save will never conflict with other mods.< / li >
< li > Added a configurable offline time limit in modinfo at the top of index.html. (default 1 hour)< / li >
< li > Added a few minor features, and updated the docs with new information.< / li >
< / ul > < br >
2020-10-03 23:50:03 +00:00
< div class = "link" onclick = "showTab('old-stuff')" > Alpha / Beta< / div > < br >
< / div >
< div v-if = "player.tab=='old-stuff'" class = "col right" >
< button class = "back" onclick = "showTab('changelog')" > ←< / button > < br >
2020-10-01 01:30:50 +00:00
< h3 > v1.1.1< / h3 >
< ul >
< li > You can define hotkeys in layer config.< / li >
< / ul > < br >
2020-10-01 00:25:14 +00:00
< h3 > v1.1: Enhanced Edition< / h3 >
2020-09-10 01:39:08 +00:00
< ul >
2020-10-01 00:25:14 +00:00
< li > Added "Buyables", which can function like Space Buildings or Enhancers.< / li >
< li > Custom CSS can now be used on any component! Make the third argument an object with the CSS parameters.< / li >
< li > Lots of minor good things.< / li >
2020-09-10 01:39:08 +00:00
< / ul > < br >
2020-10-03 23:50:03 +00:00
< h3 > v1.0: Technically Something< / h3 >
2020-09-04 02:25:24 +00:00
< ul >
2020-10-01 00:25:14 +00:00
< li > The first numbered version.< / 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-29 23:47:47 +00:00
< h2 > {{modInfo.name}}< / 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-27 03:42:41 +00:00
The Modding Tree and code refactor by Acamaeda
2020-09-24 15:54:41 +00:00
< 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-10-01 01:30:50 +00:00
< span v-for = "key in hotkeys" v-if = "player[key.layer].unl" > < br > {{key.desc}}< / 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-27 20:25:06 +00:00
< h2 id = "points" > {{format(player.points)}}< / h2 >
2020-09-29 23:47:47 +00:00
< span v-if = "player.points.lt('1e1e6')" > {{modInfo.pointsName}}< / span >
2020-08-19 02:50:24 +00:00
< br > < br > < br > < br > < br >
2020-10-01 02:55:38 +00:00
<!-- *************************** Modify the tree in the table below! *************************** -->
2020-08-19 02:50:24 +00:00
< 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-10-03 19:45:47 +00:00
< div v-if = "player.tab==layer" v-bind:class = "'col right'" v-bind:style = "tmp.style[layer] ? tmp.style[layer] : {}" >
2020-08-19 02:50:24 +00:00
< button class = "back" onclick = "showTab('tree')" > ←< / button > < br > < br > < br >
2020-09-30 01:47:26 +00:00
< div v-if = "!layers[layer].tabFormat" >
< main-display :layer = "layer" > < / main-display >
< prestige-button :layer = "layer" > < / prestige-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 >
< br > < br >
< span v-if = "player[layer].best != undefined" > Your best {{layers[layer].resource}} is {{formatWhole(player[layer].best)}}< br > < / span >
< span v-if = "player[layer].total != undefined" > You have made a total of {{formatWhole(player[layer].total)}} {{layers[layer].resource}}< br > < / span >
< milestones :layer = "layer" > < / milestones >
2020-10-01 00:25:14 +00:00
< buyables :layer = "layer" > < / buyables >
2020-09-30 01:47:26 +00:00
< upgrades :layer = "layer" > < / upgrades >
< challs :layer = "layer" > < / challs >
< br > < br >
< / div >
< div v-if = "layers[layer].tabFormat" >
< div v-for = "data in layers[layer].tabFormat" >
2020-10-03 23:50:03 +00:00
< div v-if = "!Array.isArray(data)" v-bind:is = "data" :layer = "layer" > < / div >
< div v-else-if = "data.length==3" v-bind:style = "(data[2] ? data[2] : {})" v-bind:is = "data[0]" :layer = "layer" :data = "data[1]" > < / div >
< div v-else-if = "data.length==2" v-bind:is = "data[0]" :layer = "layer" :data = "data[1]" >
< / div >
2020-09-30 01:47:26 +00:00
< / divs >
2020-08-19 02:50:24 +00:00
< / div >
< / div >
< / div >
2020-10-03 23:50:03 +00:00
< / body >