Adjustments for looping

This commit is contained in:
Renan LE CARO 2025-03-29 15:00:44 +01:00
parent e08c1e7b9e
commit da89cdb647
10 changed files with 2565 additions and 2596 deletions

View file

@ -23,7 +23,12 @@ Allow players to loop the game :
- unlock all upgrades in loop 1+ - unlock all upgrades in loop 1+
Hard to scale : Hard to scale :
- - concave_puck
- instant_upgrade
- etherealcoins (0 grav, maybe then start floting like helium ? maybe less viscosity)
- shocks (maybe spawn balls during the explosion ? maybe bigger explosions for this)
- ghost_coins : pass through bricks will less friction ?
- clairvoyant
# Todo # Todo
@ -96,6 +101,7 @@ There's also an easy mode for kids (slower ball).
# Easy perks ideas # Easy perks ideas
- fast pause : pause delay divided by {{lvl}} (helps with teleport)
- [colin] Capital - les vies non perdues à la fin du niveau rapportent un bonus de points - [colin] Capital - les vies non perdues à la fin du niveau rapportent un bonus de points
- ban 3 random perks from pool, gain 2 upgrades - ban 3 random perks from pool, gain 2 upgrades
- faster coins, double value - faster coins, double value

105
dist/index.html vendored

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -3876,7 +3876,7 @@
</translations> </translations>
</concept_node> </concept_node>
<concept_node> <concept_node>
<name>help</name> <name>help_l1</name>
<description/> <description/>
<comment/> <comment/>
<translations> <translations>
@ -3890,6 +3890,21 @@
</translation> </translation>
</translations> </translations>
</concept_node> </concept_node>
<concept_node>
<name>help_over</name>
<description/>
<comment/>
<translations>
<translation>
<language>en-US</language>
<approved>false</approved>
</translation>
<translation>
<language>fr-FR</language>
<approved>false</approved>
</translation>
</translations>
</concept_node>
<concept_node> <concept_node>
<name>name</name> <name>name</name>
<description/> <description/>

View file

