breakout71/src/upgrades.ts

714 lines
18 KiB
TypeScript
Raw Normal View History

2025-03-16 17:45:29 +01:00
import { t } from "./i18n/i18n";
2025-03-29 21:28:05 +01:00
import { comboKeepingRate } from "./pure_functions";
2025-03-15 21:29:38 +01:00
export const rawUpgrades = [
{
requires: "",
threshold: 0,
2025-03-06 14:06:02 +01:00
giftable: false,
id: "extra_life",
2025-04-08 10:36:30 +02:00
max: 7,
2025-03-16 17:45:29 +01:00
name: t("upgrades.extra_life.name"),
help: (lvl: number) =>
lvl === 1
2025-04-09 11:28:32 +02:00
? t("upgrades.extra_life.tooltip")
2025-03-16 17:45:29 +01:00
: t("upgrades.extra_life.help_plural", { lvl }),
2025-04-09 11:28:32 +02:00
fullHelp: t("upgrades.extra_life.verbose_description"),
},
2025-03-06 14:06:02 +01:00
{
requires: "",
threshold: 0,
id: "base_combo",
giftable: true,
max: 7,
2025-03-16 17:45:29 +01:00
name: t("upgrades.base_combo.name"),
help: (lvl: number) =>
2025-04-09 11:28:32 +02:00
t("upgrades.base_combo.tooltip", { coins: 1 + lvl * 3 }),
fullHelp: t("upgrades.base_combo.verbose_description"),
},
{
requires: "",
threshold: 0,
giftable: false,
id: "slow_down",
max: 2,
2025-03-16 17:45:29 +01:00
name: t("upgrades.slow_down.name"),
2025-04-09 11:28:32 +02:00
help: (lvl: number) => t("upgrades.slow_down.tooltip", { lvl }),
fullHelp: t("upgrades.slow_down.verbose_description"),
},
{
requires: "",
threshold: 0,
giftable: false,
id: "bigger_puck",
max: 2,
2025-03-16 17:45:29 +01:00
name: t("upgrades.bigger_puck.name"),
2025-04-09 11:28:32 +02:00
help: () => t("upgrades.bigger_puck.tooltip"),
fullHelp: t("upgrades.bigger_puck.verbose_description"),
},
{
requires: "",
threshold: 0,
giftable: false,
id: "viscosity",
max: 3,
2025-03-06 14:06:02 +01:00
2025-03-16 17:45:29 +01:00
name: t("upgrades.viscosity.name"),
2025-04-09 11:28:32 +02:00
help: () => t("upgrades.viscosity.tooltip"),
fullHelp: t("upgrades.viscosity.verbose_description"),
},
{
requires: "",
2025-04-08 14:03:38 +02:00
threshold: 50,
giftable: false,
id: "skip_last",
max: 7,
name: t("upgrades.skip_last.name"),
help: (lvl: number) =>
lvl == 1
2025-04-09 11:28:32 +02:00
? t("upgrades.skip_last.tooltip")
2025-04-08 14:03:38 +02:00
: t("upgrades.skip_last.help_plural", { lvl }),
2025-04-09 11:28:32 +02:00
fullHelp: t("upgrades.skip_last.verbose_description"),
2025-04-08 14:03:38 +02:00
},
{
requires: "",
threshold: 100,
id: "streak_shots",
giftable: true,
max: 1,
name: t("upgrades.streak_shots.name"),
2025-04-09 11:28:32 +02:00
help: (lvl: number) => t("upgrades.streak_shots.tooltip", { lvl }),
fullHelp: t("upgrades.streak_shots.verbose_description"),
2025-04-08 14:03:38 +02:00
},
2025-04-08 14:03:38 +02:00
{
requires: "",
threshold: 200,
2025-03-07 20:18:18 +01:00
id: "left_is_lava",
giftable: true,
max: 1,
2025-03-06 14:06:02 +01:00
2025-03-16 17:45:29 +01:00
name: t("upgrades.left_is_lava.name"),
2025-04-09 11:28:32 +02:00
help: (lvl: number) => t("upgrades.left_is_lava.tooltip", { lvl }),
fullHelp: t("upgrades.left_is_lava.verbose_description"),
2025-03-07 20:18:18 +01:00
},
{
requires: "",
2025-04-08 14:03:38 +02:00
threshold: 300,
2025-03-07 20:18:18 +01:00
id: "right_is_lava",
giftable: true,
max: 1,
2025-03-16 17:45:29 +01:00
name: t("upgrades.right_is_lava.name"),
2025-04-09 11:28:32 +02:00
help: (lvl: number) => t("upgrades.right_is_lava.tooltip", { lvl }),
fullHelp: t("upgrades.right_is_lava.verbose_description"),
},
{
requires: "",
2025-04-08 14:03:38 +02:00
threshold: 400,
id: "top_is_lava",
giftable: true,
max: 1,
2025-03-16 17:45:29 +01:00
name: t("upgrades.top_is_lava.name"),
2025-04-09 11:28:32 +02:00
help: (lvl: number) => t("upgrades.top_is_lava.tooltip", { lvl }),
fullHelp: t("upgrades.top_is_lava.verbose_description"),
},
{
requires: "",
threshold: 500,
id: "telekinesis",
giftable: true,
max: 1,
2025-03-16 17:45:29 +01:00
name: t("upgrades.telekinesis.name"),
help: (lvl: number) =>
lvl == 1
2025-04-09 11:28:32 +02:00
? t("upgrades.telekinesis.tooltip")
2025-03-16 17:45:29 +01:00
: t("upgrades.telekinesis.help_plural"),
2025-04-09 11:28:32 +02:00
fullHelp: t("upgrades.telekinesis.verbose_description"),
},
{
requires: "",
2025-04-08 14:03:38 +02:00
threshold: 700,
giftable: false,
id: "coin_magnet",
max: 3,
2025-03-16 17:45:29 +01:00
name: t("upgrades.coin_magnet.name"),
help: (lvl: number) =>
lvl == 1
2025-04-09 11:28:32 +02:00
? t("upgrades.coin_magnet.tooltip")
2025-03-16 17:45:29 +01:00
: t("upgrades.coin_magnet.help_plural"),
2025-04-09 11:28:32 +02:00
fullHelp: t("upgrades.coin_magnet.verbose_description"),
},
{
requires: "",
2025-04-08 14:03:38 +02:00
threshold: 800,
id: "multiball",
giftable: true,
max: 6,
2025-03-16 17:45:29 +01:00
name: t("upgrades.multiball.name"),
2025-04-09 11:28:32 +02:00
help: (lvl: number) => t("upgrades.multiball.tooltip", { count: lvl + 1 }),
fullHelp: t("upgrades.multiball.verbose_description"),
},
{
requires: "",
2025-04-08 14:03:38 +02:00
threshold: 1000,
giftable: false,
id: "smaller_puck",
max: 2,
2025-03-16 17:45:29 +01:00
name: t("upgrades.smaller_puck.name"),
help: (lvl: number) =>
lvl == 1
2025-04-09 11:28:32 +02:00
? t("upgrades.smaller_puck.tooltip")
2025-03-16 17:45:29 +01:00
: t("upgrades.smaller_puck.help_plural"),
2025-04-09 11:28:32 +02:00
fullHelp: t("upgrades.smaller_puck.verbose_description"),
},
{
requires: "",
2025-04-08 14:03:38 +02:00
threshold: 1500,
id: "pierce",
giftable: false,
max: 3,
2025-03-16 17:45:29 +01:00
name: t("upgrades.pierce.name"),
2025-04-09 11:28:32 +02:00
help: (lvl: number) => t("upgrades.pierce.tooltip", { count: 3 * lvl }),
fullHelp: t("upgrades.pierce.verbose_description"),
},
{
requires: "",
2025-04-08 14:03:38 +02:00
threshold: 2000,
id: "picky_eater",
giftable: true,
max: 1,
2025-03-16 17:45:29 +01:00
name: t("upgrades.picky_eater.name"),
2025-04-09 11:28:32 +02:00
help: (lvl: number) => t("upgrades.picky_eater.tooltip", { lvl }),
fullHelp: t("upgrades.picky_eater.verbose_description"),
},
{
requires: "",
2025-04-08 14:03:38 +02:00
threshold: 2500,
giftable: false,
id: "metamorphosis",
max: 1,
2025-03-16 17:45:29 +01:00
name: t("upgrades.metamorphosis.name"),
2025-04-09 11:28:32 +02:00
help: (lvl: number) => t("upgrades.metamorphosis.tooltip", { lvl }),
fullHelp: t("upgrades.metamorphosis.verbose_description"),
},
{
requires: "",
2025-04-08 14:03:38 +02:00
threshold: 3000,
id: "compound_interest",
giftable: true,
2025-03-07 11:34:11 +01:00
max: 1,
2025-03-16 17:45:29 +01:00
name: t("upgrades.compound_interest.name"),
2025-04-09 11:28:32 +02:00
help: (lvl: number) => t("upgrades.compound_interest.tooltip", { lvl }),
fullHelp: t("upgrades.compound_interest.verbose_description"),
},
{
requires: "",
2025-04-08 14:03:38 +02:00
threshold: 4000,
id: "hot_start",
giftable: true,
max: 3,
2025-03-16 17:45:29 +01:00
name: t("upgrades.hot_start.name"),
help: (lvl: number) =>
2025-04-09 11:28:32 +02:00
t("upgrades.hot_start.tooltip", {
start: lvl * 30 + 1,
loss: lvl,
2025-03-16 17:45:29 +01:00
}),
2025-04-09 11:28:32 +02:00
fullHelp: t("upgrades.hot_start.verbose_description"),
},
{
requires: "",
2025-04-08 14:03:38 +02:00
threshold: 6000,
id: "sapper",
giftable: false,
max: 7,
2025-03-16 17:45:29 +01:00
name: t("upgrades.sapper.name"),
help: (lvl: number) =>
lvl == 1
2025-04-09 11:28:32 +02:00
? t("upgrades.sapper.tooltip")
2025-03-16 17:45:29 +01:00
: t("upgrades.sapper.help_plural", { lvl }),
2025-04-09 11:28:32 +02:00
fullHelp: t("upgrades.sapper.verbose_description"),
},
{
requires: "",
2025-04-08 14:03:38 +02:00
threshold: 9000,
id: "bigger_explosions",
giftable: false,
2025-03-15 21:29:38 +01:00
max: 1,
2025-03-16 17:45:29 +01:00
name: t("upgrades.bigger_explosions.name"),
2025-04-09 11:28:32 +02:00
help: (lvl: number) => t("upgrades.bigger_explosions.tooltip"),
fullHelp: t("upgrades.bigger_explosions.verbose_description"),
},
{
requires: "",
threshold: 13000,
giftable: false,
2025-03-27 10:52:31 +01:00
adventure: false,
id: "extra_levels",
max: 3,
2025-03-16 17:45:29 +01:00
name: t("upgrades.extra_levels.name"),
2025-04-09 11:28:32 +02:00
help: (lvl: number) =>
t("upgrades.extra_levels.tooltip", { count: lvl + 7 }),
fullHelp: t("upgrades.extra_levels.verbose_description"),
},
{
requires: "",
threshold: 15000,
giftable: false,
id: "pierce_color",
2025-03-23 19:11:01 +01:00
max: 4,
2025-03-16 17:45:29 +01:00
name: t("upgrades.pierce_color.name"),
2025-04-09 11:28:32 +02:00
help: (lvl: number) => t("upgrades.pierce_color.tooltip", { lvl }),
fullHelp: t("upgrades.pierce_color.verbose_description"),
},
{
requires: "",
threshold: 18000,
giftable: false,
id: "soft_reset",
2025-03-29 11:24:45 +01:00
max: 3,
2025-03-16 17:45:29 +01:00
name: t("upgrades.soft_reset.name"),
2025-03-29 21:28:05 +01:00
help: (lvl: number) =>
2025-04-09 11:28:32 +02:00
t("upgrades.soft_reset.tooltip", {
2025-03-29 21:28:05 +01:00
percent: Math.round(comboKeepingRate(lvl) * 100),
}),
2025-04-09 11:28:32 +02:00
fullHelp: t("upgrades.soft_reset.verbose_description"),
},
{
requires: "multiball",
threshold: 21000,
giftable: false,
id: "ball_repulse_ball",
max: 3,
2025-03-16 17:45:29 +01:00
name: t("upgrades.ball_repulse_ball.name"),
help: (lvl: number) =>
lvl == 1
2025-04-09 11:28:32 +02:00
? t("upgrades.ball_repulse_ball.tooltip")
2025-03-16 17:45:29 +01:00
: t("upgrades.ball_repulse_ball.help_plural"),
2025-04-09 11:28:32 +02:00
fullHelp: t("upgrades.ball_repulse_ball.verbose_description"),
},
{
requires: "multiball",
threshold: 25000,
giftable: false,
id: "ball_attract_ball",
max: 3,
2025-03-16 17:45:29 +01:00
name: t("upgrades.ball_attract_ball.name"),
help: (lvl: number) =>
lvl == 1
2025-04-09 11:28:32 +02:00
? t("upgrades.ball_attract_ball.tooltip")
2025-03-16 17:45:29 +01:00
: t("upgrades.ball_attract_ball.help_plural"),
2025-04-09 11:28:32 +02:00
fullHelp: t("upgrades.ball_attract_ball.verbose_description"),
},
{
requires: "",
threshold: 30000,
giftable: false,
id: "puck_repulse_ball",
2025-03-07 20:53:39 +01:00
max: 2,
2025-03-16 17:45:29 +01:00
name: t("upgrades.puck_repulse_ball.name"),
help: (lvl: number) =>
lvl == 1
2025-04-09 11:28:32 +02:00
? t("upgrades.puck_repulse_ball.tooltip")
2025-03-16 17:45:29 +01:00
: t("upgrades.puck_repulse_ball.help_plural"),
2025-04-09 11:28:32 +02:00
fullHelp: t("upgrades.puck_repulse_ball.verbose_description"),
},
{
requires: "",
threshold: 35000,
giftable: false,
id: "wind",
max: 3,
2025-03-16 17:45:29 +01:00
name: t("upgrades.wind.name"),
help: (lvl: number) =>
2025-04-09 11:28:32 +02:00
lvl == 1 ? t("upgrades.wind.tooltip") : t("upgrades.wind.help_plural"),
fullHelp: t("upgrades.wind.verbose_description"),
},
{
requires: "",
threshold: 40000,
giftable: false,
id: "sturdy_bricks",
max: 4,
2025-03-18 14:16:12 +01:00
name: t("upgrades.sturdy_bricks.name"),
2025-03-16 17:45:29 +01:00
help: (lvl: number) =>
2025-03-29 11:24:45 +01:00
// lvl == 1
2025-04-09 11:28:32 +02:00
t("upgrades.sturdy_bricks.tooltip", { lvl, percent: lvl * 50 }),
2025-03-29 21:28:05 +01:00
// ?
// : t("upgrades.sturdy_bricks.help_plural"),
2025-04-09 11:28:32 +02:00
fullHelp: t("upgrades.sturdy_bricks.verbose_description"),
},
{
requires: "",
threshold: 45000,
giftable: false,
id: "respawn",
max: 4,
2025-03-16 17:45:29 +01:00
name: t("upgrades.respawn.name"),
help: (lvl: number) =>
2025-04-09 11:28:32 +02:00
t("upgrades.respawn.tooltip", {
2025-03-29 21:28:05 +01:00
percent: Math.floor(100 * comboKeepingRate(lvl)),
delay: (3 / lvl).toFixed(2),
}),
2025-04-09 11:28:32 +02:00
fullHelp: t("upgrades.respawn.verbose_description"),
},
{
requires: "",
threshold: 50000,
giftable: false,
id: "one_more_choice",
max: 3,
2025-03-16 17:45:29 +01:00
name: t("upgrades.one_more_choice.name"),
2025-04-09 11:28:32 +02:00
help: (lvl: number) => t("upgrades.one_more_choice.tooltip", { lvl }),
fullHelp: t("upgrades.one_more_choice.verbose_description"),
},
{
requires: "",
threshold: 55000,
giftable: false,
id: "instant_upgrade",
max: 2,
2025-03-27 10:52:31 +01:00
adventure: false,
2025-03-16 17:45:29 +01:00
name: t("upgrades.instant_upgrade.name"),
2025-04-09 11:28:32 +02:00
help: (lvl: number) => t("upgrades.instant_upgrade.tooltip", { lvl }),
fullHelp: t("upgrades.instant_upgrade.verbose_description"),
2025-03-16 17:45:29 +01:00
},
{
requires: "",
threshold: 60000,
giftable: false,
id: "concave_puck",
max: 1,
name: t("upgrades.concave_puck.name"),
2025-04-09 11:28:32 +02:00
help: (lvl: number) => t("upgrades.concave_puck.tooltip"),
fullHelp: t("upgrades.concave_puck.verbose_description"),
},
2025-03-19 20:14:55 +01:00
{
requires: "",
2025-03-19 20:14:55 +01:00
threshold: 65000,
giftable: false,
2025-03-19 21:58:08 +01:00
id: "helium",
2025-03-19 20:14:55 +01:00
max: 1,
2025-03-19 21:58:08 +01:00
name: t("upgrades.helium.name"),
2025-04-09 11:28:32 +02:00
help: (lvl: number) => t("upgrades.helium.tooltip"),
fullHelp: t("upgrades.helium.verbose_description"),
2025-03-19 20:14:55 +01:00
},
{
requires: "",
2025-03-19 21:58:50 +01:00
threshold: 70000,
giftable: true,
2025-03-19 20:14:55 +01:00
id: "asceticism",
max: 1,
name: t("upgrades.asceticism.name"),
2025-04-09 11:28:32 +02:00
help: (lvl: number) => t("upgrades.asceticism.tooltip", { combo: lvl * 3 }),
fullHelp: t("upgrades.asceticism.verbose_description"),
2025-03-19 20:14:55 +01:00
},
{
requires: "",
2025-03-19 21:58:50 +01:00
threshold: 75000,
2025-03-19 20:14:55 +01:00
giftable: false,
id: "unbounded",
max: 1,
name: t("upgrades.unbounded.name"),
2025-03-29 21:28:05 +01:00
help: (lvl: number) =>
lvl > 1
? t("upgrades.unbounded.help_no_ceiling", { lvl })
2025-04-09 11:28:32 +02:00
: t("upgrades.unbounded.tooltip", { lvl }),
fullHelp: t("upgrades.unbounded.verbose_description"),
2025-03-19 20:14:55 +01:00
},
{
requires: "",
2025-03-19 21:58:50 +01:00
threshold: 80000,
2025-03-19 20:14:55 +01:00
giftable: false,
id: "shunt",
2025-03-20 08:13:17 +01:00
max: 3,
2025-03-19 20:14:55 +01:00
name: t("upgrades.shunt.name"),
2025-03-29 21:28:05 +01:00
help: (lvl: number) =>
2025-04-09 11:28:32 +02:00
t("upgrades.shunt.tooltip", {
2025-03-29 21:28:05 +01:00
percent: Math.round(comboKeepingRate(lvl) * 100),
}),
2025-04-09 11:28:32 +02:00
fullHelp: t("upgrades.shunt.verbose_description"),
2025-03-19 20:14:55 +01:00
},
{
requires: "",
2025-03-19 21:58:50 +01:00
threshold: 85000,
2025-03-19 20:14:55 +01:00
giftable: false,
id: "yoyo",
max: 1,
2025-03-19 20:14:55 +01:00
name: t("upgrades.yoyo.name"),
2025-04-09 11:28:32 +02:00
help: (lvl: number) => t("upgrades.yoyo.tooltip"),
fullHelp: t("upgrades.yoyo.verbose_description"),
2025-03-19 20:14:55 +01:00
},
{
requires: "",
2025-03-19 21:58:50 +01:00
threshold: 90000,
giftable: true,
2025-03-19 20:14:55 +01:00
id: "nbricks",
max: 3,
name: t("upgrades.nbricks.name"),
2025-04-09 11:28:32 +02:00
help: (lvl: number) => t("upgrades.nbricks.tooltip", { lvl }),
fullHelp: t("upgrades.nbricks.verbose_description"),
2025-03-19 20:14:55 +01:00
},
{
requires: "",
2025-03-19 21:58:50 +01:00
threshold: 95000,
2025-03-19 20:14:55 +01:00
giftable: false,
id: "etherealcoins",
max: 1,
name: t("upgrades.etherealcoins.name"),
2025-04-09 11:28:32 +02:00
help: (lvl: number) => t("upgrades.etherealcoins.tooltip"),
fullHelp: t("upgrades.etherealcoins.verbose_description"),
2025-03-19 20:14:55 +01:00
},
2025-03-19 21:58:08 +01:00
{
requires: "multiball",
2025-03-19 21:58:50 +01:00
threshold: 100000,
2025-03-19 21:58:08 +01:00
giftable: false,
id: "shocks",
max: 1,
name: t("upgrades.shocks.name"),
2025-04-09 11:28:32 +02:00
help: (lvl: number) => t("upgrades.shocks.tooltip"),
fullHelp: t("upgrades.shocks.verbose_description"),
2025-03-19 21:58:08 +01:00
},
{
requires: "",
2025-03-19 21:58:50 +01:00
threshold: 105000,
giftable: true,
2025-03-19 21:58:08 +01:00
id: "zen",
max: 1,
name: t("upgrades.zen.name"),
2025-04-09 11:28:32 +02:00
help: (lvl: number) => t("upgrades.zen.tooltip", { lvl }),
fullHelp: t("upgrades.zen.verbose_description"),
2025-03-19 21:58:08 +01:00
},
{
requires: "extra_life",
2025-03-19 21:58:50 +01:00
threshold: 110000,
2025-03-19 21:58:08 +01:00
giftable: false,
id: "sacrifice",
max: 1,
name: t("upgrades.sacrifice.name"),
2025-03-29 15:00:44 +01:00
help: (lvl: number) =>
2025-03-29 21:28:05 +01:00
lvl == 1
? t("upgrades.sacrifice.help_l1")
: t("upgrades.sacrifice.help_over", { lvl }),
2025-04-09 11:28:32 +02:00
fullHelp: t("upgrades.sacrifice.verbose_description"),
2025-03-19 21:58:08 +01:00
},
{
requires: "",
2025-03-19 21:58:50 +01:00
threshold: 115000,
giftable: true,
2025-03-19 21:58:08 +01:00
id: "trampoline",
2025-03-20 21:24:25 +01:00
max: 1,
2025-03-19 21:58:08 +01:00
name: t("upgrades.trampoline.name"),
2025-04-09 11:28:32 +02:00
help: (lvl: number) => t("upgrades.trampoline.tooltip", { lvl }),
fullHelp: t("upgrades.trampoline.verbose_description"),
2025-03-19 21:58:08 +01:00
},
{
requires: "",
2025-03-19 21:58:50 +01:00
threshold: 120000,
2025-03-19 21:58:08 +01:00
giftable: false,
id: "ghost_coins",
2025-04-08 08:57:41 +02:00
max: 3,
2025-03-19 21:58:08 +01:00
name: t("upgrades.ghost_coins.name"),
2025-04-09 11:28:32 +02:00
help: (lvl: number) => t("upgrades.ghost_coins.tooltip", { lvl }),
fullHelp: t("upgrades.ghost_coins.verbose_description"),
2025-03-19 21:58:08 +01:00
},
{
requires: "",
2025-03-19 21:58:50 +01:00
threshold: 125000,
2025-03-19 21:58:08 +01:00
giftable: false,
id: "forgiving",
max: 1,
name: t("upgrades.forgiving.name"),
2025-04-09 11:28:32 +02:00
help: (lvl: number) => t("upgrades.forgiving.tooltip"),
fullHelp: t("upgrades.forgiving.verbose_description"),
2025-03-19 21:58:08 +01:00
},
{
requires: "",
2025-03-19 21:58:50 +01:00
threshold: 130000,
2025-03-19 21:58:08 +01:00
giftable: false,
id: "ball_attracts_coins",
max: 3,
name: t("upgrades.ball_attracts_coins.name"),
2025-04-09 11:28:32 +02:00
help: (lvl: number) => t("upgrades.ball_attracts_coins.tooltip"),
fullHelp: t("upgrades.ball_attracts_coins.verbose_description"),
2025-03-19 21:58:08 +01:00
},
2025-03-20 21:02:51 +01:00
{
requires: "",
threshold: 135000,
// a bit too hard when starting up
2025-03-20 21:02:51 +01:00
giftable: false,
id: "reach",
2025-03-20 21:07:54 +01:00
max: 1,
2025-03-20 21:02:51 +01:00
name: t("upgrades.reach.name"),
2025-04-09 11:28:32 +02:00
help: (lvl: number) => t("upgrades.reach.tooltip", { lvl }),
fullHelp: t("upgrades.reach.verbose_description"),
2025-03-20 21:02:51 +01:00
},
2025-03-22 16:04:25 +01:00
{
requires: "",
2025-03-22 16:04:25 +01:00
threshold: 140000,
giftable: true,
2025-03-22 16:04:25 +01:00
id: "passive_income",
max: 4,
2025-03-22 16:04:25 +01:00
name: t("upgrades.passive_income.name"),
2025-03-24 10:42:48 +01:00
help: (lvl: number) =>
2025-04-09 11:28:32 +02:00
t("upgrades.passive_income.tooltip", { time: lvl * 0.25, lvl }),
fullHelp: t("upgrades.passive_income.verbose_description"),
2025-03-22 16:04:25 +01:00
},
2025-03-23 19:11:01 +01:00
{
requires: "",
threshold: 145000,
giftable: false,
id: "clairvoyant",
2025-04-04 09:45:35 +02:00
max: 1,
2025-03-23 19:11:01 +01:00
name: t("upgrades.clairvoyant.name"),
2025-04-09 11:28:32 +02:00
help: (lvl: number) => t("upgrades.clairvoyant.tooltip"),
fullHelp: t("upgrades.clairvoyant.verbose_description"),
2025-03-23 19:11:01 +01:00
},
{
requires: "",
threshold: 150000,
giftable: true,
id: "side_kick",
max: 3,
name: t("upgrades.side_kick.name"),
2025-04-09 11:28:32 +02:00
help: (lvl: number) =>
t("upgrades.side_kick.tooltip", { lvl, loss: lvl * 2 }),
fullHelp: t("upgrades.side_kick.verbose_description"),
},
2025-04-08 08:57:41 +02:00
{
requires: "",
threshold: 150000,
giftable: true,
id: "side_flip",
max: 3,
name: t("upgrades.side_flip.name"),
2025-04-09 11:28:32 +02:00
help: (lvl: number) =>
t("upgrades.side_flip.tooltip", { lvl, loss: lvl * 2 }),
fullHelp: t("upgrades.side_flip.verbose_description"),
2025-04-08 08:57:41 +02:00
},
{
requires: "",
threshold: 155000,
giftable: false,
id: "implosions",
max: 1,
name: t("upgrades.implosions.name"),
2025-04-09 11:28:32 +02:00
help: (lvl: number) => t("upgrades.implosions.tooltip"),
fullHelp: t("upgrades.implosions.verbose_description"),
},
{
requires: "",
threshold: 160000,
giftable: false,
id: "corner_shot",
max: 1,
name: t("upgrades.corner_shot.name"),
2025-04-09 11:28:32 +02:00
help: (lvl: number) => t("upgrades.corner_shot.tooltip"),
fullHelp: t("upgrades.corner_shot.verbose_description"),
},
{
requires: "",
threshold: 165000,
giftable: false,
id: "addiction",
max: 7,
name: t("upgrades.addiction.name"),
help: (lvl: number) =>
2025-04-09 11:28:32 +02:00
t("upgrades.addiction.tooltip", { lvl, delay: (5 / lvl).toFixed(2) }),
fullHelp: t("upgrades.addiction.verbose_description"),
},
2025-04-03 21:59:01 +02:00
{
requires: "",
threshold: 170000,
giftable: false,
id: "fountain_toss",
max: 7,
name: t("upgrades.fountain_toss.name"),
help: (lvl: number) =>
2025-04-09 11:28:32 +02:00
t("upgrades.fountain_toss.tooltip", { lvl, max: lvl * 30 }),
fullHelp: t("upgrades.fountain_toss.verbose_description"),
2025-04-03 21:59:01 +02:00
},
2025-04-06 15:38:30 +02:00
{
requires: "",
threshold: 175000,
giftable: false,
id: "limitless",
max: 1,
name: t("upgrades.limitless.name"),
2025-04-09 11:28:32 +02:00
help: (lvl: number) => t("upgrades.limitless.tooltip", { lvl }),
fullHelp: t("upgrades.limitless.verbose_description"),
2025-04-07 14:08:48 +02:00
},
2025-04-08 08:57:41 +02:00
{
requires: "",
threshold: 180000,
giftable: false,
id: "minefield",
max: 3,
name: t("upgrades.minefield.name"),
2025-04-09 11:28:32 +02:00
help: (lvl: number) => t("upgrades.minefield.tooltip", { lvl }),
fullHelp: t("upgrades.minefield.verbose_description"),
2025-04-08 08:57:41 +02:00
},
2025-04-10 14:49:28 +02:00
{
requires: "",
threshold: 185000,
giftable: false,
id: "trickledown",
max: 1,
name: t("upgrades.trickledown.name"),
help: (lvl: number) => t("upgrades.trickledown.tooltip", { lvl }),
fullHelp: t("upgrades.trickledown.verbose_description"),
},
{
requires: "",
threshold: 190000,
giftable: false,
id: "transparency",
max: 3,
name: t("upgrades.transparency.name"),
help: (lvl: number) => t("upgrades.transparency.tooltip", { lvl }),
fullHelp: t("upgrades.transparency.verbose_description"),
},
2025-04-10 15:27:38 +02:00
{
requires: "",
threshold: 195000,
giftable: false,
id: "superhot",
max: 3,
name: t("upgrades.superhot.name"),
help: (lvl: number) => t("upgrades.superhot.tooltip", { lvl }),
fullHelp: t("upgrades.superhot.verbose_description"),
},
] as const;