1
0
Fork 0
mirror of https://github.com/Acamaeda/The-Modding-Tree.git synced 2024-11-21 16:13:55 +00:00
The Life side is completed!
This commit is contained in:
Aarex Tiaokhiao 2020-09-11 22:03:58 -04:00
parent 253e8605d1
commit 9ad0ad9226
2 changed files with 88 additions and 74 deletions

View file

@ -568,8 +568,8 @@
</div>
<div v-if="layer=='ps'">
<table>
<tr v-if="milestoneShown(player.ps.best.gte(5), true)"><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 automatically purchase Phantom Souls&nbsp;&nbsp;&nbsp;<button v-if="player.ps.best.gte(5)" class="smallUpg can ps" onclick="toggleAuto('ps')">{{player.ps.auto?"ON":"OFF"}}</button></td></tr>
<tr v-if="milestoneShown(player.ps.best.gte(10))"><td v-bind:class="{ milestone: player.ps.best.lt(10), milestoneDone: player.ps.best.gte(10) }"><h3>10 Phantom Souls</h3><br>Phantom Souls reset nothing</td></tr>
<tr v-if="milestoneShown(player.ps.best.gte(3), true)"><td v-bind:class="{ milestone: player.ps.best.lt(5), milestoneDone: player.ps.best.gte(3) }"><h3>3 Phantom Souls</h3><br>You can buy max Phantom Souls, and automatically purchase Phantom Souls&nbsp;&nbsp;&nbsp;<button v-if="player.ps.best.gte(3)" 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>Phantom Souls reset nothing</td></tr>
</table><br><br>
</div>
<div v-if="layer=='sp'">
@ -585,10 +585,10 @@
You have {{format(player.l.power)}} Life Power, which is translating to:
<div class="upgRow">
<div v-for="i in tmp.l.lbUnl">
<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))}} Phantom Souls</button>
<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>
You have {{formatWhole(player.ps.points)}} Phantom Souls
You have {{formatWhole(player.ps.points)}} Phantom Souls, {{getLayerEffDesc("ps")}}
</div>
<br><br>
<div class="upgTable">

View file