@ -40,7 +40,7 @@
"level_up.unlocked_perk": " (Perk)", "level_up.unlocked_perk": " (Perk)",
"level_up.upgrade_perk_to_level": " lvl {{level}}", "level_up.upgrade_perk_to_level": " lvl {{level}}",
"loop.converted_rerolls": "Your {{n}} leftover re-rolls where converted to +{{n}} base combo.", "loop.converted_rerolls": "Your {{n}} leftover re-rolls where converted to +{{n}} base combo.",
"loop.instructions": "All perks you have now will be banned for the rest of the run, except the one that you pick below. ", "loop.instructions": "All perks you have now will be banned for the rest of the run, except the one that you pick below. Your pick will be leveled up, even beyond the maximum normally allowed for that perk.",
"loop.no_rerolls": "You didn't have any leftover re-rolls, so your base combo stayed the same. ", "loop.no_rerolls": "You didn't have any leftover re-rolls, so your base combo stayed the same. ",
"loop.title": "Starting loop {{loop}}", "loop.title": "Starting loop {{loop}}",
"main_menu.basic": "Basic graphics", "main_menu.basic": "Basic graphics",
@ -197,7 +197,7 @@
"upgrades.implosions.help": "Explosions suck coins in instead of blowing them out", "upgrades.implosions.help": "Explosions suck coins in instead of blowing them out",
"upgrades.implosions.name": "Implosions", "upgrades.implosions.name": "Implosions",
"upgrades.instant_upgrade.fullHelp": "Immediately pick two upgrades, so that you get one free one and one to repay the one used to get this perk. Every further menu to pick upgrades will have fewer options to choose from.", "upgrades.instant_upgrade.fullHelp": "Immediately pick two upgrades, so that you get one free one and one to repay the one used to get this perk. Every further menu to pick upgrades will have fewer options to choose from.",
"upgrades.instant_upgrade.help": "-1 choice until run end.", "upgrades.instant_upgrade.help": "-{{lvl}} choice until run end.",
"upgrades.instant_upgrade.name": "+2 upgrades now", "upgrades.instant_upgrade.name": "+2 upgrades now",
"upgrades.left_is_lava.fullHelp": "Whenever you break a brick, your combo will increase by one, so you'll get one more coin from all the next bricks you break.\n\nHowever, your combo will reset as soon as your ball hits the left side . \n\nAs soon as your combo rises, the left side becomes red to remind you that you should avoid hitting them. \n\nThe effect stacks with other combo perks, combo rises faster with more upgrades but will also reset if any of the reset conditions are met.", "upgrades.left_is_lava.fullHelp": "Whenever you break a brick, your combo will increase by one, so you'll get one more coin from all the next bricks you break.\n\nHowever, your combo will reset as soon as your ball hits the left side . \n\nAs soon as your combo rises, the left side becomes red to remind you that you should avoid hitting them. \n\nThe effect stacks with other combo perks, combo rises faster with more upgrades but will also reset if any of the reset conditions are met.",
"upgrades.left_is_lava.help": "+{{lvl}} combo per brick broken, resets on left side hit", "upgrades.left_is_lava.help": "+{{lvl}} combo per brick broken, resets on left side hit",
@ -212,8 +212,8 @@
"upgrades.nbricks.help": "Hit exactly {{lvl}} bricks per puck bounce for +{{lvl}} combo, otherwise it resets", "upgrades.nbricks.help": "Hit exactly {{lvl}} bricks per puck bounce for +{{lvl}} combo, otherwise it resets",
"upgrades.nbricks.name": "Strict sample size", "upgrades.nbricks.name": "Strict sample size",
"upgrades.one_more_choice.fullHelp": "Every upgrade menu will have one more option. Doesn't increase the number of upgrades you can pick.", "upgrades.one_more_choice.fullHelp": "Every upgrade menu will have one more option. Doesn't increase the number of upgrades you can pick.",
"upgrades.one_more_choice.help": "Further level ups will offer one more option in the list", "upgrades.one_more_choice.help": "Further level ups will offer {{lvl}} more option(s) in the list",
"upgrades.one_more_choice.name": "+1 choice until run end", "upgrades.one_more_choice.name": "+1 choice",
"upgrades.passive_income.fullHelp": "Some perks can help the balls do what you want without needing to do anything.", "upgrades.passive_income.fullHelp": "Some perks can help the balls do what you want without needing to do anything.",
"upgrades.passive_income.help": "+{{lvl}} combo / brick, unless the puck moved in the last {{time}}s, then it resets instead", "upgrades.passive_income.help": "+{{lvl}} combo / brick, unless the puck moved in the last {{time}}s, then it resets instead",
"upgrades.passive_income.name": "Passive income", "upgrades.passive_income.name": "Passive income",
@ -234,13 +234,14 @@
"upgrades.reach.help": "+{{lvl}} combo / bricks , lowest brick of a pile resets combo", "upgrades.reach.help": "+{{lvl}} combo / bricks , lowest brick of a pile resets combo",
"upgrades.reach.name": "Top down", "upgrades.reach.name": "Top down",
"upgrades.respawn.fullHelp": "Some particle effect will let you know where bricks will appear. ", "upgrades.respawn.fullHelp": "Some particle effect will let you know where bricks will appear. ",
"upgrades.respawn.help": "{{percent}} of bricks re-spawn after {{lvl}}s.", "upgrades.respawn.help": "{{percent}} of bricks re-spawn after {{delay}}s.",
"upgrades.respawn.name": "Re-spawn", "upgrades.respawn.name": "Re-spawn",
"upgrades.right_is_lava.fullHelp": "Whenever you break a brick, your combo will increase by one, so you'll get one more coin from all the next bricks you break.\n\nHowever, your combo will reset as soon as your ball hits the right side . \n\nAs soon as your combo rises, the right side becomes red to remind you that you should avoid hitting them\n\nThe effect stacks with other combo perks, combo rises faster with more upgrades but will also reset if any\nof the reset conditions are met.", "upgrades.right_is_lava.fullHelp": "Whenever you break a brick, your combo will increase by one, so you'll get one more coin from all the next bricks you break.\n\nHowever, your combo will reset as soon as your ball hits the right side . \n\nAs soon as your combo rises, the right side becomes red to remind you that you should avoid hitting them\n\nThe effect stacks with other combo perks, combo rises faster with more upgrades but will also reset if any\nof the reset conditions are met.",
"upgrades.right_is_lava.help": "+{{lvl}} combo per brick broken, resets on right side hit", "upgrades.right_is_lava.help": "+{{lvl}} combo per brick broken, resets on right side hit",
"upgrades.right_is_lava.name": "Avoid right side", "upgrades.right_is_lava.name": "Avoid right side",
"upgrades.sacrifice.fullHelp": "This might get the combo pretty high", "upgrades.sacrifice.fullHelp": "This might get the combo pretty high",
"upgrades.sacrifice.help": "Loosing a life clears all bricks", "upgrades.sacrifice.help_l1": "Loosing a life clears all bricks",
"upgrades.sacrifice.help_over": "Loosing a life {{lvl}}x the combo then clears all bricks",
"upgrades.sacrifice.name": "Sacrifice", "upgrades.sacrifice.name": "Sacrifice",
"upgrades.sapper.fullHelp": "Instead of just disappearing, the first brick you break will be replaced by a bomb brick. \n\nBouncing the ball on the puck re-arms the effect. \n\nLeveling-up this perk will allow you to place more bombs.\n\nRemember that bombs impact the velocity of nearby coins, so too many explosions could make it hard to catch the fruits of your hard work.", "upgrades.sapper.fullHelp": "Instead of just disappearing, the first brick you break will be replaced by a bomb brick. \n\nBouncing the ball on the puck re-arms the effect. \n\nLeveling-up this perk will allow you to place more bombs.\n\nRemember that bombs impact the velocity of nearby coins, so too many explosions could make it hard to catch the fruits of your hard work.",
"upgrades.sapper.help": "The first brick broken becomes a bomb.", "upgrades.sapper.help": "The first brick broken becomes a bomb.",
@ -300,6 +301,6 @@
"upgrades.yoyo.help": "Ball falls toward puck", "upgrades.yoyo.help": "Ball falls toward puck",
"upgrades.yoyo.name": "Yo-yo", "upgrades.yoyo.name": "Yo-yo",
"upgrades.zen.fullHelp": "After all, this is a non-violent game", "upgrades.zen.fullHelp": "After all, this is a non-violent game",
"upgrades.zen.help": "+1 combo per bricks, reset when there's an explosion", "upgrades.zen.help": "+{{lvl}} combo per bricks, reset when there's an explosion",
"upgrades.zen.name": "Zen" "upgrades.zen.name": "Zen"
} }

