253 lines
11 KiB
JavaScript
253 lines
11 KiB
JavaScript
addLayer("c", {
|
|
name: "cash",
|
|
symbol: "C",
|
|
color: cashColor,
|
|
branches: [ 'u' ],
|
|
row: 1,
|
|
position: 1,
|
|
resource: "cash",
|
|
baseResource: "updates",
|
|
infoboxes: {
|
|
lore: {
|
|
title: "cash",
|
|
body: `<span style="color: ${cashColor}">Selling</span> your game to a publisher means needing to start over on a new one, but you can use the <span style="color: ${cashColor}">money</span> to finally upgrade your PC! You're confident buying new hardware and such is the best way to work more efficiently.`
|
|
}
|
|
},
|
|
resetDescription: "Sell game to publisher for ",
|
|
startData() { return {
|
|
unlocked: false,
|
|
total: new Decimal(0),
|
|
points: new Decimal(0)
|
|
}},
|
|
layerShown() { return player[this.layer].unlocked || hasUpgrade("e", 12) },
|
|
type: "normal",
|
|
requires: new Decimal(10),
|
|
baseAmount() { return player.u.points },
|
|
exponent: 1.5,
|
|
gainMult() {
|
|
mult = new Decimal(100).mul(buyableEffect("f", 12))
|
|
if (hasUpgrade("f", 12) && hasUpgrade("g", 12)) mult = mult.mul(upgradeEffect("f", 12))
|
|
if (hasUpgrade("l", 11)) mult = mult.mul(upgradeEffect("l", 11))
|
|
return mult
|
|
},
|
|
gainExp() {
|
|
return new Decimal(1)
|
|
},
|
|
roundUpCost: true,
|
|
onPrestige(gain) {
|
|
if (hasMilestone("d", 1)) addPoints("e", getResetGain("e"))
|
|
},
|
|
doReset(resettingLayer) {
|
|
if (['s', 'f', 't', 'd', 'l', 'g'].includes(resettingLayer)) {
|
|
const shouldKeepUpgrades = {
|
|
11: hasMilestone("f", 0),
|
|
12: hasMilestone("f", 1),
|
|
13: hasMilestone("f", 2),
|
|
14: hasMilestone("f", 3),
|
|
21: hasMilestone("f", 4),
|
|
22: hasMilestone("f", 5),
|
|
23: hasMilestone("f", 6),
|
|
24: hasMilestone("f", 7),
|
|
111: hasMilestone("s", 3),
|
|
112: hasMilestone("s", 3),
|
|
113: hasMilestone("s", 3),
|
|
114: hasMilestone("s", 3),
|
|
121: hasMilestone("s", 3),
|
|
122: hasMilestone("s", 3),
|
|
123: hasMilestone("s", 3),
|
|
124: hasMilestone("s", 3)
|
|
}
|
|
const upgradesToKeep = []
|
|
for (let upgrade of player[this.layer].upgrades) {
|
|
if (shouldKeepUpgrades[upgrade]) {
|
|
upgradesToKeep.push(upgrade)
|
|
}
|
|
}
|
|
layerDataReset(this.layer)
|
|
player[this.layer].upgrades = upgradesToKeep
|
|
}
|
|
},
|
|
resetsNothing() { return hasMilestone("s", 5) },
|
|
hotkeys: [
|
|
{
|
|
key: "c",
|
|
description: "Press C to sell your game to a publisher",
|
|
onPress() { if (canReset(this.layer)) doReset(this.layer) }
|
|
}
|
|
],
|
|
tabFormat: [
|
|
["infobox", "lore"],
|
|
"main-display",
|
|
["display-text", function() {
|
|
return hasUpgrade("e", 13) && tmp.c.resetGain.times ? `(${format(tmp.c.resetGain.times(layers.c.revenue(1)))}/sec)` : ""
|
|
},
|
|
{ "marginTop": "-1em", "display": "block" }
|
|
],
|
|
"blank",
|
|
"prestige-button",
|
|
"blank",
|
|
() => hasUpgrade("e", 13) ? ["display-text", "Equipment", { "font-size": "32px" }] : [],
|
|
() => hasUpgrade("e", 13) ? "blank" : [],
|
|
"buyables",
|
|
"blank",
|
|
"upgrades",
|
|
() => hasUpgrade("e", 13) ? ["display-text", "Revenue", { "font-size": "32px" }] : [],
|
|
() => hasUpgrade("e", 13) ? "blank" : [],
|
|
() => hasUpgrade("e", 13) ? ["row", [["upgrade", 111], ["upgrade", 112], ["upgrade", 113], ["upgrade", 114]]] : [],
|
|
() => hasUpgrade("g", 11) && !inChallenge("d", 11) ? ["row", [["upgrade", 121], ["upgrade", 122], ["upgrade", 123], ["upgrade", 124]]] : []
|
|
],
|
|
update(diff) {
|
|
generatePoints("c", this.revenue(diff))
|
|
},
|
|
shouldNotify() {
|
|
return canAffordPurchase("c", layers[this.layer].buyables[11], layers[this.layer].buyables[11].cost())
|
|
},
|
|
upgrades: {
|
|
rows: 2,
|
|
cols: 4,
|
|
11: {
|
|
title: "Buy premium text editor",
|
|
description: "Purchase a text editor, allowing you to double your productivity",
|
|
cost: new Decimal(80)
|
|
},
|
|
12: {
|
|
title: "Buy premium git client",
|
|
description: "Purchase a git client, allowing you to double your productivity",
|
|
cost: new Decimal(100)
|
|
},
|
|
13: {
|
|
title: "Buy ambient sound machine",
|
|
description: "Purchase an overpriced machine to do a website's job, allowing you to double your productivity",
|
|
cost: new Decimal(800)
|
|
},
|
|
14: {
|
|
title: "Buy Keurig",
|
|
description: "Purchase an overhyped coffee machine, allowing you to double your productivity",
|
|
cost: new Decimal(1200)
|
|
},
|
|
21: {
|
|
title: "Buy incense burner",
|
|
description: "Purchase an overpriced incense burner, allowing you to double your productivity",
|
|
cost: new Decimal(2500)
|
|
},
|
|
22: {
|
|
title: "Buy mechanical keyboard",
|
|
description: "Purchase an overpriced keyboard, allowing you to double your productivity at the expense of your coworkers'",
|
|
cost: new Decimal(4000)
|
|
},
|
|
23: {
|
|
title: "Buy massaging chair",
|
|
description: "Purchase an overpriced chair, allowing you to double your productivity",
|
|
cost: new Decimal(10000)
|
|
},
|
|
24: {
|
|
title: "Buy sensory deprivation egg",
|
|
description: "Purchase an isolation tank, allowing you to double your productivity",
|
|
cost: new Decimal(100000)
|
|
},
|
|
// 1XX represents revenue upgrades
|
|
// since they appear in a different tab they can have whatever id I want to give them,
|
|
// because I'll be manually including them in a grid. Making them 1XX means they won't show up
|
|
// in the normal grid of upgrades unless it gets 11 rows
|
|
111: {
|
|
title: "Add a banner ad",
|
|
description: "Yum, a delicious $1 cpm, which equates to automatically earning .1% of cash gain per second",
|
|
currencyDisplayName: "updates",
|
|
currencyInternalName: "points",
|
|
currencyLocation() { return player.u },
|
|
cost: new Decimal(10),
|
|
unlocked() { return hasUpgrade("e", 13) }
|
|
},
|
|
112: {
|
|
title: "Add an interactive banner ad",
|
|
description: "By adding interactivity to the banner ad you can earn an additional .2% of cash gain per second",
|
|
currencyDisplayName: "updates",
|
|
currencyInternalName: "points",
|
|
currencyLocation() { return player.u },
|
|
cost: new Decimal(20),
|
|
unlocked() { return hasUpgrade("c", 111) }
|
|
},
|
|
113: {
|
|
title: "Add pre-game ad",
|
|
description: "Making players watch an ad before playing your game puts another .2% of cash gain per second directly in your pocket",
|
|
currencyDisplayName: "updates",
|
|
currencyInternalName: "points",
|
|
currencyLocation() { return player.u },
|
|
cost: new Decimal(30),
|
|
unlocked() { return hasUpgrade("c", 112) }
|
|
},
|
|
114: {
|
|
title: "Add an interstitial ad",
|
|
description: "Placing ads between levels further engages the players and compensates you accordingly, earning an additional .5% of cash gain per second",
|
|
currencyDisplayName: "updates",
|
|
currencyInternalName: "points",
|
|
currencyLocation() { return player.u },
|
|
cost: new Decimal(40),
|
|
unlocked() { return hasUpgrade("c", 113) }
|
|
},
|
|
121: {
|
|
title: "Add cosmetic microtransactions",
|
|
description: "Cosmetic microtransactions allow players to support you ethically, earning an additional 9% of cash gain per second",
|
|
currencyDisplayName: "updates",
|
|
currencyInternalName: "points",
|
|
currencyLocation() { return player.u },
|
|
cost: new Decimal(10000),
|
|
unlocked() { return hasUpgrade("g", 11) && !inChallenge("d", 11) }
|
|
},
|
|
122: {
|
|
title: "Add cosmetic loot crates",
|
|
description: "Adding some randomness to the cosmetics can encourage players to spend even more, earning an additional 90% of cash gain per second",
|
|
currencyDisplayName: "updates",
|
|
currencyInternalName: "points",
|
|
currencyLocation() { return player.u },
|
|
cost: new Decimal(12500),
|
|
unlocked() { return hasUpgrade("g", 11) && !inChallenge("d", 11) }
|
|
},
|
|
123: {
|
|
title: "Add loot crate weapons",
|
|
description: "Adding just a little bit of gameplay advantages to paying customers makes sense, and earns an additional 900% of cash gain per second",
|
|
currencyDisplayName: "updates",
|
|
currencyInternalName: "points",
|
|
currencyLocation() { return player.u },
|
|
cost: new Decimal(15000),
|
|
unlocked() { return hasUpgrade("g", 11) && !inChallenge("d", 11) }
|
|
},
|
|
124: {
|
|
title: "Add gacha mechanics",
|
|
description: "Completely disregarding the consumer's wellbeing allows you to earn an additional 9000% of cash gain per second",
|
|
currencyDisplayName: "updates",
|
|
currencyInternalName: "points",
|
|
currencyLocation() { return player.u },
|
|
cost: new Decimal(20000),
|
|
unlocked() { return hasUpgrade("g", 11) && !inChallenge("d", 11) }
|
|
}
|
|
},
|
|
buyables: {
|
|
rows: 1,
|
|
cols: 1,
|
|
11: {
|
|
title: "Upgrade hardware",
|
|
cost() { return new Decimal(100).mul(new Decimal(2).pow(getBuyableAmount("c", 11))).round() },
|
|
display() { return `Each upgrade additively raises your base productivity to the +.25 power.<br/><br/>Currently: ^${format(this.effect())}<br/><br/>Next upgrade cost: ${format(this.cost())} cash` },
|
|
canAfford() { return player[this.layer].points.gte(this.cost()) },
|
|
effect() { return new Decimal(0.25).add(buyableEffect("s", 22)).mul(getBuyableAmount("c", 11)).add(1) },
|
|
buy() {
|
|
if (!hasUpgrade("l", 11) || inChallenge("d", 21))
|
|
player[this.layer].points = player[this.layer].points.sub(this.cost())
|
|
setBuyableAmount("c", 11, getBuyableAmount("c", 11).add(1))
|
|
}
|
|
}
|
|
},
|
|
revenue(diff) {
|
|
let cpm = 0
|
|
if (hasUpgrade("c",111)) cpm += 1
|
|
if (hasUpgrade("c",112)) cpm += 2
|
|
if (hasUpgrade("c",113)) cpm += 2
|
|
if (hasUpgrade("c",114)) cpm += 5
|
|
if (hasUpgrade("c",121) && hasUpgrade("g", 11) && !inChallenge("d", 11)) cpm += 90
|
|
if (hasUpgrade("c",122) && hasUpgrade("g", 11) && !inChallenge("d", 11)) cpm += 900
|
|
if (hasUpgrade("c",123) && hasUpgrade("g", 11) && !inChallenge("d", 11)) cpm += 9000
|
|
if (hasUpgrade("c",124) && hasUpgrade("g", 11) && !inChallenge("d", 11)) cpm += 90000
|
|
return diff * cpm / 1000
|
|
}
|
|
})
|