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-10-05 01:36:03 +00:00
< div v-if = "false" id = "loadingSection" class = "fullWidth" >
< h1 > Loading... (If this takes too long it means there was a serious error!)< / h1 >
< / div >
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-10-05 01:36:03 +00:00
< a class = "link" href = "https://discord.gg/F3xveHV" target = "_blank" > The Modding Tree Discord< / a > < 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-10-07 21:15:25 +00:00
< button class = "back" onclick = "showTab('tree')" > ←< / button > < br > < br > < br >
2020-10-08 23:42:26 +00:00
< h3 > v1.3.5< / h3 >
< ul >
< li > The system now handles convertToDecimal for everything automatically!< / li >
< / ul >
< h3 > v1.3.4< / h3 >
< ul >
< li > Added "midsection" feature to add things to a tab's layout while still keeping the standard layout.< / li >
< li > Fix for being able to buy more buyables than you should.< / li >
< / ul > < br >
2020-10-07 22:41:03 +00:00
< h3 > v1.3.3< / h3 >
2020-10-07 21:15:25 +00:00
< ul >
< li > Fix for the "order of operations" issue in temp.< / li >
< / ul > < br >
2020-10-07 20:41:45 +00:00
< h3 > v1.3.1< / h3 >
< ul >
< li > Added custom CSS and tooltips for Layer Nodes.< / li >
< li > Added custom CSS for upgrades, buyables, milestones, and challenges, both individually and layer-wide.< / li >
< li > You can now use HTML in most display text!< / li >
< li > You can now make milestones unlockable and not display immediately.< / li >
< li > Fixed importing saves, and issue with upgrades not appearing, and probably more.< / li >
< li > Optional "name" layer feature, used in confirmation messages.< / li >
< li > < / li >
< / ul > < br >
2020-10-07 04:57:41 +00:00
< h3 > v1.3: Tabception... ception!< / h3 >
2020-10-03 19:45:47 +00:00
< ul >
2020-10-05 21:11:15 +00:00
< li > Added subtabs! And also a Micro-tab component to let you make smaller subtab-esque areas anywhere.< / li >
2020-10-07 03:11:36 +00:00
< li > Added a "custom" prestige formula type, and a number of features to support it.< / li >
2020-10-07 04:57:41 +00:00
< li > Added points/sec display (can be disabled, automatically disabled if getPointGen is 0).< / li >
2020-10-05 21:11:15 +00:00
< li > Added h-line, v-line and image-display components, plus components for individual upgrades, challenges, and milestones.< / li >
< li > Added upgEffect, buyableEffect, and challEffect functions.< / li >
2020-10-05 01:36:03 +00:00
< li > Added "hide completed challenges" setting.< / li >
< li > Moved old changelogs to a separate place.< / li >
2020-10-07 00:09:54 +00:00
< li > Fixed hasMilestone and incr_order.< / li >
< li > Static layers now show the currency amount needed for the next one if you can buy max.< / li >
2020-10-05 01:36:03 +00:00
< li > < / li >
2020-10-03 19:45:47 +00:00
< / ul > < br >
2020-10-04 17:10:04 +00:00
< a href = "https://github.com/Acamaeda/The-Modding-Tree/blob/master/changelog.md" target = "_blank" class = "link" > Full history< / a > < br >
2020-08-25 22:42:43 +00:00
< / div >
2020-10-04 17:10:04 +00:00
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-10-05 21:11:15 +00:00
The Modding Tree 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-10-05 01:36:03 +00:00
< a class = "link" href = "https://discord.gg/F3xveHV" target = "_blank" > The Modding Tree Discord< / a > < 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 >
2020-10-05 01:36:03 +00:00
< tr >
< td > < button class = "opt" onclick = "toggleOpt('hideChalls')" > Completed Challenges: {{ player.hideChalls?"HIDDEN":"SHOWN" }}< / button > < / td >
<!-- <td><button class="opt" onclick="toggleOpt('oldStyle')">Style: {{ player.oldStyle?"v1.0":"NEW" }}</button></td> -->
< / tr >
2020-08-19 02:50:24 +00:00
< / 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-10-05 21:11:15 +00:00
< br >
< span v-if = "showPointGen()" > ({{format(getPointGen())}}/sec)< / span >
< 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" >
2020-10-07 20:41:45 +00:00
< main-display v-bind:style = "tmp.componentStyles[layer]['main-display']" :layer = "layer" > < / main-display >
< prestige-button v-bind:style = "tmp.componentStyles[layer]['prestige-button']" :layer = "layer" > < / prestige-button >
2020-09-30 01:47:26 +00:00
< 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 >
2020-10-07 20:41:45 +00:00
< milestones v-bind:style = "tmp.componentStyles[layer].milestones" :layer = "layer" > < / milestones >
2020-10-08 05:33:44 +00:00
< div v-if = "Array.isArray(layers[layer].midsection)" >
< column :layer = "layer" :data = "layers[layer].midsection" > < / column >
< / div >
2020-10-07 20:41:45 +00:00
< buyables v-bind:style = "tmp.componentStyles[layer].buyables" :layer = "layer" > < / buyables >
< upgrades v-bind:style = "tmp.componentStyles[layer]['upgrades']" :layer = "layer" > < / upgrades >
< challs v-bind:style = "tmp.componentStyles[layer]['challs']" :layer = "layer" > < / challs >
2020-09-30 01:47:26 +00:00
< br > < br >
< / div >
< div v-if = "layers[layer].tabFormat" >
2020-10-04 17:10:04 +00:00
< div v-if = "Array.isArray(layers[layer].tabFormat)" >
< column :layer = "layer" :data = "layers[layer].tabFormat" > < / column >
< / div >
2020-10-07 04:57:41 +00:00
< div v-else v-bind:style = "[{'margin-top': '-50px'}, readData(layers[layer].tabFormat[player.subtabs[layer].mainTabs].style)]" >
< div class = "upgTable" v-bind:style = "{'padding-top': '25px', 'margin-bottom': '24px'}" >
2020-10-07 20:41:45 +00:00
< tab-buttons v-bind:style = "tmp.componentStyles[layer]['tab-buttons']" :layer = "layer" :data = "layers[layer].tabFormat" :name = "'mainTabs'" > < / tab-buttons >
2020-10-04 17:10:04 +00:00
< / div >
2020-10-07 04:57:41 +00:00
< column :layer = "layer" :data = "layers[layer].tabFormat[player.subtabs[layer].mainTabs].content" > < / column >
2020-10-03 23:50:03 +00:00
< / div >
2020-10-04 17:10:04 +00:00
< / div >
2020-08-19 02:50:24 +00:00
< / div >
< / div >
< / div >
2020-10-03 23:50:03 +00:00
< / body >