View file

@ -40,7 +40,7 @@
"level_up.unlocked_perk": " (Amélioration)", "level_up.unlocked_perk": " (Amélioration)",
"level_up.upgrade_perk_to_level": " niveau {{level}}", "level_up.upgrade_perk_to_level": " niveau {{level}}",
"loop.converted_rerolls": "Vos {{n}} relances restantes ont été converties en +{{n}} combo de base.", "loop.converted_rerolls": "Vos {{n}} relances restantes ont été converties en +{{n}} combo de base.",
"loop.instructions": "Tous vos avantages seront bannis pour la suite de la partie, sauf celui que vous choisirez ci-dessous.", "loop.instructions": "Tous vos avantages seront bannis pour la suite de la partie, sauf celui que vous choisirez ci-dessous. Votre choix sera augmenté d'un niveau, mêmes au delà de la limite normalement appliquée.",
"loop.no_rerolls": "Vous n'aviez plus de re-rolls, donc votre combo de base est resté le même.", "loop.no_rerolls": "Vous n'aviez plus de re-rolls, donc votre combo de base est resté le même.",
"loop.title": "Début de la boucle n°{{loop}}", "loop.title": "Début de la boucle n°{{loop}}",
"main_menu.basic": "Graphismes simplifiés", "main_menu.basic": "Graphismes simplifiés",
@ -197,7 +197,7 @@
"upgrades.implosions.help": "Les explosions aspirent les pièces au lieu de les faire exploser.", "upgrades.implosions.help": "Les explosions aspirent les pièces au lieu de les faire exploser.",
"upgrades.implosions.name": "Implosions", "upgrades.implosions.name": "Implosions",
"upgrades.instant_upgrade.fullHelp": "Choisissez immédiatement deux améliorations, afin d'en obtenir une gratuite et une autre pour rembourser celle utilisée pour obtenir cet avantage. Chaque fois que vous choisirez des améliorations dans le menu suivant, vous aurez moins de choix.", "upgrades.instant_upgrade.fullHelp": "Choisissez immédiatement deux améliorations, afin d'en obtenir une gratuite et une autre pour rembourser celle utilisée pour obtenir cet avantage. Chaque fois que vous choisirez des améliorations dans le menu suivant, vous aurez moins de choix.",
"upgrades.instant_upgrade.help": "-1 choix jusqu'à la fin de la course.", "upgrades.instant_upgrade.help": "-{{lvl}} choix jusqu'à la fin de la course.",
"upgrades.instant_upgrade.name": "+2 améliorations maintenant", "upgrades.instant_upgrade.name": "+2 améliorations maintenant",
"upgrades.left_is_lava.fullHelp": "Chaque fois que vous cassez une brique, votre combo augmente d'une unité, ce qui vous permet d'obtenir une pièce de plus à chaque fois que vous cassez une brique.\n\nCependant, votre combinaison se réinitialise dès que votre balle touche le côté gauche.\n\nDès que votre combo augmente, le côté gauche devient rouge pour vous rappeler que vous devez éviter de le frapper.\n\nL'effet se cumule avec d'autres avantages de combo, le combo augmente plus rapidement avec plus d'améliorations, mais il se réinitialise également si l'une ou l'autre des conditions de réinitialisation est remplie. ", "upgrades.left_is_lava.fullHelp": "Chaque fois que vous cassez une brique, votre combo augmente d'une unité, ce qui vous permet d'obtenir une pièce de plus à chaque fois que vous cassez une brique.\n\nCependant, votre combinaison se réinitialise dès que votre balle touche le côté gauche.\n\nDès que votre combo augmente, le côté gauche devient rouge pour vous rappeler que vous devez éviter de le frapper.\n\nL'effet se cumule avec d'autres avantages de combo, le combo augmente plus rapidement avec plus d'améliorations, mais il se réinitialise également si l'une ou l'autre des conditions de réinitialisation est remplie. ",
"upgrades.left_is_lava.help": "+{{lvl}} combo par brique, RAZ en touchant le bord gauche", "upgrades.left_is_lava.help": "+{{lvl}} combo par brique, RAZ en touchant le bord gauche",
@ -212,8 +212,8 @@
"upgrades.nbricks.help": "Frappez exactement {{lvl}} briques par rebond pour +{{lvl}} combo, sinon RAZ", "upgrades.nbricks.help": "Frappez exactement {{lvl}} briques par rebond pour +{{lvl}} combo, sinon RAZ",
"upgrades.nbricks.name": "Prélèvement", "upgrades.nbricks.name": "Prélèvement",
"upgrades.one_more_choice.fullHelp": "Chaque menu d'amélioration comportera une option supplémentaire. Cela n'augmente pas le nombre d'améliorations que vous pouvez choisir, mais vous aide à créer le profile idéal. ", "upgrades.one_more_choice.fullHelp": "Chaque menu d'amélioration comportera une option supplémentaire. Cela n'augmente pas le nombre d'améliorations que vous pouvez choisir, mais vous aide à créer le profile idéal. ",
"upgrades.one_more_choice.help": "Les niveaux suivants offriront une option supplémentaire dans la liste d'améliorations.", "upgrades.one_more_choice.help": "Les niveaux suivants offriront {{lvl}} option(s) supplémentaire(s) dans la liste d'améliorations.",
"upgrades.one_more_choice.name": "+1 choix jusqu'à la fin de la course", "upgrades.one_more_choice.name": "+1 choix",
"upgrades.passive_income.fullHelp": "Certaines amélioration font bouger les balles sans avoir besoin de mettre le palet en mouvement.", "upgrades.passive_income.fullHelp": "Certaines amélioration font bouger les balles sans avoir besoin de mettre le palet en mouvement.",
"upgrades.passive_income.help": "+{{lvl}} combo / brique, sauf si le palet à bougé dans les {{time}} dernières secondes, RAZ dans ce cas", "upgrades.passive_income.help": "+{{lvl}} combo / brique, sauf si le palet à bougé dans les {{time}} dernières secondes, RAZ dans ce cas",
"upgrades.passive_income.name": "Revenu passif", "upgrades.passive_income.name": "Revenu passif",
@ -234,20 +234,21 @@
"upgrades.reach.help": "+{{lvl}} combo / brique, la plus basse d'une colonne RAZ le combo", "upgrades.reach.help": "+{{lvl}} combo / brique, la plus basse d'une colonne RAZ le combo",
"upgrades.reach.name": "Attaque aérienne", "upgrades.reach.name": "Attaque aérienne",
"upgrades.respawn.fullHelp": "Des effets de particules vous indiqueront où les briques apparaîtront. ", "upgrades.respawn.fullHelp": "Des effets de particules vous indiqueront où les briques apparaîtront. ",
"upgrades.respawn.help": "{{percent}} des briques réapparaissent après {{lvl}}s.", "upgrades.respawn.help": "{{percent}} des briques réapparaissent après {{delay}}s.",
"upgrades.respawn.name": "Réapparition ", "upgrades.respawn.name": "Réapparition ",
"upgrades.right_is_lava.fullHelp": "Chaque fois que vous cassez une brique, votre combo augmente d'une unité, ce qui vous permet d'obtenir une pièce de plus à chaque fois que vous cassez les briques suivantes.\n\nCependant, votre combinaison se réinitialise dès que votre balle touche le côté droit de la zone de jeu.\n\nDès que votre combo augmente, le côté droit devient rouge pour vous rappeler que vous devez éviter de le frapper.\n\nL'effet se cumule avec d'autres avantages de combo, le combo augmente plus rapidement avec plus d'améliorations, mais il se réinitialise également si l'une des conditions de réinitialisation est remplie.", "upgrades.right_is_lava.fullHelp": "Chaque fois que vous cassez une brique, votre combo augmente d'une unité, ce qui vous permet d'obtenir une pièce de plus à chaque fois que vous cassez les briques suivantes.\n\nCependant, votre combinaison se réinitialise dès que votre balle touche le côté droit de la zone de jeu.\n\nDès que votre combo augmente, le côté droit devient rouge pour vous rappeler que vous devez éviter de le frapper.\n\nL'effet se cumule avec d'autres avantages de combo, le combo augmente plus rapidement avec plus d'améliorations, mais il se réinitialise également si l'une des conditions de réinitialisation est remplie.",
"upgrades.right_is_lava.help": "+{{lvl}} combo par brique, RAZ en cas de choc avec le coté droit", "upgrades.right_is_lava.help": "+{{lvl}} combo par brique, RAZ en cas de choc avec le coté droit",
"upgrades.right_is_lava.name": "Éviter le côté droit", "upgrades.right_is_lava.name": "Éviter le côté droit",
"upgrades.sacrifice.fullHelp": "Le combo pourrait monter assez haut ", "upgrades.sacrifice.fullHelp": "Le combo pourrait monter assez haut ",
"upgrades.sacrifice.help": "Perdre une vie détruit toutes les briques", "upgrades.sacrifice.help_l1": "Perdre une vie détruit toutes les briques",
"upgrades.sacrifice.help_over": "Perdre une vie multiplie le combo par {{lvl}} puis détruit toutes les briques à l'écran",
"upgrades.sacrifice.name": "Sacrifice", "upgrades.sacrifice.name": "Sacrifice",
"upgrades.sapper.fullHelp": "Au lieu de disparaître, la première brique cassée est remplacée par une bombe. Faire rebondir la balle sur le palet réarme l'effet. En montant en niveau, vous pourrez placer plus de bombes. N'oubliez pas que les bombes ont un impact sur la vitesse des pièces à proximité. Trop d'explosions peuvent rendre difficile la récupération des fruits de votre dur labeur.", "upgrades.sapper.fullHelp": "Au lieu de disparaître, la première brique cassée est remplacée par une bombe. Faire rebondir la balle sur le palet réarme l'effet. En montant en niveau, vous pourrez placer plus de bombes. N'oubliez pas que les bombes ont un impact sur la vitesse des pièces à proximité. Trop d'explosions peuvent rendre difficile la récupération des fruits de votre dur labeur.",
"upgrades.sapper.help": "La première brique cassée devient une bombe.", "upgrades.sapper.help": "La première brique cassée devient une bombe.",
"upgrades.sapper.help_plural": "Les premières briques {{lvl}} cassées deviennent des bombes.", "upgrades.sapper.help_plural": "Les premières briques {{lvl}} cassées deviennent des bombes.",
"upgrades.sapper.name": "Sapeur", "upgrades.sapper.name": "Sapeur",
"upgrades.shocks.fullHelp": "Un peu comme jouer au billard avec des grenades", "upgrades.shocks.fullHelp": "Un peu comme jouer au billard avec des grenades",
"upgrades.shocks.help": "Collision explosive entre balles", "upgrades.shocks.help": "Collision explosive entre les balles",
"upgrades.shocks.name": "Choc", "upgrades.shocks.name": "Choc",
"upgrades.shunt.fullHelp": "Démarrage à chaud sera simplement ajouté au combo actuel", "upgrades.shunt.fullHelp": "Démarrage à chaud sera simplement ajouté au combo actuel",
"upgrades.shunt.help": "Garer {{percent}}% du combo au changement de niveau ", "upgrades.shunt.help": "Garer {{percent}}% du combo au changement de niveau ",
@ -300,6 +301,6 @@
"upgrades.yoyo.help": "La balle descend vers le palet", "upgrades.yoyo.help": "La balle descend vers le palet",
"upgrades.yoyo.name": "Yo-yo", "upgrades.yoyo.name": "Yo-yo",
"upgrades.zen.fullHelp": "C'est quand même un jeu non violent à la base", "upgrades.zen.fullHelp": "C'est quand même un jeu non violent à la base",
"upgrades.zen.help": "+1 combo par brique, jusqu'à ce qu'il y ait une explosion", "upgrades.zen.help": "+{{lvl}} combo par brique, jusqu'à ce qu'il y ait une explosion",
"upgrades.zen.name": "Zen" "upgrades.zen.name": "Zen"
} }

