267 lines
12 KiB
JavaScript
267 lines
12 KiB
JavaScript
|
addLayer("a", {
|
||
|
name: "api",
|
||
|
symbol: "A",
|
||
|
color: apiColor,
|
||
|
branches: [ 'r' ],
|
||
|
row: 3,
|
||
|
position: 1,
|
||
|
resource: "endpoints",
|
||
|
baseResource: "refactors",
|
||
|
infoboxes: {
|
||
|
lore: {
|
||
|
title: "api",
|
||
|
body: `All this <span style="color: ${refactoringColor}">refactoring</span> has given you a new sense of perspective on how all these different game engines tend to work, and you have an idea for a new <span style="color: ${apiColor}">Application Programming Interface (API)</span> that could simplify everything enormously, making almost everything easier to implement. The more <span style="color: ${refactoringColor}">refactoring experience</span> you have, the more <span style="color: ${apiColor}">API end points</span> you can use to implement your design.<br/><br/>` +
|
||
|
`Designing your <span style="color: ${apiColor}">API</span> means spending your <span style="color: ${apiColor}">endpoints</span> on adding or improving the various bonuses available to you.`
|
||
|
}
|
||
|
},
|
||
|
resetDescription: "Design ",
|
||
|
startData() { return {
|
||
|
unlocked: false,
|
||
|
points: new Decimal(0),
|
||
|
unused: new Decimal(0)
|
||
|
}},
|
||
|
layerShown() { return player[this.layer].unlocked || player.r.total.gte(8) },
|
||
|
type: "static",
|
||
|
requires: new Decimal(10),
|
||
|
base: new Decimal(1.2),
|
||
|
baseAmount() { return player.r.points },
|
||
|
exponent: 1,
|
||
|
gainMult() {
|
||
|
mult = new Decimal(1)
|
||
|
return mult
|
||
|
},
|
||
|
gainExp() {
|
||
|
return new Decimal(1)
|
||
|
},
|
||
|
roundUpCost: true,
|
||
|
onPrestige(gain) {
|
||
|
player[this.layer].unused = player[this.layer].unused.add(gain)
|
||
|
},
|
||
|
tooltip() { return `${formatWhole(player.a.unused)} endpoints` },
|
||
|
hotkeys: [
|
||
|
{
|
||
|
key: "a",
|
||
|
description: "Press A to design API endpoints",
|
||
|
onPress() { if (canReset(this.layer)) doReset(this.layer) }
|
||
|
}
|
||
|
],
|
||
|
tabFormat: [
|
||
|
["infobox", "lore"],
|
||
|
["display-text", () => inChallenge("d", 12) ? `<h2 style="color: red;">Disabled during ${layers.d.challenges[player.d.activeChallenge].name} degree plan</h2>` : ""],
|
||
|
["display-text", () => `You have <h2 style="color: ${tmp.a.color}; text-shadow: ${tmp.a.color} 0px 0px 10px">${formatWhole(player.a.unused)}</h2> endpoints`],
|
||
|
["display-text", () => `You have earned a total of ${player.a.points} endpoints.`],
|
||
|
"blank",
|
||
|
"prestige-button",
|
||
|
"blank",
|
||
|
"buyables",
|
||
|
"blank",
|
||
|
"milestones"
|
||
|
],
|
||
|
buyables: {
|
||
|
rows: 2,
|
||
|
cols: 3,
|
||
|
respec() {
|
||
|
player.a.unused = player.a.points
|
||
|
setBuyableAmount(this.layer, 11, 0)
|
||
|
setBuyableAmount(this.layer, 12, 0)
|
||
|
setBuyableAmount(this.layer, 13, 0)
|
||
|
setBuyableAmount(this.layer, 21, 0)
|
||
|
setBuyableAmount(this.layer, 22, 0)
|
||
|
setBuyableAmount(this.layer, 23, 0)
|
||
|
doReset("a", true)
|
||
|
},
|
||
|
respecText: "Re-design API",
|
||
|
11: {
|
||
|
title: "/refactoring/bonus",
|
||
|
display() {
|
||
|
const cost = this.cost()
|
||
|
return `Each endpoint squares refactoring bonuses.<br/>Currently: ^${format(this.effect())}<br/>Requires ${formatWhole(cost.endpoints)} endpoints and ${format(cost.updates)} updates.`
|
||
|
},
|
||
|
cost(x) {
|
||
|
const amt = x || getBuyableAmount(this.layer, this.id)
|
||
|
return {
|
||
|
endpoints: new Decimal(1).add(amt),
|
||
|
updates: new Decimal(7500).mul(new Decimal(1).add(amt))
|
||
|
}
|
||
|
},
|
||
|
canAfford() {
|
||
|
const cost = this.cost()
|
||
|
return player[this.layer].unused.gte(cost.endpoints) && player.u.points.gte(cost.updates)
|
||
|
},
|
||
|
buy() {
|
||
|
const cost = this.cost()
|
||
|
player[this.layer].unused = player[this.layer].unused.sub(cost.endpoints)
|
||
|
player.u.points = player.u.points.sub(cost.updates)
|
||
|
setBuyableAmount(this.layer, this.id, new Decimal(1).add(getBuyableAmount(this.layer, this.id)))
|
||
|
},
|
||
|
effect() {
|
||
|
return inChallenge("d", 12) ? new Decimal(1) : new Decimal(2).pow(Decimal.mul(getBuyableAmount(this.layer, this.id), buyableEffect("a", 23)))
|
||
|
}
|
||
|
},
|
||
|
12: {
|
||
|
title: "/motivation/boost",
|
||
|
display() {
|
||
|
const cost = this.cost()
|
||
|
return `These endpoints delay the productivity slowdown by 10 raised to the power of (5 raised to the power of endpoints).<br/>Currently: /${format(this.effect())}<br/>Requires ${formatWhole(cost.endpoints)} endpoints and ${format(cost.updates)} updates.`
|
||
|
},
|
||
|
cost(x) {
|
||
|
const amt = x || getBuyableAmount(this.layer, this.id)
|
||
|
return {
|
||
|
endpoints: new Decimal(1).add(amt),
|
||
|
updates: new Decimal(10000).mul(new Decimal(2).pow(amt))
|
||
|
}
|
||
|
},
|
||
|
canAfford() {
|
||
|
const cost = this.cost()
|
||
|
return player[this.layer].unused.gte(cost.endpoints) && player.u.points.gte(cost.updates)
|
||
|
},
|
||
|
buy() {
|
||
|
const cost = this.cost()
|
||
|
player[this.layer].unused = player[this.layer].unused.sub(cost.endpoints)
|
||
|
player.u.points = player.u.points.sub(cost.updates)
|
||
|
setBuyableAmount(this.layer, this.id, new Decimal(1).add(getBuyableAmount(this.layer, this.id)))
|
||
|
},
|
||
|
effect() {
|
||
|
return inChallenge("d", 12) ? new Decimal(1) : new Decimal(10).pow(new Decimal(5).pow(Decimal.mul(getBuyableAmount(this.layer, this.id), buyableEffect("a", 23))).sub(1))
|
||
|
}
|
||
|
},
|
||
|
13: {
|
||
|
title: "/updates",
|
||
|
display() {
|
||
|
const cost = this.cost()
|
||
|
return `Each endpoint quadruples update gain.<br/>Currently: x${format(this.effect())}<br/>Requires ${formatWhole(cost.endpoints)} endpoints and ${format(cost.updates)} updates.`
|
||
|
},
|
||
|
cost(x) {
|
||
|
const amt = x || getBuyableAmount(this.layer, this.id)
|
||
|
return {
|
||
|
endpoints: new Decimal(1).add(amt),
|
||
|
updates: new Decimal(2).pow(amt).mul(50000)
|
||
|
}
|
||
|
},
|
||
|
canAfford() {
|
||
|
const cost = this.cost()
|
||
|
return player[this.layer].unused.gte(cost.endpoints) && player.u.points.gte(cost.updates)
|
||
|
},
|
||
|
buy() {
|
||
|
const cost = this.cost()
|
||
|
player[this.layer].unused = player[this.layer].unused.sub(cost.endpoints)
|
||
|
player.u.points = player.u.points.sub(cost.updates)
|
||
|
setBuyableAmount(this.layer, this.id, new Decimal(1).add(getBuyableAmount(this.layer, this.id)))
|
||
|
},
|
||
|
effect() {
|
||
|
return inChallenge("d", 12) ? new Decimal(1) : new Decimal(4).pow(Decimal.mul(getBuyableAmount(this.layer, this.id), buyableEffect("a", 23)))
|
||
|
},
|
||
|
unlocked() { return challengeCompletions("d", 11) > 0 }
|
||
|
},
|
||
|
21: {
|
||
|
title: "/experience",
|
||
|
display() {
|
||
|
const cost = this.cost()
|
||
|
return `Each endpoint multiplies experience gain by 50x.<br/>Currently: x${format(this.effect())}<br/>Requires ${formatWhole(cost.endpoints)} endpoints and ${format(cost.updates)} updates.`
|
||
|
},
|
||
|
cost(x) {
|
||
|
const amt = x || getBuyableAmount(this.layer, this.id)
|
||
|
return {
|
||
|
endpoints: new Decimal(1).add(amt),
|
||
|
updates: new Decimal(1000).mul(new Decimal(5).pow(new Decimal(1).add(amt)))
|
||
|
}
|
||
|
},
|
||
|
canAfford() {
|
||
|
const cost = this.cost()
|
||
|
return player[this.layer].unused.gte(cost.endpoints) && player.u.points.gte(cost.updates)
|
||
|
},
|
||
|
buy() {
|
||
|
const cost = this.cost()
|
||
|
player[this.layer].unused = player[this.layer].unused.sub(cost.endpoints)
|
||
|
player.u.points = player.u.points.sub(cost.updates)
|
||
|
setBuyableAmount(this.layer, this.id, new Decimal(1).add(getBuyableAmount(this.layer, this.id)))
|
||
|
},
|
||
|
effect() {
|
||
|
return inChallenge("d", 12) ? new Decimal(1) : new Decimal(50).pow(Decimal.mul(getBuyableAmount(this.layer, this.id), buyableEffect("a", 23)))
|
||
|
}
|
||
|
},
|
||
|
22: {
|
||
|
title: "/refactoring/prod",
|
||
|
display() {
|
||
|
const cost = this.cost()
|
||
|
return `Each endpoint raises the extra slowdown effects of refactoring to the ^.2 power.<br/>Currently: ^${format(this.effect())}<br/>Requires ${formatWhole(cost.endpoints)} endpoints and ${format(cost.updates)} updates.`
|
||
|
},
|
||
|
cost(x) {
|
||
|
const amt = x || getBuyableAmount(this.layer, this.id)
|
||
|
return {
|
||
|
endpoints: new Decimal(1).add(amt),
|
||
|
updates: new Decimal(500).mul(new Decimal(5).pow(new Decimal(2).add(amt)))
|
||
|
}
|
||
|
},
|
||
|
canAfford() {
|
||
|
const cost = this.cost()
|
||
|
return player[this.layer].unused.gte(cost.endpoints) && player.u.points.gte(cost.updates)
|
||
|
},
|
||
|
buy() {
|
||
|
const cost = this.cost()
|
||
|
player[this.layer].unused = player[this.layer].unused.sub(cost.endpoints)
|
||
|
player.u.points = player.u.points.sub(cost.updates)
|
||
|
setBuyableAmount(this.layer, this.id, new Decimal(1).add(getBuyableAmount(this.layer, this.id)))
|
||
|
},
|
||
|
effect() {
|
||
|
return inChallenge("d", 12) ? new Decimal(1) : new Decimal(.2).pow(Decimal.mul(getBuyableAmount(this.layer, this.id), buyableEffect("a", 23)))
|
||
|
}
|
||
|
},
|
||
|
23: {
|
||
|
title: "/api/v2",
|
||
|
display() {
|
||
|
const cost = this.cost()
|
||
|
return `Each endpoint multiplies all other endpoint effects by 50%.<br/>Currently: x${format(this.effect())}<br/>Requires ${formatWhole(cost.endpoints)} endpoints and ${format(cost.updates)} updates.`
|
||
|
},
|
||
|
cost(x) {
|
||
|
const amt = x || getBuyableAmount(this.layer, this.id)
|
||
|
return {
|
||
|
endpoints: new Decimal(1).add(amt),
|
||
|
updates: new Decimal(2).pow(amt).mul(75000)
|
||
|
}
|
||
|
},
|
||
|
canAfford() {
|
||
|
const cost = this.cost()
|
||
|
return player[this.layer].unused.gte(cost.endpoints) && player.u.points.gte(cost.updates)
|
||
|
},
|
||
|
buy() {
|
||
|
const cost = this.cost()
|
||
|
player[this.layer].unused = player[this.layer].unused.sub(cost.endpoints)
|
||
|
player.u.points = player.u.points.sub(cost.updates)
|
||
|
setBuyableAmount(this.layer, this.id, new Decimal(1).add(getBuyableAmount(this.layer, this.id)))
|
||
|
},
|
||
|
effect() {
|
||
|
return inChallenge("d", 12) ? new Decimal(1) : new Decimal(1.5).pow(getBuyableAmount(this.layer, this.id))
|
||
|
},
|
||
|
unlocked() { return challengeCompletions("d", 11) > 0 }
|
||
|
}
|
||
|
},
|
||
|
milestones: {
|
||
|
0: {
|
||
|
requirementDescription: "1 total API endpoints",
|
||
|
effectDescription: "Retain the first, second, fourth, and eighth refactors milestones",
|
||
|
done() { return player[this.layer].points.gte(1) }
|
||
|
},
|
||
|
1: {
|
||
|
requirementDescription: "2 total API endpoints",
|
||
|
effectDescription: "Buying refactors will buy as many as you can afford",
|
||
|
done() { return player[this.layer].points.gte(2) }
|
||
|
},
|
||
|
2: {
|
||
|
requirementDescription: "3 total API endpoints",
|
||
|
effectDescription: "Retain all refactors milestones",
|
||
|
done() { return player[this.layer].points.gte(3) }
|
||
|
},
|
||
|
3: {
|
||
|
requirementDescription: "4 total API endpoints",
|
||
|
effectDescription: "Unlock a new Degree program",
|
||
|
done() { return player[this.layer].points.gte(4) }
|
||
|
},
|
||
|
4: {
|
||
|
requirementDescription: "5 total API endpoints",
|
||
|
effectDescription: "Row 4 resets don't reset refactorings",
|
||
|
done() { return player[this.layer].points.gte(5) }
|
||
|
}
|
||
|
}
|
||
|
})
|