addLayer("g", { name: "good will", symbol: "G", color: goodwillColor, branches: [ 'f' ], row: 3, position: 5, resource: "good will", baseResource: "fame", infoboxes: { lore: { title: "good will", body: `Your massive amounts of fans and fame have gotten your games an amount of good will. Players are more likely to become fans, and trust your games will be good for consumers and fun to boot...

` + `However, this also means there's lots to gain by cashing in that good will. Buying these upgrades will have powerful effects, but good will is permanently harder to gain the more you've earned, so it may be better to hold off until you have a lot of fans before spending good will.` } }, resetDescription: "Get acknowledged as trustworthy by your fans for ", startData() { return { unlocked: false, points: new Decimal(0), unused: new Decimal(0) }}, layerShown() { return player[this.layer].unlocked || player.f.best.gte(6) }, type: "static", requires: new Decimal(8), base: new Decimal(1.25), baseAmount() { return player.f.points }, exponent: 0.9, gainMult() { mult = new Decimal(1) if (hasUpgrade("l", 15)) mult = mult.div(upgradeEffect("l", 15)) return mult }, gainExp() { return new Decimal(1) }, roundUpCost: true, onPrestige(gain) { player[this.layer].unused = player[this.layer].unused.add(gain) }, effect() { if (inChallenge("d", 11)) return new Decimal(1) let ret = player.g.unused.add(1) if (challengeCompletions("d", 12) > 0) ret = ret.add(player[this.layer].points.sub(player[this.layer].unused).div(2)) ret = ret.pow(2.5) if (hasUpgrade("l", 15)) ret = ret.pow(2) return ret }, effectDescription() { return `which multiplies your fame and fan effects by x${formatWhole(this.effect())}.` }, tooltip() { return `${formatWhole(player.g.unused)} good will` }, hotkeys: [ { key: "g", description: "Press G to get acknowledged as trustworthy by your fans", onPress() { if (canReset(this.layer)) doReset(this.layer) } } ], tabFormat: [ ["infobox", "lore"], ["display-text", () => inChallenge("d", 11) ? `

Disabled during ${layers.d.challenges[player.d.activeChallenge].name} degree plan

` : ""], ["display-text", () => `You have

${formatWhole(player.g.unused)}

good will, ${layers.g.effectDescription()}`], ["display-text", () => `You have earned a total of ${player.g.points} good will.`], "blank", "prestige-button", "blank", ["display-text", () => ``], "blank", "upgrades", "milestones" ], upgrades: { rows: 2, cols: 3, 11: { title: "Surprise Mechanics", description: "Unlock a series of powerful revenue upgrades", cost: new Decimal(1), currencyDisplayName: "goodwill", currencyInternalName: "unused", currencyLocation: () => player.g }, 12: { title: "Trojans and Worms", description: "Unlock a series of powerful fame upgrades", cost: new Decimal(1), currencyDisplayName: "goodwill", currencyInternalName: "unused", currencyLocation: () => player.g }, 13: { title: "Let them make their own content", description: "Unlock a series of powerful update upgrades", cost: new Decimal(1), currencyDisplayName: "goodwill", currencyInternalName: "unused", currencyLocation: () => player.g }, 21: { title: "Trick fans into refactoring for you", description: "Use free labor to multiply refactors gain based on your fame", cost: new Decimal(2), currencyDisplayName: "goodwill", currencyInternalName: "unused", currencyLocation: () => player.g, effect() { return player.f.points.pow(2).add(1) } }, 22: { title: "Hack into college databases", description: "Manipulate your GPA to multiply enrollment gain based on your refactors", cost: new Decimal(2), currencyDisplayName: "goodwill", currencyInternalName: "unused", currencyLocation: () => player.g, effect() { return player.r.points.pow(2).add(1) } }, 23: { title: "Run for Student Government", description: "Take advantage of your local colleges to spread the word about your games and multiply fame gain based on enrollments", cost: new Decimal(2), currencyDisplayName: "goodwill", currencyInternalName: "unused", currencyLocation: () => player.g, effect() { return player.s.points.pow(2).add(1) } } }, milestones: { 0: { requirementDescription: "1 total good will", effectDescription: "Start row 4 resets with 1000 fans", done() { return player[this.layer].points.gte(1) } }, 1: { requirementDescription: "2 total good will", effectDescription: "Start row 4 resets with 1 of each social media account, and unlock a new Degree program", done() { return player[this.layer].points.gte(2) } }, 2: { requirementDescription: "3 total good will", effectDescription: "Retain fame milestones and upgrades", done() { return player[this.layer].points.gte(3) } } }, respec() { player.g.upgrades = [] player.g.unused = player.g.points doReset('g', true) } })