mirror of
https://github.com/Acamaeda/The-Modding-Tree.git
synced 2024-11-22 00:21:32 +00:00
195 lines
10 KiB
HTML
195 lines
10 KiB
HTML
<!DOCTYPE html>
|
|
<head>
|
|
<script>
|
|
const modInfo = {
|
|
name: "The Modding Tree",
|
|
id: "modbase",
|
|
pointsName: "points",
|
|
offlineLimit: 1 // In hours
|
|
}
|
|
</script>
|
|
<title>The Modding Tree</title>
|
|
<link rel="stylesheet" type="text/css" href="style.css" />
|
|
<link href="https://fonts.googleapis.com/css?family=Inconsolata" rel="stylesheet">
|
|
<script src="https://cdn.jsdelivr.net/npm/vue@2.6.12"></script>
|
|
<script type="text/javascript" src="js/break_eternity.js"></script>
|
|
<script type="text/javascript" src="js/layerSupport.js"></script>
|
|
<script type="text/javascript" src="js/layers.js"></script>
|
|
<script type="text/javascript" src="js/temp.js"></script>
|
|
<script type="text/javascript" src="js/saves.js"></script>
|
|
<script type="text/javascript" src="js/utils.js"></script>
|
|
<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">
|
|
<div v-if="false" id="loadingSection" class="fullWidth">
|
|
<h1>Loading... (If this takes too long it means there was a serious error!)</h1>
|
|
</div>
|
|
<div class="vl" v-if="player.tab!='tree'&&player.tab!='gameEnded'"></div>
|
|
<div v-if="player.tab=='gameEnded'" class="fullWidth">
|
|
<br>
|
|
<h2>{{modInfo.name}} {{VERSION.withoutName}}</h2><br><br>
|
|
<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>
|
|
<button class="longUpg can" onclick="hardReset(true)">Play Again</button> <button class="longUpg can" onclick="keepGoing()">Keep Going</button>
|
|
<br><br><br>
|
|
<a class="link" href="https://discord.gg/F3xveHV" target="_blank">The Modding Tree Discord</a><br>
|
|
<a class="link" href="http://discord.gg/wwQfgPa" target="_blank">Main Prestige Tree Discord</a><br>
|
|
<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>
|
|
</div>
|
|
<div v-if="player.tab=='changelog'" class="col right">
|
|
<button class="back" onclick="showTab('tree')">←</button><br><br><br>
|
|
<h3>v1.3.3</h3>
|
|
<ul>
|
|
<li>Fix for the "order of operations" issue in temp.</li>
|
|
</ul><br>
|
|
<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>
|
|
<h3>v1.3: Tabception... ception!</h3>
|
|
<ul>
|
|
<li>Added subtabs! And also a Micro-tab component to let you make smaller subtab-esque areas anywhere.</li>
|
|
<li>Added a "custom" prestige formula type, and a number of features to support it.</li>
|
|
<li>Added points/sec display (can be disabled, automatically disabled if getPointGen is 0).</li>
|
|
<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>
|
|
<li>Added "hide completed challenges" setting.</li>
|
|
<li>Moved old changelogs to a separate place.</li>
|
|
<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>
|
|
<li></li>
|
|
</ul><br>
|
|
<a href="https://github.com/Acamaeda/The-Modding-Tree/blob/master/changelog.md" target="_blank" class="link" >Full history</a><br>
|
|
</div>
|
|
|
|
<div v-if="player.tab=='info'" class="col right">
|
|
<button class="back" onclick="showTab('tree')">←</button><br>
|
|
<h2>{{modInfo.name}}</h2>
|
|
<br>
|
|
<h3>{{VERSION.withName}}</h3>
|
|
<br>
|
|
The Modding Tree by Acamaeda
|
|
<br>
|
|
The Prestige Tree made by Jacorb and Aarex
|
|
<br>
|
|
Original idea by papyrus (on discord)
|
|
<br><br>
|
|
<div class="link" onclick="showTab('changelog')">Changelog</div><br>
|
|
<a class="link" href="https://discord.gg/F3xveHV" target="_blank">The Modding Tree Discord</a><br>
|
|
<a class="link" href="http://discord.gg/wwQfgPa" target="_blank">Main Prestige Tree server</a><br>
|
|
<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-for="key in hotkeys" v-if="player[key.layer].unl"><br>{{key.desc}}</span>
|
|
</div>
|
|
<div v-if="player.tab=='options'" class="col right">
|
|
<button class="back" onclick="showTab('tree')">←</button><br>
|
|
<table>
|
|
<tr>
|
|
<td><button class="opt" onclick="save()">Save</button></td>
|
|
<td><button class="opt" onclick="toggleOpt('autosave')">Autosave: {{ player.autosave?"ON":"OFF" }}</button></td>
|
|
<td><button class="opt" onclick="hardReset()">HARD RESET</button></td>
|
|
</tr>
|
|
<tr>
|
|
<td><button class="opt" onclick="exportSave()">Export to clipboard</button></td>
|
|
<td><button class="opt" onclick="importSave()">Import</button></td>
|
|
<td><button class="opt" onclick="toggleOpt('offlineProd')">Offline Prod: {{ player.offlineProd?"ON":"OFF" }}</button></td>
|
|
</tr>
|
|
<tr>
|
|
<td><button class="opt" onclick="switchTheme()">Theme: {{ getThemeName() }}</button></td>
|
|
<td><button class="opt" onclick="adjustMSDisp()">Show Milestones: {{ player.msDisplay.toUpperCase() }}</button></td>
|
|
<td><button class="opt" onclick="toggleOpt('hqTree')">High-Quality Tree: {{ player.hqTree?"ON":"OFF" }}</button></td>
|
|
</tr>
|
|
<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>
|
|
</table>
|
|
</div>
|
|
<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'}">
|
|
<div id="version" onclick="showTab('changelog')">{{VERSION.withoutName}}</div>
|
|
<img id="optionWheel" v-if="player.tab!='options'" src="options_wheel.png" onclick="showTab('options')"></img>
|
|
<div id="info" v-if="player.tab!='info'" onclick="showTab('info')"><br>i</div>
|
|
<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>
|
|
<span v-if="player.offTime !== undefined">
|
|
<br>Offline Time: {{formatTime(player.offTime.remain)}}<br>
|
|
</span>
|
|
<span v-if="false && !player.keepGoing">
|
|
<br>Reach {{formatWhole(ENDGAME)}} to beat the game!<br>
|
|
</span>
|
|
<br>
|
|
<span v-if="player.points.lt('1e1000')">You have </span>
|
|
<h2 id="points">{{format(player.points)}}</h2>
|
|
<span v-if="player.points.lt('1e1e6')"> {{modInfo.pointsName}}</span>
|
|
<br>
|
|
<span v-if="showPointGen()">({{format(getPointGen())}}/sec)</span>
|
|
<br><br><br><br>
|
|
<!-- *************************** Modify the tree in the table below! *************************** -->
|
|
<table>
|
|
<td><layer-node layer='c' abb='C'></layer-node></td>
|
|
</table><table>
|
|
<td><button class="treeNode hidden"></button></td>
|
|
</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>
|
|
</table><table>
|
|
<td><button class="treeNode hidden"></button></td>
|
|
</table>
|
|
<canvas id="treeCanvas" class="canvas"></canvas>
|
|
</div>
|
|
<div v-for="layer in LAYERS">
|
|
<div v-if="player.tab==layer" v-bind:class="'col right'" v-bind:style="tmp.style[layer] ? tmp.style[layer] : {}">
|
|
<button class="back" onclick="showTab('tree')">←</button><br><br><br>
|
|
<div v-if="!layers[layer].tabFormat">
|
|
<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>
|
|
<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 v-bind:style="tmp.componentStyles[layer].milestones" :layer="layer"></milestones>
|
|
<div v-if="Array.isArray(layers[layer].midsection)">
|
|
<column :layer="layer" :data="layers[layer].midsection"></column>
|
|
</div>
|
|
<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>
|
|
<br><br>
|
|
</div>
|
|
<div v-if="layers[layer].tabFormat">
|
|
<div v-if="Array.isArray(layers[layer].tabFormat)">
|
|
<column :layer="layer" :data="layers[layer].tabFormat"></column>
|
|
</div>
|
|
<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'}">
|
|
<tab-buttons v-bind:style="tmp.componentStyles[layer]['tab-buttons']" :layer="layer" :data="layers[layer].tabFormat" :name="'mainTabs'"></tab-buttons>
|
|
</div>
|
|
<column :layer="layer" :data="layers[layer].tabFormat[player.subtabs[layer].mainTabs].content"></column>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</body>
|