@ -228,7 +228,7 @@ const LAYER_REQS = {
ss: new Decimal(36),
m: new Decimal(2e78),
ba: new Decimal(5e129),
ps: new Decimal("1e5100"),
ps: new Decimal("1e5000"),
sp: new Decimal("1e8500000"),
l: new Decimal(1e195),
hs: new Decimal(725),
@ -298,7 +298,7 @@ const LAYER_EXP = {
ba: new Decimal(0.00667),
ps: new Decimal(1.2),
sp: new Decimal(2e-7),
l: new Decimal(0.001),
l: new Decimal(0.012),
hs: new Decimal(1e-9),
i: new Decimal(1),
}
@ -312,7 +312,7 @@ const LAYER_BASE = {
sg: new Decimal(1.2),
hb: new Decimal(1.05),
ss: new Decimal(1.15),
ps: new Decimal("1e450"),
ps: new Decimal("1e250"),
i: new Decimal(1e100),
}
@ -377,9 +377,7 @@ const LAYER_EFFS = {
return ret;
},
hb: function() {
let total = player.hb.points
if (player.sp.upgrades.includes(51)) total = total.add(1)
return Decimal.pow(Decimal.add(1.6, addToHBBase()), total.pow(getHyperBoosterExp()).times(getHyperBoosterPow()))
return Decimal.pow(Decimal.add(1.6, addToHBBase()), player.hb.points.add(getExtraHyperBoosters()).pow(getHyperBoosterExp()).times(getHyperBoosterPow()))
},
ss: function() { return player.ss.points.pow(2.5).times(getSubspaceGainMult()) },
ba: function() {
@ -393,10 +391,10 @@ const LAYER_EFFS = {
},
ps: function() {
let x = player.ps.points
if (player.ps.upgrades.includes(12)) x = x.times(1.15)
if (player.ps.upgrades.includes(12)) x = x.times(1.2)
return {
exp: player.ps.points.div(10).add(1),
mult: player.ps.points.div(3).add(1).sqrt()
exp: x.div(2).add(1),
mult: x.div(3).add(1).sqrt()
}
},
}
@ -527,7 +525,7 @@ const LAYER_UPGS = {
desc: "Boosters are cheaper based on your points.",
cost: new Decimal(18),
unl: function() { return player.b.upgrades.includes(21) || player.b.upgrades.includes(22) },
currently: function() { return player.points.plus(1).log10().plus(1).pow(3.2).pow((tmp.s && tmp.s.sbEff)?tmp.s.sbEff[4]:1) },
currently: function() { return player.points.plus(1).log10().plus(1).pow(3.2).pow((tmp.s !== undefined)?tmp.s.sbEff[4]:1) },
effDisp: function(x) { return "/"+format(x) },
},
31: {
@ -959,6 +957,7 @@ const LAYER_UPGS = {
currently: function() {
let ret = Decimal.pow(10, player.p.points.plus(1).log10().div(1e5).sqrt());
if (ret.gte(2.5)) ret = ret.log(2.5).plus(1.5).min(ret);
if (ret.gte(40)) ret = ret.log(40).times(40);
return ret.max(1);
},
effDisp: function(x) { return format(x)+"x" },
@ -1443,27 +1442,27 @@ const LAYER_UPGS = {
cols: 4,
11: {
desc: "Hindrance Spirits reduce the requirement of Phantom Souls.",
cost: new Decimal(1/0),
cost: new Decimal(2),
unl: function() { return true },
currently: function() { return player.h.points.add(1).pow(0.01) },
currently: function() { return player.h.points.add(1).pow(0.005) },
effDisp: function(x) { return format(x)+"x" },
},
12: {
desc: "Phantom Souls are 15% stronger.",
cost: new Decimal(1/0),
desc: "Phantom Souls are 20% stronger.",
cost: new Decimal(5),
unl: function() { return true },
},
13: {
desc: "The Subspace layer acts like you choose it first.",
cost: new Decimal(1/0),
desc: "Phantom Souls strengthen all Spells.",
cost: new Decimal(7),
unl: function() { return true },
currently: function() { return player.ps.points.div(2).max(1).log10().div(10).add(1) },
effDisp: function(x) { return format(x.sub(1).times(100))+"%" },
},
14: {
desc: "Phantom Souls strengthen all Spells.",
desc: "The Life Essence layer acts like you choose it first.",
cost: new Decimal(1/0),
unl: function() { return true },
currently: function() { return player.ps.points.add(1).pow(0.2) },
effDisp: function(x) { return format(x.sub(1).times(100))+"%" },
unl: function() { return player.l.order > 0 || player.ps.upgrades.includes(14) },
},
21: {
desc: "Unlock the fifth Life Booster.",
@ -1485,9 +1484,9 @@ const LAYER_UPGS = {
effDisp: function(x) { return format(x)+"x" },
},
24: {
desc: "The Life Essence layer acts like you choose it first.",
desc: "The Subspace layer acts like you choose it first.",
cost: new Decimal(1/0),
unl: function() { return player.hs.unl },
unl: function() { return (player.hs.unl && player.hs.order > 0) || player.ps.upgrades.includes(24) },
},
},
sp: {
@ -1577,15 +1576,17 @@ const LAYER_UPGS = {
},
41: {
desc: "Gain more Life Essence based on total SP.",
cost: new Decimal(1/0),
cost: new Decimal(1e6),
unl: function() { return player.l.unl },
currently: function() { return new Decimal(1) },
currently: function() { return player.sp.total.div(1e6).add(1).sqrt() },
effDisp: function(x) { return format(x)+"x" },
},
42: {
desc: "You produce Life Power 2x faster.",
cost: new Decimal(1/0),
desc: "Life Essence speeds up the Life Power production.",
cost: new Decimal(2e6),
unl: function() { return player.l.unl },
currently: function() { return player.l.points.add(1).log(1.5).add(1).cbrt() },
effDisp: function(x) { return format(x)+"x" },
},
43: {
desc: "Gain more Hyperspace based on best SP.",
@ -1595,11 +1596,11 @@ const LAYER_UPGS = {
effDisp: function(x) { return format(x)+"x" },
},
44: {
desc: "SP divides the Phantom Souls requirement.",
desc: "Total SP strengthens all Hyper-Upgrades.",
cost: new Decimal(1/0),
unl: function() { return player.ps.unl },
unl: function() { return player.hs.unl },
currently: function() { return new Decimal(1) },
effDisp: function(x) { return format(x)+"x" },
effDisp: function(x) { return format(x.sub(1).times(100))+"%" },
},
51: {
desc: "Add 1 extra Hyper-Booster to its effect.",
@ -1883,6 +1884,7 @@ function convertToDecimal() {
player.ba.positivity = new Decimal(player.ba.positivity)
player.ba.negativity = new Decimal(player.ba.negativity)
player.l.power = new Decimal(player.l.power)
for (let i=1;i<=5;i++) if (player.l.boosters[i]) player.l.boosters[i] = new Decimal(player.l.boosters[i])
for (let i=1;i<=MAX_BUILDINGS;i++) if (player.hs.hyperUpgrades[i]) player.hs.hyperUpgrades[i] = new Decimal(player.hs.hyperUpgrades[i])
player.i.lifeBricks = new Decimal(player.i.lifeBricks)
player.i.extraBuildings = new Decimal(player.i.extraBuildings)
@ -1994,7 +1996,7 @@ function canBuyMax(layer) {
return player.ba.best.gte(8)
break;
case "ps":
return player.ps.best.gte(5)
return player.ps.best.gte(3)
break;
}
return false;
@ -2028,7 +2030,7 @@ function getLayerReq(layer) {
if (player.l.order>0) req = new Decimal("1e1000")
break;
case "hs":
if (player.hs.order>0) req = new Decimal(1000)
if (player.hs.order>0) req = new Decimal(915)
break;
}
return req
@ -2048,17 +2050,17 @@ function getLayerGainMult(layer) {
if (player.e.upgrades.includes(13)&&!(tmp.hcActive?tmp.hcActive[12]:true)) mult = mult.times(1e10)
if (player.e.upgrades.includes(34)&&!(tmp.hcActive?tmp.hcActive[12]:true)) mult = mult.times(1e40)
if (player.t.unl) mult = mult.times(tmp.timeEff)
if (player.s.unl && tmp.s && tmp.s.sbEff) mult = mult.times(tmp.s.sbEff[1])
if (player.s.unl && tmp.s !== undefined) mult = mult.times(tmp.s.sbEff[1])
if (player.q.upgrades.includes(11)) mult = mult.times(LAYER_UPGS.q[11].currently())
if (tmp.hcActive ? tmp.hcActive[62] : true) mult = mult.times(0)
break;
case "b":
if (player.b.upgrades.includes(23)) mult = mult.div(LAYER_UPGS.b[23].currently())
if (player.s.unl && tmp.s && tmp.s.sbEff) mult = mult.div(tmp.s.sbEff[3])
if (player.s.unl && tmp.s !== undefined) mult = mult.div(tmp.s.sbEff[3])
break;
case "g":
if (player.g.upgrades.includes(22)) mult = mult.div(LAYER_UPGS.g[22].currently())
if (player.s.unl && tmp.s && tmp.s.sbEff) mult = mult.div(tmp.s.sbEff[3])
if (player.s.unl && tmp.s !== undefined) mult = mult.div(tmp.s.sbEff[3])
break;
case "e":
if (player.e.upgrades.includes(24)&&!(tmp.hcActive?tmp.hcActive[12]:true)) mult = mult.times(LAYER_UPGS.e[24].currently())
@ -2080,6 +2082,9 @@ function getLayerGainMult(layer) {
if (player.sp.upgrades.includes(31)) mult = mult.div(1.45)
if (player.l.unl && tmp.l !== undefined) mult = mult.div(tmp.l.lbEff[4])
break;
case "hb":
if (player.l.unl && tmp.l !== undefined) mult = mult.div(tmp.l.lbEff[4])
break;
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)
@ -2106,7 +2111,6 @@ function getLayerGainMult(layer) {
break;
case "ps":
if (player.ps.upgrades.includes(11)) mult = mult.div(LAYER_UPGS.ps[11].currently())
if (player.sp.upgrades.includes(44)) mult = mult.div(LAYER_UPGS.sp[44].currently())
break;
case "sp":
if (player.sp.upgrades.includes(24)) mult = mult.times(LAYER_UPGS.sp[24].currently())
@ -2129,6 +2133,12 @@ function getGainExp(layer) {
case "p":
if (tmp.hcActive ? tmp.hcActive[21] : true) exp = exp.div(100)
break;
case "l":
if (player.l.order > 0) exp = exp.div(2)
break;
case "hs":
if (player.hs.order > 0) exp = exp.div(2)
break;
}
return exp;
}
@ -2460,13 +2470,7 @@ function doReset(layer, force=false) {
if ((layer=="b"&&player.t.best.gte(12))||(layer=="g"&&player.s.best.gte(12))) return;
if ((layer=="t"&&player.h.best.gte(25))||(layer=="s"&&player.q.best.gte(25))||(layer=="sb"&&player.h.best.gte(2500))||(layer=="sg"&&player.sg.best.gte(1))) return;
if ((layer=="hb"&&player.ba.best.gte(8))||(layer=="ss"&&player.ba.best.gte(8))) return;
if (layer=="ps") {
for (var i=1; i<=tmp.l.lbUnl; i++) {
var req = LIFE_BOOSTERS.req(i)
if (player.ps.points.gte(req)) player.l.boosters[i] = player.ps.points.sub(req).div(LIFE_BOOSTERS[i].reqMult).floor().add(1).add(tmp.l.lb[i])
}
}
if (layer=="ps"&&player.ps.best.gte(10)) return;
if (layer=="ps"&&player.ps.best.gte(5)) return;
let row = LAYER_ROW[layer]
if (!force && row>=3) completeHindrance()
@ -2496,8 +2500,8 @@ function buyUpg(layer, id) {
if (layer=="hb"&&id==13) player.hb.order = 0;
if (layer=="ss"&&id==15) player.ss.order = 0;
if (layer=="m"&&id==43) for (let i=1;i<=3;i++) player.m.spellTimes[i] *= LAYER_UPGS.m[43].currently().toNumber()
if (layer=="ps"&&id==13) player.hs.order = 0;
if (layer=="ps"&&id==24) player.l.order = 0;
if (layer=="ps"&&id==14) player.l.order = 0;
if (layer=="ps"&&id==24) player.hs.order = 0;
}
function getPointGen() {
@ -2508,7 +2512,7 @@ function getPointGen() {
if (player.b.unl) gain = gain.times(tmp.layerEffs.b)
if (player.g.unl) gain = gain.times(tmp.genPowEff)
if (player.t.unl) gain = gain.times(tmp.timeEff)
if (player.s.unl && tmp.s && tmp.s.sbEff) gain = gain.times(tmp.s.sbEff[1])
if (player.s.unl && tmp.s !== undefined) gain = gain.times(tmp.s.sbEff[1])
if (player.q.unl && tmp.quirkEff) gain = gain.times(tmp.quirkEff)
if (player.q.upgrades.includes(11)) gain = gain.times(LAYER_UPGS.q[11].currently())
@ -2525,7 +2529,7 @@ function addToBoosterBase() {
if (player.t.upgrades.includes(33)&&!(tmp.hcActive?tmp.hcActive[12]:true)) toAdd = toAdd.plus(40)
if (player.e.unl) toAdd = toAdd.plus(tmp.enhEff2)
if (player.e.upgrades.includes(11)&&!(tmp.hcActive?tmp.hcActive[12]:true)) toAdd = toAdd.plus(LAYER_UPGS.e[11].currently().b)
if (player.s.unl && tmp.s && tmp.s.sbEff) toAdd = toAdd.plus(tmp.s.sbEff[2])
if (player.s.unl && tmp.s !== undefined) toAdd = toAdd.plus(tmp.s.sbEff[2])
if (player.sb.upgrades.includes(21)) toAdd = toAdd.plus(LAYER_UPGS.sb[21].currently())
if (player.b.upgrades.includes(31)) toAdd = toAdd.times(LAYER_UPGS.b[31].currently())
@ -2556,7 +2560,7 @@ function addToGenBase() {
if (player.g.upgrades.includes(33)) toAdd = toAdd.plus(LAYER_UPGS.g[33].currently())
if (player.e.unl) toAdd = toAdd.plus(tmp.enhEff2)
if (player.e.upgrades.includes(11)&&!(tmp.hcActive?tmp.hcActive[12]:true)) toAdd = toAdd.plus(LAYER_UPGS.e[11].currently().g)
if (player.s.unl && tmp.s && tmp.s.sbEff) toAdd = toAdd.plus(tmp.s.sbEff[2])
if (player.s.unl && tmp.s !== undefined) toAdd = toAdd.plus(tmp.s.sbEff[2])
if (player.h.challs.includes(51)) toAdd = toAdd.times(H_CHALLS[51].currently())
if (player.q.upgrades.includes(53)) toAdd = toAdd.times(tmp.enhEff2)
@ -2744,7 +2748,7 @@ function maxExtTimeCapsules() {
function addToTimeBase() {
let toAdd = new Decimal(0)
if (player.m.upgrades.includes(44)) toAdd = toAdd.plus(LAYER_UPGS.m[44].currently())
if (player.l.unl && tmp.l !== undefined) toAdd = toAdd.times(tmp.l.lbEff[3])
if (player.l.unl && tmp.l !== undefined) toAdd = toAdd.add(3).times(tmp.l.lbEff[3]).sub(3)
return toAdd
}
@ -2918,7 +2922,6 @@ function getSpaceBuildingsUnl() {
}
function toggleAuto(layer, end="") {
if (player[layer]["auto"+end]===undefined) return;
player[layer]["auto"+end] = !player[layer]["auto"+end]
}
@ -3236,10 +3239,16 @@ function getHyperBoosterExp() {
return exp
}
function getExtraHyperBoosters() {
let x = new Decimal(0)
if (player.l.unl && tmp.l !== undefined) x = x.add(tmp.l.lbEff[1])
if (player.sp.upgrades.includes(51)) x = x.add(1)
return x
}
function getHyperBoosterPow() {
let pow = new Decimal(1)
if (player.hb.upgrades.includes(12)) pow = pow.times(LAYER_UPGS.hb[12].currently())
if (player.l.unl && tmp.l !== undefined) pow = pow.times(tmp.l.lbEff[1])
return pow;
}
@ -3319,7 +3328,7 @@ function getSpellPower(x) {
power = power.times(casted.max(1).log10().plus(1).log10().div(5).plus(1))
}
if (player.sp.upgrades.includes(23)) power = power.times(LAYER_UPGS.sp[23].currently())
if (player.ps.upgrades.includes(14)) power = power.times(LAYER_UPGS.ps[14].currently())
if (player.ps.upgrades.includes(13)) power = power.times(LAYER_UPGS.ps[13].currently())
if (power.gte(50)) power = power.log10().times(50/Math.log10(50)).min(power)
return power.max(1);
@ -3424,7 +3433,7 @@ function addToSGBase() {
function getLifePowerMult() {
let x = tmp.layerEffs.ps.mult.div(10)
if (player.sp.upgrades.includes(42)) x = x.times(2)
if (player.sp.upgrades.includes(42)) x = x.times(LAYER_UPGS.sp[42].currently())
return x
}
@ -3447,53 +3456,53 @@ function getLifePowerSoftcapExp() {
let LIFE_BOOSTERS = {
max: 5,
unl: function() {
if (player.ps.upgrades.includes(11)) return 5
if (player.ps.upgrades.includes(21)) return 5
return 4
},
eff: function() {
return player.l.power.add(1).log10().sqrt()
return player.l.power.add(1).log10()
},
req: function(x) {
return tmp.l.lb[x].times(this[x].reqMult).add(this[x].req)
},
1: {
req: new Decimal(1),
reqMult: new Decimal(5),
reqMult: new Decimal(1),
eff: function(str) {
return str.pow(0.1).div(10).add(1)
return str.pow(0.15).div(3)
},
effDesc: function(x) {
return "Hyper-Boosters are " + format(x.sub(1).times(100)) + "% stronger"
return "Add " + format(x) + " Hyper-Boosters to its effect"
}
},
2: {
req: new Decimal(1/0),
reqMult: new Decimal(5),
req: new Decimal(1.5),
reqMult: new Decimal(1.5),
eff: function(str) {
return new Decimal(1)
return Decimal.pow(1e15, str.pow(0.75))
},
effDesc: function(x) {
return "Gain " + format(x) + "x more Hexes"
}
},
3: {
req: new Decimal(1/0),
reqMult: new Decimal(5),
req: new Decimal(4.5),
reqMult: new Decimal(1.5),
eff: function(str) {
return new Decimal(1)
return str.div(2).max(1).log10().add(1)
},
effDesc: function(x) {
return "Multiply the base of Time Capsule effect by " + format(x) + "x"
}
},
4: {
req: new Decimal(1/0),
reqMult: new Decimal(5),
req: new Decimal(10),
reqMult: new Decimal(10),
eff: function(str) {
return new Decimal(1)
return str.div(20).add(1).sqrt()
},
effDesc: function(x) {
return "Reduce the requirement of Super-Boosters and Super-Generators by " + format(x) + "x"
return "Reduce the requirement of Super-Boosters, Super-Generators, and Hyper-Boosters by " + format(x) + "x"
}
},
5: {
@ -3569,12 +3578,17 @@ function gameLoop(diff) {
let capExp = getLifePowerSoftcapExp()
let power = player.l.power
power = power.pow(exp.pow(-1))
if (power.gt(1)) power = power.pow(exp.pow(-1))
if (power.gt(cap)) power = power.div(cap).pow(1/capExp).times(cap)
power = power.add(getLifePowerMult().times(diff))
if (power.gt(cap)) power = power.div(cap).pow(capExp).times(cap)
power = power.pow(exp)
if (power.gt(1)) power = power.pow(exp)
player.l.power = power
for (var i=1; i<=tmp.l.lbUnl; i++) {
var req = LIFE_BOOSTERS.req(i)
if (player.ps.points.gte(req)) player.l.boosters[i] = player.ps.points.sub(req).div(LIFE_BOOSTERS[i].reqMult).floor().add(1).add(tmp.l.lb[i])
}
}
if (player.b.auto&&player.t.best.gte(5)) doReset("b")
@ -3594,7 +3608,7 @@ function gameLoop(diff) {
player.m.toCast[i] = player.m.points
}
if (player.m.auto&&player.m.total.gte(50)) for (let i=1;i<=tmp.spellsUnl;i++) activateSpell(i)
if (player.ps.auto&&player.ps.best.gte(5)) doReset("ps")
if (player.ps.auto&&player.ps.best.gte(3)) doReset("ps")
if (player.hasNaN&&!NaNalert) {
alert("We have detected a corruption in your save. Please visit https://discord.gg/wwQfgPa for help.")