addLayer("f", {
name: "fame",
symbol: "F",
color: fameColor,
branches: [ 'c' ],
row: 2,
position: 3,
resource: "fame",
baseResource: "cash",
infoboxes: {
lore: {
title: "fame",
body: `You've started accumulating a name for yourself. Some people even recognize your name, and check out your new releases. The more fans you have, the more quickly you attract more. Time to take advantage of that!
` +
`By creating social media accounts you can harness your fan base for all sorts of benefits! In fact, you may as well create some alt accounts while you're at it: the more the merrier, when fame is involved!`
}
},
resetDescription: "Elevate your social status by ",
startData() { return {
unlocked: false,
best: new Decimal(0),
points: new Decimal(0),
fans: new Decimal(1)
}},
layerShown() { return player[this.layer].unlocked || player.u.best.gte(30) },
type: "static",
requires: new Decimal(2500),
base: new Decimal(4),
baseAmount() { return player.c.points },
exponent: 1.25,
gainMult() {
mult = new Decimal(1)
if (hasUpgrade("g", 23) && !inChallenge("d", 11)) mult = mult.div(upgradeEffect("g", 23))
if (hasUpgrade("l", 12)) mult = mult.div(upgradeEffect("l", 12))
return mult
},
gainExp() {
return new Decimal(1)
},
roundUpCost: true,
canBuyMax() { return true },
effect() {
return {
doubleFrequency: player[this.layer].points.gte(1) ? new Decimal(60).div(player[this.layer].points.mul(layers.g.effect())).div(buyableEffect("f", 11).add(1)) : new Decimal("infinity"),
productivityMult: player[this.layer].fans.mul(layers.g.effect()).clampMin(10).log10(),
fanMult: buyableEffect("f", 11),
cashMult: buyableEffect("f", 12),
expMult: buyableEffect("f", 13),
upgMult: buyableEffect("f", 14)
}
},
effectDescription() {
return player[this.layer].points.lessThan(1) ? "" : `which double your amount of fans every ${format(this.effect().doubleFrequency)} seconds.`
},
doReset(resettingLayer) {
if (['d', 'l', 'g'].includes(resettingLayer)) {
layerDataReset(this.layer, hasMilestone("g", 2) && !inChallenge("d", 11) ? [ 'milestones', 'upgrades' ] : [])
if (hasMilestone("g", 0) && !inChallenge("d", 11)) player[this.layer].fans = new Decimal(1000)
if (hasMilestone("g", 1) && !inChallenge("d", 11)) {
setBuyableAmount("f", 11, new Decimal(1))
setBuyableAmount("f", 12, new Decimal(1))
setBuyableAmount("f", 13, new Decimal(1))
setBuyableAmount("f", 14, new Decimal(1))
}
}
},
resetsNothing() { return challengeCompletions("d", 22) > 0 },
hotkeys: [
{
key: "f",
description: "Press F to elevate your social status",
onPress() { if (canReset(this.layer)) doReset(this.layer) }
}
],
tabFormat: [
["infobox", "lore"],
"main-display",
["display-text", function() {
const { productivityMult, fanMult, cashMult, expMult, upgMult } = layers.f.effect()
let text = `
You currently have ${format(player.f.fans.floor(), 4)} fans, which currently:`
text += `
Multiplies productivity by ${format(productivityMult)}x`
if (getBuyableAmount("f", 11).gte(1)) text += `
Multiplies fan gain by ${format(fanMult)}x due to discord`
if (getBuyableAmount("f", 12).gte(1)) text += `
Multiplies cash gain by ${format(cashMult)}x due to patreon`
if (getBuyableAmount("f", 13).gte(1)) text += `
Multiplies experience gain by ${format(expMult)}x due to twitch`
if (getBuyableAmount("f", 14).gte(1)) text += `
Multiplies update gain by ${format(upgMult)}x due to github`
return text
}],
"blank",
"prestige-button",
"blank",
"buyables",
"blank",
"upgrades",
"blank",
["display-text", () => `Your best fame is ${player.f.best}`],
"milestones"
],
update(diff) {
if (player[this.layer].points.gte(1)) {
const freq = this.effect().doubleFrequency
if (freq.gt(0))
player[this.layer].fans = player[this.layer].fans.mul(new Decimal(2).pow(new Decimal(diff).div(freq)))
}
if (hasUpgrade("l", 12) && !inChallenge("d", 21))
[11, 12, 13, 14].forEach(id => {
if (layers.f.buyables[id].canAfford()) layers.f.buyables[id].buy()
})
},
buyables: {
rows: 1,
cols: 4,
11: {
title: "Discord",
cost() { return getBuyableAmount("f", 11).add(1) },
display() { return getBuyableAmount("f", 11).gte(1) ? `Each alt account raises your discord effect on fan gain to the ^1.1 power.
Next upgrade cost: ${this.cost()} fame` : `Create a discord, boosting your fan gain the more fans you have
Unlock cost: ${this.cost()} fame` },
canAfford() { return player[this.layer].points.gte(this.cost()) },
effect() {
if (getBuyableAmount("f", 11).lte(0)) return new Decimal(1)
let effect = new Decimal(1.1).pow(getBuyableAmount("f", 11).sub(1)).mul(player[this.layer].fans.clampMin(10).log10().pow(0.3)).mul(layers.g.effect()).add(1)
if (hasUpgrade("f", 14) && hasUpgrade("g", 12) && !inChallenge("d", 11)) effect = effect.mul(upgradeEffect("f", 14))
return effect
},
buy() {
if (!hasUpgrade("l", 12) || inChallenge("d", 21)) player[this.layer].points = player[this.layer].points.sub(this.cost())
setBuyableAmount("f", 11, getBuyableAmount("f", 11).add(1))
}
},
12: {
title: "Patreon",
cost() { return getBuyableAmount("f", 12).add(1).mul(2) },
display() { return getBuyableAmount("f", 12).gte(1) ? `Each alt account raises your patreon effect on cash gain to the ^1.1 power.
Next upgrade cost: ${this.cost()} fame` : `Create a patreon, boosting your cash gain the more fans you have
Unlock cost: ${this.cost()} fame` },
canAfford() { return player[this.layer].points.gte(this.cost()) },
effect() {
if (getBuyableAmount("f", 12).lte(0)) return new Decimal(1)
return new Decimal(1.1).pow(getBuyableAmount("f", 12).sub(1)).mul(player[this.layer].fans.clampMin(10).log2().sqrt()).mul(layers.g.effect()).add(1)
},
buy() {
if (!hasUpgrade("l", 12) || inChallenge("d", 21)) player[this.layer].points = player[this.layer].points.sub(this.cost())
setBuyableAmount("f", 12, getBuyableAmount("f", 12).add(1))
}
},
13: {
title: "Twitch",
cost() { return getBuyableAmount("f", 13).add(1).mul(2) },
display() { return getBuyableAmount("f", 13).gte(1) ? `Each alt account raises your twitch effect on experience gain to the ^1.1 power.
Next upgrade cost: ${this.cost()} fame` : `Create a twitch where you stream development and get instant feedback, boosting your experience gain the more fans you have
Unlock cost: ${this.cost()} fame` },
canAfford() { return player[this.layer].points.gte(this.cost()) },
effect() {
if (getBuyableAmount("f", 11).lte(0)) return new Decimal(1)
return new Decimal(1.1).pow(getBuyableAmount("f", 13).sub(1)).mul(player[this.layer].fans.clampMin(10).log2().pow(0.25)).mul(layers.g.effect()).add(1)
},
buy() {
if (!hasUpgrade("l", 12) || inChallenge("d", 21)) player[this.layer].points = player[this.layer].points.sub(this.cost())
setBuyableAmount("f", 13, getBuyableAmount("f", 13).add(1))
}
},
14: {
title: "Github",
cost() { return getBuyableAmount("f", 14).add(1).mul(3) },
display() { return getBuyableAmount("f", 14).gte(1) ? `Each alt account raises your github effect on update gain to the ^1.1 power.
Next upgrade cost: ${this.cost()} fame` : `Add a link in the game to the github repo, boosting your update gain the more fans you have
Unlock cost: ${this.cost()} fame` },
canAfford() { return player[this.layer].points.gte(this.cost()) },
effect() {
if (getBuyableAmount("f", 11).lte(0)) return new Decimal(1)
return new Decimal(1.1).pow(getBuyableAmount("f", 14).sub(1)).mul(player[this.layer].fans.clampMin(10).log10().pow(0.25)).mul(layers.g.effect()).add(1)
},
buy() {
if (!hasUpgrade("l", 12) || inChallenge("d", 21)) player[this.layer].points = player[this.layer].points.sub(this.cost())
setBuyableAmount("f", 14, getBuyableAmount("f", 14).add(1))
}
}
},
upgrades: {
rows: 1,
cols: 4,
11: {
title: "Create p2p botnet",
description() { return `Include malware in a game to use your players to pirate textbooks, increasing experience gain based on number of fans.` },
currencyDisplayName: "updates",
currencyInternalName: "points",
currencyLocation() { return player.u },
cost: new Decimal(15000),
unlocked() { return hasUpgrade("g", 12) && !inChallenge("d", 11) },
effect() { return player.f.fans.clampMin(10).log10().log(1.5).mul(layers.g.effect()).add(1) }
},
12: {
title: "Use botnet for scalping",
description() { return `Use your botnet to buy limited supply items before legitimate buyers, increasing cash gain based on number of fans.` },
currencyDisplayName: "updates",
currencyInternalName: "points",
currencyLocation() { return player.u },
cost: new Decimal(20000),
unlocked() { return hasUpgrade("g", 12) && !inChallenge("d", 11) },
effect() { return player.f.fans.clampMin(10).log10().log2().mul(layers.g.effect()).add(1) }
},
13: {
title: "Use botnet for distributed processing",
description() { return `Use your botnet to automatically analyze your games with deep learning, increasing refactoring gain based on number of fans.` },
currencyDisplayName: "updates",
currencyInternalName: "points",
currencyLocation() { return player.u },
cost: new Decimal(30000),
unlocked() { return hasUpgrade("g", 12) && !inChallenge("d", 11) },
effect() { return player.f.fans.clampMin(10).log10().log2().sqrt().mul(layers.g.effect()).add(1) }
},
14: {
title: "Use botnet for social media manipulation",
description() { return `Use your botnet to automatically like posts on social media, increasing fan gain based on number of fans.` },
currencyDisplayName: "updates",
currencyInternalName: "points",
currencyLocation() { return player.u },
cost: new Decimal(50000),
unlocked() { return hasUpgrade("g", 12) && !inChallenge("d", 11) },
effect() { return player.f.fans.clampMin(10).log10().log10().mul(layers.g.effect()).add(1) }
}
},
milestones: {
0: {
requirementDescription: "1 best fame",
effectDescription: "Retain the first equipment upgrade",
done() { return player[this.layer].best.gte(1) }
},
1: {
requirementDescription: "2 best fame",
effectDescription: "Retain the second equipment upgrade",
done() { return player[this.layer].best.gte(2) }
},
2: {
requirementDescription: "3 best fame",
effectDescription: "Retain the third equipment upgrade",
done() { return player[this.layer].best.gte(3) },
unlocked() { return hasMilestone("f", 0) }
},
3: {
requirementDescription: "4 best fame",
effectDescription: "Retain the fourth equipment upgrade",
done() { return player[this.layer].best.gte(4) },
unlocked() { return hasMilestone("f", 1) }
},
4: {
requirementDescription: "5 best fame",
effectDescription: "Retain the fifth equipment upgrade",
done() { return player[this.layer].best.gte(5) },
unlocked() { return hasMilestone("f", 2) }
},
5: {
requirementDescription: "6 best fame",
effectDescription: "Retain the sixth equipment upgrade",
done() { return player[this.layer].best.gte(6) },
unlocked() { return hasMilestone("f", 3) }
},
6: {
requirementDescription: "7 best fame",
effectDescription: "Retain the seventh equipment upgrade",
done() { return player[this.layer].best.gte(7) },
unlocked() { return hasMilestone("f", 4) }
},
7: {
requirementDescription: "8 best fame",
effectDescription: "Retain the eighth equipment upgrade",
done() { return player[this.layer].best.gte(8) },
unlocked() { return hasMilestone("f", 5) }
}
}
})