mirror of
https://github.com/Acamaeda/The-Modding-Tree.git
synced 2024-11-21 16:13:55 +00:00
Merge (Beta v1.2 Alpha 9 -> v1.1)
This commit is contained in:
commit
20222e3f19
5 changed files with 174 additions and 22 deletions
30
index.html
30
index.html
|
@ -23,6 +23,23 @@
|
||||||
</div>
|
</div>
|
||||||
<div v-if="player.tab=='changelog_beta'" class="col right">
|
<div v-if="player.tab=='changelog_beta'" class="col right">
|
||||||
<button class="back" onclick="showTab('changelog')">←</button><br>
|
<button class="back" onclick="showTab('changelog')">←</button><br>
|
||||||
|
<h3>Beta v1.2 Alpha 9</h3>
|
||||||
|
<ul>
|
||||||
|
<li>Added hints for h8 & h10</li>
|
||||||
|
<li>Added a new Magic milestone</li>
|
||||||
|
<li>Reduced offline time to 10% of its original amount</li>
|
||||||
|
<li>Balanced up to 1e6,000,000 Points, 3e12 Magic, and 1e11 Balance Energy</li>
|
||||||
|
</ul><br>
|
||||||
|
<h3>Beta v1.2 Alpha 8</h3>
|
||||||
|
<ul>
|
||||||
|
<li>Added a new milestone</li>
|
||||||
|
<li>Added a new Hindrance ;)</li>
|
||||||
|
<li>Balanced up to 1e5,500,000 Points, 2.5e10 Magic, and 2e9 Balance Energy</li>
|
||||||
|
</ul><br>
|
||||||
|
<h3>Beta v1.2 Alpha 7</h3>
|
||||||
|
<ul>
|
||||||
|
<li>Balanced up to 1e3,950,000 Points, 1,500,000 Magic, and 5,000,000 Balance Energy</li>
|
||||||
|
</ul><br>
|
||||||
<h3>Beta v1.2 Alpha 6</h3>
|
<h3>Beta v1.2 Alpha 6</h3>
|
||||||
<ul>
|
<ul>
|
||||||
<li>Fixed a bug with hotkeys</li>
|
<li>Fixed a bug with hotkeys</li>
|
||||||
|
@ -255,7 +272,12 @@
|
||||||
<span v-if="player.q.unl">Q: Quirk reset</span><br>
|
<span v-if="player.q.unl">Q: Quirk reset</span><br>
|
||||||
<span v-if="player.hb.unl">Ctrl+B: Hyper-Booster reset</span><br>
|
<span v-if="player.hb.unl">Ctrl+B: Hyper-Booster reset</span><br>
|
||||||
<span v-if="player.ss.unl">Shift+S: Subspace reset</span><br>
|
<span v-if="player.ss.unl">Shift+S: Subspace reset</span><br>
|
||||||
<span v-if="player.m.unl">M: Magic reset</span><br>
|
<span v-if="player.m.unl">
|
||||||
|
M: Magic reset<br>
|
||||||
|
1: Cast spell 1<br>
|
||||||
|
2: Cast spell 2<br>
|
||||||
|
3: Cast spell 3
|
||||||
|
</span><br>
|
||||||
<span v-if="player.ba.unl">A: Balance reset</span><br>
|
<span v-if="player.ba.unl">A: Balance reset</span><br>
|
||||||
</div>
|
</div>
|
||||||
<div v-if="player.tab=='options'" class="col right">
|
<div v-if="player.tab=='options'" class="col right">
|
||||||
|
@ -427,15 +449,17 @@
|
||||||
<br>
|
<br>
|
||||||
<div class="upgRow">
|
<div class="upgRow">
|
||||||
<div v-for="id in 3">
|
<div v-for="id in 3">
|
||||||
<button v-bind:class="{ upg: true, bought: spellActive(id), can: ((player.m.points.gte(1))&&player.m.unl&&!spellActive(id)), locked: (!(player.m.points.gte(1)||spellActive(id))), m: true }" v-on:click="activateSpell(id)">{{SPELL_NAMES[id]}}<br>Time Left: {{format(player.m.spellTimes[id])}}<br>Effect: {{getSpellDesc(id)}}</button>
|
<button v-bind:class="{ upg: true, bought: spellActive(id), can: ((player.m.points.gte(1))&&player.m.unl&&!spellActive(id)), locked: (!(player.m.points.gte(1)||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>
|
||||||
</div>
|
</div>
|
||||||
</div><br><br>
|
</div><br><br>
|
||||||
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)}}<br><br>
|
||||||
<table>
|
<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(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(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 1% of Hindrance Energy & Quirk gain every second</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(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>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
<div v-if="layer=='ba'">
|
<div v-if="layer=='ba'">
|
||||||
|
|
|
@ -48,6 +48,7 @@ function drawTree() {
|
||||||
if (layerUnl('m')) {
|
if (layerUnl('m')) {
|
||||||
drawTreeBranch("hb", "m")
|
drawTreeBranch("hb", "m")
|
||||||
drawTreeBranch("h", "m")
|
drawTreeBranch("h", "m")
|
||||||
|
drawTreeBranch("q", "m")
|
||||||
}
|
}
|
||||||
if (layerUnl('ba')) {
|
if (layerUnl('ba')) {
|
||||||
drawTreeBranch("q", "ba")
|
drawTreeBranch("q", "ba")
|
||||||
|
|
161
js/game.js
161
js/game.js
|
@ -131,6 +131,7 @@ function getStartPlayer() {
|
||||||
},
|
},
|
||||||
m: {
|
m: {
|
||||||
unl: false,
|
unl: false,
|
||||||
|
auto: false,
|
||||||
points: new Decimal(0),
|
points: new Decimal(0),
|
||||||
best: new Decimal(0),
|
best: new Decimal(0),
|
||||||
spellTimes: {
|
spellTimes: {
|
||||||
|
@ -282,7 +283,7 @@ const LAYER_EFFS = {
|
||||||
limit: Decimal.pow(2, player.t.points.plus(player.t.extCapsules.plus(tmp.freeExtCap).times(getFreeExtPow())).times(getCapPow())).sub(1).times(100).times(getTimeEnergyLimitMult()),
|
limit: Decimal.pow(2, player.t.points.plus(player.t.extCapsules.plus(tmp.freeExtCap).times(getFreeExtPow())).times(getCapPow())).sub(1).times(100).times(getTimeEnergyLimitMult()),
|
||||||
}},
|
}},
|
||||||
sb: function() { return Decimal.pow(Decimal.add(1.5, addToSBBase()), player.sb.points.times(getSuperBoosterPow())) },
|
sb: function() { return Decimal.pow(Decimal.add(1.5, addToSBBase()), player.sb.points.times(getSuperBoosterPow())) },
|
||||||
sg: function() { return Decimal.pow(Decimal.add(2, addToSGBase()), player.sg.points).times(getSuperGenPowerGainMult()).max(0) },
|
sg: function() { return Decimal.pow(Decimal.add(2, addToSGBase()), player.sg.points).sub(1).times(getSuperGenPowerGainMult()).max(0) },
|
||||||
h: function() {
|
h: function() {
|
||||||
let ret = player.h.points.plus(1).times(player.points.times(player.h.points).plus(1).log10().plus(1).log10().plus(1)).log10().times(5).root(player.q.upgrades.includes(12)?1.25:2);
|
let ret = player.h.points.plus(1).times(player.points.times(player.h.points).plus(1).log10().plus(1).log10().plus(1)).log10().times(5).root(player.q.upgrades.includes(12)?1.25:2);
|
||||||
if (player.h.challs.includes(61)) ret = ret.times(1.2);
|
if (player.h.challs.includes(61)) ret = ret.times(1.2);
|
||||||
|
@ -292,7 +293,7 @@ const LAYER_EFFS = {
|
||||||
hb: function() { return Decimal.pow(Decimal.add(1.6, addToHBBase()), player.hb.points.pow(getHyperBoosterExp()).times(getHyperBoosterPow())) },
|
hb: function() { return Decimal.pow(Decimal.add(1.6, addToHBBase()), player.hb.points.pow(getHyperBoosterExp()).times(getHyperBoosterPow())) },
|
||||||
ss: function() { return player.ss.points.pow(2.5).times(getSubspaceGainMult()) },
|
ss: function() { return player.ss.points.pow(2.5).times(getSubspaceGainMult()) },
|
||||||
ba: function() { return {
|
ba: function() { return {
|
||||||
power: player.ba.points.pow(0.2).pow(tmp.baExp ? tmp.baExp : 1),
|
power: player.ba.points.pow(0.2).pow(tmp.baExp ? tmp.baExp : 1).pow(player.ba.upgrades.includes(41)?2:1),
|
||||||
pos: player.ba.points.pow(0.7).pow(tmp.baExp ? tmp.baExp : 1),
|
pos: player.ba.points.pow(0.7).pow(tmp.baExp ? tmp.baExp : 1),
|
||||||
neg: player.ba.points.pow(0.65).times(0.4).pow(tmp.baExp ? tmp.baExp : 1),
|
neg: player.ba.points.pow(0.65).times(0.4).pow(tmp.baExp ? tmp.baExp : 1),
|
||||||
}},
|
}},
|
||||||
|
@ -1038,13 +1039,15 @@ const LAYER_UPGS = {
|
||||||
effDisp: function(x) { return format(x)+"x" },
|
effDisp: function(x) { return format(x)+"x" },
|
||||||
},
|
},
|
||||||
25: {
|
25: {
|
||||||
desc: "Placeholder",
|
desc: "Subspace is generated faster based on your Quirk Layers.",
|
||||||
cost: new Decimal(1/0),
|
cost: new Decimal(8),
|
||||||
unl: function() { return player.ba.upgrades.includes(24) },
|
unl: function() { return player.ba.upgrades.includes(24) },
|
||||||
|
currently: function() { return Decimal.pow(10, player.q.layers.sqrt()) },
|
||||||
|
effDisp: function(x) { return format(x)+"x" },
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
m: {
|
m: {
|
||||||
rows: 2,
|
rows: 3,
|
||||||
cols: 4,
|
cols: 4,
|
||||||
11: {
|
11: {
|
||||||
desc: "Hexes boost all Spells.",
|
desc: "Hexes boost all Spells.",
|
||||||
|
@ -1090,13 +1093,39 @@ const LAYER_UPGS = {
|
||||||
unl: function() { return player.m.upgrades.includes(21) },
|
unl: function() { return player.m.upgrades.includes(21) },
|
||||||
},
|
},
|
||||||
24: {
|
24: {
|
||||||
desc: "???",
|
desc: "Add free Quirk Layers based on your Boosters.",
|
||||||
cost: new Decimal(1/0),
|
cost: new Decimal(80000),
|
||||||
unl: function() { return false },
|
unl: function() { return player.m.upgrades.includes(22) },
|
||||||
|
currently: function() { return player.b.points.plus(1).log10().times(0.9) },
|
||||||
|
effDisp: function(x) { return "+"+format(x) },
|
||||||
|
},
|
||||||
|
31: {
|
||||||
|
desc: "Unlock a new Hindrance.",
|
||||||
|
cost: new Decimal(2.5e6),
|
||||||
|
unl: function() { return player.m.upgrades.includes(23)&&player.sg.unl },
|
||||||
|
},
|
||||||
|
32: {
|
||||||
|
desc: "Hyper-Boosters add free Space Buildings.",
|
||||||
|
cost: new Decimal(5e9),
|
||||||
|
unl: function() { return player.m.upgrades.includes(24) },
|
||||||
|
currently: function() { return player.hb.points.plus(1).pow(3) },
|
||||||
|
effDisp: function(x) { return "+"+formatWhole(x) },
|
||||||
|
},
|
||||||
|
33: {
|
||||||
|
desc: "Hindrance Spirit adds to the Hyper-Booster base.",
|
||||||
|
cost: new Decimal(2e10),
|
||||||
|
unl: function() { return player.m.upgrades.includes(31) },
|
||||||
|
currently: function() { return player.h.points.plus(1).log10().plus(1).log10().plus(1).log10().div(2) },
|
||||||
|
effDisp: function(x) { return "+"+format(x) },
|
||||||
|
},
|
||||||
|
34: {
|
||||||
|
desc: "Add 1 free Quirk Layer.",
|
||||||
|
cost: new Decimal(4e10),
|
||||||
|
unl: function() { return player.m.upgrades.includes(32) },
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
ba: {
|
ba: {
|
||||||
rows: 2,
|
rows: 4,
|
||||||
cols: 4,
|
cols: 4,
|
||||||
11: {
|
11: {
|
||||||
desc: "All Balance Energy effects use better formulas.",
|
desc: "All Balance Energy effects use better formulas.",
|
||||||
|
@ -1148,6 +1177,50 @@ const LAYER_UPGS = {
|
||||||
cost: new Decimal(2e4),
|
cost: new Decimal(2e4),
|
||||||
unl: function() { return player.ba.upgrades.includes(22) },
|
unl: function() { return player.ba.upgrades.includes(22) },
|
||||||
},
|
},
|
||||||
|
31: {
|
||||||
|
desc: "The Quirk Layer cost is adjusted based on your Balance Upgrades bought.",
|
||||||
|
cost: new Decimal(4e5),
|
||||||
|
unl: function() { return player.ba.upgrades.includes(23) },
|
||||||
|
currently: function() { return Decimal.div(0.8, Math.pow(player.ba.upgrades.length+1, 0.1)).plus(1.2) },
|
||||||
|
effDisp: function(x) { return "2 -> "+format(x) },
|
||||||
|
},
|
||||||
|
32: {
|
||||||
|
desc: "Enhancers are stronger based on your Positivity.",
|
||||||
|
cost: new Decimal(5e5),
|
||||||
|
unl: function() { return player.ba.upgrades.includes(24) },
|
||||||
|
currently: function() { return player.ba.positivity.plus(1).log10().plus(1).log10().plus(1).pow(2) },
|
||||||
|
effDisp: function(x) { return format(x.sub(1).times(100))+"% stronger" },
|
||||||
|
},
|
||||||
|
33: {
|
||||||
|
desc: "The Balance Power effect is squared.",
|
||||||
|
cost: new Decimal(1e6),
|
||||||
|
unl: function() { return player.ba.upgrades.includes(31) },
|
||||||
|
},
|
||||||
|
34: {
|
||||||
|
desc: "The Positivity & Negativity effect uses a better formula.",
|
||||||
|
cost: new Decimal(2e6),
|
||||||
|
unl: function() { return player.ba.upgrades.includes(32) },
|
||||||
|
},
|
||||||
|
41: {
|
||||||
|
desc: "The first Balance Energy effect is squared.",
|
||||||
|
cost: new Decimal(2e10),
|
||||||
|
unl: function() { return player.ba.upgrades.includes(33)&&player.ba.upgrades.includes(34) },
|
||||||
|
},
|
||||||
|
42: {
|
||||||
|
desc: "???",
|
||||||
|
cost: new Decimal(1/0),
|
||||||
|
unl: function() { return false },
|
||||||
|
},
|
||||||
|
43: {
|
||||||
|
desc: "???",
|
||||||
|
cost: new Decimal(1/0),
|
||||||
|
unl: function() { return false },
|
||||||
|
},
|
||||||
|
44: {
|
||||||
|
desc: "???",
|
||||||
|
cost: new Decimal(1/0),
|
||||||
|
unl: function() { return false },
|
||||||
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1264,7 +1337,7 @@ function load() {
|
||||||
if (get===null||get===undefined) player = getStartPlayer()
|
if (get===null||get===undefined) player = getStartPlayer()
|
||||||
else player = JSON.parse(atob(get))
|
else player = JSON.parse(atob(get))
|
||||||
player.tab = "tree"
|
player.tab = "tree"
|
||||||
offTime.remain = (Date.now()-player.time)/1000
|
offTime.remain = (Date.now()-player.time)/10000
|
||||||
if (!player.offlineProd) offTime.remain = 0
|
if (!player.offlineProd) offTime.remain = 0
|
||||||
player.time = Date.now()
|
player.time = Date.now()
|
||||||
checkForVars();
|
checkForVars();
|
||||||
|
@ -1361,6 +1434,7 @@ function checkForVars() {
|
||||||
if (player.ss === undefined) player.ss = start.ss
|
if (player.ss === undefined) player.ss = start.ss
|
||||||
if (player.ss.auto === undefined) player.ss.auto = false
|
if (player.ss.auto === undefined) player.ss.auto = false
|
||||||
if (player.m === undefined) player.m = start.m
|
if (player.m === undefined) player.m = start.m
|
||||||
|
if (player.m.auto === undefined) player.m.auto = false
|
||||||
if (player.ba === undefined) player.ba = start.ba
|
if (player.ba === undefined) player.ba = start.ba
|
||||||
if (player.offlineProd === undefined) player.offlineProd = true
|
if (player.offlineProd === undefined) player.offlineProd = true
|
||||||
}
|
}
|
||||||
|
@ -1558,6 +1632,7 @@ function getLayerGainMult(layer) {
|
||||||
if (player.ss.upgrades.includes(14)) mult = mult.div(1.0825)
|
if (player.ss.upgrades.includes(14)) mult = mult.div(1.0825)
|
||||||
break;
|
break;
|
||||||
case "h":
|
case "h":
|
||||||
|
if (player.h.challs.includes(71)) mult = mult.times(H_CHALLS[71].currently())
|
||||||
if (player.q.upgrades.includes(22)) mult = mult.times(LAYER_UPGS.q[22].currently().h)
|
if (player.q.upgrades.includes(22)) mult = mult.times(LAYER_UPGS.q[22].currently().h)
|
||||||
if (player.q.upgrades.includes(34)) mult = mult.times(LAYER_UPGS.q[34].currently())
|
if (player.q.upgrades.includes(34)) mult = mult.times(LAYER_UPGS.q[34].currently())
|
||||||
if (player.q.upgrades.includes(44)) mult = mult.times(LAYER_UPGS.q[44].currently())
|
if (player.q.upgrades.includes(44)) mult = mult.times(LAYER_UPGS.q[44].currently())
|
||||||
|
@ -1976,6 +2051,7 @@ function getEnhancerPow() {
|
||||||
if (player.e.upgrades.includes(31)&&!(tmp.hcActive?tmp.hcActive[12]:true)) pow = pow.times(LAYER_UPGS.e[31].currently())
|
if (player.e.upgrades.includes(31)&&!(tmp.hcActive?tmp.hcActive[12]:true)) pow = pow.times(LAYER_UPGS.e[31].currently())
|
||||||
if (player.h.challs.includes(31)) pow = pow.times(2)
|
if (player.h.challs.includes(31)) pow = pow.times(2)
|
||||||
if (player.q.upgrades.includes(42)) pow = pow.times(1.4)
|
if (player.q.upgrades.includes(42)) pow = pow.times(1.4)
|
||||||
|
if (player.ba.upgrades.includes(32)) pow = pow.times(LAYER_UPGS.ba[32].currently())
|
||||||
return pow
|
return pow
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2149,6 +2225,7 @@ function getExtraBuildingLevels(x) {
|
||||||
if (player.s.upgrades.includes(14)&&!(tmp.hcActive?tmp.hcActive[12]:true)) lvl = lvl.plus(1);
|
if (player.s.upgrades.includes(14)&&!(tmp.hcActive?tmp.hcActive[12]:true)) lvl = lvl.plus(1);
|
||||||
if (player.q.upgrades.includes(31)) lvl = lvl.plus(1);
|
if (player.q.upgrades.includes(31)) lvl = lvl.plus(1);
|
||||||
if (x<5) lvl = lvl.plus(tmp.spaceBuildEff[5])
|
if (x<5) lvl = lvl.plus(tmp.spaceBuildEff[5])
|
||||||
|
if (player.m.upgrades.includes(32)) lvl = lvl.plus(LAYER_UPGS.m[32].currently())
|
||||||
return lvl
|
return lvl
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2268,13 +2345,19 @@ function addToSBBase() {
|
||||||
return toAdd
|
return toAdd
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function getQuirkLayerCostBase() {
|
||||||
|
let base = new Decimal(2)
|
||||||
|
if (player.ba.upgrades.includes(31)) base = LAYER_UPGS.ba[31].currently()
|
||||||
|
return base
|
||||||
|
}
|
||||||
|
|
||||||
function getQuirkLayerCost() {
|
function getQuirkLayerCost() {
|
||||||
let cost = Decimal.pow(2, Decimal.pow(2, player.q.layers)).sub(1)
|
let cost = Decimal.pow(tmp.qCB, Decimal.pow(tmp.qCB, player.q.layers)).sub(1)
|
||||||
return cost.max(1);
|
return cost.max(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
function getQuirkLayerTarg() {
|
function getQuirkLayerTarg() {
|
||||||
let targ = player.q.points.plus(1).log2().plus(1).log2().plus(1).floor()
|
let targ = player.q.points.plus(1).log(tmp.qCB).plus(1).log(tmp.qCB).plus(1).floor()
|
||||||
return targ
|
return targ
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2288,10 +2371,17 @@ function getQuirkLayerMult() {
|
||||||
return mult
|
return mult
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function getExtraQuirkLayers() {
|
||||||
|
let layers = new Decimal(0);
|
||||||
|
if (player.m.upgrades.includes(24)) layers = layers.plus(LAYER_UPGS.m[24].currently())
|
||||||
|
if (player.m.upgrades.includes(34)) layers = layers.plus(1)
|
||||||
|
return layers;
|
||||||
|
}
|
||||||
|
|
||||||
function getQuirkEnergyGainExp() {
|
function getQuirkEnergyGainExp() {
|
||||||
let mult = new Decimal(1)
|
let mult = new Decimal(1)
|
||||||
if (spellActive(3)) mult = mult.times(tmp.spellEffs[3])
|
if (spellActive(3)) mult = mult.times(tmp.spellEffs[3])
|
||||||
return player.q.layers.sub(1).times(mult)
|
return player.q.layers.plus(getExtraQuirkLayers()).sub(1).times(mult)
|
||||||
}
|
}
|
||||||
|
|
||||||
function getQuirkEnergyEff() {
|
function getQuirkEnergyEff() {
|
||||||
|
@ -2329,7 +2419,7 @@ function maxQuirkLayers() {
|
||||||
}
|
}
|
||||||
|
|
||||||
const H_CHALLS = {
|
const H_CHALLS = {
|
||||||
rows: 6,
|
rows: 7,
|
||||||
cols: 2,
|
cols: 2,
|
||||||
11: {
|
11: {
|
||||||
name: "Skip the Second",
|
name: "Skip the Second",
|
||||||
|
@ -2386,7 +2476,7 @@ const H_CHALLS = {
|
||||||
},
|
},
|
||||||
42: {
|
42: {
|
||||||
name: "Slowed to a Halt",
|
name: "Slowed to a Halt",
|
||||||
desc: "Time slows down over time, halting to a stop after 10 seconds.",
|
desc: "Time slows down over time, halting to a stop after 10 seconds. Hint: This also impacts auto Enhance Point generation, so make sure to manually press E!",
|
||||||
unl: function() { return player.h.challs.includes(31)&&player.h.challs.includes(32) },
|
unl: function() { return player.h.challs.includes(31)&&player.h.challs.includes(32) },
|
||||||
goal: new Decimal("1e16500"),
|
goal: new Decimal("1e16500"),
|
||||||
reward: "Cube the Generator Power effect.",
|
reward: "Cube the Generator Power effect.",
|
||||||
|
@ -2402,7 +2492,7 @@ const H_CHALLS = {
|
||||||
},
|
},
|
||||||
52: {
|
52: {
|
||||||
name: "Anti-Enhancers",
|
name: "Anti-Enhancers",
|
||||||
desc: "You lose Enhancers over time, which can make your Enhancer amount get below 0.",
|
desc: "You lose Enhancers over time, which can make your Enhancer amount get below 0. Hint: Maybe it's best to not have any Time Capsules or Space Energy?",
|
||||||
unl: function() { return player.h.challs.includes(41)&&player.h.challs.includes(42)&&player.h.challs.includes(51) },
|
unl: function() { return player.h.challs.includes(41)&&player.h.challs.includes(42)&&player.h.challs.includes(51) },
|
||||||
goal: new Decimal("1e440000"),
|
goal: new Decimal("1e440000"),
|
||||||
reward: "Quirk Layers are faster based on your Hindrance Spirit & Quirks.",
|
reward: "Quirk Layers are faster based on your Hindrance Spirit & Quirks.",
|
||||||
|
@ -2429,9 +2519,26 @@ const H_CHALLS = {
|
||||||
goal: new Decimal("1e134000"),
|
goal: new Decimal("1e134000"),
|
||||||
reward: "Unlock Super-Generators.",
|
reward: "Unlock Super-Generators.",
|
||||||
},
|
},
|
||||||
|
71: {
|
||||||
|
name: "The Final Stockade",
|
||||||
|
desc: 'All previous Hindrances (except "Slowed to a Halt" and "Anti-Enhancers") are applied at once.',
|
||||||
|
unl: function() { return player.m.upgrades.includes(31) },
|
||||||
|
goal: new Decimal("1e1150"),
|
||||||
|
reward: "Gain more Hindrance Spirit based on your Quirk Energy.",
|
||||||
|
currently: function() { return player.q.energy.plus(1).sqrt() },
|
||||||
|
effDisp: function(x) { return format(x)+"x" },
|
||||||
|
},
|
||||||
|
72: {
|
||||||
|
name: "You shouldn't be seeing this",
|
||||||
|
desc: "Never gonna give you up, never gonna let you down, never gonna run around and dessert you",
|
||||||
|
unl: function() { return false },
|
||||||
|
goal: new Decimal(1/0),
|
||||||
|
reward: "???",
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
function HCActive(x) {
|
function HCActive(x) {
|
||||||
|
if (x<71&&x!=42&&x!=52) if (HCActive(71)) return true
|
||||||
if (x==11||x==41) if (HCActive(51)) return true
|
if (x==11||x==41) if (HCActive(51)) return true
|
||||||
if (x==31||x==32) if (HCActive(61)) return true
|
if (x==31||x==32) if (HCActive(61)) return true
|
||||||
return player.h.active==x;
|
return player.h.active==x;
|
||||||
|
@ -2499,6 +2606,7 @@ function getSubspaceGainMult() {
|
||||||
if (player.ss.upgrades.includes(12)) mult = mult.times(LAYER_UPGS.ss[12].currently())
|
if (player.ss.upgrades.includes(12)) mult = mult.times(LAYER_UPGS.ss[12].currently())
|
||||||
if (player.ss.upgrades.includes(22)) mult = mult.times(LAYER_UPGS.ss[22].currently())
|
if (player.ss.upgrades.includes(22)) mult = mult.times(LAYER_UPGS.ss[22].currently())
|
||||||
if (player.ss.upgrades.includes(24)) mult = mult.times(LAYER_UPGS.ss[24].currently())
|
if (player.ss.upgrades.includes(24)) mult = mult.times(LAYER_UPGS.ss[24].currently())
|
||||||
|
if (player.ss.upgrades.includes(25)) mult = mult.times(LAYER_UPGS.ss[25].currently())
|
||||||
if (player.ba.upgrades.includes(12)) mult = mult.times(LAYER_UPGS.ba[12].currently())
|
if (player.ba.upgrades.includes(12)) mult = mult.times(LAYER_UPGS.ba[12].currently())
|
||||||
return mult
|
return mult
|
||||||
}
|
}
|
||||||
|
@ -2506,6 +2614,7 @@ function getSubspaceGainMult() {
|
||||||
function addToHBBase() {
|
function addToHBBase() {
|
||||||
let toAdd = new Decimal(0)
|
let toAdd = new Decimal(0)
|
||||||
if (player.m.upgrades.includes(13)) toAdd = toAdd.plus(LAYER_UPGS.m[13].currently())
|
if (player.m.upgrades.includes(13)) toAdd = toAdd.plus(LAYER_UPGS.m[13].currently())
|
||||||
|
if (player.m.upgrades.includes(33)) toAdd = toAdd.plus(LAYER_UPGS.m[33].currently())
|
||||||
return toAdd
|
return toAdd
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2524,6 +2633,7 @@ function getHyperBoosterPow() {
|
||||||
function getBalancePowerEff() {
|
function getBalancePowerEff() {
|
||||||
let eff = player.ba.power.plus(1).sqrt()
|
let eff = player.ba.power.plus(1).sqrt()
|
||||||
if (player.ba.upgrades.includes(14)) eff = eff.pow(5)
|
if (player.ba.upgrades.includes(14)) eff = eff.pow(5)
|
||||||
|
if (player.ba.upgrades.includes(33)) eff = eff.pow(2)
|
||||||
return eff;
|
return eff;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2531,6 +2641,7 @@ function getBalanceTypesEff() {
|
||||||
let mod = player.ba.positivity.plus(1).log10().plus(1).div(player.ba.negativity.plus(1).log10().plus(1)).log10().abs().plus(1).pow(-1)
|
let mod = player.ba.positivity.plus(1).log10().plus(1).div(player.ba.negativity.plus(1).log10().plus(1)).log10().abs().plus(1).pow(-1)
|
||||||
let pos = player.ba.positivity.plus(1).log10().plus(1)
|
let pos = player.ba.positivity.plus(1).log10().plus(1)
|
||||||
let neg = player.ba.negativity.plus(1).log10().plus(1)
|
let neg = player.ba.negativity.plus(1).log10().plus(1)
|
||||||
|
if (player.ba.upgrades.includes(34)) mod = mod.times(1.5)
|
||||||
let eff = pos.times(neg).pow(mod)
|
let eff = pos.times(neg).pow(mod)
|
||||||
return eff;
|
return eff;
|
||||||
}
|
}
|
||||||
|
@ -2554,9 +2665,9 @@ function getNegGainMult() {
|
||||||
}
|
}
|
||||||
|
|
||||||
const SPELL_NAMES = {
|
const SPELL_NAMES = {
|
||||||
1: "Spell 1",
|
1: "Booster Launch",
|
||||||
2: "Spell 2",
|
2: "Time Warp",
|
||||||
3: "Spell 3",
|
3: "Quirk Amplification",
|
||||||
}
|
}
|
||||||
|
|
||||||
const SPELL_DESCS = {
|
const SPELL_DESCS = {
|
||||||
|
@ -2594,6 +2705,7 @@ function getSpellDesc(x) {
|
||||||
|
|
||||||
function getSpellTime() {
|
function getSpellTime() {
|
||||||
let time = 20
|
let time = 20
|
||||||
|
if (player.m.best.gte(2.5e9)) time *= 10
|
||||||
return time
|
return time
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2677,6 +2789,7 @@ function gameLoop(diff) {
|
||||||
player.h.points = player.h.points.plus(tmp.resetGain.h.times(diff)).max(0)
|
player.h.points = player.h.points.plus(tmp.resetGain.h.times(diff)).max(0)
|
||||||
player.q.points = player.q.points.plus(tmp.resetGain.q.times(diff)).max(0)
|
player.q.points = player.q.points.plus(tmp.resetGain.q.times(diff)).max(0)
|
||||||
}
|
}
|
||||||
|
if (player.m.best.gte(2.5e9)) player.m.hexes = player.m.hexes.plus(getHexGain().times(diff)).max(0)
|
||||||
|
|
||||||
if (player.b.auto&&player.t.best.gte(5)) doReset("b")
|
if (player.b.auto&&player.t.best.gte(5)) doReset("b")
|
||||||
if (player.g.auto&&player.s.best.gte(5)) doReset("g")
|
if (player.g.auto&&player.s.best.gte(5)) doReset("g")
|
||||||
|
@ -2690,6 +2803,7 @@ function gameLoop(diff) {
|
||||||
if (player.q.auto&&player.ba.best.gte(3)) maxQuirkLayers()
|
if (player.q.auto&&player.ba.best.gte(3)) maxQuirkLayers()
|
||||||
if (player.hb.auto&&player.m.best.gte(4)) doReset("hb")
|
if (player.hb.auto&&player.m.best.gte(4)) doReset("hb")
|
||||||
if (player.ss.auto&&player.m.best.gte(4)) doReset("ss")
|
if (player.ss.auto&&player.m.best.gte(4)) doReset("ss")
|
||||||
|
if (player.m.auto&&player.m.best.gte(1000)) for (let i=1;i<=3;i++) activateSpell(i)
|
||||||
|
|
||||||
if (player.hasNaN&&!NaNalert) {
|
if (player.hasNaN&&!NaNalert) {
|
||||||
alert("We have detected a corruption in your save. Please visit https://discord.gg/wwQfgPa for help.")
|
alert("We have detected a corruption in your save. Please visit https://discord.gg/wwQfgPa for help.")
|
||||||
|
@ -2749,6 +2863,15 @@ document.onkeydown = function(e) {
|
||||||
case "S":
|
case "S":
|
||||||
if (player.ss.unl) doReset("ss")
|
if (player.ss.unl) doReset("ss")
|
||||||
break;
|
break;
|
||||||
|
case "1":
|
||||||
|
if (player.ba.unl) activateSpell(1)
|
||||||
|
break;
|
||||||
|
case "2":
|
||||||
|
if (player.ba.unl) activateSpell(2)
|
||||||
|
break;
|
||||||
|
case "3":
|
||||||
|
if (player.ba.unl) activateSpell(3)
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
} else if (player[key].unl) doReset(key)
|
} else if (player[key].unl) doReset(key)
|
||||||
}
|
}
|
|
@ -47,6 +47,7 @@ function updateTemp() {
|
||||||
tmp.sbUnl = getSpaceBuildingsUnl()
|
tmp.sbUnl = getSpaceBuildingsUnl()
|
||||||
|
|
||||||
tmp.quirkEff = getQuirkEnergyEff()
|
tmp.quirkEff = getQuirkEnergyEff()
|
||||||
|
tmp.qCB = getQuirkLayerCostBase()
|
||||||
|
|
||||||
tmp.ssEff1 = getSubspaceEff1()
|
tmp.ssEff1 = getSubspaceEff1()
|
||||||
tmp.ssEff2 = getSubspaceEff2()
|
tmp.ssEff2 = getSubspaceEff2()
|
||||||
|
|
|
@ -334,8 +334,11 @@ a {
|
||||||
color: #41f5f5;
|
color: #41f5f5;
|
||||||
text-decoration-line: none;
|
text-decoration-line: none;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
|
width: 100%;
|
||||||
|
min-width: 100%;
|
||||||
-webkit-text-stroke-width: 1px;
|
-webkit-text-stroke-width: 1px;
|
||||||
-webkit-text-stroke-color: #02f2f2;
|
-webkit-text-stroke-color: #02f2f2;
|
||||||
|
text-decoration: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
.link:hover {
|
.link:hover {
|
||||||
|
|
Loading…
Reference in a new issue