diff --git a/index.html b/index.html index 54ad2f0..d0cd29b 100644 --- a/index.html +++ b/index.html @@ -16,6 +16,11 @@


+

Beta v1.1 Alpha 13

+

Beta v1.1 Alpha 12






@@ -216,8 +223,10 @@ + +


@@ -298,6 +307,9 @@

+
+ 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

+



diff --git a/js/canvas.js b/js/canvas.js index b07df20..612326d 100644 --- a/js/canvas.js +++ b/js/canvas.js @@ -36,6 +36,14 @@ function drawTree() { if (layerUnl('s')) drawTreeBranch("g", "s") if (layerUnl('h')) drawTreeBranch("t", "h") if (layerUnl('q')) drawTreeBranch("e", "q") + if (layerUnl('hb')) { + drawTreeBranch("sb", "hb") + drawTreeBranch("t", "hb") + } + if (layerUnl('ss')) { + drawTreeBranch("e", "ss") + drawTreeBranch("s", "ss") + } needCanvasUpdate = false; } diff --git a/js/game.js b/js/game.js index 5de258a..259003d 100644 --- a/js/game.js +++ b/js/game.js @@ -97,10 +97,25 @@ function getStartPlayer() { time: new Decimal(0), upgrades: [], }, + hb: { + unl: false, + order: 0, + points: new Decimal(0), + best: new Decimal(0), + upgrades: [], + }, + ss: { + unl: false, + order: 0, + points: new Decimal(0), + best: new Decimal(0), + subspace: new Decimal(0), + upgrades: [], + }, } } -const LAYERS = ["p", "b", "g", "e", "t", "s", "sb", "h", "q"] +const LAYERS = ["p", "b", "g", "e", "t", "s", "sb", "h", "q", "hb", "ss"] const LAYER_REQS = { p: new Decimal(10), @@ -112,6 +127,8 @@ const LAYER_REQS = { sb: new Decimal(180), h: new Decimal(1e220), q: new Decimal("1e512"), + hb: new Decimal(12), + ss: new Decimal(36), } const LAYER_RES = { @@ -124,9 +141,11 @@ const LAYER_RES = { sb: "super-boosters", h: "hindrance spirit", q: "quirks", + hb: "hyper-boosters", + ss: "subspace energy", } -const LAYER_RES_CEIL = ["sb"] +const LAYER_RES_CEIL = ["sb", "hb", "ss"] const LAYER_TYPE = { p: "normal", @@ -138,6 +157,8 @@ const LAYER_TYPE = { sb: "static", h: "normal", q: "normal", + hb: "static", + ss: "static", } const LAYER_EXP = { @@ -150,6 +171,8 @@ const LAYER_EXP = { sb: new Decimal(1.25), h: new Decimal(0.015), q: new Decimal(0.0075), + hb: new Decimal(1.1), + ss: new Decimal(1.1), } const LAYER_BASE = { @@ -158,6 +181,8 @@ const LAYER_BASE = { t: new Decimal(1e15), s: new Decimal(1e15), sb: new Decimal(1.05), + hb: new Decimal(1.05), + ss: new Decimal(1.15), } const LAYER_ROW = { @@ -170,6 +195,8 @@ const LAYER_ROW = { sb: 2, h: 3, q: 3, + hb: 3, + ss: 3, future_layer: 4, } @@ -177,7 +204,7 @@ const ROW_LAYERS = [ ["p"], ["b","g"], ["e","t","s","sb"], - ["h","q"], + ["h","q","hb","ss"], ["future_layer"], ] @@ -197,6 +224,8 @@ const LAYER_EFFS = { if (ret.gte(100)) ret = ret.log10().times(50).min(ret); return ret; }, + hb: function() { return Decimal.pow(1.6, player.hb.points) }, + ss: function() { return player.ss.points.pow(2.5) }, } const LAYER_UPGS = { @@ -796,6 +825,14 @@ const LAYER_UPGS = { effDisp: function(x) { return format(x)+"x" }, }, }, + hb: { + rows: 0, + cols: 0, + }, + ss: { + rows: 0, + cols: 0, + }, } const TAB_REQS = { @@ -813,6 +850,8 @@ const TAB_REQS = { sb: function() { return (player.sb.unl||player.b.points.gte(tmp.layerReqs.sb))&&layerUnl('sb') }, h: function() { return (player.h.unl||player.t.energy.gte(tmp.layerReqs.h))&&layerUnl('h') }, q: function() { return (player.q.unl||player.g.power.gte(tmp.layerReqs.q))&&layerUnl('q') }, + hb: function() { return (player.hb.unl||player.sb.points.gte(tmp.layerReqs.hb))&&layerUnl('hb') }, + ss: function() { return (player.ss.unl||player.s.points.gte(tmp.layerReqs.ss))&&layerUnl('ss') }, } const LAYER_AMT_NAMES = { @@ -825,6 +864,8 @@ const LAYER_AMT_NAMES = { sb: "boosters", h: "time energy", q: "generator power", + hb: "super-boosters", + ss: "space energy", } function getLayerAmt(layer) { @@ -839,6 +880,12 @@ function getLayerAmt(layer) { case "q": return player.g.power; break; + case "hb": + return player.sb.points; + break; + case "ss": + return player.s.points; + break; } return amt } @@ -862,6 +909,12 @@ function getLayerEffDesc(layer) { case "h": return "which are providing "+format(eff)+" free extra Time Capsules (boosted by your points)" break; + case "hb": + return "which are multiplying the Super-Booster effect base by "+format(eff) + break; + case "ss": + return "which are generating "+format(eff)+" Subspace/sec" + break; } } @@ -952,6 +1005,8 @@ function checkForVars() { if (player.h.time === undefined) player.h.time = 0 if (player.q === undefined) player.q = getStartPlayer().q if (player.msDisplay === undefined) player.msDisplay = "always" + if (player.hb === undefined) player.hb = getStartPlayer().hb + if (player.ss === undefined) player.ss = getStartPlayer().ss } function convertToDecimal() { @@ -983,6 +1038,11 @@ function convertToDecimal() { player.q.layers = new Decimal(player.q.layers) player.q.energy = new Decimal(player.q.energy) player.q.time = new Decimal(player.q.time) + player.hb.points = new Decimal(player.hb.points) + player.hb.best = new Decimal(player.hb.best) + player.ss.points = new Decimal(player.ss.points) + player.ss.best = new Decimal(player.ss.best) + player.ss.subspace = new Decimal(player.ss.subspace) } function toggleOpt(name) { @@ -1067,6 +1127,12 @@ function getLayerReq(layer) { case "s": req = req.times(Decimal.pow("1e200", Decimal.pow(player.s.order, 2))) break; + case "hb": + if (player.hb.order>0) req = new Decimal(1/0) + break; + case "ss": + if (player.ss.order>0) req = new Decimal(1/0) + break; } return req } @@ -1188,6 +1254,12 @@ function layerUnl(layer) { case "q": return player.e.unl&&player.sb.unl break; + case "hb": + return player.sb.unl&&player.h.unl&&player.q.unl + break; + case "ss": + return player.s.unl&&player.h.unl&&player.q.unl + break; } } @@ -1274,6 +1346,8 @@ function rowReset(row, layer) { case 4: player.h = start.h player.q = start.q + player.hb = start.hb + player.ss = start.ss break; } } @@ -1536,6 +1610,7 @@ function getSpace() { let baseSpace = player.s.best.pow(1.1).times(3).floor() if (player.s.upgrades.includes(13)&&!(tmp.hcActive?tmp.hcActive[12]:true)) baseSpace = baseSpace.plus(2); if (player.s.upgrades.includes(24)&&!(tmp.hcActive?tmp.hcActive[12]:true)) baseSpace = baseSpace.plus(3); + if (player.ss.unl) baseSpace = baseSpace.plus(tmp.ssEff1) return baseSpace.sub(player.s.spent).max(0) } @@ -1545,11 +1620,17 @@ function getSpaceBuildingCostMod() { return mod; } +function getSpaceBuildingCostMult() { + let mult = new Decimal(1) + if (player.ss.unl) mult = mult.div(tmp.ssEff2) + return mult +} + function getSpaceBuildingCost(x) { let inputVal = new Decimal([1e3,1e10,1e25,1e48,1e100][x-1]) let bought = player.s.buildings[x] if (bought.gte(100)) bought = bought.pow(2).div(100) - let cost = Decimal.pow(inputVal, bought.times(getSpaceBuildingCostMod()).pow(1.35)).times(inputVal).times((bought.gt(0)||x>1)?1:0) + let cost = Decimal.pow(inputVal, bought.times(getSpaceBuildingCostMod()).pow(1.35)).times(inputVal).times((bought.gt(0)||x>1)?1:0).times(getSpaceBuildingCostMult()) return cost } @@ -1562,6 +1643,7 @@ function getSpaceBuildingPow() { if (player.s.upgrades.includes(22)&&!(tmp.hcActive?tmp.hcActive[12]:true)) pow = pow.times(LAYER_UPGS.s[22].currently()) if (player.s.upgrades.includes(23)&&!(tmp.hcActive?tmp.hcActive[12]:true)) pow = pow.times(LAYER_UPGS.s[23].currently()) if (player.q.upgrades.includes(41)) pow = pow.times(1.4) + if (player.ss.unl) pow = pow.times(tmp.ssEff3) return pow } @@ -1673,6 +1755,7 @@ function addToSBBase() { if (player.h.challs.includes(22)) toAdd = toAdd.plus(0.25) if (player.h.challs.includes(41)) toAdd = toAdd.plus(0.25) if (player.sb.upgrades.includes(22)) toAdd = toAdd.plus(LAYER_UPGS.sb[22].currently()) + if (player.hb.unl) toAdd = toAdd.times(tmp.layerEffs.hb) return toAdd } @@ -1818,6 +1901,24 @@ function milestoneShown(complete, auto=false) { return false; } +function getSubspaceEff1() { + if (!player.ss.unl) return new Decimal(0) + let eff = player.ss.subspace.times(player.ss.points).plus(1).log10().times(100) + return eff.floor(); +} + +function getSubspaceEff2() { + if (!player.ss.unl) return new Decimal(1) + let eff = player.ss.subspace.plus(1).pow(750) + return eff; +} + +function getSubspaceEff3() { + if (!player.ss.unl) return new Decimal(1) + let eff = player.ss.subspace.plus(1).log10().plus(1).log10().div(2.5).plus(1) + return eff; +} + function gameLoop(diff) { if (isNaN(diff.toNumber())) diff = new Decimal(0); player.h.time += diff.toNumber() @@ -1840,6 +1941,7 @@ function gameLoop(diff) { if (exp.gte(0)) player.q.energy = player.q.energy.plus(player.q.time.pow(exp).times(mult).times(diff)).max(0) } if (player.q.best.gte(15)) player.e.points = player.e.points.plus(tmp.resetGain.e.times(diff)).max(0) + if (player.ss.unl) player.ss.subspace = player.ss.subspace.plus(tmp.layerEffs.ss.times(diff)).max(0) if (player.b.auto&&player.t.best.gte(5)) doReset("b") if (player.g.auto&&player.s.best.gte(5)) doReset("g") @@ -1881,12 +1983,19 @@ var interval = setInterval(function() { document.onkeydown = function(e) { if (player===undefined) return; let shiftDown = e.shiftKey + let ctrlDown = e.ctrlKey let key = e.key - if (!LAYERS.includes(key)) { + if ((!LAYERS.includes(key))||ctrlDown||shiftDown) { switch(key) { + case "b": + if (ctrlDown && player.hb.unl) doReset("hb") + break; case "B": if (player.sb.unl) doReset("sb") break; + case "S": + if (player.ss.unl) doReset("ss") + break; } } else if (player[key].unl) doReset(key) } \ No newline at end of file diff --git a/js/temp.js b/js/temp.js index 8fb900c..cb250d6 100644 --- a/js/temp.js +++ b/js/temp.js @@ -43,4 +43,8 @@ function updateTemp() { tmp.hcActive[id] = HCActive(id) } } + + tmp.ssEff1 = getSubspaceEff1() + tmp.ssEff2 = getSubspaceEff2() + tmp.ssEff3 = getSubspaceEff3() } \ No newline at end of file diff --git a/style.css b/style.css index c9e36c9..c2d592e 100644 --- a/style.css +++ b/style.css @@ -215,6 +215,26 @@ h1, h2 { text-shadow: 0px 0px 10px #ff2bf2; } +.hb { + background-color: #513d94; + color: black; +} + +.hb_txt { + color: #513d94; + text-shadow: 0px 0px 10px #513d94; +} + +.ss { + background-color: white; + color: black; +} + +.ss_txt { + color: white; + text-shadow: 0px 0px 10px white; +} + #optionWheel { position: absolute; top: 0px;