View file

@ -71,6 +71,7 @@ export function newGameState(params: RunParams): GameState {
particles: { indexMin: 0, total: 0, list: [] }, particles: { indexMin: 0, total: 0, list: [] },
texts: { indexMin: 0, total: 0, list: [] }, texts: { indexMin: 0, total: 0, list: [] },
coins: { indexMin: 0, total: 0, list: [] }, coins: { indexMin: 0, total: 0, list: [] },
respawns: { indexMin: 0, total: 0, list: [] },
levelStartScore: 0, levelStartScore: 0,
levelMisses: 0, levelMisses: 0,
levelSpawnedCoins: 0, levelSpawnedCoins: 0,

7
src/types.d.ts vendored
View file

@ -102,8 +102,6 @@ export type Ball = {
hitSinceBounce: number; hitSinceBounce: number;
// Brick was really broken ,but could have been respawned as a bomb // Brick was really broken ,but could have been respawned as a bomb
brokenSinceBounce: number; brokenSinceBounce: number;
// Bricks that have been destroyed (and not replaced by something else)
hitItem: { index: number; color: string }[];
sapperUses: number; sapperUses: number;
destroyed?: boolean; destroyed?: boolean;
}; };
@ -238,6 +236,11 @@ export type GameState = {
texts: ReusableArray<TextFlash>; texts: ReusableArray<TextFlash>;
lights: ReusableArray<LightFlash>; lights: ReusableArray<LightFlash>;
coins: ReusableArray<Coin>; coins: ReusableArray<Coin>;
// Bricks that should respawn destroyed
respawns: ReusableArray<{ index: number; color: string ; time:number;
destroyed?: boolean;}>;
levelStartScore: number; levelStartScore: number;
levelMisses: number; levelMisses: number;
levelSpawnedCoins: number; levelSpawnedCoins: number;

View file

@ -367,7 +367,7 @@ export const rawUpgrades = [
max: 4, max: 4,
name: t("upgrades.respawn.name"), name: t("upgrades.respawn.name"),
help: (lvl: number) => help: (lvl: number) =>
t("upgrades.respawn.help",{percent:Math.floor(100*comboKeepingRate(lvl)),lvl}), t("upgrades.respawn.help",{percent:Math.floor(100*comboKeepingRate(lvl)),delay:(3/lvl).toFixed(2)}),
fullHelp: t("upgrades.respawn.fullHelp"), fullHelp: t("upgrades.respawn.fullHelp"),
}, },
{ {
@ -377,7 +377,7 @@ export const rawUpgrades = [
id: "one_more_choice", id: "one_more_choice",
max: 3, max: 3,
name: t("upgrades.one_more_choice.name"), name: t("upgrades.one_more_choice.name"),
help: (lvl: number) => t("upgrades.one_more_choice.help"), help: (lvl: number) => t("upgrades.one_more_choice.help", {lvl}),
fullHelp: t("upgrades.one_more_choice.fullHelp"), fullHelp: t("upgrades.one_more_choice.fullHelp"),
}, },
{ {
@ -389,12 +389,11 @@ export const rawUpgrades = [
max: 2, max: 2,
adventure: false, adventure: false,
name: t("upgrades.instant_upgrade.name"), name: t("upgrades.instant_upgrade.name"),
help: (lvl: number) => t("upgrades.instant_upgrade.help"), help: (lvl: number) => t("upgrades.instant_upgrade.help",{lvl}),
fullHelp: t("upgrades.instant_upgrade.fullHelp"), fullHelp: t("upgrades.instant_upgrade.fullHelp"),
}, },
{ {
requires: "", requires: "",
threshold: 60000, threshold: 60000,
giftable: false, giftable: false,
id: "concave_puck", id: "concave_puck",
@ -494,13 +493,12 @@ export const rawUpgrades = [
}, },
{ {
requires: "", requires: "",
threshold: 105000, threshold: 105000,
giftable: true, giftable: true,
id: "zen", id: "zen",
max: 1, max: 1,
name: t("upgrades.zen.name"), name: t("upgrades.zen.name"),
help: (lvl: number) => t("upgrades.zen.help"), help: (lvl: number) => t("upgrades.zen.help",{lvl}),
fullHelp: t("upgrades.zen.fullHelp"), fullHelp: t("upgrades.zen.fullHelp"),
}, },
{ {
@ -510,7 +508,10 @@ export const rawUpgrades = [
id: "sacrifice", id: "sacrifice",
max: 1, max: 1,
name: t("upgrades.sacrifice.name"), name: t("upgrades.sacrifice.name"),
help: (lvl: number) => t("upgrades.sacrifice.help"), help: (lvl: number) =>
lvl==1 ?
t("upgrades.sacrifice.help_l1"):
t("upgrades.sacrifice.help_over",{lvl}),
fullHelp: t("upgrades.sacrifice.fullHelp"), fullHelp: t("upgrades.sacrifice.fullHelp"),
}, },
@ -558,7 +559,6 @@ export const rawUpgrades = [
}, },
{ {
requires: "", requires: "",
threshold: 135000, threshold: 135000,
// a bit too hard when starting up // a bit too hard when starting up
giftable: false, giftable: false,
@ -582,12 +582,10 @@ export const rawUpgrades = [
}, },
{ {
requires: "", requires: "",
threshold: 145000, threshold: 145000,
giftable: false, giftable: false,
id: "clairvoyant", id: "clairvoyant",
max: 1, max: 1,
// TODO update for adventure mode
name: t("upgrades.clairvoyant.name"), name: t("upgrades.clairvoyant.name"),
help: (lvl: number) => t("upgrades.clairvoyant.help"), help: (lvl: number) => t("upgrades.clairvoyant.help"),
fullHelp: t("upgrades.clairvoyant.fullHelp"), fullHelp: t("upgrades.clairvoyant.fullHelp"),
@ -605,7 +603,6 @@ export const rawUpgrades = [
}, },
{ {
requires: "", requires: "",
threshold: 155000, threshold: 155000,
giftable: false, giftable: false,
id: "implosions", id: "implosions",