1
0
Fork 0
mirror of https://github.com/Acamaeda/The-Modding-Tree.git synced 2024-11-25 01:41:45 +00:00
The-Modding-Tree/index.html

175 lines
12 KiB
HTML
Raw Normal View History

2020-08-19 02:50:24 +00:00
<!DOCTYPE html>
<head>
<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>
<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>
<h2>The Modding 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>&nbsp;&nbsp;&nbsp;&nbsp;<button class="longUpg can" onclick="keepGoing()">Keep Going</button>
2020-09-14 19:26:10 +00:00
<br><br><br>
<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>
<h3>v0.0.1: Technically something</h3>
2020-09-10 01:39:08 +00:00
<ul>
<li>There is a game, but not the right game.</li>
2020-09-10 01:39:08 +00:00
</ul><br>
<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>
<h3>v0.0 Literally nothing</h3>
2020-09-04 02:25:24 +00:00
<ul>
<li>Added nothing</li>
2020-09-04 02:25:24 +00:00
</ul><br>
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>
<h2>The Modding 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>
The Modding Tree and code refactor by Acamaeda
<br>
The Prestige Tree made by Jacorb and Aarex
2020-09-07 02:33:31 +00:00
<br>
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>
<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>
<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>
<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>
<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>
<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>
<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>
<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].effectDescription">, {{layers[layer].effectDescription()}}</span>
2020-08-19 02:50:24 +00:00
<br><br>
<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 23:32:34 +00:00
<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>
<div v-if="layers[layer].milestones">
2020-09-14 02:41:42 +00:00
<table>
<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>&nbsp;</span></td></tr>
</tr>
2020-09-14 02:41:42 +00:00
</table>
</div>
2020-09-09 22:14:05 +00:00
<br><br>
<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>
<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 = {
name: "The Modding Tree",
id: "modbase"
2020-09-13 02:38:32 +00:00
}
</script>
2020-08-19 02:50:24 +00:00
</body>