mirror of
https://github.com/Acamaeda/The-Modding-Tree.git
synced 2024-11-22 00:21:32 +00:00
v1.1: The Life Update (by Aarex)
v1.1: The Life Update
This commit is contained in:
commit
d8d5d6aa70
10 changed files with 2640 additions and 1397 deletions
BIN
discord.png
Normal file
BIN
discord.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.9 KiB |
489
index.html
489
index.html
|
@ -2,6 +2,7 @@
|
||||||
<head>
|
<head>
|
||||||
<title>The Prestige Tree</title>
|
<title>The Prestige Tree</title>
|
||||||
<link rel="stylesheet" type="text/css" href="style.css" />
|
<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 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/break_eternity.js"></script>
|
||||||
<script type="text/javascript" src="js/temp.js"></script>
|
<script type="text/javascript" src="js/temp.js"></script>
|
||||||
|
@ -12,20 +13,49 @@
|
||||||
</head>
|
</head>
|
||||||
<body onload="load()">
|
<body onload="load()">
|
||||||
<div id="app">
|
<div id="app">
|
||||||
<div class="vl" v-if="player.tab!='gameEnded'"></div>
|
<div class="vl" v-if="player.tab!='tree'&&player.tab!='gameEnded'"></div>
|
||||||
<div v-if="player.tab=='gameEnded'" class="fullWidth">
|
<div v-if="player.tab=='gameEnded'" class="fullWidth">
|
||||||
<br><br>
|
<br>
|
||||||
<h2>Thank you for playing The Prestige Tree v1.0!</h2><br><br>
|
<h2>Prestige Tree {{VERSION.withoutName}}</h2><br><br>
|
||||||
<h4>It took you {{formatTime(player.timePlayed)}}</h4><br><br><br><br><br>
|
<h3>Congratulations! You have reached the end and beaten this game, but for now...</h3><br>
|
||||||
If you would like to speedrun this, play again from the beginning and record the whole thing as fast as possible, then submit in <span class="link" onclick="window.open('https://discord.gg/wwQfgPa','mywindow')" target="_blank">my discord</span><br><br><br><br><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>
|
<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="http://discord.gg/wwQfgPa" target="_blank">Jacorb's Discord</a><br>
|
||||||
|
<a class="link" href="http://aarextiaokhiao.github.io/" target="_blank">Aarex's Home</a>
|
||||||
|
<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>
|
||||||
|
Yeah. You also can test the next update whether you want to.<br>
|
||||||
|
<a class="link">Test server</a> (Coming soon!)
|
||||||
|
<br><br>
|
||||||
|
For this next update, there will be 3 new layers which come after row 6! Stay tuned.
|
||||||
</div>
|
</div>
|
||||||
<div v-if="player.tab=='changelog'" class="col right">
|
<div v-if="player.tab=='changelog'" class="col right">
|
||||||
<button class="back" onclick="showTab('tree')">←</button><br><br>
|
<button class="back" onclick="showTab('tree')">←</button><br>
|
||||||
|
<h3>v1.1: The Life Update</h3>
|
||||||
|
<ul>
|
||||||
|
<li>Added 4 new layers</li>
|
||||||
|
<li>Added some QoL displays</li>
|
||||||
|
<li>Added Aqua theme</li>
|
||||||
|
<li>Added HQ Tree option</li>
|
||||||
|
<li>Rebalanced early parts of rows 4 - 6</li>
|
||||||
|
<li>Balanced up to e28,000,000</li>
|
||||||
|
<li>Fixed some bugs</li>
|
||||||
|
</ul><br>
|
||||||
<h3>v1.0 Patch 1</h3>
|
<h3>v1.0 Patch 1</h3>
|
||||||
<ul>
|
<ul>
|
||||||
<li>Added an option to keep going at endgame</li>
|
<li>Added an option to keep going at endgame</li>
|
||||||
</ul><br>
|
</ul><br>
|
||||||
|
<div class="link" onclick="showTab('changelog_beta')">Alpha / Beta</div><br>
|
||||||
|
</div>
|
||||||
|
<div v-if="player.tab=='changelog_beta'" class="col right">
|
||||||
|
<button class="back" onclick="showTab('changelog')">←</button><br>
|
||||||
<h3>v1.0 Full Release</h3>
|
<h3>v1.0 Full Release</h3>
|
||||||
<ul>
|
<ul>
|
||||||
<li>Converted Vue to production mode</li>
|
<li>Converted Vue to production mode</li>
|
||||||
|
@ -293,281 +323,363 @@
|
||||||
<li>Balanced the row 3 prestige layers up to 1e560 points</li>
|
<li>Balanced the row 3 prestige layers up to 1e560 points</li>
|
||||||
</ul><br><br>
|
</ul><br><br>
|
||||||
</div>
|
</div>
|
||||||
<div v-if="player.tab=='credits'" class="col right">
|
|
||||||
<button class="back" onclick="showTab('tree')">←</button><br><br><br><br><br>
|
|
||||||
This game uses <a href="https://github.com/Patashu/break_eternity.js/tree/master" target="_blank">break_eternity.js</a> by Patashu.<br>
|
|
||||||
Made by Jacorb<br>
|
|
||||||
Idea by papyrus (on discord)<br>
|
|
||||||
Note: 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>.
|
|
||||||
</div>
|
|
||||||
<div v-if="player.tab=='info'" class="col right">
|
<div v-if="player.tab=='info'" class="col right">
|
||||||
<button class="back" onclick="showTab('tree')">←</button><br><br><br><br><br>
|
<button class="back" onclick="showTab('tree')">←</button><br>
|
||||||
Time Played: {{ formatTime(player.timePlayed) }}<br><br><br>
|
<h2>Prestige Tree</h2>
|
||||||
<div id="cl" onclick="showTab('credits')">Credits</div><br>
|
<br>
|
||||||
<div id="cl" onclick="showTab('changelog')">Changelog</div><br>
|
<h3>{{VERSION.withName}}</h3>
|
||||||
<div id="cl" onclick="window.open('https://discord.gg/wwQfgPa','mywindow')" target="_blank">My Discord</div><br><br>
|
<br>
|
||||||
<h3>Hotkeys</h3><br><br>
|
Made by Jacorb and Aarex
|
||||||
P: Prestige reset<br>
|
<br>
|
||||||
<span v-if="player.b.unl">B: Booster reset</span><br>
|
Idea by papyrus (on discord)
|
||||||
<span v-if="player.g.unl">G: Generator reset</span><br>
|
<br><br>
|
||||||
<span v-if="player.t.unl">T: Time reset</span><br>
|
<div class="link" onclick="showTab('changelog')">Changelog</div><br>
|
||||||
<span v-if="player.e.unl">E: Enhance reset</span><br>
|
<a class="link">Test server</a> (Coming soon!)<br><br>
|
||||||
<span v-if="player.s.unl">S: Space reset</span><br>
|
<a class="link" href="http://discord.gg/wwQfgPa" target="_blank">Jacorb's Discord</a><br>
|
||||||
<span v-if="player.sb.unl">Shift+B: Super-Booster reset</span><br>
|
<a class="link" href="http://aarextiaokhiao.github.io/" target="_blank">Aarex's Home</a>
|
||||||
<span v-if="player.sg.unl">Shift+G: Super-Generator reset</span><br>
|
<br>
|
||||||
<span v-if="player.h.unl">H: Hindrance reset</span><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>.
|
||||||
<span v-if="player.q.unl">Q: Quirk reset</span><br>
|
<br><br>
|
||||||
<span v-if="player.hb.unl">Ctrl+B: Hyper-Booster reset</span><br>
|
Time Played: {{ formatTime(player.timePlayed) }}<br><br>
|
||||||
<span v-if="player.ss.unl">Shift+S: Subspace reset</span><br>
|
<h3>Hotkeys</h3><br>
|
||||||
|
<span v-if="player.p.unl"><br>P: Prestige reset</span>
|
||||||
|
<span v-if="player.b.unl"><br>B: Booster reset</span>
|
||||||
|
<span v-if="player.g.unl"><br>G: Generator reset</span>
|
||||||
|
<span v-if="player.t.unl"><br>T: Time reset</span>
|
||||||
|
<span v-if="player.e.unl"><br>E: Enhance reset</span>
|
||||||
|
<span v-if="player.s.unl"><br>S: Space reset</span>
|
||||||
|
<span v-if="player.sb.unl"><br>Shift+B: Super-Booster reset</span>
|
||||||
|
<span v-if="player.sg.unl"><br>Shift+G: Super-Generator reset</span>
|
||||||
|
<span v-if="player.h.unl"><br>H: Hindrance reset</span>
|
||||||
|
<span v-if="player.q.unl"><br>Q: Quirk reset</span>
|
||||||
|
<span v-if="player.hb.unl"><br>Ctrl+B: Hyper-Booster reset</span>
|
||||||
|
<span v-if="player.ss.unl"><br>Shift+S: Subspace reset</span>
|
||||||
|
<span v-if="player.m.unl"><br>M: Magic reset</span>
|
||||||
|
<span v-if="player.ba.unl"><br>A: Balance reset</span>
|
||||||
|
<span v-if="player.ps.unl"><br>Ctrl+P: Phantom Soul reset</span>
|
||||||
|
<span v-if="player.sp.unl"><br>Shift+P: Super-Prestige reset</span>
|
||||||
|
<span v-if="player.l.unl"><br>L: Life Essence reset</span>
|
||||||
|
<span v-if="player.hs.unl"><br>Ctrl+S: Hyperspace reset</span>
|
||||||
|
<span v-if="player.i.unl"><br>I: Imperium Brick reset</span>
|
||||||
<span v-if="player.m.unl">
|
<span v-if="player.m.unl">
|
||||||
M: Magic reset<br>
|
<br>
|
||||||
1: Cast spell 1<br>
|
<span v-for="i in tmp.spellsUnl"><br>{{i}}: Cast spell {{i}}</span>
|
||||||
2: Cast spell 2<br>
|
|
||||||
3: Cast spell 3<br>
|
|
||||||
<span v-if="player.sp.upgrades.includes(13)">4: Cast spell 4<br></span>
|
|
||||||
</span>
|
</span>
|
||||||
<span v-if="player.ba.unl">A: Balance reset</span><br>
|
|
||||||
<span v-if="player.sp.unl">Shift+P: Super-Prestige reset</span><br>
|
|
||||||
</div>
|
</div>
|
||||||
<div v-if="player.tab=='options'" class="col right">
|
<div v-if="player.tab=='options'" class="col right">
|
||||||
<button class="back" onclick="showTab('tree')">←</button><br><br><br><br><br>
|
<button class="back" onclick="showTab('tree')">←</button><br>
|
||||||
<table>
|
<table>
|
||||||
<tr>
|
<tr>
|
||||||
<td><button class="opt" onclick="save()">Save</button></td>
|
<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>
|
<td><button class="opt" onclick="hardReset()">HARD RESET</button></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td><button class="opt" onclick="exportSave()">Export to clipboard</button></td>
|
<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="importSave()">Import</button></td>
|
||||||
|
<td><button class="opt" onclick="toggleOpt('offlineProd')">Offline Prod: {{ player.offlineProd?"ON":"OFF" }}</button></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td><button class="opt" onclick="toggleOpt('autosave')">Autosave: {{ player.autosave?"ON":"OFF" }}</button></td>
|
<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="adjustMSDisp()">Show Milestones: {{ player.msDisplay.toUpperCase() }}</button></td>
|
||||||
<td><button class="opt" onclick="toggleOpt('offlineProd')">Offline Prod: {{ player.offlineProd?"ON":"OFF" }}</button></td>
|
<td><button class="opt" onclick="toggleOpt('hqTree')">High-Quality Tree: {{ player.hqTree?"ON":"OFF" }}</button></td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
<div id="treeTab" v-if="player.tab!='gameEnded'" onscroll="resizeCanvas()" class="col left">
|
<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>
|
<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>
|
<div id="info" v-if="player.tab!='info'" onclick="showTab('info')"><br>i</div>
|
||||||
<span v-if="offTime.remain>0">
|
<img id="discord" onclick="window.open('https://discord.gg/wwQfgPa','mywindow')" src="discord.png" target="_blank"></img>
|
||||||
<br>Offline Time: {{formatTime(offTime.remain)}} ({{format(offTime.speed)}}x speed)<br>
|
<span v-if="player.devSpeed && player.devSpeed != 1">
|
||||||
|
<br>Dev Speed: {{format(player.devSpeed)}}x<br>
|
||||||
</span>
|
</span>
|
||||||
<br>You have <h2>{{format(player.points)}}</h2> Points
|
<span v-if="player.offTime !== undefined">
|
||||||
|
<br>Offline Time: {{formatTime(player.offTime.remain)}}<br>
|
||||||
|
</span>
|
||||||
|
<span v-if="player.sp.unl && !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')"> points</span>
|
||||||
<br><br><br><br><br>
|
<br><br><br><br><br>
|
||||||
<table>
|
<table>
|
||||||
<tr>
|
<td><layer-node layer='p' abb='P'></layer-node></td>
|
||||||
<td id="p"><button onclick="showTab('p')" v-bind:tooltip="(player.points.gte(tmp.layerReqs.p)||player.p.unl) ? (formatWhole(player.p.points)+' prestige points') : ('Reach '+format(tmp.layerReqs.p)+' points to unlock')" v-bind:class="{ treeNode: true, p: true, locked: (player.points.lt(tmp.layerReqs.p)&&!player.p.unl), can: (player.points.gte(tmp.layerReqs.p)||player.p.unl) }">P</button></td>
|
|
||||||
</tr>
|
|
||||||
</table><table>
|
</table><table>
|
||||||
<tr>
|
<td><button class="treeNode hidden"></button></td>
|
||||||
<td><button class="treeNode hidden"></button></td>
|
|
||||||
</tr>
|
|
||||||
</table><table>
|
</table><table>
|
||||||
<tr>
|
<td v-if="player.tab=='tree'&&(player.b.unl||player.g.unl)" class="left"><br><br><img class="remove" src="remove.png" onclick="resetRow(1)"></img></td>
|
||||||
<td v-if="player.b.unl||player.g.unl" class="left"><br><br><img class="remove" src="remove.png" onclick="resetRow(1)"></img></td>
|
<td><layer-node layer='b' abb='B'></layer-node></td>
|
||||||
<td id="b" v-if="layerUnl('b')"><button onclick="showTab('b')" v-bind:tooltip="((player.points.gte(tmp.layerReqs.b)||player.b.unl)&&layerUnl('b')) ? (formatWhole(player.b.points)+' boosters') : ('Reach '+format(tmp.layerReqs.b)+' points to unlock')" v-bind:class="{ treeNode: true, b: true, locked: (player.points.lt(tmp.layerReqs.b)&&!player.b.unl), can: (player.points.gte(tmp.layerReqs.b)||player.b.unl) }">B</button></td>
|
<td><layer-node layer='g' abb='G'></layer-node></td>
|
||||||
<td id="g" v-if="layerUnl('g')"><button onclick="showTab('g')" v-bind:tooltip="((player.points.gte(tmp.layerReqs.g)||player.g.unl)&&layerUnl('g')) ? (formatWhole(player.g.points)+' generators') : ('Reach '+format(tmp.layerReqs.g)+' points to unlock')" v-bind:class="{ treeNode: true, g: true, locked: (player.points.lt(tmp.layerReqs.g)&&!player.g.unl), can: (player.points.gte(tmp.layerReqs.g)||player.g.unl) }">G</button></td>
|
|
||||||
</tr>
|
|
||||||
</table><table>
|
</table><table>
|
||||||
<tr>
|
<td><button class="treeNode hidden"></button></td>
|
||||||
<td><button class="treeNode hidden"></button></td>
|
|
||||||
</tr>
|
|
||||||
</table><table>
|
</table><table>
|
||||||
<tr>
|
<td v-if="player.tab=='tree'&&(player.e.unl||player.t.unl||player.s.unl)" class="left"><br><br><img class="remove" src="remove.png" onclick="resetRow(2)"></img></td>
|
||||||
<td v-if="player.e.unl||player.t.unl||player.s.unl||player.sb.unl" class="left"><br><br><img class="remove" src="remove.png" onclick="resetRow(2)"></img></td>
|
<td><layer-node layer='sb' abb='SB'></layer-node></td>
|
||||||
<td id="sb" v-if="layerUnl('sb')"><button onclick="showTab('sb')" v-bind:tooltip="((player.b.points.gte(tmp.layerReqs.sb)||player.sb.unl)&&layerUnl('sb')) ? (formatWhole(player.sb.points)+' super-boosters') : ('Reach '+formatWhole(tmp.layerReqs.sb)+' boosters to unlock')" v-bind:class="{ treeNode: true, sb: true, locked: (player.b.points.lt(tmp.layerReqs.sb)&&!player.sb.unl), can: (player.b.points.gte(tmp.layerReqs.sb)||player.sb.unl) }">SB</button></td>
|
<td><layer-node layer='t' abb='T'></layer-node></td>
|
||||||
<td id="t" v-if="layerUnl('t')"><button onclick="showTab('t')" v-bind:tooltip="((player.points.gte(tmp.layerReqs.t)||player.t.unl)&&layerUnl('t')) ? (formatWhole(player.t.points)+' time capsules') : ('Reach '+format(tmp.layerReqs.t)+' points to unlock')" v-bind:class="{ treeNode: true, t: true, locked: (player.points.lt(tmp.layerReqs.t)&&!player.t.unl), can: (player.points.gte(tmp.layerReqs.t)||player.t.unl) }">T</button></td>
|
<td><layer-node layer='e' abb='E'></layer-node></td>
|
||||||
<td id="e" v-if="layerUnl('e')"><button onclick="showTab('e')" v-bind:tooltip="((player.points.gte(tmp.layerReqs.e)||player.e.unl)&&layerUnl('e')) ? (formatWhole(player.e.points)+' enhance points') : ('Reach '+format(tmp.layerReqs.e)+' points to unlock')" v-bind:class="{ treeNode: true, e: true, locked: (player.points.lt(tmp.layerReqs.e)&&!player.e.unl), can: (player.points.gte(tmp.layerReqs.e)||player.e.unl) }">E</button></td>
|
<td><layer-node layer='s' abb='S'></layer-node></td>
|
||||||
<td id="s" v-if="layerUnl('s')"><button onclick="showTab('s')" v-bind:tooltip="((player.points.gte(tmp.layerReqs.s)||player.s.unl)&&layerUnl('s')) ? (formatWhole(player.s.points)+' space energy') : ('Reach '+format(tmp.layerReqs.s)+' points to unlock')" v-bind:class="{ treeNode: true, s: true, locked: (player.points.lt(tmp.layerReqs.s)&&!player.s.unl), can: (player.points.gte(tmp.layerReqs.s)||player.s.unl) }">S</button></td>
|
<td><layer-node layer='sg' abb='SG'></layer-node></td>
|
||||||
<td id="sg" v-if="layerUnl('sg')"><button onclick="showTab('sg')" v-bind:tooltip="((player.g.points.gte(tmp.layerReqs.sg)||player.sg.unl)&&layerUnl('sg')) ? (formatWhole(player.sg.points)+' super-generators') : ('Reach '+formatWhole(tmp.layerReqs.sg)+' generators to unlock')" v-bind:class="{ treeNode: true, sg: true, locked: (player.g.points.lt(tmp.layerReqs.sg)&&!player.sg.unl), can: (player.g.points.gte(tmp.layerReqs.sg)||player.sg.unl) }">SG</button></td>
|
|
||||||
</tr>
|
|
||||||
</table><table>
|
</table><table>
|
||||||
<tr>
|
<td><button class="treeNode hidden"></button></td>
|
||||||
<td><button class="treeNode hidden"></button></td>
|
|
||||||
</tr>
|
|
||||||
</table><table>
|
</table><table>
|
||||||
<tr>
|
<td v-if="player.tab=='tree'&&(player.h.unl||player.q.unl)" class="left"><br><br><img class="remove" src="remove.png" onclick="resetRow(3)"></img></td>
|
||||||
<td v-if="player.h.unl||player.q.unl" class="left"><br><br><img class="remove" src="remove.png" onclick="resetRow(3)"></img></td>
|
<td v-if="player.tab=='tree'&&(player.e.unl||player.t.unl||player.s.unl)" class="left"><br><br><img class="remove" src="remove.png" onclick="resetRow(2)"></img></td>
|
||||||
<td id="hb" v-if="layerUnl('hb')"><button onclick="showTab('hb')" v-bind:tooltip="((player.sb.points.gte(tmp.layerReqs.hb)||player.hb.unl)&&layerUnl('hb')) ? (formatWhole(player.hb.points)+' hyper-boosters') : ('Reach '+formatWhole(tmp.layerReqs.hb)+' super-boosters to unlock')" v-bind:class="{ treeNode: true, hb: true, locked: (player.sb.points.lt(tmp.layerReqs.hb)&&!player.hb.unl), can: (player.sb.points.gte(tmp.layerReqs.hb)||player.hb.unl) }">HB</button></td>
|
<td><layer-node layer='hb' abb='HB'></layer-node></td>
|
||||||
<td id="h" v-if="layerUnl('h')"><button onclick="showTab('h')" v-bind:tooltip="((player.t.energy.gte(tmp.layerReqs.h)||player.h.unl)&&layerUnl('h')) ? (formatWhole(player.h.points)+' hindrance spirit') : ('Reach '+format(tmp.layerReqs.h)+' time energy to unlock')" v-bind:class="{ treeNode: true, h: true, locked: (player.t.energy.lt(tmp.layerReqs.h)&&!player.h.unl), can: (player.t.energy.gte(tmp.layerReqs.h)||player.h.unl) }">H</button></td>
|
<td><layer-node layer='h' abb='H'></layer-node></td>
|
||||||
<td id="q" v-if="layerUnl('q')"><button onclick="showTab('q')" v-bind:tooltip="((player.g.power.gte(tmp.layerReqs.q)||player.q.unl)&&layerUnl('q')) ? (formatWhole(player.q.points)+' quirks') : ('Reach '+format(tmp.layerReqs.q)+' generator power to unlock')" v-bind:class="{ treeNode: true, q: true, locked: (player.g.power.lt(tmp.layerReqs.q)&&!player.q.unl), can: (player.g.power.gte(tmp.layerReqs.q)||player.q.unl) }">Q</button></td>
|
<td><layer-node layer='q' abb='Q'></layer-node></td>
|
||||||
<td id="ss" v-if="layerUnl('ss')"><button onclick="showTab('ss')" v-bind:tooltip="((player.s.points.gte(tmp.layerReqs.ss)||player.ss.unl)&&layerUnl('ss')) ? (formatWhole(player.ss.points)+' subspace energy') : ('Reach '+format(tmp.layerReqs.ss)+' space energy to unlock')" v-bind:class="{ treeNode: true, ss: true, locked: (player.s.points.lt(tmp.layerReqs.ss)&&!player.ss.unl), can: (player.s.points.gte(tmp.layerReqs.ss)||player.ss.unl) }">SS</button></td>
|
<td><layer-node layer='ss' abb='SS'></layer-node></td>
|
||||||
</tr>
|
<td><layer-node layer='hg' abb='HG'></layer-node></td>
|
||||||
</table><table>
|
</table><table>
|
||||||
<tr>
|
<td><button class="treeNode hidden"></button></td>
|
||||||
<td><button class="treeNode hidden"></button></td>
|
|
||||||
</tr>
|
|
||||||
</table><table>
|
</table><table>
|
||||||
<td id="m" v-if="layerUnl('m')"><button onclick="showTab('m')" v-bind:tooltip="((player.h.points.gte(tmp.layerReqs.m)||player.m.unl)&&layerUnl('m')) ? (formatWhole(player.m.points)+' magic') : ('Reach '+format(tmp.layerReqs.m)+' hindrance spirit to unlock')" v-bind:class="{ treeNode: true, m: true, locked: (player.h.points.lt(tmp.layerReqs.m)&&!player.m.unl), can: (player.h.points.gte(tmp.layerReqs.m)||player.m.unl) }">M</button></td>
|
<td v-if="player.tab=='tree'&&(player.m.unl||player.ba.unl)" class="left"><br><br><img class="remove" src="remove.png" onclick="resetRow(4)"></img></td>
|
||||||
<td id="ba" v-if="layerUnl('ba')"><button onclick="showTab('ba')" v-bind:tooltip="((player.q.points.gte(tmp.layerReqs.ba)||player.ba.unl)&&layerUnl('ba')) ? (formatWhole(player.ba.points)+' balance energy') : ('Reach '+format(tmp.layerReqs.ba)+' quirks to unlock')" v-bind:class="{ treeNode: true, ba: true, locked: (player.q.points.lt(tmp.layerReqs.ba)&&!player.ba.unl), can: (player.q.points.gte(tmp.layerReqs.ba)||player.ba.unl) }">BA</button></td>
|
<td><layer-node layer='m' abb='M'></layer-node></td>
|
||||||
|
<td><layer-node layer='ps' abb='PS'></layer-node></td>
|
||||||
|
<td><layer-node layer='ba' abb='BA'></layer-node></td>
|
||||||
</table><table>
|
</table><table>
|
||||||
<tr>
|
<td><button class="treeNode hidden"></button></td>
|
||||||
<td><button class="treeNode hidden"></button></td>
|
|
||||||
</tr>
|
|
||||||
</table><table>
|
</table><table>
|
||||||
<tr>
|
<td v-if="player.tab=='tree'&&player.sp.unl" class="left"><br><br><img class="remove" src="remove.png" onclick="resetRow(5)"></img></td>
|
||||||
<td id="sp" v-if="layerUnl('sp')"><button onclick="showTab('sp')" v-bind:tooltip="(player.p.points.gte(tmp.layerReqs.sp)||player.sp.unl) ? (formatWhole(player.sp.points)+' super-prestige points') : ('Reach '+format(tmp.layerReqs.sp)+' prestige points to unlock')" v-bind:class="{ treeNode: true, sp: true, locked: (player.p.points.lt(tmp.layerReqs.sp)&&!player.sp.unl), can: (player.p.points.gte(tmp.layerReqs.sp)||player.sp.unl) }">SP</button></td>
|
<td><layer-node layer='l' abb='L'></layer-node></td>
|
||||||
</tr>
|
<td><layer-node layer='sp' abb='SP'></layer-node></td>
|
||||||
|
<td><layer-node layer='hs' abb='HS'></layer-node></td>
|
||||||
|
<td><layer-node layer='i' abb='I'></layer-node></td>
|
||||||
|
</table><table>
|
||||||
|
<td><button class="treeNode hidden"></button></td>
|
||||||
|
</table><table>
|
||||||
|
<td v-if="player.tab=='tree'&&layerShown('tm')" class="left"><br><br><img class="remove" src="remove.png" onclick="resetRow(6)"></img></td>
|
||||||
|
<td><layer-node layer='mb' abb='MB'></layer-node></td>
|
||||||
|
<td><layer-node layer='ge' abb='Ge'></layer-node></td>
|
||||||
|
<td><layer-node layer='ma' abb='Ma'></layer-node></td>
|
||||||
</table>
|
</table>
|
||||||
<canvas id="treeCanvas" class="canvas"></canvas>
|
<canvas id="treeCanvas" class="canvas"></canvas>
|
||||||
</div>
|
</div>
|
||||||
<div v-for="layer in LAYERS">
|
<div v-for="layer in LAYERS">
|
||||||
<div v-if="player.tab==layer" class="col right">
|
<div v-if="player.tab==layer" class="col right">
|
||||||
<button class="back" onclick="showTab('tree')">←</button><br><br><br>
|
<button class="back" onclick="showTab('tree')">←</button><br><br><br>
|
||||||
You have <h2 v-bind:class="{ [layer+'_txt']: true }">{{formatWhole(player[layer].points)}}</h2> {{LAYER_RES[layer]}}<span v-if="Object.keys(LAYER_EFFS).includes(layer)">, {{getLayerEffDesc(layer)}}</span>
|
<span v-if="player[layer].points.lt('1e1000')">You have </span><h2 v-bind:class="{ [layer+'_txt']: true }">{{formatWhole(player[layer].points)}}</h2> {{LAYER_RES[layer]}}<span v-if="Object.keys(LAYER_EFFS).includes(layer)">, {{getLayerEffDesc(layer)}}</span>
|
||||||
<br><br>
|
<br><br>
|
||||||
|
<button v-if="LAYER_TYPE[layer]=='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-on:click="doReset(layer)"><span v-if="player[layer].points.lt(1e3)">Reset for </span>+<b>{{formatWhole(tmp.resetGain[layer])}}</b> {{LAYER_RES[layer]}}<span v-if="tmp.resetGain[layer].lt(100) && player[layer].points.lt(1e3)"><br><br>Next at {{ (LAYER_RES_CEIL.includes(layer) ? formatWhole(tmp.nextAt[layer]) : format(tmp.nextAt[layer])) }} {{ LAYER_AMT_NAMES[layer] }}</span></button>
|
||||||
|
<button v-if="LAYER_TYPE[layer]=='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-on:click="doReset(layer)"><span v-if="player[layer].points.lt(10)">Reset for </span>+<b>{{formatWhole(tmp.resetGain[layer])}}</b> {{LAYER_RES[layer]}}<br><br><span v-if="player[layer].points.lt(10)">Req: {{formatWhole(tmp.layerAmt[layer])}} / </span>{{(LAYER_RES_CEIL.includes(layer) ? formatWhole(tmp.nextAt[layer]) : format(tmp.nextAt[layer]))}} {{ LAYER_AMT_NAMES[layer] }}</button>
|
||||||
|
<span v-if="LAYER_TYPE[layer]=='normal' && tmp.resetGain[layer].lt(100) && player[layer].points.lt(1e3)"><br>You have {{formatWhole(tmp.layerAmt[layer])}} {{LAYER_AMT_NAMES[layer]}}</span>
|
||||||
|
<br><br>
|
||||||
|
<span v-if="layer!='p'">Your best {{LAYER_RES[layer]}} is {{formatWhole(player[layer].best)}}<br></span>
|
||||||
|
<span v-if="player[layer].total">You have made a total of {{formatWhole(player[layer].total)}} {{LAYER_RES[layer]}}<br></span>
|
||||||
<div v-if="layer=='b'">
|
<div v-if="layer=='b'">
|
||||||
<table><tr><td v-if="milestoneShown(player.b.best.gte(8))" v-bind:class="{ milestone: player.b.best.lt(8)&&player.h.best.lt(1)&&player.q.best.lt(1), milestoneDone: player.b.best.gte(8)||player.h.best.gte(1)||player.q.best.gte(1) }">8 Boosters<br>Keep Prestige Upgrades on reset</td></tr>
|
<table>
|
||||||
<tr><td v-if="milestoneShown(player.b.best.gte(15))" v-bind:class="{ milestone: player.b.best.lt(15), milestoneDone: player.b.best.gte(15) }">15 Boosters<br>You can buy max Boosters</td></tr></table>
|
<tr v-if="milestoneShown(player.b.best.gte(8))"><td v-bind:class="{ milestone: player.b.best.lt(8)&&player.h.best.lt(1)&&player.q.best.lt(1), milestoneDone: player.b.best.gte(8)||player.h.best.gte(1)||player.q.best.gte(1) }"><h3>8 Boosters</h3><br>Keep Prestige Upgrades on reset</td></tr>
|
||||||
|
<tr v-if="milestoneShown(player.b.best.gte(15))"><td v-bind:class="{ milestone: player.b.best.lt(15), milestoneDone: player.b.best.gte(15) }"><h3>15 Boosters</h3><br>You can buy max Boosters</td></tr>
|
||||||
|
</table>
|
||||||
</div>
|
</div>
|
||||||
<div v-if="layer=='g'">
|
<div v-if="layer=='g'">
|
||||||
You have {{format(player.g.power)}} Generator Power, which multiplies Point gain by {{format(tmp.genPowEff)}}<br><br>
|
<table>
|
||||||
<table><tr><td v-if="milestoneShown(player.g.best.gte(8)||player.h.best.gte(1)||player.q.best.gte(1))" v-bind:class="{ milestone: player.g.best.lt(8)&&player.h.best.lt(1)&&player.q.best.lt(1), milestoneDone: player.g.best.gte(8)||player.h.best.gte(1)||player.q.best.gte(1) }">8 Generators<br>Keep Prestige Upgrades on reset</td></tr>
|
<tr v-if="milestoneShown(player.g.best.gte(8)||player.h.best.gte(1)||player.q.best.gte(1))"><td v-bind:class="{ milestone: player.g.best.lt(8)&&player.h.best.lt(1)&&player.q.best.lt(1), milestoneDone: player.g.best.gte(8)||player.h.best.gte(1)||player.q.best.gte(1) }"><h3>8 Generators</h3><br>Keep Prestige Upgrades on reset</td></tr>
|
||||||
<tr><td v-if="milestoneShown(player.g.best.gte(10))" v-bind:class="{ milestone: player.g.best.lt(10), milestoneDone: player.g.best.gte(10) }">10 Generators<br>Gain 100% of Prestige Point gain every second</td></tr>
|
<tr v-if="milestoneShown(player.g.best.gte(10))"><td v-bind:class="{ milestone: player.g.best.lt(10), milestoneDone: player.g.best.gte(10) }"><h3>10 Generators</h3><br>Gain 100% of Prestige Point gain every second</td></tr>
|
||||||
<tr><td v-if="milestoneShown(player.g.best.gte(15))" v-bind:class="{ milestone: player.g.best.lt(15), milestoneDone: player.g.best.gte(15) }">15 Generators<br>You can buy max Generators</td></tr></table>
|
<tr v-if="milestoneShown(player.g.best.gte(15))"><td v-bind:class="{ milestone: player.g.best.lt(15), milestoneDone: player.g.best.gte(15) }"><h3>15 Generators</h3><br>You can buy max Generators</td></tr>
|
||||||
|
</table><br><br>
|
||||||
|
You have {{format(player.g.power)}} Generator Power, which multiplies Point gain by {{format(tmp.genPowEff)}}
|
||||||
</div>
|
</div>
|
||||||
<div v-if="layer=='e'">
|
<div v-if="layer=='e'">
|
||||||
<table><tr><td v-if="milestoneShown(player.e.best.gte(2))" v-bind:class="{ milestone: player.e.best.lt(2), milestoneDone: player.e.best.gte(2) }">2 enhance points<br>Keep Booster/Generator milestones on reset</td></tr>
|
<table>
|
||||||
<tr><td v-if="milestoneShown(player.e.best.gte(10)||player.h.best.gte(1)||player.q.best.gte(1))" v-bind:class="{ milestone: player.e.best.lt(10)&&player.h.best.lt(1)&&player.q.best.lt(1), milestoneDone: player.e.best.gte(10)||player.h.best.gte(1)||player.q.best.gte(1) }">10 enhance points<br>Keep Prestige Upgrades on reset</td></tr></table><br><br>
|
<tr v-if="milestoneShown(player.e.best.gte(2))"><td v-bind:class="{ milestone: player.e.best.lt(2), milestoneDone: player.e.best.gte(2) }"><h3>2 enhance points</h3><br>Keep Booster/Generator milestones on reset</td></tr>
|
||||||
|
<tr v-if="milestoneShown(player.e.best.gte(10)||player.h.best.gte(1)||player.q.best.gte(1))"><td v-bind:class="{ milestone: player.e.best.lt(10)&&player.h.best.lt(1)&&player.q.best.lt(1), milestoneDone: player.e.best.gte(10)||player.h.best.gte(1)||player.q.best.gte(1) }"><h3>10 enhance points</h3><br>Keep Prestige Upgrades on reset</td></tr>
|
||||||
|
</table><br><br>
|
||||||
<button v-bind:class="{ upgBig: true, can: player.e.points.gte(getEnhancerCost()), locked: player.e.points.lt(getEnhancerCost()), e: true }" onclick="buyEnhancer()">Buy an Enhancer<br>Cost: {{formatWhole(getEnhancerCost())}} Enhance Points<br>Amount: {{formatWhole(player.e.enhancers.sub(tmp.subbedEnh))}}<br>Multiplies Prestige Point gain by {{format(tmp.enhEff)}}<br>Adds<span v-if="player.q.upgrades.includes(53)"> and multiplies</span> to base of Booster/Generator effects by {{format(tmp.enhEff2)}}</button>
|
<button v-bind:class="{ upgBig: true, can: player.e.points.gte(getEnhancerCost()), locked: player.e.points.lt(getEnhancerCost()), e: true }" onclick="buyEnhancer()">Buy an Enhancer<br>Cost: {{formatWhole(getEnhancerCost())}} Enhance Points<br>Amount: {{formatWhole(player.e.enhancers.sub(tmp.subbedEnh))}}<br>Multiplies Prestige Point gain by {{format(tmp.enhEff)}}<br>Adds<span v-if="player.q.upgrades.includes(53)"> and multiplies</span> to base of Booster/Generator effects by {{format(tmp.enhEff2)}}</button>
|
||||||
</div>
|
</div>
|
||||||
<div v-if="layer=='t'">
|
<div v-if="layer=='t'">
|
||||||
You have {{format(player.t.energy)}} Time Energy, which multiplies Point gain & Prestige Point gain by {{format(tmp.timeEff)}}<br><br>
|
<table>
|
||||||
<table><tr><td v-if="milestoneShown(player.t.best.gte(2))" v-bind:class="{ milestone: player.t.best.lt(2), milestoneDone: player.t.best.gte(2) }">2 time capsules<br>Keep Booster/Generator milestones on reset</td></tr>
|
<tr v-if="milestoneShown(player.t.best.gte(2))"><td v-bind:class="{ milestone: player.t.best.lt(2), milestoneDone: player.t.best.gte(2) }"><h3>2 time capsules</h3><br>Keep Booster/Generator milestones on reset</td></tr>
|
||||||
<tr><td v-if="milestoneShown(player.t.best.gte(3)||player.h.best.gte(1)||player.q.best.gte(1))" v-bind:class="{ milestone: player.t.best.lt(3)&&player.h.best.lt(1)&&player.q.best.lt(1), milestoneDone: player.t.best.gte(3)||player.h.best.gte(1)||player.q.best.gte(1) }">3 time capsules<br>Keep Prestige Upgrades on reset</td></tr>
|
<tr v-if="milestoneShown(player.t.best.gte(3)||player.h.best.gte(1)||player.q.best.gte(1))"><td v-bind:class="{ milestone: player.t.best.lt(3)&&player.h.best.lt(1)&&player.q.best.lt(1), milestoneDone: player.t.best.gte(3)||player.h.best.gte(1)||player.q.best.gte(1) }"><h3>3 time capsules</h3><br>Keep Prestige Upgrades on reset</td></tr>
|
||||||
<tr><td v-if="milestoneShown(player.t.best.gte(4))" v-bind:class="{ milestone: player.t.best.lt(4), milestoneDone: player.t.best.gte(4) }">4 time capsules<br>Keep Booster Upgrades on all row 3 resets</td></tr>
|
<tr v-if="milestoneShown(player.t.best.gte(4))"><td v-bind:class="{ milestone: player.t.best.lt(4), milestoneDone: player.t.best.gte(4) }"><h3>4 time capsules</h3><br>Keep Booster Upgrades on all row 3 resets</td></tr>
|
||||||
<tr><td v-if="milestoneShown(player.t.best.gte(5), true)" v-bind:class="{ milestone: player.t.best.lt(5), milestoneDone: player.t.best.gte(5) }">5 time capsules<br>Automatically purchase Boosters <button v-if="player.t.best.gte(5)" class="smallUpg can b" onclick="toggleAuto('b')">{{player.b.auto?"ON":"OFF"}}</button></td></tr>
|
<tr v-if="milestoneShown(player.t.best.gte(5), true)"><td v-bind:class="{ milestone: player.t.best.lt(5), milestoneDone: player.t.best.gte(5) }"><h3>5 time capsules</h3><br>Automatically purchase Boosters <button v-if="player.t.best.gte(5)" class="smallUpg can b" onclick="toggleAuto('b')">{{player.b.auto?"ON":"OFF"}}</button></td></tr>
|
||||||
<tr><td v-if="milestoneShown(player.t.best.gte(12))" v-bind:class="{ milestone: player.t.best.lt(12), milestoneDone: player.t.best.gte(12) }">12 time capsules<br>Boosters reset nothing</td></tr>
|
<tr v-if="milestoneShown(player.t.best.gte(12))"><td v-bind:class="{ milestone: player.t.best.lt(12), milestoneDone: player.t.best.gte(12) }"><h3>12 time capsules</h3><br>Boosters reset nothing</td></tr>
|
||||||
</table><br><br>
|
</table><br><br>
|
||||||
|
You have {{format(player.t.energy)}} Time Energy, which multiplies Point gain & Prestige Point gain by {{format(tmp.timeEff)}}<br>
|
||||||
|
You have {{ format(player.b.points) }} Boosters<br><br>
|
||||||
<button v-bind:class="{ upgBig: true, can: (player.b.points.gte(getExtCapsuleCost())&&player.t.unl), locked: (player.b.points.lt(getExtCapsuleCost())||!player.t.unl), t: true }" onclick="buyExtCapsule()">Buy an extra Time Capsule<br>Cost: {{formatWhole(getExtCapsuleCost())}} Boosters<br>Amount: {{formatWhole(player.t.extCapsules)}}</button>
|
<button v-bind:class="{ upgBig: true, can: (player.b.points.gte(getExtCapsuleCost())&&player.t.unl), locked: (player.b.points.lt(getExtCapsuleCost())||!player.t.unl), t: true }" onclick="buyExtCapsule()">Buy an extra Time Capsule<br>Cost: {{formatWhole(getExtCapsuleCost())}} Boosters<br>Amount: {{formatWhole(player.t.extCapsules)}}</button>
|
||||||
</div>
|
</div>
|
||||||
<div v-if="layer=='s'">
|
<div v-if="layer=='s'">
|
||||||
You have {{formatWhole(getSpace())}} Space remaining for Space Buildings.<br><br>
|
<table>
|
||||||
<table><tr><td v-if="milestoneShown(player.s.best.gte(2))" v-bind:class="{ milestone: player.s.best.lt(2), milestoneDone: player.s.best.gte(2) }">2 space energy<br>Keep Booster/Generator milestones on reset</td></tr>
|
<tr v-if="milestoneShown(player.s.best.gte(2))"><td v-bind:class="{ milestone: player.s.best.lt(2), milestoneDone: player.s.best.gte(2) }"><h3>2 space energy</h3><br>Keep Booster/Generator milestones on reset</td></tr>
|
||||||
<tr><td v-if="milestoneShown(player.s.best.gte(3)||player.h.best.gte(1)||player.h.best.gte(1))" v-bind:class="{ milestone: player.s.best.lt(3)&&player.h.best.lt(1)&&player.q.best.lt(1), milestoneDone: player.s.best.gte(3)||player.h.best.gte(1)||player.q.best.gte(1) }">3 space energy<br>Keep Prestige Upgrades on reset</td></tr>
|
<tr v-if="milestoneShown(player.s.best.gte(3)||player.h.best.gte(1)||player.h.best.gte(1))"><td v-bind:class="{ milestone: player.s.best.lt(3)&&player.h.best.lt(1)&&player.q.best.lt(1), milestoneDone: player.s.best.gte(3)||player.h.best.gte(1)||player.q.best.gte(1) }"><h3>3 space energy</h3><br>Keep Prestige Upgrades on reset</td></tr>
|
||||||
<tr><td v-if="milestoneShown(player.s.best.gte(4))" v-bind:class="{ milestone: player.s.best.lt(4), milestoneDone: player.s.best.gte(4) }">4 space energy<br>Keep Generator Upgrades on all row 3 resets</td></tr>
|
<tr v-if="milestoneShown(player.s.best.gte(4))"><td v-bind:class="{ milestone: player.s.best.lt(4), milestoneDone: player.s.best.gte(4) }"><h3>4 space energy</h3><br>Keep Generator Upgrades on all row 3 resets</td></tr>
|
||||||
<tr><td v-if="milestoneShown(player.s.best.gte(5), true)" v-bind:class="{ milestone: player.s.best.lt(5), milestoneDone: player.s.best.gte(5) }">5 space energy<br>Automatically purchase Generators <button v-if="player.s.best.gte(5)" class="smallUpg can g" onclick="toggleAuto('g')">{{player.g.auto?"ON":"OFF"}}</button></td></tr>
|
<tr v-if="milestoneShown(player.s.best.gte(5), true)"><td v-bind:class="{ milestone: player.s.best.lt(5), milestoneDone: player.s.best.gte(5) }"><h3>5 space energy</h3><br>Automatically purchase Generators <button v-if="player.s.best.gte(5)" class="smallUpg can g" onclick="toggleAuto('g')">{{player.g.auto?"ON":"OFF"}}</button></td></tr>
|
||||||
<tr><td v-if="milestoneShown(player.s.best.gte(12))" v-bind:class="{ milestone: player.s.best.lt(12), milestoneDone: player.s.best.gte(12) }">12 space energy<br>Generators reset nothing</td></tr>
|
<tr v-if="milestoneShown(player.s.best.gte(12))"><td v-bind:class="{ milestone: player.s.best.lt(12), milestoneDone: player.s.best.gte(12) }"><h3>12 space energy</h3><br>Generators reset nothing</td></tr>
|
||||||
</table><br><br>
|
</table><br><br>
|
||||||
|
You have {{formatWhole(getSpace())}} Space remaining for Space Buildings.<br>
|
||||||
You have {{ format(player.g.power) }} Generator Power<br><br>
|
You have {{ format(player.g.power) }} Generator Power<br><br>
|
||||||
<button onclick="respecSpaceBuildings()" v-bind:class="{ longUpg: true, can: player.s.unl, locked: !player.s.unl }">Respec Space Buildings</button><br>
|
<button onclick="respecSpaceBuildings()" v-bind:class="{ longUpg: true, s: true, can: player.s.unl, locked: !player.s.unl }">Respec Space Buildings</button><br>
|
||||||
<div class="upgRow">
|
<div class="upgRow">
|
||||||
<div v-for="id in 5">
|
<div v-for="id in tmp.s.trueSbUnl">
|
||||||
<button v-if="tmp.sbUnl>=id" v-bind:class="{ upg: true, can: (player.g.power.gte(getSpaceBuildingCost(id))&&player.s.unl&&getSpace().gte(1)), locked: (!(player.g.power.gte(getSpaceBuildingCost(id))&&player.s.unl&&getSpace().gte(1))), s: true }" v-on:click="buyBuilding(id)">Building {{id}}<br>Level: {{formatWhole(player.s.buildings[id])}}<br>Cost: {{format(getSpaceBuildingCost(id))}} Generator Power<br>Effect: {{getSpaceBuildingEffDesc(id)}}</button><br><br>
|
<button v-bind:class="{ upg: true, can: (player.g.power.gte(getSpaceBuildingCost(id))&&player.s.unl&&getSpace().gte(1)), locked: (!(player.g.power.gte(getSpaceBuildingCost(id))&&player.s.unl&&getSpace().gte(1))), s: true }" v-on:click="buyBuilding(id)"><h3>Building {{id}}</h3><br>{{getSpaceBuildingEffDesc(id)}}<br><br>Level: {{formatWhole(tmp.s.sb[id])}}<br>Cost: {{format(getSpaceBuildingCost(id))}} Generator Power</button><br><br>
|
||||||
<button v-if="tmp.sbUnl>=id&&player.q.best.gte(2500)" v-bind:class="{ longUpg: true, can: player.s.buildings[id].gte(1), locked: player.s.buildings[id].lt(1) }" v-on:click="destroyBuilding(id)">Destroy One</button><br>
|
<button v-if="player.q.best.gte(2500)" v-bind:class="{ longUpg: true, s: true, can: tmp.s.sb[id].gte(1), locked: tmp.s.sb[id].lt(1) }" v-on:click="destroyBuilding(id)">Destroy One</button><br>
|
||||||
<button v-if="tmp.sbUnl>=id&&player.q.best.gte(2500)" v-bind:class="{ longUpg: true, can: player.s.buildings[id].gte(1), locked: player.s.buildings[id].lt(1) }" v-on:click="destroyBuilding(id, true)">Destroy All</button>
|
<button v-if="player.q.best.gte(2500)" v-bind:class="{ longUpg: true, s: true, can: tmp.s.sb[id].gte(1), locked: tmp.s.sb[id].lt(1) }" v-on:click="destroyBuilding(id, true)">Destroy All</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div v-if="layer=='sb'">
|
<div v-if="layer=='sb'">
|
||||||
<table><tr><td v-if="milestoneShown(player.sb.best.gte(3)||player.h.best.gte(1)||player.q.best.gte(1))" v-bind:class="{ milestone: player.sb.best.lt(3)&&player.h.best.lt(1)&&player.q.best.lt(1), milestoneDone: player.sb.best.gte(3)||player.h.best.gte(1)||player.q.best.gte(1) }">3 Super-Boosters<br>Keep Prestige Upgrades on reset</td></tr>
|
<table><tr v-if="milestoneShown(player.sb.best.gte(3)||player.h.best.gte(1)||player.q.best.gte(1))"><td v-bind:class="{ milestone: player.sb.best.lt(3)&&player.h.best.lt(1)&&player.q.best.lt(1), milestoneDone: player.sb.best.gte(3)||player.h.best.gte(1)||player.q.best.gte(1) }"><h3>3 Super-Boosters</h3><br>Keep Prestige Upgrades on reset</td></tr>
|
||||||
<tr><td v-if="milestoneShown(player.sb.best.gte(4))" v-bind:class="{ milestone: player.sb.best.lt(4), milestoneDone: player.sb.best.gte(4) }">4 Super-Boosters<br>Keep Booster/Generator milestones on reset</td></tr></table>
|
<tr v-if="milestoneShown(player.sb.best.gte(4))"><td v-bind:class="{ milestone: player.sb.best.lt(4), milestoneDone: player.sb.best.gte(4) }"><h3>4 Super-Boosters</h3><br>Keep Booster/Generator milestones on reset</td></tr></table>
|
||||||
</div>
|
</div>
|
||||||
<div v-if="layer=='sg'">
|
<div v-if="layer=='sg'">
|
||||||
You have {{format(player.sg.power)}} Super-Generator Power, which multiplies the Generator base by {{format(tmp.sGenPowEff)}}<br><br>
|
|
||||||
<table>
|
<table>
|
||||||
<tr><td v-if="milestoneShown(player.sg.best.gte(1))" v-bind:class="{ milestone: player.sg.best.lt(1), milestoneDone: player.sg.best.gte(1) }">1 Super-Generator<br>You can buy max Super-Generators, and Super-Generators reset nothing</td></tr>
|
<tr v-if="milestoneShown(player.sg.best.gte(1))"><td v-bind:class="{ milestone: player.sg.best.lt(1), milestoneDone: player.sg.best.gte(1) }"><h3>1 Super-Generator</h3><br>You can buy max Super-Generators, and Super-Generators reset nothing</td></tr>
|
||||||
<tr><td v-if="milestoneShown(player.sg.best.gte(2), true)" v-bind:class="{ milestone: player.sg.best.lt(2), milestoneDone: player.sg.best.gte(2) }">2 Super-Generators<br>Automatically purchase Super-Generators <button v-if="player.sg.best.gte(2)" class="smallUpg can sg" onclick="toggleAuto('sg')">{{player.sg.auto?"ON":"OFF"}}</button></td></tr>
|
<tr v-if="milestoneShown(player.sg.best.gte(2), true)"><td v-bind:class="{ milestone: player.sg.best.lt(2), milestoneDone: player.sg.best.gte(2) }"><h3>2 Super-Generators</h3><br>Automatically purchase Super-Generators <button v-if="player.sg.best.gte(2)" class="smallUpg can sg" onclick="toggleAuto('sg')">{{player.sg.auto?"ON":"OFF"}}</button></td></tr>
|
||||||
</table>
|
</table><br><br>
|
||||||
|
You have {{format(player.sg.power)}} Super-Generator Power, which multiplies the Generator base by {{format(tmp.sGenPowEff)}}
|
||||||
</div>
|
</div>
|
||||||
<div v-if="layer=='h'">
|
<div v-if="layer=='h'">
|
||||||
<table><tr><td v-if="milestoneShown(player.h.best.gte(1))" v-bind:class="{ milestone: player.h.best.lt(1), milestoneDone: player.h.best.gte(1) }">1 Hindrance Spirit<br>Keep Prestige Upgrades on all previous resets, and gain 100x more Enhance Points</td></tr>
|
<table><tr v-if="milestoneShown(player.h.best.gte(1))"><td v-bind:class="{ milestone: player.h.best.lt(1), milestoneDone: player.h.best.gte(1) }"><h3>1 Hindrance Spirit</h3><br>Keep Prestige Upgrades on all previous resets, and gain 100x more Enhance Points</td></tr>
|
||||||
<tr><td v-if="milestoneShown(player.h.best.gte(2))" v-bind:class="{ milestone: player.h.best.lt(2), milestoneDone: player.h.best.gte(2) }">2 Hindrance Spirit<br>Keep all third row milestones on all fourth row resets, and start with your best-ever Space</td></tr>
|
<tr v-if="milestoneShown(player.h.best.gte(2))"><td v-bind:class="{ milestone: player.h.best.lt(2), milestoneDone: player.h.best.gte(2) }"><h3>2 Hindrance Spirit</h3><br>Keep all third row milestones on all fourth row resets, and start with your best-ever Space</td></tr>
|
||||||
<tr><td v-if="milestoneShown(player.h.best.gte(4))" v-bind:class="{ milestone: player.h.best.lt(4), milestoneDone: player.h.best.gte(4) }">4 Hindrance Spirit<br>Keep Time, Enhance, and Space Upgrades on all fourth row resets</td></tr>
|
<tr v-if="milestoneShown(player.h.best.gte(4))"><td v-bind:class="{ milestone: player.h.best.lt(4), milestoneDone: player.h.best.gte(4) }"><h3>4 Hindrance Spirit</h3><br>Keep Time, Enhance, and Space Upgrades on all fourth row resets</td></tr>
|
||||||
<tr><td v-if="milestoneShown(player.h.best.gte(5), true)" v-bind:class="{ milestone: player.h.best.lt(5), milestoneDone: player.h.best.gte(5) }">5 Hindrance Spirit<br>Automatically purchase Extra Time Capsules <button v-if="player.h.best.gte(5)" class="smallUpg can t" onclick="toggleAuto('t', 'Cap')">{{player.t.autoCap?"ON":"OFF"}}</button></td></tr>
|
<tr v-if="milestoneShown(player.h.best.gte(5), true)"><td v-bind:class="{ milestone: player.h.best.lt(5), milestoneDone: player.h.best.gte(5) }"><h3>5 Hindrance Spirit</h3><br>Automatically purchase Extra Time Capsules <button v-if="player.h.best.gte(5)" class="smallUpg can t" onclick="toggleAuto('t', 'Cap')">{{player.t.autoCap?"ON":"OFF"}}</button></td></tr>
|
||||||
<tr><td v-if="milestoneShown(player.h.best.gte(10))" v-bind:class="{ milestone: player.h.best.lt(10), milestoneDone: player.h.best.gte(10) }">10 Hindrance Spirit<br>Keep Prestige & Super-Booster Upgrades on all fourth row resets</td></tr>
|
<tr v-if="milestoneShown(player.h.best.gte(10))"><td v-bind:class="{ milestone: player.h.best.lt(10), milestoneDone: player.h.best.gte(10) }"><h3>10 Hindrance Spirit</h3><br>Keep Prestige & Super-Booster Upgrades on all fourth row resets</td></tr>
|
||||||
<tr><td v-if="milestoneShown(player.h.best.gte(15), true)" v-bind:class="{ milestone: player.h.best.lt(15), milestoneDone: player.h.best.gte(15) }">15 Hindrance Spirit<br>Automatically purchase Super-Boosters <button v-if="player.h.best.gte(15)" class="smallUpg can sb" onclick="toggleAuto('sb')">{{player.sb.auto?"ON":"OFF"}}</button></td></tr>
|
<tr v-if="milestoneShown(player.h.best.gte(15), true)"><td v-bind:class="{ milestone: player.h.best.lt(15), milestoneDone: player.h.best.gte(15) }"><h3>15 Hindrance Spirit</h3><br>Automatically purchase Super-Boosters <button v-if="player.h.best.gte(15)" class="smallUpg can sb" onclick="toggleAuto('sb')">{{player.sb.auto?"ON":"OFF"}}</button></td></tr>
|
||||||
<tr><td v-if="milestoneShown(player.h.best.gte(25))" v-bind:class="{ milestone: player.h.best.lt(25), milestoneDone: player.h.best.gte(25) }">25 Hindrance Spirit<br>Time resets reset nothing</td></tr>
|
<tr v-if="milestoneShown(player.h.best.gte(25))"><td v-bind:class="{ milestone: player.h.best.lt(25), milestoneDone: player.h.best.gte(25) }"><h3>25 Hindrance Spirit</h3><br>Time resets reset nothing</td></tr>
|
||||||
<tr><td v-if="milestoneShown(player.h.best.gte(2500))" v-bind:class="{ milestone: player.h.best.lt(2500), milestoneDone: player.h.best.gte(2500) }">2,500 Hindrance Spirit<br>Super-Boosters reset nothing</td></tr>
|
<tr v-if="milestoneShown(player.h.best.gte(2500))"><td v-bind:class="{ milestone: player.h.best.lt(2500), milestoneDone: player.h.best.gte(2500) }"><h3>2,500 Hindrance Spirit</h3><br>Super-Boosters reset nothing</td></tr>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
<div v-if="layer=='q'">
|
<div v-if="layer=='q'">
|
||||||
You have {{format(player.q.energy)}} Quirk Energy (generated by Quirk Layers), which multiplies Point & Generator Power gain by {{format(tmp.quirkEff)}}<br><br>
|
<table><tr v-if="milestoneShown(player.q.best.gte(1))"><td v-bind:class="{ milestone: player.q.best.lt(1), milestoneDone: player.q.best.gte(1) }"><h3>1 Quirk</h3><br>Keep Prestige Upgrades on all previous resets, and gain 100x more Enhance Points</td></tr>
|
||||||
<table><tr><td v-if="milestoneShown(player.q.best.gte(1))" v-bind:class="{ milestone: player.q.best.lt(1), milestoneDone: player.q.best.gte(1) }">1 Quirk<br>Keep Prestige Upgrades on all previous resets, and gain 100x more Enhance Points</td></tr>
|
<tr v-if="milestoneShown(player.q.best.gte(2))"><td v-bind:class="{ milestone: player.q.best.lt(2), milestoneDone: player.q.best.gte(2) }"><h3>2 Quirks</h3><br>You can buy max Time Capsules & Space Energy</td></tr>
|
||||||
<tr><td v-if="milestoneShown(player.q.best.gte(2))" v-bind:class="{ milestone: player.q.best.lt(2), milestoneDone: player.q.best.gte(2) }">2 Quirks<br>You can buy max Time Capsules & Space Energy</td></tr>
|
<tr v-if="milestoneShown(player.q.best.gte(4))"><td v-bind:class="{ milestone: player.q.best.lt(4), milestoneDone: player.q.best.gte(4) }"><h3>4 Quirks</h3><br>Keep Space Buildings on all fourth row resets</td></tr>
|
||||||
<tr><td v-if="milestoneShown(player.q.best.gte(4))" v-bind:class="{ milestone: player.q.best.lt(4), milestoneDone: player.q.best.gte(4) }">4 Quirks<br>Keep Space Buildings on all fourth row resets</td></tr>
|
<tr v-if="milestoneShown(player.q.best.gte(5), true)"><td v-bind:class="{ milestone: player.q.best.lt(5), milestoneDone: player.q.best.gte(5) }"><h3>5 Quirks</h3><br>Automatically purchase Enhancers <button v-if="player.q.best.gte(5)" class="smallUpg can e" onclick="toggleAuto('e')">{{player.e.auto?"ON":"OFF"}}</button></td></tr>
|
||||||
<tr><td v-if="milestoneShown(player.q.best.gte(5), true)" v-bind:class="{ milestone: player.q.best.lt(5), milestoneDone: player.q.best.gte(5) }">5 Quirks<br>Automatically purchase Enhancers <button v-if="player.q.best.gte(5)" class="smallUpg can e" onclick="toggleAuto('e')">{{player.e.auto?"ON":"OFF"}}</button></td></tr>
|
<tr v-if="milestoneShown(player.q.best.gte(10), true)"><td v-bind:class="{ milestone: player.q.best.lt(10), milestoneDone: player.q.best.gte(10) }"><h3>10 Quirks</h3><br>Automatically purchase Time Capsules & Space Energy<br><button v-if="player.q.best.gte(10)" class="smallUpg can t" onclick="toggleAuto('t')">{{player.t.auto?"ON":"OFF"}}</button> <button v-if="player.q.best.gte(10)" class="smallUpg can s" onclick="toggleAuto('s')">{{player.s.auto?"ON":"OFF"}}</button></td></tr>
|
||||||
<tr><td v-if="milestoneShown(player.q.best.gte(10), true)" v-bind:class="{ milestone: player.q.best.lt(10), milestoneDone: player.q.best.gte(10) }">10 Quirks<br>Automatically purchase Time Capsules & Space Energy<br><button v-if="player.q.best.gte(10)" class="smallUpg can t" onclick="toggleAuto('t')">{{player.t.auto?"ON":"OFF"}}</button> <button v-if="player.q.best.gte(10)" class="smallUpg can s" onclick="toggleAuto('s')">{{player.s.auto?"ON":"OFF"}}</button></td></tr>
|
<tr v-if="milestoneShown(player.q.best.gte(15))"><td v-bind:class="{ milestone: player.q.best.lt(15), milestoneDone: player.q.best.gte(15) }"><h3>15 Quirks</h3><br>Gain 100% of Enhance Point gain every second</td></tr>
|
||||||
<tr><td v-if="milestoneShown(player.q.best.gte(15))" v-bind:class="{ milestone: player.q.best.lt(15), milestoneDone: player.q.best.gte(15) }">15 Quirks<br>Gain 100% of Enhance Point gain every second</td></tr>
|
<tr v-if="milestoneShown(player.q.best.gte(25))"><td v-bind:class="{ milestone: player.q.best.lt(25), milestoneDone: player.q.best.gte(25) }"><h3>25 Quirks</h3><br>Space resets reset nothing</td></tr>
|
||||||
<tr><td v-if="milestoneShown(player.q.best.gte(25))" v-bind:class="{ milestone: player.q.best.lt(25), milestoneDone: player.q.best.gte(25) }">25 Quirks<br>Space resets reset nothing</td></tr>
|
<tr v-if="milestoneShown(player.q.best.gte(2500))"><td v-bind:class="{ milestone: player.q.best.lt(2500), milestoneDone: player.q.best.gte(2500) }"><h3>2,500 Quirks</h3><br>You can destroy individual Space Buildings</td></tr>
|
||||||
<tr><td v-if="milestoneShown(player.q.best.gte(2500))" v-bind:class="{ milestone: player.q.best.lt(2500), milestoneDone: player.q.best.gte(2500) }">2,500 Quirks<br>You can destroy individual Space Buildings</td></tr>
|
|
||||||
</table><br><br>
|
</table><br><br>
|
||||||
|
You have {{format(player.q.energy)}} Quirk Energy (generated by Quirk Layers), which multiplies Point & Generator Power gain by {{format(tmp.quirkEff)}}<br>
|
||||||
<button v-bind:class="{ upgBig: true, can: player.q.points.gte(getQuirkLayerCost()), locked: player.q.points.lt(getQuirkLayerCost()), q: true }" onclick="buyQuirkLayer()">Increment your Quirk Layer<br>Cost: {{formatWhole(getQuirkLayerCost())}} Quirks<br>Layers: {{formatWhole(player.q.layers)}}</button>
|
<button v-bind:class="{ upgBig: true, can: player.q.points.gte(getQuirkLayerCost()), locked: player.q.points.lt(getQuirkLayerCost()), q: true }" onclick="buyQuirkLayer()">Increment your Quirk Layer<br>Cost: {{formatWhole(getQuirkLayerCost())}} Quirks<br>Layers: {{formatWhole(player.q.layers)}}</button>
|
||||||
</div>
|
</div>
|
||||||
<div v-if="layer=='hb'">
|
<div v-if="layer=='hb'">
|
||||||
<table>
|
<table>
|
||||||
<tr><td v-if="milestoneShown(player.hb.best.gte(1))" v-bind:class="{ milestone: player.hb.best.lt(1), milestoneDone: player.hb.best.gte(1) }">1 Hyper-Booster<br>You can buy max Super-Boosters</td></tr>
|
<tr v-if="milestoneShown(player.hb.best.gte(1))"><td v-bind:class="{ milestone: player.hb.best.lt(1), milestoneDone: player.hb.best.gte(1) }"><h3>1 Hyper-Booster</h3><br>You can buy max Super-Boosters</td></tr>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
<div v-if="layer=='ss'">
|
<div v-if="layer=='ss'">
|
||||||
You have {{format(player.ss.subspace)}} Subspace, which provides you with {{formatWhole(tmp.ssEff1)}} extra Space, makes all Space Buildings {{format(tmp.ssEff2)}}x cheaper, and makes all Space Buildings {{format(tmp.ssEff3.sub(1).times(100))}}% stronger<br><br>
|
|
||||||
<table>
|
<table>
|
||||||
<tr><td v-if="milestoneShown(player.ss.best.gte(1), true)" v-bind:class="{ milestone: player.ss.best.lt(1), milestoneDone: player.ss.best.gte(1) }">1 Subspace Energy<br>Automatically purchase Space Buildings <button v-if="player.ss.best.gte(1)" class="smallUpg can s" onclick="toggleAuto('s', 'Build')">{{player.s.autoBuild?"ON":"OFF"}}</button></td></tr>
|
<tr v-if="milestoneShown(player.ss.best.gte(1), true)"><td v-bind:class="{ milestone: player.ss.best.lt(1), milestoneDone: player.ss.best.gte(1) }"><h3>1 Subspace Energy</h3><br>Automatically purchase Space Buildings <button v-if="player.ss.best.gte(1)" class="smallUpg can s" onclick="toggleAuto('s', 'Build')">{{player.s.autoBuild?"ON":"OFF"}}</button></td></tr>
|
||||||
</table>
|
</table><br><br>
|
||||||
|
You have {{format(player.ss.subspace)}} Subspace, which provides you with {{formatWhole(tmp.ssEff1)}} extra Space, makes all Space Buildings {{format(tmp.ssEff2)}}x cheaper, and makes all Space Buildings {{format(tmp.ssEff3.sub(1).times(100))}}% stronger
|
||||||
</div>
|
</div>
|
||||||
<div v-if="layer=='m'">
|
<div v-if="layer=='m'">
|
||||||
<br>
|
<table>
|
||||||
<span v-if="player.sp.total.lt(2)">Note: Activating a Spell costs Magic.</span><br><br>
|
<tr v-if="milestoneShown(player.m.total.gte(1))"><td v-bind:class="{ milestone: player.m.total.lt(1), milestoneDone: player.m.total.gte(1) }"><h3>1 total Magic</h3><br>Keep row 4 milestones on all resets</td></tr>
|
||||||
|
<tr v-if="milestoneShown(player.m.total.gte(2))"><td v-bind:class="{ milestone: player.m.total.lt(2), milestoneDone: player.m.total.gte(2) }"><h3>2 total Magic</h3><br>Keep Hindrance completions on all resets</td></tr>
|
||||||
|
<tr v-if="milestoneShown(player.m.total.gte(3))"><td v-bind:class="{ milestone: player.m.total.lt(3), milestoneDone: player.m.total.gte(3) }"><h3>3 total Magic</h3><br>Gain 100% of Hindrance Spirit & Quirk gain every second</td></tr>
|
||||||
|
<tr v-if="milestoneShown(player.m.total.gte(4), true)"><td v-bind:class="{ milestone: player.m.total.lt(4), milestoneDone: player.m.total.gte(4) }"><h3>4 total Magic</h3><br>Automatically purchase Hyper-Boosters & Subspace <button v-if="player.m.total.gte(4)" class="smallUpg can hb" onclick="toggleAuto('hb')">{{player.hb.auto?"ON":"OFF"}}</button> <button v-if="player.m.total.gte(4)" class="smallUpg can ss" onclick="toggleAuto('ss')">{{player.ss.auto?"ON":"OFF"}}</button></td></tr>
|
||||||
|
<tr v-if="milestoneShown(player.m.total.gte(50), true)"><td v-bind:class="{ milestone: player.m.total.lt(50), milestoneDone: player.m.total.gte(50) }"><h3>50 total Magic</h3><br>Automatically cast Spells <button v-if="player.m.total.gte(50)" class="smallUpg can m" onclick="toggleAuto('m')">{{player.m.auto?"ON":"OFF"}}</button></td></tr>
|
||||||
|
<tr v-if="milestoneShown(player.m.total.gte(2.5e9))"><td v-bind:class="{ milestone: player.m.total.lt(2.5e9), milestoneDone: player.m.total.gte(2.5e9) }"><h3>2.5e9 total Magic</h3><br>Gain 100% of Hex gain every second, and Spells last 4x longer</td></tr>
|
||||||
|
</table><br><br>
|
||||||
|
<span v-if="player.sp.total.lt(2)">Note: Activating a Spell costs Magic.<br></span>
|
||||||
<div class="upgRow">
|
<div class="upgRow">
|
||||||
<div v-for="id in tmp.spellsUnl">
|
<div v-for="id in tmp.spellsUnl">
|
||||||
<button v-bind:class="{ upg: true, bought: spellActive(id), can: ((player.m.points.gte(player.m.toCast[id]))&&player.m.unl&&!spellActive(id)), locked: (!(player.m.points.gte(player.m.toCast[id])||spellActive(id))), m: true }" v-on:click="activateSpell(id)"><h3>{{SPELL_NAMES[id]}}</h3><br>Time Left: {{formatTime(player.m.spellTimes[id])}}<br>Effect: {{getSpellDesc(id)}}</button><br><br>
|
<button v-bind:class="{ upg: true, bought: spellActive(id), can: ((player.m.points.gte(player.m.toCast[id]))&&player.m.unl&&!spellActive(id)), locked: (!(player.m.points.gte(player.m.toCast[id])||spellActive(id))), m: true }" v-on:click="activateSpell(id)"><h3>{{SPELL_NAMES[id]}}</h3><br>{{getSpellDesc(id)}}<br><br>Time: {{formatTime(player.m.spellTimes[id])}}</button><br><br>
|
||||||
<div v-if="player.m.upgrades.includes(41)">
|
<div v-if="player.m.upgrades.includes(41)">
|
||||||
<input v-model="player.m.toCast[id]" v-on:change="updateToCast(id)"></input><br><br>
|
<input v-model="player.m.toCast[id]" v-on:focus="focused(true)" v-on:blur="focused(false)" v-on:change="updateToCast(id)"></input><br><br>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
You have {{formatWhole(player.m.hexes)}} Hexes, which are multiplying Hindrance Spirit & Quirk gain by {{format(tmp.hexEff)}}<br><br>
|
You have {{formatWhole(player.m.hexes)}} Hexes, which are multiplying Hindrance Spirit & Quirk gain by {{format(tmp.hexEff)}}
|
||||||
<table>
|
|
||||||
<tr><td v-if="milestoneShown(player.m.best.gte(1))" v-bind:class="{ milestone: player.m.best.lt(1), milestoneDone: player.m.best.gte(1) }">1 Magic<br>Keep row 4 milestones on all resets</td></tr>
|
|
||||||
<tr><td v-if="milestoneShown(player.m.best.gte(2))" v-bind:class="{ milestone: player.m.best.lt(2), milestoneDone: player.m.best.gte(2) }">2 Magic<br>Keep Hindrance completions on all resets</td></tr>
|
|
||||||
<tr><td v-if="milestoneShown(player.m.best.gte(3))" v-bind:class="{ milestone: player.m.best.lt(3), milestoneDone: player.m.best.gte(3) }">3 Magic<br>Gain 100% of Hindrance Spirit & Quirk gain every second</td></tr>
|
|
||||||
<tr><td v-if="milestoneShown(player.m.best.gte(4), true)" v-bind:class="{ milestone: player.m.best.lt(4), milestoneDone: player.m.best.gte(4) }">4 Magic<br>Automatically purchase Hyper-Boosters & Subspace <button v-if="player.m.best.gte(4)" class="smallUpg can hb" onclick="toggleAuto('hb')">{{player.hb.auto?"ON":"OFF"}}</button> <button v-if="player.m.best.gte(4)" class="smallUpg can ss" onclick="toggleAuto('ss')">{{player.ss.auto?"ON":"OFF"}}</button></td></tr>
|
|
||||||
<tr><td v-if="milestoneShown(player.m.best.gte(1000), true)" v-bind:class="{ milestone: player.m.best.lt(1000), milestoneDone: player.m.best.gte(1000) }">1,000 Magic<br>Automatically cast Spells <button v-if="player.m.best.gte(1000)" class="smallUpg can m" onclick="toggleAuto('m')">{{player.m.auto?"ON":"OFF"}}</button></td></tr>
|
|
||||||
<tr><td v-if="milestoneShown(player.m.best.gte(2.5e9))" v-bind:class="{ milestone: player.m.best.lt(2.5e9), milestoneDone: player.m.best.gte(2.5e9) }">2.5e9 Magic<br>Gain 100% of Hex gain every second, and Spells last 10x longer</td></tr>
|
|
||||||
</table>
|
|
||||||
</div>
|
</div>
|
||||||
<div v-if="layer=='ba'">
|
<div v-if="layer=='ba'">
|
||||||
<br>You have {{format(player.ba.power)}} Balance Power, which is multiplying Hindrance Spirit & Quirk gain by {{format(tmp.balEff)}}<br><br>
|
|
||||||
You have {{format(player.ba.positivity)}} Positivity<br>
|
|
||||||
You have {{format(player.ba.negativity)}} Negativity<br>
|
|
||||||
Your Positivity & Negativity are multiplying Balance Power gain by {{format(tmp.balEff2)}}<br><br>
|
|
||||||
<table>
|
<table>
|
||||||
<tr><td v-if="milestoneShown(player.ba.best.gte(1))" v-bind:class="{ milestone: player.ba.best.lt(1), milestoneDone: player.ba.best.gte(1) }">1 Balance Energy<br>Keep row 4 milestones on all resets</td></tr>
|
<tr v-if="milestoneShown(player.ba.best.gte(1))"><td v-bind:class="{ milestone: player.ba.best.lt(1), milestoneDone: player.ba.best.gte(1) }"><h3>1 Balance Energy</h3><br>Keep row 4 milestones on all resets</td></tr>
|
||||||
<tr><td v-if="milestoneShown(player.ba.best.gte(2))" v-bind:class="{ milestone: player.ba.best.lt(2), milestoneDone: player.ba.best.gte(2) }">2 Balance Energy<br>Keep Quirk Upgrades on all resets</td></tr>
|
<tr v-if="milestoneShown(player.ba.best.gte(2))"><td v-bind:class="{ milestone: player.ba.best.lt(2), milestoneDone: player.ba.best.gte(2) }"><h3>2 Balance Energy</h3><br>Keep Quirk Upgrades on all resets</td></tr>
|
||||||
<tr><td v-if="milestoneShown(player.ba.best.gte(3), true)" v-bind:class="{ milestone: player.ba.best.lt(3), milestoneDone: player.ba.best.gte(3) }">3 Balance Energy<br>Automatically purchase Quirk Layers <button v-if="player.ba.best.gte(3)" class="smallUpg can q" onclick="toggleAuto('q')">{{player.q.auto?"ON":"OFF"}}</button></td></tr>
|
<tr v-if="milestoneShown(player.ba.best.gte(3), true)"><td v-bind:class="{ milestone: player.ba.best.lt(3), milestoneDone: player.ba.best.gte(3) }"><h3>3 Balance Energy</h3><br>Automatically purchase Quirk Layers <button v-if="player.ba.best.gte(3)" class="smallUpg can q" onclick="toggleAuto('q')">{{player.q.auto?"ON":"OFF"}}</button></td></tr>
|
||||||
<tr><td v-if="milestoneShown(player.ba.best.gte(5))" v-bind:class="{ milestone: player.ba.best.lt(5), milestoneDone: player.ba.best.gte(5) }">5 Balance Energy<br>Keep Hyper-Booster & Subspace Upgrades on all resets</td></tr>
|
<tr v-if="milestoneShown(player.ba.best.gte(5))"><td v-bind:class="{ milestone: player.ba.best.lt(5), milestoneDone: player.ba.best.gte(5) }"><h3>5 Balance Energy</h3><br>Keep Hyper-Booster & Subspace Upgrades on all resets</td></tr>
|
||||||
<tr><td v-if="milestoneShown(player.ba.best.gte(8))" v-bind:class="{ milestone: player.ba.best.lt(8), milestoneDone: player.ba.best.gte(8) }">8 Balance Energy<br>You can buy max Hyper-Boosters & Subspace Energy, and Hyper-Boosters/Subspace Energy reset nothing</td></tr>
|
<tr v-if="milestoneShown(player.ba.best.gte(8))"><td v-bind:class="{ milestone: player.ba.best.lt(8), milestoneDone: player.ba.best.gte(8) }"><h3>8 Balance Energy</h3><br>You can buy max Hyper-Boosters & Subspace Energy, and Hyper-Boosters/Subspace Energy reset nothing</td></tr>
|
||||||
</table>
|
</table><br><br>
|
||||||
|
You have {{format(player.ba.power)}} Balance Power, which is multiplying Hindrance Spirit & Quirk gain by {{format(tmp.balEff)}}<br>
|
||||||
|
You have {{format(player.ba.positivity)}} Positivity and {{format(player.ba.negativity)}} Negativity, which are multiplying Balance Power gain by {{format(tmp.balEff2)}}
|
||||||
|
</div>
|
||||||
|
<div v-if="layer=='ps'">
|
||||||
|
<table>
|
||||||
|
<tr v-if="milestoneShown(player.ps.best.gte(2), true)"><td v-bind:class="{ milestone: player.ps.best.lt(5), milestoneDone: player.ps.best.gte(2) }"><h3>2 Phantom Souls</h3><br>Automatically purchase Phantom Souls <button v-if="player.ps.best.gte(2)" class="smallUpg can ps" onclick="toggleAuto('ps')">{{player.ps.auto?"ON":"OFF"}}</button></td></tr>
|
||||||
|
<tr v-if="milestoneShown(player.ps.best.gte(5))"><td v-bind:class="{ milestone: player.ps.best.lt(5), milestoneDone: player.ps.best.gte(5) }"><h3>5 Phantom Souls</h3><br>You can buy max Phantom Souls, and Phantom Souls reset nothing</td></tr>
|
||||||
|
</table><br><br>
|
||||||
</div>
|
</div>
|
||||||
<div v-if="layer=='sp'">
|
<div v-if="layer=='sp'">
|
||||||
<table>
|
<table>
|
||||||
<tr><td v-if="milestoneShown(player.sp.total.gte(1))" v-bind:class="{ milestone: player.sp.total.lt(1), milestoneDone: player.sp.total.gte(1) }">1 Total Super-Prestige Point<br>Upgrades of Rows 1-5 and Hindrances are kept on all resets</td></tr>
|
<tr v-if="milestoneShown(player.sp.total.gte(1))"><td v-bind:class="{ milestone: player.sp.total.lt(1), milestoneDone: player.sp.total.gte(1) }"><h3>1 total Super-Prestige Point</h3><br>Upgrades of Rows 1-5 and Hindrances are kept on all resets</td></tr>
|
||||||
<tr><td v-if="milestoneShown(player.sp.total.gte(2), true)" v-bind:class="{ milestone: player.sp.total.lt(2), milestoneDone: player.sp.total.gte(2) }">2 Total Super-Prestige Points<br>Keep Magic Milestones on reset, Spells do not cost Magic, and Magic Upgrade 13's effect can be auto-set to your current Magic <button v-if="player.sp.total.gte(2)" class="smallUpg can m" onclick="toggleAuto('m', 'Ins')">{{player.m.autoIns?"ON":"OFF"}}</button></td></tr>
|
<tr v-if="milestoneShown(player.sp.total.gte(2), true)"><td v-bind:class="{ milestone: player.sp.total.lt(2), milestoneDone: player.sp.total.gte(2) }"><h3>2 total Super-Prestige Points</h3><br>Keep Magic Milestones on reset, Spells do not cost Magic, and Magic Upgrade 13's effect can be auto-set to your current Magic <button v-if="player.sp.total.gte(2)" class="smallUpg can m" onclick="toggleAuto('m', 'Ins')">{{player.m.autoIns?"ON":"OFF"}}</button></td></tr>
|
||||||
<tr><td v-if="milestoneShown(player.sp.total.gte(5))" v-bind:class="{ milestone: player.sp.total.lt(5), milestoneDone: player.sp.total.gte(5) }">5 Total Super-Prestige Point<br>Keep Balance Milestones on reset</td></tr>
|
<tr v-if="milestoneShown(player.sp.total.gte(5))"><td v-bind:class="{ milestone: player.sp.total.lt(5), milestoneDone: player.sp.total.gte(5) }"><h3>5 total Super-Prestige Points</h3><br>Keep Balance Milestones on reset</td></tr>
|
||||||
<tr><td v-if="milestoneShown(player.sp.total.gte(10))" v-bind:class="{ milestone: player.sp.total.lt(10), milestoneDone: player.sp.total.gte(10) }">10 Total Super-Prestige Point<br>Gain 100% of Magic & Balance Power gain every second</td></tr>
|
<tr v-if="milestoneShown(player.sp.total.gte(10))"><td v-bind:class="{ milestone: player.sp.total.lt(10), milestoneDone: player.sp.total.gte(10) }"><h3>10 total Super-Prestige Points</h3><br>Gain 100% of Magic & Balance Power gain every second</td></tr>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
<br><br><br>
|
<div v-if="layer=='l'">
|
||||||
<button v-if="LAYER_TYPE[layer]=='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-on:click="doReset(layer)">+{{formatWhole(tmp.resetGain[layer])}} {{LAYER_RES[layer]}}<br>Next at {{ (LAYER_RES_CEIL.includes(layer) ? formatWhole(tmp.nextAt[layer]) : format(tmp.nextAt[layer])) }} {{ LAYER_AMT_NAMES[layer] }}</button>
|
<br><br>
|
||||||
<button v-if="LAYER_TYPE[layer]=='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-on:click="doReset(layer)">+{{formatWhole(tmp.resetGain[layer])}} {{LAYER_RES[layer]}}<br>Req: {{(LAYER_RES_CEIL.includes(layer) ? formatWhole(tmp.nextAt[layer]) : format(tmp.nextAt[layer]))}} {{ LAYER_AMT_NAMES[layer] }}</button>
|
You have {{format(player.l.power)}} Life Power (+{{format(LIFE_BOOSTERS.calcNewPower(1).sub(player.l.power))}}/s),<br>
|
||||||
<br><br><br>
|
which is translating to:
|
||||||
<div class="upgTable">
|
<div class="upgRow">
|
||||||
<div v-for="row in LAYER_UPGS[layer].rows" class="upgRow">
|
<div v-for="i in tmp.l.lbUnl">
|
||||||
<div v-for="col in LAYER_UPGS[layer].cols"><button v-if="LAYER_UPGS[layer][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: (player[layer].points.lt(LAYER_UPGS[layer][row*10+col].cost)&&!player[layer].upgrades.includes(row*10+col)), can: (player[layer].points.gte(LAYER_UPGS[layer][row*10+col].cost)&&!player[layer].upgrades.includes(row*10+col)) }">{{ LAYER_UPGS[layer][row*10+col].desc }}<br>Cost: {{ formatWhole(LAYER_UPGS[layer][row*10+col].cost) }} {{LAYER_RES[layer]}}<span v-if="LAYER_UPGS[layer][row*10+col].currently"><br>Currently: {{LAYER_UPGS[layer][row*10+col].effDisp(LAYER_UPGS[layer][row*10+col].currently())}}</span></button></div>
|
<button v-bind:class="{ upgBig: true, l: true }"><h3>Life Booster {{i}}</h3><br>{{LIFE_BOOSTERS[i].effDesc(tmp.l.lbEff[i])}}<br><br>Boosters: {{formatWhole(tmp.l.lb[i])}}<br>Next at: {{formatWhole(LIFE_BOOSTERS.req(i).ceil())}} Phantom Souls</button>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
You have {{formatWhole(player.ps.points)}} Phantom Souls, {{getLayerEffDesc("ps")}}
|
||||||
|
</div>
|
||||||
|
<div v-if="layer=='hs'">
|
||||||
|
<table>
|
||||||
|
<tr v-if="milestoneShown(player.hs.best.gte(2e4))"><td v-bind:class="{ milestone: player.hs.best.lt(2e4), milestoneDone: player.hs.best.gte(2e4) }"><h3>20,000 Hyperspace Energy</h3><br>Gain 1% of Super-Prestige Points gain every second</td></tr>
|
||||||
|
</table>
|
||||||
|
<br><br>
|
||||||
|
You have {{formatWhole(player.ba.points)}} Balance Energy
|
||||||
|
<br>
|
||||||
|
<button v-on:click="HYPERSPACE.buy()" v-bind:class="{ upgBig: true, hs: true, can: HYPERSPACE.canBuy(), locked: !HYPERSPACE.canBuy() }">Buy a Hyperspace<br>Amount: {{formatWhole(player.hs.space.sub(player.hs.spent))}}<br><br>Cost: {{formatWhole(HYPERSPACE.cost().hs)}} Hyperspace Energy & {{formatWhole(HYPERSPACE.cost().ba)}} Balance Energy</button>
|
||||||
|
<br><br>
|
||||||
|
<button v-on:click="HYPERSPACE.respec()" v-bind:class="{ longUpg: true, hs: true, can: player.hs.unl, locked: !player.hs.unl }">Respec Super-Upgrades</button><br>
|
||||||
|
<div class="upgRow">
|
||||||
|
<div v-for="i in tmp.s.trueSbUnl">
|
||||||
|
<button v-on:click="HYPERSPACE.superUpg(i)" v-bind:class="{ upg: true, hs: true, can: HYPERSPACE.canSuperUpg(i), locked: !HYPERSPACE.canSuperUpg(i) }"><h3>Building {{i}}</h3><br>{{getSpaceBuildingEffDesc(i)}}<br><br>Super-Level: {{formatWhole(tmp.hs.su[i])}} / {{formatWhole(player.hs.superUpgradeCap)}}<br>({{format(tmp.hs.suEff[i].sub(1).times(100))}}% stronger)<br>Cost: 1 Hyperspace</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<br>
|
||||||
|
Get {{formatWhole(player.g.points)}} / {{formatWhole(HYPERSPACE.nextCapReq())}} Generators to increase the cap of Super-Upgrades
|
||||||
|
</div>
|
||||||
|
<div v-if="layer=='i'">
|
||||||
|
<table>
|
||||||
|
<tr v-if="milestoneShown(player.i.best.gte(3))"><td v-bind:class="{ milestone: player.i.best.lt(3), milestoneDone: player.i.best.gte(3) }"><h3>3 Imperium Bricks</h3><br>You can max out Imperium Bricks</td></tr>
|
||||||
|
</table>
|
||||||
|
<br><br>
|
||||||
|
You have {{formatWhole(player.i.lifeBricks)}} Life Bricks<br>
|
||||||
|
Next Life Brick is at {{format(player.l.power)}} / {{format(IMPERIUM.lifeReq())}} Life Power
|
||||||
|
<br><br>
|
||||||
|
<button v-on:click="IMPERIUM.build()" v-bind:class="{ upgBig: true, i: true, can: IMPERIUM.canBuild(), locked: !IMPERIUM.canBuild() }">
|
||||||
|
<h3>Imperium Buildings</h3><br>
|
||||||
|
<span v-if="tmp.s.sbUnl.lt(SPACE_BUILDINGS.max)">Build Space Building {{formatWhole(tmp.s.sbUnl.add(1))}}</span>
|
||||||
|
<span v-if="tmp.s.sbUnl.gte(SPACE_BUILDINGS.max)">Enhance<sup v-if="tmp.s.sbUnl.div(SPACE_BUILDINGS.max).gte(2)">{{formatWhole(tmp.s.sbUnl.div(SPACE_BUILDINGS.max).floor())}}</sup> Space Building {{formatWhole(tmp.s.sbUnl.sub(tmp.s.sbUnl.div(SPACE_BUILDINGS.max).floor().times(SPACE_BUILDINGS.max)).add(1))}}</span>
|
||||||
|
<br>
|
||||||
|
Built Buildings: {{formatWhole(player.i.extraBuildings)}}
|
||||||
|
<br><br>
|
||||||
|
<span v-if="!player.i.building">Cost: {{IMPERIUM.cost().i}} Imperium Bricks & {{IMPERIUM.cost().l}} Life Bricks</span>
|
||||||
|
<span v-if="player.i.building">Progress: {{format(player.i.progress * 100)}}%<br>Your {{formatWhole(player.sg.points)}} Super-Generators speed up your progress by {{format(IMPERIUM.sgSpeedBoost())}}x<br><br>Click to cancel building</span>
|
||||||
|
</button>
|
||||||
|
<br>
|
||||||
|
Your Work is currently {{format(tmp.i.work)}}, which reduces the gain power of rows 1 - 5 by {{format(tmp.i.workEff)}}x
|
||||||
|
<span v-for="i in IMPERIUM.maxCollapseRows"><span v-if="IMPERIUM.collapsed(i)"><br>Your Work also collapses row {{i}} layers by {{format(tmp.i.collapse[i].times(100))}}%</span></span>
|
||||||
</div>
|
</div>
|
||||||
<br><br>
|
<br><br>
|
||||||
<div v-if="layer=='h'" class="upgTable">
|
<div v-if="LAYER_UPGS[layer]" class="upgTable">
|
||||||
<div v-for="row in H_CHALLS.rows" class="upgRow">
|
<div v-for="row in LAYER_UPGS[layer].rows" class="upgRow">
|
||||||
<div v-for="col in H_CHALLS.cols">
|
<div v-for="col in LAYER_UPGS[layer].cols" class="upgAlign">
|
||||||
<div v-if="H_CHALLS[row*10+col].unl()" v-bind:class="{hChall: true, done: player.h.challs.includes(row*10+col), canComplete: (player.points.gte(H_CHALLS[row*10+col].goal)&&tmp.hcActive[row*10+col]&&!player.h.challs.includes(row*10+col))}">
|
<button v-if="LAYER_UPGS[layer][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: (player[layer].points.lt(LAYER_UPGS[layer][row*10+col].cost)&&!player[layer].upgrades.includes(row*10+col)), can: (player[layer].points.gte(LAYER_UPGS[layer][row*10+col].cost)&&!player[layer].upgrades.includes(row*10+col)) }">{{ LAYER_UPGS[layer][row*10+col].desc }}<span v-if="LAYER_UPGS[layer][row*10+col].currently"><br>Currently: {{LAYER_UPGS[layer][row*10+col].effDisp(LAYER_UPGS[layer][row*10+col].currently())}}</span><br><br>Cost: {{ formatWhole(LAYER_UPGS[layer][row*10+col].cost) }} {{LAYER_RES[layer]}}</button>
|
||||||
<br><h3>{{H_CHALLS[row*10+col].name}}</h3><br><br>
|
</div>
|
||||||
<button class="longUpg can h" v-on:click="startHindrance(row*10+col)">{{player.h.active==(row*10+col)?(player.points.gte(H_CHALLS[row*10+col].goal)?"Finish":"Exit Early"):(player.h.challs.includes(row*10+col)?"Completed":"Start")}}</button><br><br>
|
</div>
|
||||||
{{H_CHALLS[row*10+col].desc}}<br>
|
</div>
|
||||||
Goal: {{format(H_CHALLS[row*10+col].goal)}} Points<br>
|
<div v-if="LAYER_CHALLS[layer]" class="upgTable">
|
||||||
Reward: {{H_CHALLS[row*10+col].reward}}<br>
|
<div v-for="row in LAYER_CHALLS[layer].rows" class="upgRow">
|
||||||
<span v-if="H_CHALLS[row*10+col].effDisp!==undefined">Currently: {{H_CHALLS[row*10+col].effDisp(H_CHALLS[row*10+col].currently())}}</span>
|
<div v-for="col in LAYER_CHALLS[layer].cols">
|
||||||
|
<div v-if="LAYER_CHALLS[layer][row*10+col].unl()" v-bind:class="{hChall: true, done: player[layer].challs.includes(row*10+col), canComplete: (player.points.gte(LAYER_CHALLS[layer][row*10+col].goal)&&tmp.challActive[layer][row*10+col]&&!player[layer].challs.includes(row*10+col))}">
|
||||||
|
<br><h3>{{LAYER_CHALLS[layer][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(LAYER_CHALLS[layer][row*10+col].goal)?"Finish":"Exit Early"):(player[layer].challs.includes(row*10+col)?"Completed":"Start")}}</button><br><br>
|
||||||
|
{{LAYER_CHALLS[layer][row*10+col].desc}}<br>
|
||||||
|
Goal: {{format(LAYER_CHALLS[layer][row*10+col].goal)}} Points<br>
|
||||||
|
Reward: {{LAYER_CHALLS[layer][row*10+col].reward}}<br>
|
||||||
|
<span v-if="LAYER_CHALLS[layer][row*10+col].effDisp!==undefined">Currently: {{LAYER_CHALLS[layer][row*10+col].effDisp(LAYER_CHALLS[layer][row*10+col].currently())}}</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -576,4 +688,11 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<script>
|
||||||
|
// Mod Identifier, for ~~btpt~~ any userscripts. Consider adding this to your mod!
|
||||||
|
const modInfo = {
|
||||||
|
name: "Prestige Tree",
|
||||||
|
id: "default"
|
||||||
|
}
|
||||||
|
</script>
|
||||||
</body>
|
</body>
|
|
@ -212,10 +212,6 @@
|
||||||
this.layer = 0;
|
this.layer = 0;
|
||||||
this.mag = 0;
|
this.mag = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isNaN(this.sign)) this.sign = 0
|
|
||||||
if (isNaN(this.layer)) this.layer = 0
|
|
||||||
if (isNaN(this.mag)) this.mag = 0
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Object.defineProperty(Decimal.prototype, "m", {
|
Object.defineProperty(Decimal.prototype, "m", {
|
||||||
|
@ -2743,4 +2739,4 @@ for (var i = 0; i < 10; ++i)
|
||||||
|
|
||||||
return Decimal;
|
return Decimal;
|
||||||
|
|
||||||
}));
|
}));
|
78
js/canvas.js
78
js/canvas.js
|
@ -22,47 +22,91 @@ function resizeCanvas() {
|
||||||
drawTree();
|
drawTree();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var colors = {
|
||||||
|
default: {
|
||||||
|
1: "#ffffff",
|
||||||
|
2: "#bfbfbf",
|
||||||
|
3: "#7f7f7f",
|
||||||
|
},
|
||||||
|
aqua: {
|
||||||
|
1: "#bfdfff",
|
||||||
|
2: "#8fa7bf",
|
||||||
|
3: "#5f6f7f",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
var colors_theme
|
||||||
|
|
||||||
function drawTree() {
|
function drawTree() {
|
||||||
if (!retrieveCanvasData()) return;
|
if (!retrieveCanvasData()) return;
|
||||||
ctx.clearRect(0, 0, canvas.width, canvas.height);
|
ctx.clearRect(0, 0, canvas.width, canvas.height);
|
||||||
if (layerUnl('b')) drawTreeBranch("p", "b")
|
if (layerShown('b')) drawTreeBranch("p", "b")
|
||||||
if (layerUnl('g')) drawTreeBranch("p", "g")
|
if (layerShown('g')) drawTreeBranch("p", "g")
|
||||||
if (layerUnl('e')) {
|
if (layerShown('e')) {
|
||||||
drawTreeBranch("b", "e")
|
drawTreeBranch("b", "e")
|
||||||
drawTreeBranch("g", "e")
|
drawTreeBranch("g", "e")
|
||||||
}
|
}
|
||||||
if (layerUnl('t')) drawTreeBranch("b", "t")
|
if (layerShown('t')) drawTreeBranch("b", "t")
|
||||||
if (layerUnl('sb')) drawTreeBranch("b", "sb")
|
if (layerShown('sb')) drawTreeBranch("b", "sb")
|
||||||
if (layerUnl('sg')) drawTreeBranch("g", "sg")
|
if (layerShown('sg')) drawTreeBranch("g", "sg")
|
||||||
if (layerUnl('s')) drawTreeBranch("g", "s")
|
if (layerShown('s')) drawTreeBranch("g", "s")
|
||||||
if (layerUnl('h')) drawTreeBranch("t", "h")
|
if (layerShown('h')) drawTreeBranch("t", "h")
|
||||||
if (layerUnl('q')) drawTreeBranch("e", "q")
|
if (layerShown('q')) drawTreeBranch("e", "q")
|
||||||
if (layerUnl('hb')) {
|
if (layerShown('hb')) {
|
||||||
drawTreeBranch("sb", "hb")
|
drawTreeBranch("sb", "hb")
|
||||||
drawTreeBranch("t", "hb")
|
drawTreeBranch("t", "hb")
|
||||||
}
|
}
|
||||||
if (layerUnl('ss')) {
|
if (layerShown('ss')) {
|
||||||
drawTreeBranch("e", "ss")
|
drawTreeBranch("e", "ss")
|
||||||
drawTreeBranch("s", "ss")
|
drawTreeBranch("s", "ss")
|
||||||
}
|
}
|
||||||
if (layerUnl('m')) {
|
if (layerShown('hg')) {
|
||||||
|
drawTreeBranch("sg", "hg")
|
||||||
|
}
|
||||||
|
if (layerShown('m')) {
|
||||||
drawTreeBranch("hb", "m")
|
drawTreeBranch("hb", "m")
|
||||||
drawTreeBranch("h", "m")
|
drawTreeBranch("h", "m")
|
||||||
drawTreeBranch("q", "m")
|
drawTreeBranch("q", "m")
|
||||||
}
|
}
|
||||||
if (layerUnl('ba')) {
|
if (layerShown('ba')) {
|
||||||
|
drawTreeBranch("h", "ba", 2)
|
||||||
drawTreeBranch("q", "ba")
|
drawTreeBranch("q", "ba")
|
||||||
drawTreeBranch("ss", "ba")
|
drawTreeBranch("ss", "ba")
|
||||||
}
|
}
|
||||||
if (layerUnl('sp')) {
|
if (layerShown('sp')) {
|
||||||
drawTreeBranch("m", "sp")
|
drawTreeBranch("m", "sp")
|
||||||
drawTreeBranch("ba", "sp")
|
drawTreeBranch("ba", "sp")
|
||||||
}
|
}
|
||||||
|
if (layerShown('l')) {
|
||||||
|
drawTreeBranch("hb", "l")
|
||||||
|
drawTreeBranch("m", "l")
|
||||||
|
}
|
||||||
|
if (layerShown('ps')) {
|
||||||
|
drawTreeBranch("h", "ps", 3)
|
||||||
|
drawTreeBranch("q", "ps", 3)
|
||||||
|
}
|
||||||
|
if (layerShown('hs')) {
|
||||||
|
drawTreeBranch("ss", "hs")
|
||||||
|
drawTreeBranch("ba", "hs")
|
||||||
|
}
|
||||||
|
if (layerShown('i')) {
|
||||||
|
drawTreeBranch("ss", "i")
|
||||||
|
drawTreeBranch("sg", "i")
|
||||||
|
}
|
||||||
|
if (layerShown('mb')) {
|
||||||
|
drawTreeBranch("l", "mb")
|
||||||
|
drawTreeBranch("ps", "mb", 2)
|
||||||
|
}
|
||||||
|
if (layerShown('ge')) {
|
||||||
|
drawTreeBranch("sp", "ge")
|
||||||
|
}
|
||||||
|
if (layerShown('ma')) {
|
||||||
|
drawTreeBranch("hs", "ma")
|
||||||
|
drawTreeBranch("i", "ma")
|
||||||
|
}
|
||||||
needCanvasUpdate = false;
|
needCanvasUpdate = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
function drawTreeBranch(num1, num2) { // taken from Antimatter Dimensions & adjusted slightly
|
function drawTreeBranch(num1, num2, color_id = 1) { // taken from Antimatter Dimensions & adjusted slightly
|
||||||
let start = document.getElementById(num1).getBoundingClientRect();
|
let start = document.getElementById(num1).getBoundingClientRect();
|
||||||
let end = document.getElementById(num2).getBoundingClientRect();
|
let end = document.getElementById(num2).getBoundingClientRect();
|
||||||
let x1 = start.left + (start.width / 2) + (document.getElementById("treeTab").scrollLeft || document.body.scrollLeft);
|
let x1 = start.left + (start.width / 2) + (document.getElementById("treeTab").scrollLeft || document.body.scrollLeft);
|
||||||
|
@ -71,7 +115,7 @@ function drawTreeBranch(num1, num2) { // taken from Antimatter Dimensions & adju
|
||||||
let y2 = end.top + (end.height / 2) + (document.getElementById("treeTab").scrollTop || document.body.scrollTop);
|
let y2 = end.top + (end.height / 2) + (document.getElementById("treeTab").scrollTop || document.body.scrollTop);
|
||||||
ctx.lineWidth = 15;
|
ctx.lineWidth = 15;
|
||||||
ctx.beginPath();
|
ctx.beginPath();
|
||||||
ctx.strokeStyle = "white"
|
ctx.strokeStyle = colors_theme[color_id]
|
||||||
ctx.moveTo(x1, y1);
|
ctx.moveTo(x1, y1);
|
||||||
ctx.lineTo(x2, y2);
|
ctx.lineTo(x2, y2);
|
||||||
ctx.stroke();
|
ctx.stroke();
|
||||||
|
|
2891
js/game.js
2891
js/game.js
File diff suppressed because it is too large
Load diff
123
js/temp.js
123
js/temp.js
|
@ -1,67 +1,146 @@
|
||||||
function updateTemp() {
|
function updateTemp() {
|
||||||
if (!tmp.hcActive) tmp.hcActive = {}
|
if (!tmp.challActive) {
|
||||||
for (let row=1;row<=H_CHALLS.rows;row++) {
|
let LAYERS_WITH_CHALLS = Object.keys(LAYER_CHALLS)
|
||||||
for (let col=1;col<=H_CHALLS.cols;col++) {
|
tmp.challActive = {}
|
||||||
let id = row*10+col
|
for (let i = 0; i < LAYERS_WITH_CHALLS.length; i++) {
|
||||||
tmp.hcActive[id] = HCActive(id)
|
tmp.challActive[LAYERS_WITH_CHALLS[i]] = {}
|
||||||
|
updateChallTemp(LAYERS_WITH_CHALLS[i])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!tmp.layerEffs) tmp.layerEffs = {}
|
if (!tmp.layerEffs) tmp.layerEffs = {}
|
||||||
for (let name in LAYER_EFFS) tmp.layerEffs[name] = LAYER_EFFS[name]()
|
for (let name in LAYER_EFFS) tmp.layerEffs[name] = LAYER_EFFS[name]()
|
||||||
|
|
||||||
if (!tmp.layerReqs) tmp.layerReqs = {}
|
if (!tmp.layerReqs) tmp.layerReqs = {}
|
||||||
for (let name in LAYER_REQS) tmp.layerReqs[name] = getLayerReq(name)
|
for (let name in LAYER_REQS) tmp.layerReqs[name] = getLayerReq(name)
|
||||||
|
|
||||||
if (!tmp.gainMults) tmp.gainMults = {}
|
if (!tmp.gainMults) tmp.gainMults = {}
|
||||||
|
if (!tmp.gainExp) tmp.gainExp = {}
|
||||||
if (!tmp.resetGain) tmp.resetGain = {}
|
if (!tmp.resetGain) tmp.resetGain = {}
|
||||||
if (!tmp.nextAt) tmp.nextAt = {}
|
if (!tmp.nextAt) tmp.nextAt = {}
|
||||||
if (!tmp.layerAmt) tmp.layerAmt = {}
|
if (!tmp.layerAmt) tmp.layerAmt = {}
|
||||||
for (let i in LAYERS) {
|
for (let i in LAYERS) {
|
||||||
tmp.layerAmt[LAYERS[i]] = getLayerAmt(LAYERS[i])
|
tmp.layerAmt[LAYERS[i]] = getLayerAmt(LAYERS[i])
|
||||||
tmp.gainMults[LAYERS[i]] = getLayerGainMult(LAYERS[i])
|
tmp.gainMults[LAYERS[i]] = getLayerGainMult(LAYERS[i])
|
||||||
|
tmp.gainExp[LAYERS[i]] = getLayerGainExp(LAYERS[i])
|
||||||
tmp.resetGain[LAYERS[i]] = getResetGain(LAYERS[i])
|
tmp.resetGain[LAYERS[i]] = getResetGain(LAYERS[i])
|
||||||
tmp.nextAt[LAYERS[i]] = getNextAt(LAYERS[i])
|
tmp.nextAt[LAYERS[i]] = getNextAt(LAYERS[i])
|
||||||
}
|
}
|
||||||
|
|
||||||
tmp.pointGen = getPointGen()
|
tmp.pointGen = getPointGen()
|
||||||
|
|
||||||
|
tmp.scaling12b = getScaling12Boosters()
|
||||||
|
|
||||||
tmp.atbb = addToBoosterBase()
|
tmp.atbb = addToBoosterBase()
|
||||||
tmp.atgb = addToGenBase()
|
tmp.atgb = addToGenBase()
|
||||||
|
|
||||||
tmp.genPowEff = getGenPowerEff()
|
tmp.genPowEff = getGenPowerEff()
|
||||||
|
|
||||||
tmp.enhPow = getEnhancerPow()
|
tmp.enhPow = getEnhancerPow()
|
||||||
tmp.enhEff = getEnhancerEff()
|
tmp.enhEff = getEnhancerEff()
|
||||||
tmp.enhEff2 = getEnhancerEff2()
|
tmp.enhEff2 = getEnhancerEff2()
|
||||||
tmp.subbedEnh = new Decimal(0)
|
tmp.subbedEnh = new Decimal(0)
|
||||||
if (tmp.hcActive ? tmp.hcActive[52] : true) {
|
if (tmp.challActive ? tmp.challActive.h[52] : true) {
|
||||||
tmp.subbedEnh = tmp.subbedEnh.plus(new Decimal(player.h.time).times(40).plus(1).log10().pow(10).max(10)).round()
|
tmp.subbedEnh = tmp.subbedEnh.add(new Decimal(player.h.time).times(40).add(1).log10().pow(10).max(10)).round()
|
||||||
}
|
}
|
||||||
|
|
||||||
tmp.freeExtCap = getFreeExtCapsules()
|
tmp.freeExtCap = getFreeExtCapsules()
|
||||||
tmp.timeEff = getTimeEnergyEff()
|
tmp.timeEff = getTimeEnergyEff()
|
||||||
tmp.attb = addToTimeBase()
|
tmp.attb = addToTimeBase()
|
||||||
|
tmp.mttb = multiplyToTimeBase()
|
||||||
if (!tmp.spaceBuildEff) tmp.spaceBuildEff = {}
|
|
||||||
for (let i=1;i<=5;i++) tmp.spaceBuildEff[i] = getSpaceBuildingEff(i)
|
if (layerUnl("s")) {
|
||||||
tmp.sbUnl = getSpaceBuildingsUnl()
|
tmp.s = {
|
||||||
|
sb: {},
|
||||||
|
sbEff: {}
|
||||||
|
}
|
||||||
|
var data = tmp.s
|
||||||
|
|
||||||
|
data.sbUnl = getSpaceBuildingsUnl()
|
||||||
|
data.trueSbUnl = Decimal.min(data.sbUnl, SPACE_BUILDINGS.max).floor().toNumber()
|
||||||
|
data.sbCostMult = getSpaceBuildingCostMult()
|
||||||
|
data.sbCostMod = getSpaceBuildingCostMod()
|
||||||
|
data.sbExtra = getExtraBuildingLevels()
|
||||||
|
data.sbPow = getSpaceBuildingPow()
|
||||||
|
data.sbSum = sumValues(player.s.buildings)
|
||||||
|
for (let i=data.trueSbUnl;i>=1;i--) {
|
||||||
|
data.sb[i] = fixValue(player.s.buildings[i])
|
||||||
|
data.sbEff[i] = getSpaceBuildingEff(i)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
tmp.quirkEff = getQuirkEnergyEff()
|
tmp.quirkEff = getQuirkEnergyEff()
|
||||||
tmp.qCB = getQuirkLayerCostBase()
|
tmp.qCB = getQuirkLayerCostBase()
|
||||||
|
|
||||||
tmp.ssEff1 = getSubspaceEff1()
|
tmp.ssEff1 = getSubspaceEff1()
|
||||||
tmp.ssEff2 = getSubspaceEff2()
|
tmp.ssEff2 = getSubspaceEff2()
|
||||||
tmp.ssEff3 = getSubspaceEff3()
|
tmp.ssEff3 = getSubspaceEff3()
|
||||||
|
|
||||||
tmp.balEff = getBalancePowerEff()
|
tmp.balEff = getBalancePowerEff()
|
||||||
tmp.balEff2 = getBalanceTypesEff()
|
tmp.balEff2 = getBalanceTypesEff()
|
||||||
tmp.baExp = getBalanceEnergyExp()
|
tmp.baExp = getBalanceEnergyExp()
|
||||||
|
|
||||||
tmp.hexEff = getHexEff()
|
tmp.hexEff = getHexEff()
|
||||||
tmp.spellsUnl = player.sp.upgrades.includes(13)?4:3
|
tmp.spellsUnl = player.sp.upgrades.includes(13)?4:3
|
||||||
if (!tmp.spellEffs) tmp.spellEffs = {}
|
if (!tmp.spellEffs) tmp.spellEffs = {}
|
||||||
for (let i=1;i<=4;i++) tmp.spellEffs[i] = getSpellEff(i)
|
for (let i=1;i<=4;i++) tmp.spellEffs[i] = getSpellEff(i)
|
||||||
|
|
||||||
tmp.sGenPowEff = getSGenPowEff()
|
tmp.sGenPowEff = getSGenPowEff()
|
||||||
|
|
||||||
|
if (layerUnl("l")) {
|
||||||
|
if (!tmp.l) tmp.l = {
|
||||||
|
lb: {},
|
||||||
|
lbEff: {}
|
||||||
|
}
|
||||||
|
var data = tmp.l
|
||||||
|
var data2 = LIFE_BOOSTERS
|
||||||
|
|
||||||
|
data.lpEff = data2.eff()
|
||||||
|
data.lbUnl = data2.unl()
|
||||||
|
for (let i=1;i<=data2.max;i++) {
|
||||||
|
data.lb[i] = fixValue(player.l.boosters[i])
|
||||||
|
data.lbEff[i] = data2[i].eff(data.lb[i].times(data.lpEff))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (layerUnl("hs")) {
|
||||||
|
if (!tmp.hs) tmp.hs = {
|
||||||
|
su: {},
|
||||||
|
suEff: {}
|
||||||
|
}
|
||||||
|
var data = tmp.hs
|
||||||
|
var data2 = HYPERSPACE
|
||||||
|
|
||||||
|
data.eff = data2.eff()
|
||||||
|
for (let i=1;i<=tmp.s.trueSbUnl;i++) data.su[i] = fixValue(player.hs.superUpgrades[i])
|
||||||
|
}
|
||||||
|
|
||||||
|
if (layerUnl("i")) {
|
||||||
|
if (!tmp.i) tmp.i = {}
|
||||||
|
var data = tmp.i
|
||||||
|
|
||||||
|
data.work = new Decimal(1)
|
||||||
|
if (player.i.building) data.work = data.work.add(player.i.extraBuildings.add(1).sqrt().add(1).div(5))
|
||||||
|
data.workEff = Decimal.pow(2, data.work.sub(1))
|
||||||
|
|
||||||
|
data.collapse = {}
|
||||||
|
for (var i = 1; i <= IMPERIUM.maxCollapseRows; i++) if (data.work.gt(i + 0.5)) data.collapse[i] = data.work.sub(i + 0.5).times(2).min(1)
|
||||||
|
|
||||||
|
data.compressed = tmp.s.sbUnl.sub(SPACE_BUILDINGS.max).max(0).floor().toNumber()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function updateChallTemp(layer) {
|
||||||
|
if (player[layer] === undefined) return
|
||||||
|
|
||||||
|
let data = tmp.challActive[layer]
|
||||||
|
let data2 = LAYER_CHALLS[layer]
|
||||||
|
let customActive = data2.active !== undefined
|
||||||
|
for (let row = 1; row <= data2.rows; row++) {
|
||||||
|
for (let col = 1; col <= data2.cols; col++) {
|
||||||
|
let id = row * 10 + col
|
||||||
|
if (customActive ? data2.active(id) : player[layer].active == id) data[id] = 1
|
||||||
|
else delete data[id]
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
111
js/v.js
111
js/v.js
|
@ -1,47 +1,76 @@
|
||||||
var app;
|
var app;
|
||||||
|
|
||||||
function loadVue() {
|
function loadVue() {
|
||||||
|
Vue.component('layer-node', {
|
||||||
|
props: ['layer', 'abb'],
|
||||||
|
template: `
|
||||||
|
<button v-if="nodeShown(layer)"
|
||||||
|
v-bind:id="layer"
|
||||||
|
v-on:click="function() {
|
||||||
|
showTab(layer)
|
||||||
|
}"
|
||||||
|
v-bind:tooltip="
|
||||||
|
layerUnl(layer) ? formatWhole(player[layer].points) + ' ' + LAYER_RES[layer]
|
||||||
|
: 'Reach ' + formatWhole(tmp.layerReqs[layer]) + ' ' + LAYER_AMT_NAMES[layer] + ' to unlock (You have ' + formatWhole(tmp.layerAmt[layer]) + ' ' + LAYER_AMT_NAMES[layer] + ')'
|
||||||
|
"
|
||||||
|
v-bind:class="{
|
||||||
|
treeNode: true,
|
||||||
|
[layer]: true,
|
||||||
|
hidden: !layerShown(layer),
|
||||||
|
locked: !layerUnl(layer),
|
||||||
|
can: layerUnl(layer)
|
||||||
|
}">
|
||||||
|
{{abb}}
|
||||||
|
</button>
|
||||||
|
`
|
||||||
|
})
|
||||||
app = new Vue({
|
app = new Vue({
|
||||||
el: "#app",
|
el: "#app",
|
||||||
data: {
|
data: {
|
||||||
player,
|
player,
|
||||||
tmp,
|
tmp,
|
||||||
offTime,
|
Decimal,
|
||||||
Decimal,
|
format,
|
||||||
format,
|
formatWhole,
|
||||||
formatWhole,
|
formatTime,
|
||||||
formatTime,
|
focused,
|
||||||
layerUnl,
|
getThemeName,
|
||||||
getLayerEffDesc,
|
layerUnl,
|
||||||
doReset,
|
getLayerEffDesc,
|
||||||
buyUpg,
|
doReset,
|
||||||
getEnhancerCost,
|
buyUpg,
|
||||||
getExtCapsuleCost,
|
getEnhancerCost,
|
||||||
getSpace,
|
getExtCapsuleCost,
|
||||||
getSpaceBuildingsUnl,
|
getSpace,
|
||||||
getSpaceBuildingCost,
|
getSpaceBuildingsUnl,
|
||||||
getSpaceBuildingEffDesc,
|
getSpaceBuildingCost,
|
||||||
buyBuilding,
|
getSpaceBuildingEffDesc,
|
||||||
getQuirkLayerCost,
|
buyBuilding,
|
||||||
buyQuirkLayer,
|
getQuirkLayerCost,
|
||||||
startHindrance,
|
buyQuirkLayer,
|
||||||
HCActive,
|
startChall,
|
||||||
milestoneShown,
|
milestoneShown,
|
||||||
destroyBuilding,
|
destroyBuilding,
|
||||||
getSpellDesc,
|
getSpellDesc,
|
||||||
activateSpell,
|
activateSpell,
|
||||||
spellActive,
|
spellActive,
|
||||||
updateToCast,
|
updateToCast,
|
||||||
keepGoing,
|
keepGoing,
|
||||||
LAYERS,
|
VERSION,
|
||||||
LAYER_RES,
|
ENDGAME,
|
||||||
LAYER_TYPE,
|
LAYERS,
|
||||||
LAYER_UPGS,
|
LAYER_RES,
|
||||||
LAYER_EFFS,
|
LAYER_TYPE,
|
||||||
LAYER_AMT_NAMES,
|
LAYER_UPGS,
|
||||||
LAYER_RES_CEIL,
|
LAYER_EFFS,
|
||||||
H_CHALLS,
|
LAYER_AMT_NAMES,
|
||||||
SPELL_NAMES
|
LAYER_RES_CEIL,
|
||||||
},
|
LAYER_CHALLS,
|
||||||
|
SPACE_BUILDINGS,
|
||||||
|
SPELL_NAMES,
|
||||||
|
LIFE_BOOSTERS,
|
||||||
|
HYPERSPACE,
|
||||||
|
IMPERIUM
|
||||||
|
},
|
||||||
})
|
})
|
||||||
}
|
}
|
Binary file not shown.
Before Width: | Height: | Size: 4.7 KiB After Width: | Height: | Size: 4.3 KiB |
BIN
remove.png
BIN
remove.png
Binary file not shown.
Before Width: | Height: | Size: 4.9 KiB After Width: | Height: | Size: 5.9 KiB |
339
style.css
339
style.css
|
@ -1,7 +1,8 @@
|
||||||
* {
|
* {
|
||||||
transition-duration: 0.5s;
|
transition-duration: 0.5s;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
font-family: "Lucida Console", "Courier New", monospace;
|
font-family: "Inconsolata", monospace;
|
||||||
|
font-weight: bold;
|
||||||
table-align: center;
|
table-align: center;
|
||||||
margin: auto;
|
margin: auto;
|
||||||
}
|
}
|
||||||
|
@ -12,10 +13,12 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
body {
|
body {
|
||||||
background-color: black;
|
background-color: var(--background);
|
||||||
color: white;
|
color: var(--color);
|
||||||
text-shadow: 0px 0px 7px white;
|
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
|
--background: #0f0f0f;
|
||||||
|
--color: #dfdfdf;
|
||||||
|
--points: #ffffff;
|
||||||
}
|
}
|
||||||
|
|
||||||
html, body {
|
html, body {
|
||||||
|
@ -23,6 +26,10 @@ html, body {
|
||||||
height: 100%;
|
height: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
td {
|
||||||
|
padding: 0
|
||||||
|
}
|
||||||
|
|
||||||
.upgTable {
|
.upgTable {
|
||||||
display: flex !important;
|
display: flex !important;
|
||||||
flex-flow: column wrap;
|
flex-flow: column wrap;
|
||||||
|
@ -41,20 +48,31 @@ html, body {
|
||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
h1, h2 {
|
.upgAlign {
|
||||||
|
height: 120px;
|
||||||
|
vertical-align: 0
|
||||||
|
}
|
||||||
|
|
||||||
|
h1, h2, h3, b, input {
|
||||||
display: inline;
|
display: inline;
|
||||||
|
font-family: "Lucida Console", "Courier New", monospace
|
||||||
}
|
}
|
||||||
|
|
||||||
.treeNode {
|
.treeNode {
|
||||||
height: 100px;
|
height: 100px;
|
||||||
width: 100px;
|
width: 100px;
|
||||||
border: 1px solid black;
|
border: var(--hqProperty1);
|
||||||
|
border-color: rgba(255, 255, 255, 0.125) rgba(0, 0, 0, 0.25) rgba(0, 0, 0, 0.25) rgba(255, 255, 255, 0.125);
|
||||||
border-radius: 50%;
|
border-radius: 50%;
|
||||||
|
box-shadow: var(--hqProperty2a), var(--hqProperty2b);
|
||||||
font-size: 40px;
|
font-size: 40px;
|
||||||
|
font-family: "Lucida Console", "Courier New", monospace;
|
||||||
|
color: rgba(0, 0, 0, 0.5);
|
||||||
|
text-shadow: var(--hqProperty3);
|
||||||
}
|
}
|
||||||
|
|
||||||
.locked {
|
.locked {
|
||||||
background-color: #9c6e6e !important;
|
background-color: #bf8f8f !important;
|
||||||
cursor: not-allowed;
|
cursor: not-allowed;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -63,12 +81,25 @@ h1, h2 {
|
||||||
}
|
}
|
||||||
|
|
||||||
.can:hover {
|
.can:hover {
|
||||||
|
transform: scale(1.15, 1.15);
|
||||||
|
box-shadow: 0px 0px 20px var(--points)
|
||||||
|
}
|
||||||
|
|
||||||
|
.treeNode.notify {
|
||||||
transform: scale(1.1, 1.1);
|
transform: scale(1.1, 1.1);
|
||||||
text-shadow: 0px 0px 7px white;
|
border-color: rgba(255, 0, 0, 0.125) rgba(255, 0, 0, 0.25) rgba(255, 0, 0, 0.25) rgba(255, 0, 0, 0.125);
|
||||||
|
box-shadow: var(--hqProperty2a), 0px 0px 20px #ff0000 !important;
|
||||||
|
z-index: 3
|
||||||
|
}
|
||||||
|
|
||||||
|
.treeNode.can:hover {
|
||||||
|
transform: scale(1.15, 1.15);
|
||||||
|
box-shadow: var(--hqProperty2a), 0px 0px 20px var(--points);
|
||||||
|
z-index: 4
|
||||||
}
|
}
|
||||||
|
|
||||||
.bought {
|
.bought {
|
||||||
background-color: #68a66b !important;
|
background-color: #77bf5f !important;
|
||||||
cursor: default;
|
cursor: default;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -76,30 +107,32 @@ h1, h2 {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 0px;
|
top: 0px;
|
||||||
left: 0px;
|
left: 0px;
|
||||||
background-color: black;
|
background-color: var(--background);
|
||||||
border: 1px solid black;
|
border: 1px solid var(--background);
|
||||||
color: white;
|
color: var(--color);
|
||||||
font-size: 40px;
|
font-size: 40px;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
.back:hover {
|
.back:hover {
|
||||||
transform: scale(1.1, 1.1);
|
transform: scale(1.1, 1.1);
|
||||||
text-shadow: 0px 0px 7px white;
|
text-shadow: 0px 0px 7px var(--color);
|
||||||
}
|
}
|
||||||
|
|
||||||
.reset {
|
.reset {
|
||||||
height: 100px;
|
height: 120px;
|
||||||
width: 150px;
|
width: 180px;
|
||||||
border-radius: 50%;
|
border-radius: 25%;
|
||||||
border: 1px solid black;
|
border: 4px solid;
|
||||||
|
border-color: rgba(255, 255, 255, 0.125) rgba(0, 0, 0, 0.25) rgba(0, 0, 0, 0.25) rgba(255, 255, 255, 0.125);
|
||||||
}
|
}
|
||||||
|
|
||||||
.upg {
|
.upg {
|
||||||
height: 120px;
|
height: 120px;
|
||||||
width: 120px;
|
width: 120px;
|
||||||
border-radius: 25%;
|
border-radius: 25%;
|
||||||
border: 1px solid black;
|
border: 2px solid;
|
||||||
|
border-color: rgba(255, 255, 255, 0.125) rgba(0, 0, 0, 0.25) rgba(0, 0, 0, 0.25) rgba(255, 255, 255, 0.125);
|
||||||
font-size: 10px;
|
font-size: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -107,14 +140,17 @@ h1, h2 {
|
||||||
height: 200px;
|
height: 200px;
|
||||||
width: 200px;
|
width: 200px;
|
||||||
border-radius: 25%;
|
border-radius: 25%;
|
||||||
border: 1px solid black;
|
border: 2px solid;
|
||||||
|
border-color: rgba(255, 255, 255, 0.125) rgba(0, 0, 0, 0.25) rgba(0, 0, 0, 0.25) rgba(255, 255, 255, 0.125);
|
||||||
}
|
}
|
||||||
|
|
||||||
.longUpg {
|
.longUpg {
|
||||||
height: 50px;
|
height: 50px;
|
||||||
width: 120px;
|
width: 120px;
|
||||||
|
background: var(--points);
|
||||||
border-radius: 50%;
|
border-radius: 50%;
|
||||||
border: 1px solid black;
|
border: 2px solid;
|
||||||
|
border-color: rgba(255, 255, 255, 0.125) rgba(0, 0, 0, 0.25) rgba(0, 0, 0, 0.25) rgba(255, 255, 255, 0.125);
|
||||||
font-size: 10px;
|
font-size: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -122,22 +158,28 @@ h1, h2 {
|
||||||
height: 40px;
|
height: 40px;
|
||||||
width: 40px;
|
width: 40px;
|
||||||
border-radius: 25%;
|
border-radius: 25%;
|
||||||
border: 1px solid black;
|
border: 2px solid;
|
||||||
|
border-color: rgba(255, 255, 255, 0.125) rgba(0, 0, 0, 0.25) rgba(0, 0, 0, 0.25) rgba(255, 255, 255, 0.125);
|
||||||
|
}
|
||||||
|
|
||||||
|
#points {
|
||||||
|
color: var(--points);
|
||||||
|
text-shadow: 0px 0px 10px var(--points);
|
||||||
}
|
}
|
||||||
|
|
||||||
.p {
|
.p {
|
||||||
background-color: #439ea3;
|
background-color: #00bfbf;
|
||||||
color: black;
|
color: rgba(0, 0, 0, 0.5);
|
||||||
}
|
}
|
||||||
|
|
||||||
.p_txt {
|
.p_txt {
|
||||||
color: #439ea3;
|
color: #00bfbf;
|
||||||
text-shadow: 0px 0px 10px #439ea3;
|
text-shadow: 0px 0px 10px #00bfbf;
|
||||||
}
|
}
|
||||||
|
|
||||||
.b {
|
.b {
|
||||||
background-color: #415a9e;
|
background-color: #415a9e;
|
||||||
color: black;
|
color: rgba(0, 0, 0, 0.5);
|
||||||
}
|
}
|
||||||
|
|
||||||
.b_txt {
|
.b_txt {
|
||||||
|
@ -147,7 +189,7 @@ h1, h2 {
|
||||||
|
|
||||||
.g {
|
.g {
|
||||||
background-color: #409c6e;
|
background-color: #409c6e;
|
||||||
color: black;
|
color: rgba(0, 0, 0, 0.5);
|
||||||
}
|
}
|
||||||
|
|
||||||
.g_txt {
|
.g_txt {
|
||||||
|
@ -157,7 +199,7 @@ h1, h2 {
|
||||||
|
|
||||||
.e {
|
.e {
|
||||||
background-color: #9643a3;
|
background-color: #9643a3;
|
||||||
color: black;
|
color: rgba(0, 0, 0, 0.5);
|
||||||
}
|
}
|
||||||
|
|
||||||
.e_txt {
|
.e_txt {
|
||||||
|
@ -167,7 +209,7 @@ h1, h2 {
|
||||||
|
|
||||||
.t {
|
.t {
|
||||||
background-color: #3f993d;
|
background-color: #3f993d;
|
||||||
color: black;
|
color: rgba(0, 0, 0, 0.5);
|
||||||
}
|
}
|
||||||
|
|
||||||
.t_txt {
|
.t_txt {
|
||||||
|
@ -176,28 +218,28 @@ h1, h2 {
|
||||||
}
|
}
|
||||||
|
|
||||||
.s {
|
.s {
|
||||||
background-color: white;
|
background-color: #dfdfdf;
|
||||||
color: black;
|
color: rgba(0, 0, 0, 0.5);
|
||||||
}
|
}
|
||||||
|
|
||||||
.s_txt {
|
.s_txt {
|
||||||
color: white;
|
color: #dfdfdf;
|
||||||
text-shadow: 0px 0px 10px white;
|
text-shadow: 0px 0px 10px #dfdfdf;
|
||||||
}
|
}
|
||||||
|
|
||||||
.sb {
|
.sb {
|
||||||
background-color: #415a9e;
|
background-color: #494b99;
|
||||||
color: black;
|
color: rgba(0, 0, 0, 0.5);
|
||||||
}
|
}
|
||||||
|
|
||||||
.sb_txt {
|
.sb_txt {
|
||||||
color: #415a9e;
|
color: #494b99;
|
||||||
text-shadow: 0px 0px 10px #415a9e;
|
text-shadow: 0px 0px 10px #494b99;
|
||||||
}
|
}
|
||||||
|
|
||||||
.h {
|
.h {
|
||||||
background-color: #a14040;
|
background-color: #a14040;
|
||||||
color: black;
|
color: rgba(0, 0, 0, 0.5);
|
||||||
}
|
}
|
||||||
|
|
||||||
.h_txt {
|
.h_txt {
|
||||||
|
@ -207,7 +249,7 @@ h1, h2 {
|
||||||
|
|
||||||
.q {
|
.q {
|
||||||
background-color: #ff2bf2;
|
background-color: #ff2bf2;
|
||||||
color: black;
|
color: rgba(0, 0, 0, 0.5);
|
||||||
}
|
}
|
||||||
|
|
||||||
.q_txt {
|
.q_txt {
|
||||||
|
@ -217,7 +259,7 @@ h1, h2 {
|
||||||
|
|
||||||
.hb {
|
.hb {
|
||||||
background-color: #513d94;
|
background-color: #513d94;
|
||||||
color: black;
|
color: rgba(0, 0, 0, 0.5);
|
||||||
}
|
}
|
||||||
|
|
||||||
.hb_txt {
|
.hb_txt {
|
||||||
|
@ -226,18 +268,28 @@ h1, h2 {
|
||||||
}
|
}
|
||||||
|
|
||||||
.ss {
|
.ss {
|
||||||
background-color: white;
|
background-color: #eff7ff;
|
||||||
color: black;
|
color: rgba(0, 0, 0, 0.5);
|
||||||
}
|
}
|
||||||
|
|
||||||
.ss_txt {
|
.ss_txt {
|
||||||
color: white;
|
color: #eff7ff;
|
||||||
text-shadow: 0px 0px 10px white;
|
text-shadow: 0px 0px 10px #eff7ff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hg {
|
||||||
|
background-color: #3d9989;
|
||||||
|
color: rgba(0, 0, 0, 0.5);
|
||||||
|
}
|
||||||
|
|
||||||
|
.hg_txt {
|
||||||
|
color: #3d9989;
|
||||||
|
text-shadow: 0px 0px 10px #3d9989;
|
||||||
}
|
}
|
||||||
|
|
||||||
.m {
|
.m {
|
||||||
background-color: #eb34c0;
|
background-color: #eb34c0;
|
||||||
color: black;
|
color: rgba(0, 0, 0, 0.5);
|
||||||
}
|
}
|
||||||
|
|
||||||
.m_txt {
|
.m_txt {
|
||||||
|
@ -247,7 +299,7 @@ h1, h2 {
|
||||||
|
|
||||||
.ba {
|
.ba {
|
||||||
background-color: #ebc88f;
|
background-color: #ebc88f;
|
||||||
color: black;
|
color: rgba(0, 0, 0, 0.5);
|
||||||
}
|
}
|
||||||
|
|
||||||
.ba_txt {
|
.ba_txt {
|
||||||
|
@ -256,23 +308,93 @@ h1, h2 {
|
||||||
}
|
}
|
||||||
|
|
||||||
.sg {
|
.sg {
|
||||||
background-color: #409c6e;
|
background-color: #3d997a;
|
||||||
color: black;
|
color: rgba(0, 0, 0, 0.5);
|
||||||
}
|
}
|
||||||
|
|
||||||
.sg_txt {
|
.sg_txt {
|
||||||
color: #409c6e;
|
color: #3d997a;
|
||||||
text-shadow: 0px 0px 10px #409c6e;
|
text-shadow: 0px 0px 10px #3d997a;
|
||||||
}
|
}
|
||||||
|
|
||||||
.sp {
|
.sp {
|
||||||
background-color: #439ea3;
|
background-color: #00a7bf;
|
||||||
color: black;
|
color: rgba(0, 0, 0, 0.5);
|
||||||
}
|
}
|
||||||
|
|
||||||
.sp_txt {
|
.sp_txt {
|
||||||
color: #439ea3;
|
color: #00a7bf;
|
||||||
text-shadow: 0px 0px 10px #439ea3;
|
text-shadow: 0px 0px 10px #00a7bf;
|
||||||
|
}
|
||||||
|
|
||||||
|
.l {
|
||||||
|
background-color: #7fbf7f;
|
||||||
|
color: rgba(0, 0, 0, 0.5);
|
||||||
|
}
|
||||||
|
|
||||||
|
.l_txt {
|
||||||
|
color: #7fbf7f;
|
||||||
|
text-shadow: 0px 0px 10px #7fbf7f;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ps {
|
||||||
|
background-color: #b38fbf;
|
||||||
|
color: rgba(0, 0, 0, 0.5);
|
||||||
|
}
|
||||||
|
|
||||||
|
.ps_txt {
|
||||||
|
color: #b38fbf;
|
||||||
|
text-shadow: 0px 0px 10px #b38fbf;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hs {
|
||||||
|
background-color: #dfdfff;
|
||||||
|
color: rgba(0, 0, 0, 0.5);
|
||||||
|
}
|
||||||
|
|
||||||
|
.hs_txt {
|
||||||
|
color: #dfdfff;
|
||||||
|
text-shadow: 0px 0px 10px #dfdfff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.i {
|
||||||
|
background-color: #e5dab7;
|
||||||
|
color: rgba(0, 0, 0, 0.5);
|
||||||
|
}
|
||||||
|
|
||||||
|
.i_txt {
|
||||||
|
color: #e5dab7;
|
||||||
|
text-shadow: 0px 0px 10px #e5dab7;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mb {
|
||||||
|
background-color: #ff9f7f;
|
||||||
|
color: rgba(0, 0, 0, 0.5);
|
||||||
|
}
|
||||||
|
|
||||||
|
.mb_txt {
|
||||||
|
color: #ff9f7f;
|
||||||
|
text-shadow: 0px 0px 10px #ff9f7f;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ge {
|
||||||
|
background-color: #bfbfbf;
|
||||||
|
color: rgba(0, 0, 0, 0.5);
|
||||||
|
}
|
||||||
|
|
||||||
|
.ge_txt {
|
||||||
|
color: #bfbfbf;
|
||||||
|
text-shadow: 0px 0px 10px #bfbfbf;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ma {
|
||||||
|
background-color: #9f9f9f;
|
||||||
|
color: rgba(0, 0, 0, 0.5);
|
||||||
|
}
|
||||||
|
|
||||||
|
.ma_txt {
|
||||||
|
color: #9f9f9f;
|
||||||
|
text-shadow: 0px 0px 10px #9f9f9f;
|
||||||
}
|
}
|
||||||
|
|
||||||
#optionWheel {
|
#optionWheel {
|
||||||
|
@ -307,28 +429,49 @@ h1, h2 {
|
||||||
-3px 0px 12px #02f2f2;
|
-3px 0px 12px #02f2f2;
|
||||||
}
|
}
|
||||||
|
|
||||||
#cl {
|
#discord {
|
||||||
font-size: 20px;
|
position: absolute;
|
||||||
color: white;
|
top: 120px;
|
||||||
cursor: pointer;
|
left: 4px;
|
||||||
width: 100%;
|
width: 40px;
|
||||||
min-width: 100%;
|
height: 40px;
|
||||||
-webkit-text-stroke-width: 1px;
|
cursor: pointer
|
||||||
-webkit-text-stroke-color: #02f2f2;
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#cl:hover {
|
#discord:hover {
|
||||||
transform: scale(1.2, 1.2);
|
transform: scale(1.2, 1.2);
|
||||||
text-shadow: 5px 0px 10px #02f2f2,
|
}
|
||||||
-3px 0px 12px #02f2f2;
|
|
||||||
|
#version {
|
||||||
|
position: absolute;
|
||||||
|
right: 4px;
|
||||||
|
top: 4px;
|
||||||
|
text-align: right;
|
||||||
|
color: var(--points);
|
||||||
|
text-shadow: 0px 0px 10px var(--points);
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
#version:hover {
|
||||||
|
transform: scale(1.2, 1.2);
|
||||||
|
right: 4.8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
a {
|
||||||
|
color: #007fff;
|
||||||
|
text-decoration-line: none;
|
||||||
|
cursor: pointer
|
||||||
}
|
}
|
||||||
|
|
||||||
.link {
|
.link {
|
||||||
color: white;
|
display: block;
|
||||||
|
font-size: 20px;
|
||||||
|
color: #41f5f5;
|
||||||
|
text-decoration-line: none;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
font-size: 16px;
|
width: 100%;
|
||||||
font-weight: bold;
|
min-width: 100%;
|
||||||
|
font-family: "Lucida Console", "Courier New", monospace;
|
||||||
-webkit-text-stroke-width: 1px;
|
-webkit-text-stroke-width: 1px;
|
||||||
-webkit-text-stroke-color: #02f2f2;
|
-webkit-text-stroke-color: #02f2f2;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
|
@ -344,9 +487,10 @@ h1, h2 {
|
||||||
height: 100px;
|
height: 100px;
|
||||||
width: 100px;
|
width: 100px;
|
||||||
border-radius: 25%;
|
border-radius: 25%;
|
||||||
border: 1px solid black;
|
border: 4px solid;
|
||||||
background-color: #a1a1a1;
|
background-color: var(--color);
|
||||||
color: black;
|
border-color: rgba(255, 255, 255, 0.125) rgba(0, 0, 0, 0.25) rgba(0, 0, 0, 0.25) rgba(255, 255, 255, 0.125);
|
||||||
|
color: rgba(0, 0, 0, 0.5);
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -369,14 +513,21 @@ h1, h2 {
|
||||||
.milestone {
|
.milestone {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 75px;
|
height: 75px;
|
||||||
background-color: #9e6d64;
|
background-color: #bf8f8f;
|
||||||
|
border: 4px solid;
|
||||||
|
border-radius: 4px;
|
||||||
|
border-color: rgba(255, 255, 255, 0.125) rgba(0, 0, 0, 0.25) rgba(0, 0, 0, 0.25) rgba(255, 255, 255, 0.125);
|
||||||
|
color: rgba(0, 0, 0, 0.5);
|
||||||
}
|
}
|
||||||
|
|
||||||
.milestoneDone {
|
.milestoneDone {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 75px;
|
height: 75px;
|
||||||
background-color: #68a66b;
|
background-color: #77bf5f;
|
||||||
color: black;
|
border: 4px solid;
|
||||||
|
border-radius: 4px;
|
||||||
|
border-color: rgba(255, 255, 255, 0.125) rgba(0, 0, 0, 0.25) rgba(0, 0, 0, 0.25) rgba(255, 255, 255, 0.125);
|
||||||
|
color: rgba(0, 0, 0, 0.5);
|
||||||
}
|
}
|
||||||
|
|
||||||
.left {
|
.left {
|
||||||
|
@ -403,7 +554,8 @@ h1, h2 {
|
||||||
column-span: 1;
|
column-span: 1;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
overflow-y: auto;
|
overflow-y: auto;
|
||||||
overflow-x: hidden;
|
overflow-x: auto;
|
||||||
|
transition-duration: 0s
|
||||||
}
|
}
|
||||||
|
|
||||||
.col.right {
|
.col.right {
|
||||||
|
@ -418,12 +570,12 @@ h1, h2 {
|
||||||
}
|
}
|
||||||
|
|
||||||
.vl {
|
.vl {
|
||||||
border-left: 6px solid #969696;
|
border-left: 6px solid var(--color);
|
||||||
height: 100%;
|
height: 100%;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
left: 50%;
|
left: 50%;
|
||||||
margin-left: -3px;
|
margin-left: -3px;
|
||||||
top: 0;
|
top: 0
|
||||||
}
|
}
|
||||||
|
|
||||||
ul {
|
ul {
|
||||||
|
@ -431,36 +583,37 @@ ul {
|
||||||
}
|
}
|
||||||
|
|
||||||
.hChall {
|
.hChall {
|
||||||
background-color: #fa7f8a;
|
background-color: #bf8f8f;
|
||||||
border: 4px solid #ff0017;
|
border: 4px solid;
|
||||||
color: #ff0017;
|
border-color: rgba(255, 255, 255, 0.125) rgba(0, 0, 0, 0.25) rgba(0, 0, 0, 0.25) rgba(255, 255, 255, 0.125);
|
||||||
|
color: rgba(0, 0, 0, 0.5);
|
||||||
width: 300px;
|
width: 300px;
|
||||||
height: 300px;
|
height: 300px;
|
||||||
|
font-size: 15px;
|
||||||
border-radius: 33.33%;
|
border-radius: 33.33%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.hChall.done {
|
.hChall.done {
|
||||||
background-color: #95fcb4;
|
background-color: #77bf5f;
|
||||||
border: 4px solid #038c2c;
|
|
||||||
color: #038c2c;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.hChall.canComplete {
|
.hChall.canComplete {
|
||||||
background-color: #93f0fa;
|
background-color: #ffbf00;
|
||||||
border: 4px solid #03858f;
|
|
||||||
color: #03858f;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.fullWidth {
|
.fullWidth {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
|
height: 100%;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
min-width: 100%;
|
min-width: 100%;
|
||||||
|
overflow-y: auto;
|
||||||
|
overflow-x: auto;
|
||||||
|
transition-duration: 0s
|
||||||
}
|
}
|
||||||
|
|
||||||
[tooltip] {
|
[tooltip] {
|
||||||
position: relative;
|
position: relative;
|
||||||
z-index: 2;
|
z-index: 2
|
||||||
white-space: pre-wrap;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
[tooltip]:before,
|
[tooltip]:before,
|
||||||
|
@ -484,9 +637,8 @@ ul {
|
||||||
-webkit-border-radius: 3px;
|
-webkit-border-radius: 3px;
|
||||||
-moz-border-radius: 3px;
|
-moz-border-radius: 3px;
|
||||||
border-radius: 3px;
|
border-radius: 3px;
|
||||||
background-color: #000;
|
background-color: var(--background_tooltip);
|
||||||
background-color: hsla(0, 0%, 5%, 0.9);
|
color: var(--points);
|
||||||
color: #fff;
|
|
||||||
content: attr(tooltip);
|
content: attr(tooltip);
|
||||||
text-align: center;
|
text-align: center;
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
|
@ -501,8 +653,7 @@ ul {
|
||||||
left: 50%;
|
left: 50%;
|
||||||
margin-left: -5px;
|
margin-left: -5px;
|
||||||
width: 0;
|
width: 0;
|
||||||
border-top: 5px solid #000;
|
border-top: 5px solid var(--background_tooltip);
|
||||||
border-top: 5px solid hsla(0, 0%, 5%, 0.9);
|
|
||||||
border-right: 5px solid transparent;
|
border-right: 5px solid transparent;
|
||||||
border-left: 5px solid transparent;
|
border-left: 5px solid transparent;
|
||||||
content: " ";
|
content: " ";
|
||||||
|
|
Loading…
Reference in a new issue