mirror of
https://github.com/Acamaeda/The-Modding-Tree.git
synced 2024-11-21 08:12:39 +00:00
Beta v1.01
This commit is contained in:
parent
156925f97c
commit
9ca463deee
4 changed files with 42 additions and 15 deletions
22
index.html
22
index.html
|
@ -70,10 +70,23 @@
|
|||
<li>Added a "time played" display in the info tab</li>
|
||||
<li>Implemented a NaN check system</li>
|
||||
</ul><br><br>
|
||||
<h3>Beta v1.01</h3>
|
||||
<ul>
|
||||
<li>Display Generator Power in the Space tab</li>
|
||||
<li>Add a credits page in the info tab</li>
|
||||
<li>Implemented a few minor QoL/visual fixes</li>
|
||||
</ul><br><br>
|
||||
</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>
|
||||
This game was inspired by a post shown to me by Crimson406<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">
|
||||
<button class="back" onclick="showTab('tree')">←</button><br><br><br><br><br>
|
||||
Time Played: {{ formatTime(player.timePlayed) }}<br><br><br>
|
||||
<div id="cl" onclick="showTab('credits')">Credits</div><br>
|
||||
<div id="cl" onclick="showTab('changelog')">Changelog</div><br><br><br>
|
||||
<h3>Hotkeys</h3><br><br>
|
||||
P: Prestige reset<br>
|
||||
|
@ -100,7 +113,7 @@
|
|||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="col left">
|
||||
<div id="treeTab" onscroll="resizeCanvas()" class="col left">
|
||||
<img id="optionWheel" v-if="player.tab!='options'" src="options_wheel.png" onclick="showTab('options')"></img>
|
||||
<br>You have <h2>{{format(player.points)}}</h2> Points
|
||||
<br><br><br><br><br>
|
||||
|
@ -161,13 +174,14 @@
|
|||
<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 v-if="layer=='s'">
|
||||
You have {{formatWhole(getSpace())}} Space.<br><br>
|
||||
You have {{formatWhole(getSpace())}} Space remaining for Space Buildings.<br><br>
|
||||
<table><tr><td 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><td v-bind:class="{ milestone: player.s.best.lt(3), milestoneDone: player.s.best.gte(3) }">3 space energy<br>Keep Prestige Upgrades on reset</td></tr>
|
||||
<tr><td 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><td 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><td v-bind:class="{ milestone: player.s.best.lt(12), milestoneDone: player.s.best.gte(12) }">12 space energy<br>Generators reset nothing</td></tr>
|
||||
</table><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>
|
||||
<div class="upgRow">
|
||||
<div v-for="id in 5">
|
||||
|
@ -180,8 +194,8 @@
|
|||
<tr><td 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>
|
||||
</div>
|
||||
<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)">+{{formatWhole(tmp.resetGain[layer])}} {{LAYER_RES[layer]}}<br>Next at {{ format(tmp.nextAt[layer]) }} {{ LAYER_AMT_NAMES[layer] }}</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)">+{{formatWhole(tmp.resetGain[layer])}} {{LAYER_RES[layer]}}<br>Req: {{format(tmp.nextAt[layer])}} {{ LAYER_AMT_NAMES[layer] }}</button>
|
||||
<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>
|
||||
<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>
|
||||
<br><br><br>
|
||||
<div class="upgTable">
|
||||
<div v-for="row in LAYER_UPGS[layer].rows" class="upgRow">
|
||||
|
|
16
js/canvas.js
16
js/canvas.js
|
@ -1,11 +1,13 @@
|
|||
var canvas;
|
||||
var ctx
|
||||
var ctx;
|
||||
|
||||
window.addEventListener("resize", (_=>resizeCanvas()));
|
||||
|
||||
function retrieveCanvasData() {
|
||||
let treeCanv = document.getElementById("treeCanvas")
|
||||
let treeTab = document.getElementById("treeTab")
|
||||
if (treeCanv===undefined||treeCanv===null) return false;
|
||||
if (treeTab===undefined||treeTab===null) return false;
|
||||
canvas = treeCanv;
|
||||
ctx = canvas.getContext("2d");
|
||||
return true;
|
||||
|
@ -15,8 +17,8 @@ function resizeCanvas() {
|
|||
if (!retrieveCanvasData()) return
|
||||
canvas.width = 0;
|
||||
canvas.height = 0;
|
||||
canvas.width = document.body.scrollWidth;
|
||||
canvas.height = document.body.scrollHeight;
|
||||
canvas.width = document.getElementById("treeTab").scrollWidth;
|
||||
canvas.height = document.getElementById("treeTab").scrollHeight;
|
||||
drawTree();
|
||||
}
|
||||
|
||||
|
@ -39,10 +41,10 @@ function drawTree() {
|
|||
function drawTreeBranch(num1, num2) { // taken from Antimatter Dimensions & adjusted slightly
|
||||
let start = document.getElementById(num1).getBoundingClientRect();
|
||||
let end = document.getElementById(num2).getBoundingClientRect();
|
||||
let x1 = start.left + (start.width / 2) + (document.documentElement.scrollLeft || document.body.scrollLeft);
|
||||
let y1 = start.top + (start.height / 2) + (document.documentElement.scrollTop || document.body.scrollTop);
|
||||
let x2 = end.left + (end.width / 2) + (document.documentElement.scrollLeft || document.body.scrollLeft);
|
||||
let y2 = end.top + (end.height / 2) + (document.documentElement.scrollTop || document.body.scrollTop);
|
||||
let x1 = start.left + (start.width / 2) + (document.getElementById("treeTab").scrollLeft || document.body.scrollLeft);
|
||||
let y1 = start.top + (start.height / 2) + (document.getElementById("treeTab").scrollTop || document.body.scrollTop);
|
||||
let x2 = end.left + (end.width / 2) + (document.getElementById("treeTab").scrollLeft || document.body.scrollLeft);
|
||||
let y2 = end.top + (end.height / 2) + (document.getElementById("treeTab").scrollTop || document.body.scrollTop);
|
||||
ctx.lineWidth = 15;
|
||||
ctx.beginPath();
|
||||
ctx.strokeStyle = "white"
|
||||
|
|
16
js/game.js
16
js/game.js
|
@ -9,7 +9,7 @@ function getStartPlayer() {
|
|||
time: Date.now(),
|
||||
autosave: true,
|
||||
versionType: "beta",
|
||||
version: 1.0,
|
||||
version: 1.01,
|
||||
timePlayed: 0,
|
||||
hasNaN: false,
|
||||
points: new Decimal(10),
|
||||
|
@ -98,6 +98,8 @@ const LAYER_RES = {
|
|||
sb: "super-boosters",
|
||||
}
|
||||
|
||||
const LAYER_RES_CEIL = ["sb"]
|
||||
|
||||
const LAYER_TYPE = {
|
||||
p: "normal",
|
||||
b: "static",
|
||||
|
@ -624,6 +626,7 @@ const TAB_REQS = {
|
|||
options: function() { return true },
|
||||
info: function() { return true },
|
||||
changelog: function() { return true },
|
||||
credits: function() { return true },
|
||||
p: function() { return (player.p.unl||player.points.gte(tmp.layerReqs.p))&&layerUnl('p') },
|
||||
b: function() { return (player.b.unl||player.points.gte(tmp.layerReqs.b))&&layerUnl('b') },
|
||||
g: function() { return (player.g.unl||player.points.gte(tmp.layerReqs.g))&&layerUnl('g') },
|
||||
|
@ -903,8 +906,14 @@ function getNextAt(layer) {
|
|||
let amt = player[layer].points
|
||||
if (amt.gte(12)) amt = amt.pow(2).div(12)
|
||||
let extraCost = Decimal.pow(LAYER_BASE[layer], amt.pow(LAYER_EXP[layer])).times(tmp.gainMults[layer])
|
||||
return extraCost.times(tmp.layerReqs[layer]).max(tmp.layerReqs[layer])
|
||||
} else return tmp.resetGain[layer].plus(1).div(tmp.gainMults[layer]).root(LAYER_EXP[layer]).times(tmp.layerReqs[layer]).max(tmp.layerReqs[layer])
|
||||
let cost = extraCost.times(tmp.layerReqs[layer]).max(tmp.layerReqs[layer])
|
||||
if (LAYER_RES_CEIL.includes(layer)) cost = cost.ceil()
|
||||
return cost;
|
||||
} else {
|
||||
let next = tmp.resetGain[layer].plus(1).div(tmp.gainMults[layer]).root(LAYER_EXP[layer]).times(tmp.layerReqs[layer]).max(tmp.layerReqs[layer])
|
||||
if (LAYER_RES_CEIL.includes(layer)) next = next.ceil()
|
||||
return next;
|
||||
}
|
||||
}
|
||||
|
||||
function layerUnl(layer) {
|
||||
|
@ -1350,6 +1359,7 @@ function gameLoop(diff) {
|
|||
|
||||
if (player.hasNaN&&!NaNalert) {
|
||||
alert("We have detected a corruption in your save. Please visit https://discord.gg/wwQfgPa for help.")
|
||||
clearInterval(interval);
|
||||
NaNalert = true;
|
||||
}
|
||||
}
|
||||
|
|
3
js/v.js
3
js/v.js
|
@ -25,7 +25,8 @@ function loadVue() {
|
|||
LAYER_TYPE,
|
||||
LAYER_UPGS,
|
||||
LAYER_EFFS,
|
||||
LAYER_AMT_NAMES
|
||||
LAYER_AMT_NAMES,
|
||||
LAYER_RES_CEIL
|
||||
},
|
||||
})
|
||||
}
|
Loading…
Reference in a new issue