just_another_tree/js/data/achievements.js
2024-04-09 16:19:14 +01:00

219 lines
8 KiB
JavaScript

addLayer("ach", {
name: "achievements", // This is optional, only used in a few places, If absent it just uses the layer id.
symbol: "☆", // This appears on the layer's node. Default is the id with the first letter capitalized
position: 0, // Horizontal position within a row. By default it uses the layer id and sorts in alphabetical order
startData() { return {
unlocked: true,
has45: false,
has55: false,
has75: false
}},
color: "#9d750d",
effect() {
return Decimal.div(player[this.layer].achievements.length, 20).add(1)
},
achievements: {
11: {
name: "All that progress is gone!",
done() { return player.p.points.gte(1) },
tooltip: "Reset for 1 PP."
},
12: {
name: "So that's what the mechanic is...",
done() { return getAlphaLevel().gte(2) },
tooltip: "Reach Alpha level 2."
},
13: {
name: "This is quite fun!",
done() { return getBetaLevel().gte(1) },
tooltip: "Reach Beta level 1."
},
14: {
name: "Oh so many bars.",
done() { return getGammaLevel().gte(1) },
tooltip: "Reach Gamma level 1."
},
15: {
name: "GREEN!!!",
done() { return options.theme === "verdant" },
tooltip: "Switch to the Verdant theme."
},
21: {
name: "Nomial gains.",
done() { return getPointGen().gte(1) },
tooltip: "Get 1 point per second."
},
22: {
name: "That's an exponent!",
done() { return getEpsilonLevel().gte(1) },
tooltip: "Reach Epsilon level 1."
},
23: {
name: "What's a \"Rank\"?",
done() { return getAlphaRank().gte(1) },
tooltip: "Reach Alpha rank 1."
},
24: {
name: "No more bars?",
done() { return getZetaLevel().gte(1) },
tooltip: "Reach Zeta level 1."
},
25: {
name: "Lots of points",
done() { return player.points.gte(200) },
tooltip: "Reach 200 points."
},
31: {
name: "Even more progress.",
done() { return getBuyableAmount('p', 11).gte(1) },
tooltip: "Get 1x <b>More progress</b> buyable."
},
32: {
name: "So this just boosts Gamma further?",
done() { return getBuyableAmount('p', 12).gte(1) },
tooltip: "Get 1x <b>Rebased</b> buyable."
},
33: {
name: "Softcap?? >:(",
done() { return getPointGen().gte(getKappaEffect().mul(1000)) },
tooltip: "Reach the first softcap."
},
33: {
name: "Decrementy",
done() { return getBuyableAmount('p', 13).gte(1) },
tooltip: "Get 1x <b>Shorter bars</b> buyable."
},
34: {
name: "Super!",
done() { return player.points.gte(5000) },
tooltip: "Reach 5000 points."
},
35: {
name: "Where were you??",
done() { return getPointGen().gt(0) && player.points.div(100).gte(getPointGen()) },
tooltip: "Have your points reach 100x your points per second."
},
41: {
name: "Progressed further.",
done() { return getThetaLevel().gte(1) },
tooltip: "Reach Theta level 1."
},
42: {
name: "Literally just another exponent.",
done() { return getIotaLevel().gte(1) },
tooltip: "Reach Iota level 1."
},
43: {
name: "YES! GOODBYE SOFTCAP!",
done() { return getKappaLevel().gte(1) },
tooltip: "Reach Kappa level 1."
},
44: {
name: "Very big multiplier",
done() { return getLambdaLevel().gte(1) },
tooltip: "Reach Lambda level 1."
},
45: {
name: "Don't even need PP anymore",
done() { return player[this.layer].has45 },
tooltip: "Reset for SPP with 0 PP."
},
51: {
name: "An exponent to progress points?",
done() { return getBuyableAmount('sp', 11).gte(1) },
tooltip: "Get 1x <b>Much more progress</b> buyable."
},
52: {
name: "And another exponent to points ¬_¬",
done() { return getBuyableAmount('sp', 12).gte(1) },
tooltip: "Get 1x <b>Super point booster</b> buyable."
},
53: {
name: "A new prestige layer!",
done() { return player.sp.points.gte(250) },
tooltip: "Reach 250 SPP."
},
54: {
name: "Retention!",
done() { return hasMilestone('f', 3) },
tooltip: "Earn Filestone 4."
},
55: {
name: "Well that was useful",
done() { return player[this.layer].has55 },
tooltip: "Respec directory upgrades when you have none."
},
61: {
name: "Ooh upgrades",
done() { return player.f.upgrades.map(x => x - 20).filter(x => x >= 0 && x < 9).length == 3 },
tooltip: "Get all row 2 directory upgrades."
},
62: {
name: "Lots of boosts!!",
done() { return player.f.upgrades.map(x => x - 30).filter(x => x >= 0 && x < 9).length == 3 },
tooltip: "Get all row 3 directory upgrades."
},
63: {
name: "Now it gets expensive.",
done() { return player.f.upgrades.map(x => x - 40).filter(x => x >= 0 && x < 9).length == 4 },
tooltip: "Get all row 4 directory upgrades."
},
64: {
name: "Extreme.",
done() { return player.f.upgrades.map(x => x - 50).filter(x => x >= 0 && x < 9).length == 4 },
tooltip: "Get all row 5 directory upgrades."
},
65: {
name: "100 times over.",
done() { return player.f.total.gte(100) },
tooltip: "Get 100 Files."
},
71: {
name: "Alright I'm out of ideas.",
done() { return player.f.upgrades.map(x => x - 60).filter(x => x >= 0 && x < 9).length == 2 },
tooltip: "Get all row 6 directory upgrades."
},
72: {
name: "I guess one last buyable?",
done() { return getBuyableAmount('f', 11).gte(10) },
tooltip: "Get 10 <b>The finale of the intro</b> buyables."
},
73: {
name: "FOR THE LOVE OF GOD JUST GET BIGGER",
done() { return hasMilestone('f', 13) },
tooltip: "Reach Filestone 14"
},
74: {
name: "And then comes the prestige layer",
done() { return player.points.log(2).gte(127.9) },
tooltip: "Reach " + format(Decimal.pow(2, 127.9)) + " points"
},
81: {
name: "Is this even balanced?",
done() { return hasMilestone('i', 1) },
tooltip: "Reach Integral milestone 2"
},
75: {
name: "Another one of these?",
done() { return player[this.layer].has75 },
tooltip: "Respec number buyables when you have none."
},
82: {
name: "A... number?",
done() { return hasMilestone('i', 2) },
tooltip: "Reach Integral milestone 3"
},
},
tabFormat: [
"blank",
["raw-html", function () { return "Achievements: " + format(player[this.layer].achievements.length) + "/" + format(Object.keys(tmp[this.layer].achievements).length - 2) }],
["raw-html", function () { return "Effect: x" + format(tmp[this.layer].effect) + " to point gen." }],
"blank",
"achievements"
],
tooltip() {
return format(player[this.layer].achievements.length) + " achievement" + (player[this.layer].achievements.length == 1 ? "" : "s")
},
row: "side", // Row the layer is in on the tree (0 is the first row)
layerShown(){return true}
})