Build 29071489

This commit is contained in:
Renan LE CARO 2025-04-10 14:49:28 +02:00
parent 16880533dd
commit 9ae649743c
25 changed files with 367 additions and 10873 deletions

View file

@ -27,11 +27,16 @@ Some upgrades currently are not really useful
# Changelog # Changelog
## To do ## To do
## Done
- transparency : ball becomes transparent towards top of screen, +50% coins.
- space coins : coins bounce without loosing momentum
- trickledown : coins spawn at the top of the screen
- unlocked content : start with perk icon as level
- allow removing all starting perks, to get full random
- rename "puck" into paddle - rename "puck" into paddle
- use french as base language to keep consistent formal/informal tone - use french as base language to keep consistent formal/informal tone
## Done
## 29069860 ## 29069860
- when rendering level icons, always use transparent background - when rendering level icons, always use transparent background

View file

@ -29,8 +29,8 @@ android {
applicationId = "me.lecaro.breakout" applicationId = "me.lecaro.breakout"
minSdk = 21 minSdk = 21
targetSdk = 34 targetSdk = 34
versionCode = 29071397 versionCode = 29071489
versionName = "29071397" versionName = "29071489"
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
vectorDrawables { vectorDrawables {
useSupportLibrary = true useSupportLibrary = true

File diff suppressed because one or more lines are too long

168
dist/index.html vendored

File diff suppressed because one or more lines are too long

View file

@ -1,5 +1,5 @@
// The version of the cache. // The version of the cache.
const VERSION = "29071397"; const VERSION = "29071489";
// The name of the cache // The name of the cache
const CACHE_NAME = `breakout-71-${VERSION}`; const CACHE_NAME = `breakout-71-${VERSION}`;

View file

@ -1362,5 +1362,19 @@
"bricks": "__________WWWWWWWWWWWgWWWWWWgWWgWrrrrWgWWWWrrbbWWWWWWrrbbWWWWgWbbbbWgWWgWWWWWWgWWWWWWWWWWW__________", "bricks": "__________WWWWWWWWWWWgWWWWWWgWWgWrrrrWgWWWWrrbbWWWWWWrrbbWWWWgWbbbbWgWWgWWWWWWgWWWWWWWWWWW__________",
"svg": null, "svg": null,
"color": "#62a0ea" "color": "#62a0ea"
},
{
"name": "icon:trickledown",
"size": 8,
"bricks": "_ytttttt_________y_y_y__tttttt____________y_y_y___tttttt_y______",
"svg": null,
"color": ""
},
{
"name": "icon:transparency",
"size": 9,
"bricks": "__W_W_W___________W_W_W_W_W_________W_W_W_W_W_________W_W_W_W_W___________W_W_W__",
"svg": null,
"color": ""
} }
] ]

View file

@ -1 +1 @@
"29071397" "29071489"

View file

@ -820,7 +820,7 @@ async function openUnlocksList() {
.map(({ name, id, threshold, icon, help }) => ({ .map(({ name, id, threshold, icon, help }) => ({
text: name, text: name,
disabled: ts < threshold, disabled: ts < threshold,
value: { perks: { [id]: 1 } } as RunParams, value: { perks: { [id]: 1 }, level: "icon:" + id } as RunParams,
icon, icon,
[hintField]: [hintField]:
ts < threshold ts < threshold

View file

@ -12,6 +12,7 @@ import {
} from "./types"; } from "./types";
import { import {
ballTransparency,
brickCenterX, brickCenterX,
brickCenterY, brickCenterY,
currentLevelInfo, currentLevelInfo,
@ -399,6 +400,14 @@ export function explodeBrick(
((2 + gameState.perks.sturdy_bricks) / 2) * coinsToSpawn, ((2 + gameState.perks.sturdy_bricks) / 2) * coinsToSpawn,
); );
} }
if (gameState.perks.transparency) {
coinsToSpawn = Math.round(
coinsToSpawn *
(1 +
(ballTransparency(ball, gameState) * gameState.perks.transparency) /
2),
);
}
gameState.levelSpawnedCoins += coinsToSpawn; gameState.levelSpawnedCoins += coinsToSpawn;
gameState.runStatistics.coins_spawned += coinsToSpawn; gameState.runStatistics.coins_spawned += coinsToSpawn;
@ -1099,9 +1108,10 @@ export function gameStateTick(
1 - 1 -
((gameState.perks.viscosity * 0.03 + 0.002) * frames) / ((gameState.perks.viscosity * 0.03 + 0.002) * frames) /
(1 + gameState.perks.etherealcoins); (1 + gameState.perks.etherealcoins);
if (!gameState.perks.etherealcoins) {
coin.vy *= ratio; coin.vy *= ratio;
coin.vx *= ratio; coin.vx *= ratio;
}
if (coin.vx > 7 * gameState.baseSpeed) coin.vx = 7 * gameState.baseSpeed; if (coin.vx > 7 * gameState.baseSpeed) coin.vx = 7 * gameState.baseSpeed;
if (coin.vx < -7 * gameState.baseSpeed) if (coin.vx < -7 * gameState.baseSpeed)
coin.vx = -7 * gameState.baseSpeed; coin.vx = -7 * gameState.baseSpeed;
@ -1191,17 +1201,18 @@ export function gameStateTick(
(!gameState.perks.ghost_coins && typeof hitBrick !== "undefined") || (!gameState.perks.ghost_coins && typeof hitBrick !== "undefined") ||
hitBorder hitBorder
) { ) {
coin.vx *= 0.8; if (!gameState.perks.etherealcoins) {
coin.vy *= 0.8; coin.vx *= 0.8;
coin.vy *= 0.8;
if (Math.abs(coin.vy) < 3) {
coin.vy = 0;
}
}
coin.sa *= 0.9; coin.sa *= 0.9;
if (speed > 20 && !coin.collidedLastFrame) { if (speed > 20 && !coin.collidedLastFrame) {
schedulGameSound(gameState, "coinBounce", coin.x, 0.2); schedulGameSound(gameState, "coinBounce", coin.x, 0.2);
} }
coin.collidedLastFrame = true; coin.collidedLastFrame = true;
if (Math.abs(coin.vy) < 3) {
coin.vy = 0;
}
} else { } else {
coin.collidedLastFrame = false; coin.collidedLastFrame = false;
} }
@ -1797,6 +1808,10 @@ function makeCoin(
let weight = 0.8 + Math.random() * 0.2 + Math.min(2, points * 0.01); let weight = 0.8 + Math.random() * 0.2 + Math.min(2, points * 0.01);
weight *= 5 / (5 + gameState.perks.etherealcoins); weight *= 5 / (5 + gameState.perks.etherealcoins);
if (gameState.perks.trickledown) {
y = -20;
}
append(gameState.coins, (p: Partial<Coin>) => { append(gameState.coins, (p: Partial<Coin>) => {
p.x = x; p.x = x;
p.y = y; p.y = y;

View file

@ -373,3 +373,12 @@ export function reasonLevelIsLocked(
}; };
} }
} }
export function ballTransparency(ball: Ball, gameState: GameState) {
return clamp(
gameState.perks.transparency * (1 - ball.y / gameState.gameZoneHeight) -
0.2,
0,
1,
);
}

View file

@ -188,7 +188,7 @@
"upgrades.corner_shot.verbose_description": "يُساعدك على التصويب في الزوايا. المستويات الأعلى تُتيح لك الوصول إلى مسافات أبعد.", "upgrades.corner_shot.verbose_description": "يُساعدك على التصويب في الزوايا. المستويات الأعلى تُتيح لك الوصول إلى مسافات أبعد.",
"upgrades.etherealcoins.name": "العملات المعدنية في الفضاء", "upgrades.etherealcoins.name": "العملات المعدنية في الفضاء",
"upgrades.etherealcoins.tooltip": "لم تعد العملات المعدنية تتأثر بالجاذبية", "upgrades.etherealcoins.tooltip": "لم تعد العملات المعدنية تتأثر بالجاذبية",
"upgrades.etherealcoins.verbose_description": "سيتعين عليك التأكد من سقوط العملات المعدنية بطريقة أو بأخرى، وإلا فلن تحصل على أي منها.", "upgrades.etherealcoins.verbose_description": "",
"upgrades.extra_levels.name": "5 دقائق إضافية", "upgrades.extra_levels.name": "5 دقائق إضافية",
"upgrades.extra_levels.tooltip": "العب {{count}} مستوى بدلاً من 7", "upgrades.extra_levels.tooltip": "العب {{count}} مستوى بدلاً من 7",
"upgrades.extra_levels.verbose_description": "يمكن أن تستمر اللعبة الافتراضية لسبعة مستويات كحد أقصى، تنتهي بعدها.\n\nيتيح لك كل مستوى من هذه الميزة الانتقال إلى مستوى أعلى. غالبًا ما تكون المستويات الأخيرة هي التي تحقق فيها أعلى النقاط، لذا قد يكون الفرق كبيرًا.", "upgrades.extra_levels.verbose_description": "يمكن أن تستمر اللعبة الافتراضية لسبعة مستويات كحد أقصى، تنتهي بعدها.\n\nيتيح لك كل مستوى من هذه الميزة الانتقال إلى مستوى أعلى. غالبًا ما تكون المستويات الأخيرة هي التي تحقق فيها أعلى النقاط، لذا قد يكون الفرق كبيرًا.",
@ -250,7 +250,7 @@
"upgrades.pierce_color.name": "ثقب اللون", "upgrades.pierce_color.name": "ثقب اللون",
"upgrades.pierce_color.tooltip": "+{{lvl}} ضرر للطوب من لون الكرة", "upgrades.pierce_color.tooltip": "+{{lvl}} ضرر للطوب من لون الكرة",
"upgrades.pierce_color.verbose_description": "كلما اصطدمت الكرة بقطعة من نفس اللون، ستمرّ دون عائق.\n\nوإذا اصطدمت بقطعة من لون مختلف، فستكسرها، وتأخذ لونها، وترتد.\n\nإذا كانت لديك قطع متينة، فقد ترتد الكرة عن قطعة من نفس اللون.", "upgrades.pierce_color.verbose_description": "كلما اصطدمت الكرة بقطعة من نفس اللون، ستمرّ دون عائق.\n\nوإذا اصطدمت بقطعة من لون مختلف، فستكسرها، وتأخذ لونها، وترتد.\n\nإذا كانت لديك قطع متينة، فقد ترتد الكرة عن قطعة من نفس اللون.",
"upgrades.puck_repulse_ball.help_plural": "", "upgrades.puck_repulse_ball.help_plural": "القوة الطاردة أكبر",
"upgrades.puck_repulse_ball.name": "هبوط ناعم", "upgrades.puck_repulse_ball.name": "هبوط ناعم",
"upgrades.puck_repulse_ball.tooltip": "القرص يصد الكرات", "upgrades.puck_repulse_ball.tooltip": "القرص يصد الكرات",
"upgrades.puck_repulse_ball.verbose_description": "عندما تقترب الكرة من القرص، فإنها تبدأ في التباطؤ، وربما ترتد دون أن تلمس القرص.", "upgrades.puck_repulse_ball.verbose_description": "عندما تقترب الكرة من القرص، فإنها تبدأ في التباطؤ، وربما ترتد دون أن تلمس القرص.",
@ -313,6 +313,9 @@
"upgrades.trampoline.name": "الترامبولين", "upgrades.trampoline.name": "الترامبولين",
"upgrades.trampoline.tooltip": "+{{lvl}} مجموعة لكل ارتداد للقرص، -{{lvl}} مجموعة لكل ارتداد على أي حدود", "upgrades.trampoline.tooltip": "+{{lvl}} مجموعة لكل ارتداد للقرص، -{{lvl}} مجموعة لكل ارتداد على أي حدود",
"upgrades.trampoline.verbose_description": "أحد ترقيات المجموعات النادرة التي لا تضيف شرط إعادة الضبط", "upgrades.trampoline.verbose_description": "أحد ترقيات المجموعات النادرة التي لا تضيف شرط إعادة الضبط",
"upgrades.trickledown.name": "الجريان السطحي",
"upgrades.trickledown.tooltip": "تظهر العملات المعدنية في الجزء العلوي من الشاشة.",
"upgrades.trickledown.verbose_description": "قد يساعدك هذا على وضع بعض العملات المعدنية جانبًا. ",
"upgrades.unbounded.help_no_ceiling": "+{{lvl}} مجموعة لكل لبنة، لا مزيد من الجوانب أو السقف", "upgrades.unbounded.help_no_ceiling": "+{{lvl}} مجموعة لكل لبنة، لا مزيد من الجوانب أو السقف",
"upgrades.unbounded.name": "غير محدود", "upgrades.unbounded.name": "غير محدود",
"upgrades.unbounded.tooltip": "+{{lvl}} مجموعة لكل لبنة، لا مزيد من الجوانب لإبقاء الكرة في اللعبة، خطر", "upgrades.unbounded.tooltip": "+{{lvl}} مجموعة لكل لبنة، لا مزيد من الجوانب لإبقاء الكرة في اللعبة، خطر",

File diff suppressed because it is too large Load diff

View file

@ -188,7 +188,7 @@
"upgrades.corner_shot.verbose_description": "Hilft beim Zielen in den Kurven. Weitere Stufen lassen Sie weiter hinausgehen.", "upgrades.corner_shot.verbose_description": "Hilft beim Zielen in den Kurven. Weitere Stufen lassen Sie weiter hinausgehen.",
"upgrades.etherealcoins.name": "Münzen, im Weltraum", "upgrades.etherealcoins.name": "Münzen, im Weltraum",
"upgrades.etherealcoins.tooltip": "Münzen werden nicht mehr von der Schwerkraft beeinflusst", "upgrades.etherealcoins.tooltip": "Münzen werden nicht mehr von der Schwerkraft beeinflusst",
"upgrades.etherealcoins.verbose_description": "Du musst dafür sorgen, dass die Münzen irgendwie herunterfallen, sonst bekommst du sie nicht.", "upgrades.etherealcoins.verbose_description": "",
"upgrades.extra_levels.name": "5 min mehr", "upgrades.extra_levels.name": "5 min mehr",
"upgrades.extra_levels.tooltip": "Spielen Sie {{count}} Stufen statt 7", "upgrades.extra_levels.tooltip": "Spielen Sie {{count}} Stufen statt 7",
"upgrades.extra_levels.verbose_description": "Das Standardspiel kann maximal 7 Stufen dauern, danach ist das Spiel vorbei.\n\nMit jeder Stufe dieses Vorteils können Sie eine Stufe höher gehen. Die letzten Level sind oft diejenigen, in denen man die meisten Punkte macht, so dass der Unterschied dramatisch sein kann.", "upgrades.extra_levels.verbose_description": "Das Standardspiel kann maximal 7 Stufen dauern, danach ist das Spiel vorbei.\n\nMit jeder Stufe dieses Vorteils können Sie eine Stufe höher gehen. Die letzten Level sind oft diejenigen, in denen man die meisten Punkte macht, so dass der Unterschied dramatisch sein kann.",
@ -250,7 +250,7 @@
"upgrades.pierce_color.name": "Farbe durchstechen", "upgrades.pierce_color.name": "Farbe durchstechen",
"upgrades.pierce_color.tooltip": "+{{lvl}} Schaden an Steinen der Farbe der Kugel", "upgrades.pierce_color.tooltip": "+{{lvl}} Schaden an Steinen der Farbe der Kugel",
"upgrades.pierce_color.verbose_description": "Wenn ein Ball auf einen gleichfarbigen Stein trifft, geht er ungehindert durch.\n\nSobald er einen andersfarbigen Stein erreicht, zerbricht er ihn, nimmt seine Farbe an und springt auf.\n\nWenn du robuste Steine hast, kann es sein, dass der Ball trotzdem an einem gleichfarbigen Stein abprallt.", "upgrades.pierce_color.verbose_description": "Wenn ein Ball auf einen gleichfarbigen Stein trifft, geht er ungehindert durch.\n\nSobald er einen andersfarbigen Stein erreicht, zerbricht er ihn, nimmt seine Farbe an und springt auf.\n\nWenn du robuste Steine hast, kann es sein, dass der Ball trotzdem an einem gleichfarbigen Stein abprallt.",
"upgrades.puck_repulse_ball.help_plural": "", "upgrades.puck_repulse_ball.help_plural": "Die Abstoßungskraft ist größer",
"upgrades.puck_repulse_ball.name": "Weiche Landung", "upgrades.puck_repulse_ball.name": "Weiche Landung",
"upgrades.puck_repulse_ball.tooltip": "Puck stößt Bälle ab", "upgrades.puck_repulse_ball.tooltip": "Puck stößt Bälle ab",
"upgrades.puck_repulse_ball.verbose_description": "Wenn ein Ball in die Nähe des Pucks kommt, wird er langsamer und springt möglicherweise sogar ab, ohne den Puck zu berühren.", "upgrades.puck_repulse_ball.verbose_description": "Wenn ein Ball in die Nähe des Pucks kommt, wird er langsamer und springt möglicherweise sogar ab, ohne den Puck zu berühren.",
@ -313,6 +313,9 @@
"upgrades.trampoline.name": "Trampolin", "upgrades.trampoline.name": "Trampolin",
"upgrades.trampoline.tooltip": "+{{lvl}} Combo pro Abprall des Pucks,-{{lvl}} Combo pro Abprall an einer beliebigen Grenze", "upgrades.trampoline.tooltip": "+{{lvl}} Combo pro Abprall des Pucks,-{{lvl}} Combo pro Abprall an einer beliebigen Grenze",
"upgrades.trampoline.verbose_description": "Eine der seltenen Combo-Upgrades, die keine Rücksetzbedingung hinzufügen", "upgrades.trampoline.verbose_description": "Eine der seltenen Combo-Upgrades, die keine Rücksetzbedingung hinzufügen",
"upgrades.trickledown.name": "Abfluss",
"upgrades.trickledown.tooltip": "Die Münzen erscheinen oben auf dem Bildschirm.",
"upgrades.trickledown.verbose_description": "Es könnte Ihnen helfen, ein paar Münzen beiseite zu legen. ",
"upgrades.unbounded.help_no_ceiling": "+{{lvl}} Combo pro Stein, keine weiteren Seiten oder Decken", "upgrades.unbounded.help_no_ceiling": "+{{lvl}} Combo pro Stein, keine weiteren Seiten oder Decken",
"upgrades.unbounded.name": "Unbegrenzt", "upgrades.unbounded.name": "Unbegrenzt",
"upgrades.unbounded.tooltip": "+{{lvl}} Combo pro Stein, keine Seiten mehr, um den Ball im Spiel zu halten, Gefahr", "upgrades.unbounded.tooltip": "+{{lvl}} Combo pro Stein, keine Seiten mehr, um den Ball im Spiel zu halten, Gefahr",

View file

@ -188,7 +188,7 @@
"upgrades.corner_shot.verbose_description": "Helps with aiming in the corners. Further levels let you go further out. ", "upgrades.corner_shot.verbose_description": "Helps with aiming in the corners. Further levels let you go further out. ",
"upgrades.etherealcoins.name": "Coins, in Space", "upgrades.etherealcoins.name": "Coins, in Space",
"upgrades.etherealcoins.tooltip": "Coins are no longer affected by gravity", "upgrades.etherealcoins.tooltip": "Coins are no longer affected by gravity",
"upgrades.etherealcoins.verbose_description": "You'll have to make sure that the coins fall down somehow, or you won't get any. ", "upgrades.etherealcoins.verbose_description": "The coins will maintain their speed even after several bounces, and will no longer be affected by gravity.",
"upgrades.extra_levels.name": "5 min more", "upgrades.extra_levels.name": "5 min more",
"upgrades.extra_levels.tooltip": "Play {{count}} levels instead of 7", "upgrades.extra_levels.tooltip": "Play {{count}} levels instead of 7",
"upgrades.extra_levels.verbose_description": "The default game can last a max of 7 levels, after which the game is over. \n\nEach level of this perk lets you go one level higher. The last levels are often the ones where you make the most score, so the difference can be dramatic.", "upgrades.extra_levels.verbose_description": "The default game can last a max of 7 levels, after which the game is over. \n\nEach level of this perk lets you go one level higher. The last levels are often the ones where you make the most score, so the difference can be dramatic.",
@ -313,6 +313,12 @@
"upgrades.trampoline.name": "Trampoline", "upgrades.trampoline.name": "Trampoline",
"upgrades.trampoline.tooltip": "+{{lvl}} combo per paddle bounce,-{{lvl}} combo per bounce on any border", "upgrades.trampoline.tooltip": "+{{lvl}} combo per paddle bounce,-{{lvl}} combo per bounce on any border",
"upgrades.trampoline.verbose_description": "One of the rare combo upgrades that don't add a reset condition", "upgrades.trampoline.verbose_description": "One of the rare combo upgrades that don't add a reset condition",
"upgrades.transparency.name": "Transparency",
"upgrades.transparency.tooltip": "The higher the ball is on the screen, the more transparent it becomes. The more transparent it is, the more coins it produces.",
"upgrades.transparency.verbose_description": "Higher levels make the ball transparent sooner and increase the point bonus.",
"upgrades.trickledown.name": "Trickle down economics",
"upgrades.trickledown.tooltip": "The coins appear at the top of the screen.",
"upgrades.trickledown.verbose_description": "It might help you put some coins aside.",
"upgrades.unbounded.help_no_ceiling": "+{{lvl}} combo per brick, no more sides or ceiling", "upgrades.unbounded.help_no_ceiling": "+{{lvl}} combo per brick, no more sides or ceiling",
"upgrades.unbounded.name": "Unbounded", "upgrades.unbounded.name": "Unbounded",
"upgrades.unbounded.tooltip": "+{{lvl}} combo per brick, no more sides to keep the ball in game, danger", "upgrades.unbounded.tooltip": "+{{lvl}} combo per brick, no more sides to keep the ball in game, danger",

View file

@ -188,7 +188,7 @@
"upgrades.corner_shot.verbose_description": "Te ayuda a apuntar a las esquinas", "upgrades.corner_shot.verbose_description": "Te ayuda a apuntar a las esquinas",
"upgrades.etherealcoins.name": "Moneda espacial", "upgrades.etherealcoins.name": "Moneda espacial",
"upgrades.etherealcoins.tooltip": "Las piezas ya no se ven afectadas por la gravedad", "upgrades.etherealcoins.tooltip": "Las piezas ya no se ven afectadas por la gravedad",
"upgrades.etherealcoins.verbose_description": "Debe estar seguro de que las piezas se caerán en algún momento.", "upgrades.etherealcoins.verbose_description": "",
"upgrades.extra_levels.name": "5 minutos más", "upgrades.extra_levels.name": "5 minutos más",
"upgrades.extra_levels.tooltip": "Juega {{count}} niveles en lugar de 7", "upgrades.extra_levels.tooltip": "Juega {{count}} niveles en lugar de 7",
"upgrades.extra_levels.verbose_description": "El juego suele durar 7 niveles, tras los cuales se acaba la partida y la puntuación que hayas alcanzado es tu puntuación del juego.\n\nElegir esta mejora te permite prolongar el juego un nivel. Los últimos niveles suelen ser en los que más puntos consigues, así que la diferencia puede ser espectacular.", "upgrades.extra_levels.verbose_description": "El juego suele durar 7 niveles, tras los cuales se acaba la partida y la puntuación que hayas alcanzado es tu puntuación del juego.\n\nElegir esta mejora te permite prolongar el juego un nivel. Los últimos niveles suelen ser en los que más puntos consigues, así que la diferencia puede ser espectacular.",
@ -313,6 +313,9 @@
"upgrades.trampoline.name": "Trampolín", "upgrades.trampoline.name": "Trampolín",
"upgrades.trampoline.tooltip": "+{{lvl}} combo cada vez que una pelota rebota en la raqueta,-{{lvl}} combo cada vez que una pelota rebota en uno de los bordes", "upgrades.trampoline.tooltip": "+{{lvl}} combo cada vez que una pelota rebota en la raqueta,-{{lvl}} combo cada vez que una pelota rebota en uno de los bordes",
"upgrades.trampoline.verbose_description": "Una de las pocas mejoras que no tiene una condición de reinicio", "upgrades.trampoline.verbose_description": "Una de las pocas mejoras que no tiene una condición de reinicio",
"upgrades.trickledown.name": "Escorrentía",
"upgrades.trickledown.tooltip": "Las monedas aparecen en la parte superior de la pantalla.",
"upgrades.trickledown.verbose_description": "Podría ayudarte a ahorrar algunas monedas. ",
"upgrades.unbounded.help_no_ceiling": "+{{lvl}} combo por ladrillo, más lados o techo", "upgrades.unbounded.help_no_ceiling": "+{{lvl}} combo por ladrillo, más lados o techo",
"upgrades.unbounded.name": "Liberado, entregado", "upgrades.unbounded.name": "Liberado, entregado",
"upgrades.unbounded.tooltip": "+{{lvl}} combo por ladrillo, más lados para mantener la pelota en juego, peligro", "upgrades.unbounded.tooltip": "+{{lvl}} combo por ladrillo, más lados para mantener la pelota en juego, peligro",

View file

@ -187,8 +187,8 @@
"upgrades.corner_shot.tooltip": "Laisse votre raquette sortir de la zone encadrée", "upgrades.corner_shot.tooltip": "Laisse votre raquette sortir de la zone encadrée",
"upgrades.corner_shot.verbose_description": "Aide à viser dans les coins", "upgrades.corner_shot.verbose_description": "Aide à viser dans les coins",
"upgrades.etherealcoins.name": "Monnaie spatiale ", "upgrades.etherealcoins.name": "Monnaie spatiale ",
"upgrades.etherealcoins.tooltip": "Les pièces ne subissent plus la gravité", "upgrades.etherealcoins.tooltip": "Les pièces ne subissent plus la gravité ou la friction",
"upgrades.etherealcoins.verbose_description": "Il faudrait vous assurer que les pièces tomberont bien quand même à un moment.", "upgrades.etherealcoins.verbose_description": "Les pièces garderont leur vitesse même après plusieurs rebonds, et ne subirons plus la gravité. ",
"upgrades.extra_levels.name": "Encore 5 minutes", "upgrades.extra_levels.name": "Encore 5 minutes",
"upgrades.extra_levels.tooltip": "Jouer {{count}} niveaux au lieu de 7", "upgrades.extra_levels.tooltip": "Jouer {{count}} niveaux au lieu de 7",
"upgrades.extra_levels.verbose_description": "La partie dure normalement 7 niveaux, après quoi le jeu est terminé et le score que vous avez atteint est votre score de partie.\n\nChoisir cette amélioration vous permet de prolonger la partie d'un niveau. Les derniers niveaux sont souvent ceux où vous faites le plus de points, la différence peut donc être spectaculaire.", "upgrades.extra_levels.verbose_description": "La partie dure normalement 7 niveaux, après quoi le jeu est terminé et le score que vous avez atteint est votre score de partie.\n\nChoisir cette amélioration vous permet de prolonger la partie d'un niveau. Les derniers niveaux sont souvent ceux où vous faites le plus de points, la différence peut donc être spectaculaire.",
@ -313,6 +313,12 @@
"upgrades.trampoline.name": "Trampoline", "upgrades.trampoline.name": "Trampoline",
"upgrades.trampoline.tooltip": "+{{lvl}} combo à chaque rebond d'une balle sur la raquette,-{{lvl}} combo à chaque rebond sur un des bords", "upgrades.trampoline.tooltip": "+{{lvl}} combo à chaque rebond d'une balle sur la raquette,-{{lvl}} combo à chaque rebond sur un des bords",
"upgrades.trampoline.verbose_description": "Une des rares améliorations à ne pas avoir de condition de remise à zéro", "upgrades.trampoline.verbose_description": "Une des rares améliorations à ne pas avoir de condition de remise à zéro",
"upgrades.transparency.name": "Camouflage",
"upgrades.transparency.tooltip": "Plus la balle est haut à l'écran, plus elle devient transparente. Plus elle est transparente, plus elle produit de pièces.",
"upgrades.transparency.verbose_description": "Les niveaux plus élevés rendent la balle transparente plus tôt et augmentent le bonus de points.",
"upgrades.trickledown.name": "Ruissellement",
"upgrades.trickledown.tooltip": "Les pièces apparaissent en haut de l'écran.",
"upgrades.trickledown.verbose_description": "Ça pourrait vous aider à mettre des pièces de coté. ",
"upgrades.unbounded.help_no_ceiling": "+{{lvl}} combo par brique, plus de cotés ou de plafond", "upgrades.unbounded.help_no_ceiling": "+{{lvl}} combo par brique, plus de cotés ou de plafond",
"upgrades.unbounded.name": "Libérée, délivrée", "upgrades.unbounded.name": "Libérée, délivrée",
"upgrades.unbounded.tooltip": "+{{lvl}} combo par brique, plus de cotés pour garder la balle en jeu, danger", "upgrades.unbounded.tooltip": "+{{lvl}} combo par brique, plus de cotés pour garder la balle en jeu, danger",

View file

@ -1,13 +1,13 @@
import ar from "./ar.json";
import de from "./de.json";
import en from "./en.json"; import en from "./en.json";
import es from "./es.json";
import fr from "./fr.json"; import fr from "./fr.json";
import ko from "./ko.json"; // import ar from "./ar.json";
import ru from "./ru.json"; // import de from "./de.json";
import ur from "./ur.json"; // import es from "./es.json";
import uz from "./uz.json"; // import ko from "./ko.json";
import zh from "./zh.json"; // import ru from "./ru.json";
// import ur from "./ur.json";
// import uz from "./uz.json";
// import zh from "./zh.json";
export const languages = [ export const languages = [
{ {
@ -24,62 +24,62 @@ export const languages = [
levelName: "France", levelName: "France",
}, },
{ // {
text: "عربي", // text: "عربي",
value: "ar", // value: "ar",
strings: ar, // strings: ar,
//
// levelName: "Lebanon",
// },
// {
// text: "Español",
// value: "es",
// strings: es,
//
// levelName: "Spain",
// },
// {
// text: "Русский",
// value: "ru",
// strings: ru,
//
// levelName: "Russia",
// },
levelName: "Lebanon", // {
}, // text: "Deutsch",
{ // value: "de",
text: "Español", // strings: de,
value: "es", //
strings: es, // levelName: "Germany",
// },
levelName: "Spain", // {
}, // text: "汉语",
{ // value: "zh",
text: "Русский", // strings: zh,
value: "ru", //
strings: ru, // levelName: "China",
// },
levelName: "Russia", // {
}, // text: "o'zbek tili",
// value: "uz",
{ // strings: uz,
text: "Deutsch", // levelName: "Uzbekistan",
value: "de", // },
strings: de, // {
// text: "اردو",
levelName: "Germany", // value: "ur",
}, // strings: ur,
{ //
text: "汉语", // levelName: "Pakistan",
value: "zh", // },
strings: zh, // {
// text: "한국인",
levelName: "China", // value: "ko",
}, // strings: ko,
{ //
text: "o'zbek tili", // levelName: "Korea",
value: "uz", // },
strings: uz,
levelName: "Uzbekistan",
},
{
text: "اردو",
value: "ur",
strings: ur,
levelName: "Pakistan",
},
{
text: "한국인",
value: "ko",
strings: ko,
levelName: "Korea",
},
]; ];
import { getSettingValue } from "../settings"; import { getSettingValue } from "../settings";
@ -89,8 +89,13 @@ type translation = { [key in translationKeys]: string };
const languagesMap: Record<string, translation> = {}; const languagesMap: Record<string, translation> = {};
languages.forEach((l) => (languagesMap[l.value] = l.strings)); languages.forEach((l) => (languagesMap[l.value] = l.strings));
let defaultLang =
[...navigator.languages, navigator.language]
.filter((i) => i)
.map((i) => i.slice(0, 2).toLowerCase())
.find((k) => k in languagesMap) || "en";
export function getCurrentLang() { export function getCurrentLang() {
return getSettingValue("lang", getFirstBrowserLanguage()); return getSettingValue("lang", defaultLang);
} }
export function t( export function t(
@ -104,12 +109,3 @@ export function t(
} }
return template; return template;
} }
function getFirstBrowserLanguage() {
const preferred_languages = [...navigator.languages, navigator.language, "en"]
.filter((i) => i)
.map((i) => i.slice(0, 2).toLowerCase());
const supported = Object.keys(languagesMap);
return preferred_languages.find((k) => supported.includes(k)) || "en";
}

View file

@ -21,11 +21,11 @@
"gameOver.stats.upgrades_applied": "업그레이드 적용", "gameOver.stats.upgrades_applied": "업그레이드 적용",
"gameOver.unlocked_perk": "업그레이드 잠금 해제", "gameOver.unlocked_perk": "업그레이드 잠금 해제",
"gameOver.unlocked_perk_plural": "방금 {{count}} 특전을 잠금 해제했습니다.", "gameOver.unlocked_perk_plural": "방금 {{count}} 특전을 잠금 해제했습니다.",
"gameOver.win.summary": "", "gameOver.win.summary": "이 부분은 끝났습니다. {{score}} 개의 코인을 모았습니다. ",
"gameOver.win.title": "이 게임을 완료했습니다.", "gameOver.win.title": "이 게임을 완료했습니다.",
"history.columns.score": "점수", "history.columns.score": "점수",
"history.columns.started": "날짜", "history.columns.started": "날짜",
"history.help": "", "history.help": " {{count}} 개의 최고의 게임을 나열하세요.",
"history.locked": "잠금 해제하려면 최소 10개의 게임을 플레이하세요.", "history.locked": "잠금 해제하려면 최소 10개의 게임을 플레이하세요.",
"history.title": "기록 실행", "history.title": "기록 실행",
"lab.help": "원하는 빌드를 사용해 보세요.", "lab.help": "원하는 빌드를 사용해 보세요.",
@ -35,7 +35,7 @@
"lab.select_level": "플레이할 레벨 선택", "lab.select_level": "플레이할 레벨 선택",
"lab.unlocks_at": "총점 {{score}}에서 잠금 해제", "lab.unlocks_at": "총점 {{score}}에서 잠금 해제",
"level_up.after_buttons": "레벨 {{level}}/{{max}}을 완료했습니다 .", "level_up.after_buttons": "레벨 {{level}}/{{max}}을 완료했습니다 .",
"level_up.before_buttons": "", "level_up.before_buttons": " {{time}} 초 {{timeGain}}만에 {{levelSpawnedCoins}} 개 중 {{score}} 개의 코인 {{catchGain}} 개를 잡았습니다.\n\n벽돌을 {{levelMisses}} 번 {{missesGain}} 놓쳤고, 플레이 영역의 가장자리를 {{levelWallBounces}} 번 {{wallHitsGain}}만졌습니다.\n\n{{compliment}}",
"level_up.compliment_advice": "모든 코인을 잡고, 벽돌을 놓치지 말고, 벽/천장에 부딪히지 말고, 30초 이내에 레벨을 클리어하여 추가 업그레이드를 얻으세요.", "level_up.compliment_advice": "모든 코인을 잡고, 벽돌을 놓치지 말고, 벽/천장에 부딪히지 말고, 30초 이내에 레벨을 클리어하여 추가 업그레이드를 얻으세요.",
"level_up.compliment_good": "잘했어!", "level_up.compliment_good": "잘했어!",
"level_up.compliment_perfect": "인상적이네요, 계속하세요!", "level_up.compliment_perfect": "인상적이네요, 계속하세요!",
@ -54,7 +54,7 @@
"main_menu.contrast": "높은 명암비", "main_menu.contrast": "높은 명암비",
"main_menu.contrast_help": "더 화려하고 어두운 렌더링", "main_menu.contrast_help": "더 화려하고 어두운 렌더링",
"main_menu.credit_levels": "레벨", "main_menu.credit_levels": "레벨",
"main_menu.donate": "", "main_menu.donate": " {{hours}} 시간 동안 플레이했습니다.",
"main_menu.donate_help": "기부는 어때요? 설정에서 이 알림을 숨길 수 있습니다.", "main_menu.donate_help": "기부는 어때요? 설정에서 이 알림을 숨길 수 있습니다.",
"main_menu.donation_reminder": "기부 알림", "main_menu.donation_reminder": "기부 알림",
"main_menu.donation_reminder_help": "메인 메뉴에서 플레이 시간 및 기부 링크 보기", "main_menu.donation_reminder_help": "메인 메뉴에서 플레이 시간 및 기부 링크 보기",
@ -64,7 +64,7 @@
"main_menu.extra_bright_help": "동전과 벽돌 주위의 후광 크기를 증가시킵니다.", "main_menu.extra_bright_help": "동전과 벽돌 주위의 후광 크기를 증가시킵니다.",
"main_menu.fullscreen": "전체 화면", "main_menu.fullscreen": "전체 화면",
"main_menu.fullscreen_help": "게임을 시작하기 전에 전체 화면으로 전환하려고 시도합니다.", "main_menu.fullscreen_help": "게임을 시작하기 전에 전체 화면으로 전환하려고 시도합니다.",
"main_menu.help_content": "", "main_menu.help_content": "## 목적\n\n7개 레벨에 걸쳐 최대한 많은 동전을 모아보세요.\n벽돌을 깨면 동전이 나옵니다.\n퍽으로 공을 잡아 점수를 높이세요.\n점수는 화면 오른쪽 상단에 표시됩니다.\n공을 떨어뜨리지 마세요. 그러면 게임이 끝나요.\n\n모든 벽돌을 파괴한 후 업그레이드를 선택할 수 있습니다.\n\n## 개선 사항\n\n선택한 업그레이드는 게임이 끝날 때까지 지속됩니다.\n더욱 강력한 효과를 위해 여러 번 선택할 수 있는 효과도 있습니다.\n어떤 것들은 조준을 돕거나 게임을 단순화합니다.\n어떤 것들은 결합해야만 유용합니다.\n\n각 게임을 시작할 때마다 항상 파워업을 받습니다.\n이 아이콘은 첫 번째 레벨의 벽돌을 형성합니다.\n설정에서 시작 업그레이드를 선택할 수 있습니다.\n\n콤보에 영향을 미치는 업그레이드는 다양합니다.\n\n## 콤보\n\n\"콤보\"는 벽돌이 깨질 때 생성되는 동전의 수입니다.\n이는 퍽에 표시됩니다. 예를 들어, x4는 벽돌 하나당 동전 4개가 나온다는 것을 의미합니다.\n\n대부분의 콤보 증가 업그레이드에는 이를 재설정하는 조건도 추가됩니다.\n공이 벽돌에 부딪히지 않고 패들로 돌아오면 콤보가 재설정됩니다.\n그러면 \"놓침\" 메시지가 표시됩니다.\n\n매번 튀어오를 때마다 벽돌을 맞추도록 노력하세요.\n\n## 목표\n\n라켓 위의 공의 위치만이 반동 각도를 결정합니다.\n공이 라켓의 정중앙에 맞으면 수직으로 튀어 오릅니다.\n라켓 측면에서 치면 각도가 더 커집니다.\n라켓 속도와 공의 입사각은 영향을 미치지 않습니다.\n\n조준을 더 쉽게 만들어 주는 업그레이드도 많이 있습니다.\n\n## 잠금 해제\n\nBreakout 71을 처음 플레이하면 대부분의 업그레이드와 레벨이 잠겨 있습니다.\n업그레이드는 플레이하고 많은 코인을 획득하면 간단히 잠금 해제됩니다.\n첫 번째 레벨은 높은 점수를 달성하면 잠금 해제됩니다.\n이후 레벨에서는 선택한 혜택에 대한 조건이 추가됩니다.\n\n각 레벨마다 여러 번 업그레이드를 받으면 높은 점수를 얻는 것이 훨씬 쉬워집니다.\n\n## 무료 재출시 및 개선\n\n잘 플레이하면 추가적인 보너스를 받게 됩니다:\n\n- {{levelTimeGood}} 초 이내에 레벨을 완료하세요\n- 가장자리 또는 상단을 {{wallBouncedGood}} 회 미만으로 만지세요.\n- {{catchRateGood}}% 코인 획득\n- 벽돌을 {{missesGood}} 회 이하로 놓칩니다.\n\n더 나은 성적을 거두면 업그레이드를 무시할 수 있는 부스트를 받게 됩니다.\n\n- {{levelTimeBest}} 초 이내에 레벨 완료\n- 가장자리 또는 상단을 {{wallBouncedBest}} 회 이하로 만지세요.\n- {{catchRateBest}}% 코인 획득\n- 벽돌을 {{missesBest}} 회 이하로 놓칩니다.\n\n설정에는 이러한 통계를 표시하는 옵션이 있습니다. ",
"main_menu.help_help": "게임에 대해 자세히 알아보기", "main_menu.help_help": "게임에 대해 자세히 알아보기",
"main_menu.help_title": "도움말", "main_menu.help_title": "도움말",
"main_menu.help_upgrades": "업그레이드 ## 업그레이드", "main_menu.help_upgrades": "업그레이드 ## 업그레이드",
@ -127,9 +127,9 @@
"play.stats.levelTime": "레벨 시간", "play.stats.levelTime": "레벨 시간",
"play.stats.levelWallBounces": "벽면 바운스", "play.stats.levelWallBounces": "벽면 바운스",
"score_panel.close_to_unlock": "다음 레벨 잠금 해제 :", "score_panel.close_to_unlock": "다음 레벨 잠금 해제 :",
"score_panel.get_upgrades_to_unlock": "", "score_panel.get_upgrades_to_unlock": " {{missingUpgrades}} 을 획득하고 {{points}} 개의 추가 코인을 획득하여 레벨 \"{{level}}\"을 잠금 해제하세요.",
"score_panel.rerolls_count": "누적된 {{rerolls}} 회전 횟수가 있습니다.", "score_panel.rerolls_count": "누적된 {{rerolls}} 회전 횟수가 있습니다.",
"score_panel.score_to_unlock": "", "score_panel.score_to_unlock": "추가 코인 {{points}} 개를 획득하여 레벨 \"{{level}}\"을 잠금 해제하세요.",
"score_panel.title": " 레벨 {{level}}에서{{score}} 포인트 /{{max}} ", "score_panel.title": " 레벨 {{level}}에서{{score}} 포인트 /{{max}} ",
"score_panel.upcoming_levels": "다음 레벨 :", "score_panel.upcoming_levels": "다음 레벨 :",
"score_panel.upgrades_picked": "이 게임에서 선택한 업그레이드는 실행됩니다:", "score_panel.upgrades_picked": "이 게임에서 선택한 업그레이드는 실행됩니다:",
@ -138,12 +138,12 @@
"unlocks.just_unlocked": "레벨 잠금 해제", "unlocks.just_unlocked": "레벨 잠금 해제",
"unlocks.just_unlocked_plural": "방금 {{count}} 레벨을 잠금 해제했습니다.", "unlocks.just_unlocked_plural": "방금 {{count}} 레벨을 잠금 해제했습니다.",
"unlocks.level": "<h2> {{out_of}}개 중 {{unlocked}} 개 레벨을 잠금 해제했습니다. </h2>\n<p>다음은 모든 게임 레벨이며, 하나를 클릭하여 체험해 보세요.</p> ", "unlocks.level": "<h2> {{out_of}}개 중 {{unlocked}} 개 레벨을 잠금 해제했습니다. </h2>\n<p>다음은 모든 게임 레벨이며, 하나를 클릭하여 체험해 보세요.</p> ",
"unlocks.level_description": "", "unlocks.level_description": " {{bricks}} 개의 벽돌, {{colors}} 개의 색상, {{bombs}} 개의 폭탄이 있는 {{size}}x{{size}} 레벨입니다.",
"unlocks.minScore": "달리기에서 ${{minScore}} 에 도달하면 잠금이 해제됩니다.", "unlocks.minScore": "달리기에서 ${{minScore}} 에 도달하면 잠금이 해제됩니다.",
"unlocks.minScoreWithPerks": "잠금을 해제하려면 {{required}} 을 사용하지만 {{forbidden}} 을 사용하지 않고 실행하여{{minScore}} 달러에 도달하세요.", "unlocks.minScoreWithPerks": "잠금을 해제하려면 {{required}} 을 사용하지만 {{forbidden}} 을 사용하지 않고 실행하여{{minScore}} 달러에 도달하세요.",
"unlocks.minTotalScore": "총{{score}}달러 적립", "unlocks.minTotalScore": "총{{score}}달러 적립",
"unlocks.reached": "최고 점수는 {{reached}}입니다.", "unlocks.reached": "최고 점수는 {{reached}}입니다.",
"unlocks.title_upgrades": "", "unlocks.title_upgrades": " {{out_of}}에서 {{unlocked}} 개의 업그레이드를 잠금 해제했습니다. ",
"upgrades.addiction.name": "중독", "upgrades.addiction.name": "중독",
"upgrades.addiction.tooltip": "+{{lvl}} 콤보 / 벽돌, 벽돌을 부수고 {{delay}}초 후에 콤보가 초기화됩니다.", "upgrades.addiction.tooltip": "+{{lvl}} 콤보 / 벽돌, 벽돌을 부수고 {{delay}}초 후에 콤보가 초기화됩니다.",
"upgrades.addiction.verbose_description": "카운트다운은 각 레벨의 첫 번째 벽돌을 부순 후에만 시작됩니다. 모든 벽돌이 파괴되면 카운트다운이 멈춥니다.", "upgrades.addiction.verbose_description": "카운트다운은 각 레벨의 첫 번째 벽돌을 부순 후에만 시작됩니다. 모든 벽돌이 파괴되면 카운트다운이 멈춥니다.",
@ -188,7 +188,7 @@
"upgrades.corner_shot.verbose_description": "모서리 조준에 도움이 됩니다. 레벨이 높아질수록 더 멀리 나갈 수 있습니다.", "upgrades.corner_shot.verbose_description": "모서리 조준에 도움이 됩니다. 레벨이 높아질수록 더 멀리 나갈 수 있습니다.",
"upgrades.etherealcoins.name": "코인, 우주에서", "upgrades.etherealcoins.name": "코인, 우주에서",
"upgrades.etherealcoins.tooltip": "코인은 더 이상 중력의 영향을 받지 않습니다.", "upgrades.etherealcoins.tooltip": "코인은 더 이상 중력의 영향을 받지 않습니다.",
"upgrades.etherealcoins.verbose_description": "동전이 어떻게든 떨어지도록 해야 하며, 그렇지 않으면 동전을 얻지 못할 것입니다.", "upgrades.etherealcoins.verbose_description": "",
"upgrades.extra_levels.name": "5분 더", "upgrades.extra_levels.name": "5분 더",
"upgrades.extra_levels.tooltip": "7 대신 {{count}} 레벨 플레이", "upgrades.extra_levels.tooltip": "7 대신 {{count}} 레벨 플레이",
"upgrades.extra_levels.verbose_description": "기본 게임은 최대 7레벨까지 플레이할 수 있으며, 그 이후에는 게임이 종료됩니다.\n\n이 특전의 각 레벨은 한 단계씩 더 높은 레벨로 올라갈 수 있습니다. 마지막 레벨에서 가장 많은 점수를 획득하는 경우가 많기 때문에 그 차이가 극적일 수 있습니다.", "upgrades.extra_levels.verbose_description": "기본 게임은 최대 7레벨까지 플레이할 수 있으며, 그 이후에는 게임이 종료됩니다.\n\n이 특전의 각 레벨은 한 단계씩 더 높은 레벨로 올라갈 수 있습니다. 마지막 레벨에서 가장 많은 점수를 획득하는 경우가 많기 때문에 그 차이가 극적일 수 있습니다.",
@ -230,7 +230,7 @@
"upgrades.minefield.tooltip": "화면의 폭탄 벽돌 당 +{{lvl}} 콤보", "upgrades.minefield.tooltip": "화면의 폭탄 벽돌 당 +{{lvl}} 콤보",
"upgrades.minefield.verbose_description": "벽돌을 놓으면 콤보에 + 레벨을, 파괴하면 - 레벨을 추가하고 기본 콤보에 벽돌 수에 레벨을 곱한 만큼 레벨을 올립니다.", "upgrades.minefield.verbose_description": "벽돌을 놓으면 콤보에 + 레벨을, 파괴하면 - 레벨을 추가하고 기본 콤보에 벽돌 수에 레벨을 곱한 만큼 레벨을 올립니다.",
"upgrades.multiball.name": "멀티 볼", "upgrades.multiball.name": "멀티 볼",
"upgrades.multiball.tooltip": "", "upgrades.multiball.tooltip": "각 레벨은 {{count}} 개의 공으로 시작합니다.",
"upgrades.multiball.verbose_description": "브레이크아웃 71에서 공을 떨어뜨리는 순간 패배합니다.\n\n이 특전으로 공 두 개를 얻게 되므로 공 하나를 잃어도 괜찮습니다.\n\n잃어버린 공은 다음 레벨에서 다시 돌아옵니다.\n\n공이 두 개 이상 있으면 추가 특전이 제공되며, 당연히 레벨을 더 빨리 클리어할 수 있습니다.", "upgrades.multiball.verbose_description": "브레이크아웃 71에서 공을 떨어뜨리는 순간 패배합니다.\n\n이 특전으로 공 두 개를 얻게 되므로 공 하나를 잃어도 괜찮습니다.\n\n잃어버린 공은 다음 레벨에서 다시 돌아옵니다.\n\n공이 두 개 이상 있으면 추가 특전이 제공되며, 당연히 레벨을 더 빨리 클리어할 수 있습니다.",
"upgrades.nbricks.name": "엄격한 샘플 크기", "upgrades.nbricks.name": "엄격한 샘플 크기",
"upgrades.nbricks.tooltip": "퍽 바운스당 정확히 {{lvl}} 개의 벽돌을 쳐서 +{{lvl}} 콤보를 달성하고, 그렇지 않으면 초기화됩니다.", "upgrades.nbricks.tooltip": "퍽 바운스당 정확히 {{lvl}} 개의 벽돌을 쳐서 +{{lvl}} 콤보를 달성하고, 그렇지 않으면 초기화됩니다.",
@ -250,7 +250,7 @@
"upgrades.pierce_color.name": "컬러 피어싱", "upgrades.pierce_color.name": "컬러 피어싱",
"upgrades.pierce_color.tooltip": "공 색깔의 벽돌에 +{{lvl}} 피해", "upgrades.pierce_color.tooltip": "공 색깔의 벽돌에 +{{lvl}} 피해",
"upgrades.pierce_color.verbose_description": "공이 같은 색의 벽돌에 부딪힐 때마다 방해받지 않고 그냥 통과합니다.\n\n다른 색의 벽돌에 닿으면 벽돌을 부수고 그 색을 가져가서 튕겨 나갑니다.\n\n튼튼한 벽돌이 있다면 공이 같은 색의 벽돌에 닿아도 튕겨나갈 수 있습니다.", "upgrades.pierce_color.verbose_description": "공이 같은 색의 벽돌에 부딪힐 때마다 방해받지 않고 그냥 통과합니다.\n\n다른 색의 벽돌에 닿으면 벽돌을 부수고 그 색을 가져가서 튕겨 나갑니다.\n\n튼튼한 벽돌이 있다면 공이 같은 색의 벽돌에 닿아도 튕겨나갈 수 있습니다.",
"upgrades.puck_repulse_ball.help_plural": "", "upgrades.puck_repulse_ball.help_plural": "반발력이 더 크다",
"upgrades.puck_repulse_ball.name": "연착륙", "upgrades.puck_repulse_ball.name": "연착륙",
"upgrades.puck_repulse_ball.tooltip": "퍽이 공을 튕겨냅니다", "upgrades.puck_repulse_ball.tooltip": "퍽이 공을 튕겨냅니다",
"upgrades.puck_repulse_ball.verbose_description": "공이 퍽에 가까워지면 속도가 느려지기 시작하고 심지어 퍽에 닿지 않고 튕겨 나갈 수도 있습니다.", "upgrades.puck_repulse_ball.verbose_description": "공이 퍽에 가까워지면 속도가 느려지기 시작하고 심지어 퍽에 닿지 않고 튕겨 나갈 수도 있습니다.",
@ -313,6 +313,9 @@
"upgrades.trampoline.name": "트램펄린", "upgrades.trampoline.name": "트램펄린",
"upgrades.trampoline.tooltip": "+ 퍽 바운스당{{lvl}} 콤보, 모든 테두리에서 바운스당{{lvl}} 콤보", "upgrades.trampoline.tooltip": "+ 퍽 바운스당{{lvl}} 콤보, 모든 테두리에서 바운스당{{lvl}} 콤보",
"upgrades.trampoline.verbose_description": "초기화 조건이 추가되지 않는 드문 콤보 업그레이드 중 하나입니다.", "upgrades.trampoline.verbose_description": "초기화 조건이 추가되지 않는 드문 콤보 업그레이드 중 하나입니다.",
"upgrades.trickledown.name": "흘러넘치다",
"upgrades.trickledown.tooltip": "동전은 화면 상단에 나타납니다.",
"upgrades.trickledown.verbose_description": "동전 몇 개를 따로 모아두는 데 도움이 될 수도 있습니다. ",
"upgrades.unbounded.help_no_ceiling": "벽돌당 +{{lvl}} 콤보, 측면 또는 천장 없음", "upgrades.unbounded.help_no_ceiling": "벽돌당 +{{lvl}} 콤보, 측면 또는 천장 없음",
"upgrades.unbounded.name": "무제한", "upgrades.unbounded.name": "무제한",
"upgrades.unbounded.tooltip": "벽돌당 +{{lvl}} 콤보, 더 이상 공을 유지할 측면이 없음, 위험", "upgrades.unbounded.tooltip": "벽돌당 +{{lvl}} 콤보, 더 이상 공을 유지할 측면이 없음, 위험",

View file

@ -188,7 +188,7 @@
"upgrades.corner_shot.verbose_description": "Помогает прицеливаться на поворотах. Дальние уровни позволят вам выйти дальше.", "upgrades.corner_shot.verbose_description": "Помогает прицеливаться на поворотах. Дальние уровни позволят вам выйти дальше.",
"upgrades.etherealcoins.name": "Монеты, в космосе", "upgrades.etherealcoins.name": "Монеты, в космосе",
"upgrades.etherealcoins.tooltip": "На монеты больше не действует гравитация", "upgrades.etherealcoins.tooltip": "На монеты больше не действует гравитация",
"upgrades.etherealcoins.verbose_description": "Вам придется следить за тем, чтобы монеты падали вниз, иначе вы не получите ни одной.", "upgrades.etherealcoins.verbose_description": "",
"upgrades.extra_levels.name": "Еще 5 минут", "upgrades.extra_levels.name": "Еще 5 минут",
"upgrades.extra_levels.tooltip": "Играйте {{count}} уровней вместо 7", "upgrades.extra_levels.tooltip": "Играйте {{count}} уровней вместо 7",
"upgrades.extra_levels.verbose_description": "По умолчанию игра может длиться максимум 7 уровней, после чего игра заканчивается.\n\nКаждый уровень этой привилегии позволяет вам подняться на один уровень выше. Последние уровни часто являются теми, где вы набираете больше всего очков, так что разница может быть значительной.", "upgrades.extra_levels.verbose_description": "По умолчанию игра может длиться максимум 7 уровней, после чего игра заканчивается.\n\nКаждый уровень этой привилегии позволяет вам подняться на один уровень выше. Последние уровни часто являются теми, где вы набираете больше всего очков, так что разница может быть значительной.",
@ -250,7 +250,7 @@
"upgrades.pierce_color.name": "Цветной пирсинг", "upgrades.pierce_color.name": "Цветной пирсинг",
"upgrades.pierce_color.tooltip": "+{{lvl}} урона кирпичам цвета шара", "upgrades.pierce_color.tooltip": "+{{lvl}} урона кирпичам цвета шара",
"upgrades.pierce_color.verbose_description": "Если шарик попадает в кирпич того же цвета, он просто беспрепятственно проходит сквозь него.\n\nЕсли он попадет в кирпич другого цвета, то разобьет его, возьмет его цвет и отскочит.\n\nЕсли у вас прочные кирпичи, мяч все равно может отскочить от кирпича того же цвета.", "upgrades.pierce_color.verbose_description": "Если шарик попадает в кирпич того же цвета, он просто беспрепятственно проходит сквозь него.\n\nЕсли он попадет в кирпич другого цвета, то разобьет его, возьмет его цвет и отскочит.\n\nЕсли у вас прочные кирпичи, мяч все равно может отскочить от кирпича того же цвета.",
"upgrades.puck_repulse_ball.help_plural": "", "upgrades.puck_repulse_ball.help_plural": "Сила отталкивания больше",
"upgrades.puck_repulse_ball.name": "Мягкая посадка", "upgrades.puck_repulse_ball.name": "Мягкая посадка",
"upgrades.puck_repulse_ball.tooltip": "Шайба отбивает мячи", "upgrades.puck_repulse_ball.tooltip": "Шайба отбивает мячи",
"upgrades.puck_repulse_ball.verbose_description": "Когда мяч приближается к шайбе, он начинает замедляться и даже может отскочить, не коснувшись шайбы.", "upgrades.puck_repulse_ball.verbose_description": "Когда мяч приближается к шайбе, он начинает замедляться и даже может отскочить, не коснувшись шайбы.",
@ -313,6 +313,9 @@
"upgrades.trampoline.name": "Батут", "upgrades.trampoline.name": "Батут",
"upgrades.trampoline.tooltip": "+{{lvl}} комбо за отскок шайбы, -{{lvl}} комбо за отскок на любой границе", "upgrades.trampoline.tooltip": "+{{lvl}} комбо за отскок шайбы, -{{lvl}} комбо за отскок на любой границе",
"upgrades.trampoline.verbose_description": "Одно из редких комбо-улучшений, которое не добавляет условие сброса.", "upgrades.trampoline.verbose_description": "Одно из редких комбо-улучшений, которое не добавляет условие сброса.",
"upgrades.trickledown.name": "Сток",
"upgrades.trickledown.tooltip": "Монеты появляются в верхней части экрана.",
"upgrades.trickledown.verbose_description": "Это может помочь вам отложить немного монет. ",
"upgrades.unbounded.help_no_ceiling": "+{{lvl}} комбо на кирпич, не больше сторон или потолка", "upgrades.unbounded.help_no_ceiling": "+{{lvl}} комбо на кирпич, не больше сторон или потолка",
"upgrades.unbounded.name": "Без ограничений", "upgrades.unbounded.name": "Без ограничений",
"upgrades.unbounded.tooltip": "+{{lvl}} комбо за кирпич, больше нет сторон, чтобы держать мяч в игре, опасность", "upgrades.unbounded.tooltip": "+{{lvl}} комбо за кирпич, больше нет сторон, чтобы держать мяч в игре, опасность",

View file

@ -188,7 +188,7 @@
"upgrades.corner_shot.verbose_description": "کونوں میں نشانہ بنانے میں مدد کرتا ہے۔ مزید سطحیں آپ کو مزید باہر جانے دیتی ہیں۔ ", "upgrades.corner_shot.verbose_description": "کونوں میں نشانہ بنانے میں مدد کرتا ہے۔ مزید سطحیں آپ کو مزید باہر جانے دیتی ہیں۔ ",
"upgrades.etherealcoins.name": "سکے، خلا میں", "upgrades.etherealcoins.name": "سکے، خلا میں",
"upgrades.etherealcoins.tooltip": "سکے اب کشش ثقل سے متاثر نہیں ہوتے ہیں۔", "upgrades.etherealcoins.tooltip": "سکے اب کشش ثقل سے متاثر نہیں ہوتے ہیں۔",
"upgrades.etherealcoins.verbose_description": "آپ کو یہ یقینی بنانا ہوگا کہ سکے کسی طرح نیچے گریں، یا آپ کو کوئی نہیں ملے گا۔ ", "upgrades.etherealcoins.verbose_description": "",
"upgrades.extra_levels.name": "5 منٹ مزید", "upgrades.extra_levels.name": "5 منٹ مزید",
"upgrades.extra_levels.tooltip": "7 کی بجائے {{count}} لیولز کھیلیں", "upgrades.extra_levels.tooltip": "7 کی بجائے {{count}} لیولز کھیلیں",
"upgrades.extra_levels.verbose_description": "پہلے سے طے شدہ گیم زیادہ سے زیادہ 7 لیول تک چل سکتی ہے، جس کے بعد گیم ختم ہو جاتی ہے۔ \n\nاس پرک کا ہر لیول آپ کو ایک لیول اوپر جانے دیتا ہے۔ آخری درجے اکثر وہ ہوتے ہیں جہاں آپ سب سے زیادہ سکور کرتے ہیں، لہذا فرق ڈرامائی ہو سکتا ہے۔", "upgrades.extra_levels.verbose_description": "پہلے سے طے شدہ گیم زیادہ سے زیادہ 7 لیول تک چل سکتی ہے، جس کے بعد گیم ختم ہو جاتی ہے۔ \n\nاس پرک کا ہر لیول آپ کو ایک لیول اوپر جانے دیتا ہے۔ آخری درجے اکثر وہ ہوتے ہیں جہاں آپ سب سے زیادہ سکور کرتے ہیں، لہذا فرق ڈرامائی ہو سکتا ہے۔",
@ -250,7 +250,7 @@
"upgrades.pierce_color.name": "رنگ چھیدنا", "upgrades.pierce_color.name": "رنگ چھیدنا",
"upgrades.pierce_color.tooltip": "+{{lvl}} گیند کے رنگ کی اینٹوں کو نقصان", "upgrades.pierce_color.tooltip": "+{{lvl}} گیند کے رنگ کی اینٹوں کو نقصان",
"upgrades.pierce_color.verbose_description": "جب بھی کوئی گیند ایک ہی رنگ کی اینٹ سے ٹکرائے گی تو وہ بغیر کسی رکاوٹ کے گزرے گی۔ \n\nایک بار جب یہ کسی دوسرے رنگ کی اینٹ تک پہنچ جائے گا، تو وہ اسے توڑ دے گا، اس کا رنگ لے گا اور اچھال دے گا۔\n\nاگر آپ کے پاس مضبوط اینٹیں ہیں تو گیند اب بھی ایک ہی رنگ کی اینٹ سے اچھال سکتی ہے۔", "upgrades.pierce_color.verbose_description": "جب بھی کوئی گیند ایک ہی رنگ کی اینٹ سے ٹکرائے گی تو وہ بغیر کسی رکاوٹ کے گزرے گی۔ \n\nایک بار جب یہ کسی دوسرے رنگ کی اینٹ تک پہنچ جائے گا، تو وہ اسے توڑ دے گا، اس کا رنگ لے گا اور اچھال دے گا۔\n\nاگر آپ کے پاس مضبوط اینٹیں ہیں تو گیند اب بھی ایک ہی رنگ کی اینٹ سے اچھال سکتی ہے۔",
"upgrades.puck_repulse_ball.help_plural": "", "upgrades.puck_repulse_ball.help_plural": "مکروہ قوت زیادہ ہے۔",
"upgrades.puck_repulse_ball.name": "نرم لینڈنگ", "upgrades.puck_repulse_ball.name": "نرم لینڈنگ",
"upgrades.puck_repulse_ball.tooltip": "پک گیندوں کو پیچھے ہٹاتا ہے۔", "upgrades.puck_repulse_ball.tooltip": "پک گیندوں کو پیچھے ہٹاتا ہے۔",
"upgrades.puck_repulse_ball.verbose_description": "جب ایک گیند پک کے قریب آتی ہے، تو یہ سست ہونا شروع ہو جاتی ہے، اور پک کو چھوئے بغیر بھی ممکنہ طور پر اچھالنا شروع کر دیتی ہے۔", "upgrades.puck_repulse_ball.verbose_description": "جب ایک گیند پک کے قریب آتی ہے، تو یہ سست ہونا شروع ہو جاتی ہے، اور پک کو چھوئے بغیر بھی ممکنہ طور پر اچھالنا شروع کر دیتی ہے۔",
@ -313,6 +313,9 @@
"upgrades.trampoline.name": "ٹرامپولین", "upgrades.trampoline.name": "ٹرامپولین",
"upgrades.trampoline.tooltip": "+{{lvl}} کومبو فی پک باؤنس، -{{lvl}} کومبو فی باؤنس کسی بھی بارڈر پر", "upgrades.trampoline.tooltip": "+{{lvl}} کومبو فی پک باؤنس، -{{lvl}} کومبو فی باؤنس کسی بھی بارڈر پر",
"upgrades.trampoline.verbose_description": "ایک نایاب کومبو اپ گریڈ جس میں ری سیٹ کی شرط شامل نہیں ہوتی ہے۔", "upgrades.trampoline.verbose_description": "ایک نایاب کومبو اپ گریڈ جس میں ری سیٹ کی شرط شامل نہیں ہوتی ہے۔",
"upgrades.trickledown.name": "رن آف",
"upgrades.trickledown.tooltip": "سکے اسکرین کے اوپری حصے میں ظاہر ہوتے ہیں۔",
"upgrades.trickledown.verbose_description": "اس سے آپ کو کچھ سکے ایک طرف رکھنے میں مدد مل سکتی ہے۔ ",
"upgrades.unbounded.help_no_ceiling": "+{{lvl}} کومبو فی اینٹ، مزید سائیڈز یا چھت نہیں۔", "upgrades.unbounded.help_no_ceiling": "+{{lvl}} کومبو فی اینٹ، مزید سائیڈز یا چھت نہیں۔",
"upgrades.unbounded.name": "بے حد", "upgrades.unbounded.name": "بے حد",
"upgrades.unbounded.tooltip": "+{{lvl}} کومبو فی اینٹ، گیند کو کھیل میں رکھنے کے لیے مزید سائیڈز نہیں، خطرہ", "upgrades.unbounded.tooltip": "+{{lvl}} کومبو فی اینٹ، گیند کو کھیل میں رکھنے کے لیے مزید سائیڈز نہیں، خطرہ",

View file

@ -188,7 +188,7 @@
"upgrades.corner_shot.verbose_description": "Burchaklarni nishonga olishga yordam beradi. Qo'shimcha darajalar sizga uzoqroqqa borish imkonini beradi. ", "upgrades.corner_shot.verbose_description": "Burchaklarni nishonga olishga yordam beradi. Qo'shimcha darajalar sizga uzoqroqqa borish imkonini beradi. ",
"upgrades.etherealcoins.name": "Kosmosda tangalar", "upgrades.etherealcoins.name": "Kosmosda tangalar",
"upgrades.etherealcoins.tooltip": "Tangalar endi tortishish kuchiga ta'sir qilmaydi", "upgrades.etherealcoins.tooltip": "Tangalar endi tortishish kuchiga ta'sir qilmaydi",
"upgrades.etherealcoins.verbose_description": "Siz tangalar qandaydir tarzda tushib ketishiga ishonch hosil qilishingiz kerak, aks holda siz hech narsa olmaysiz. ", "upgrades.etherealcoins.verbose_description": "",
"upgrades.extra_levels.name": "yana 5 daqiqa", "upgrades.extra_levels.name": "yana 5 daqiqa",
"upgrades.extra_levels.tooltip": "7 oʻrniga {{count}} daraja oʻynang", "upgrades.extra_levels.tooltip": "7 oʻrniga {{count}} daraja oʻynang",
"upgrades.extra_levels.verbose_description": "Standart o'yin maksimal 7 darajada davom etishi mumkin, shundan so'ng o'yin tugaydi. \n\nUshbu imtiyozning har bir darajasi bir daraja yuqoriga ko'tarilishingizga imkon beradi. Oxirgi darajalar ko'pincha siz eng ko'p ball to'playdigan darajalardir, shuning uchun farq keskin bo'lishi mumkin.", "upgrades.extra_levels.verbose_description": "Standart o'yin maksimal 7 darajada davom etishi mumkin, shundan so'ng o'yin tugaydi. \n\nUshbu imtiyozning har bir darajasi bir daraja yuqoriga ko'tarilishingizga imkon beradi. Oxirgi darajalar ko'pincha siz eng ko'p ball to'playdigan darajalardir, shuning uchun farq keskin bo'lishi mumkin.",
@ -250,7 +250,7 @@
"upgrades.pierce_color.name": "Rangli pirs", "upgrades.pierce_color.name": "Rangli pirs",
"upgrades.pierce_color.tooltip": "+{{lvl}} shar rangidagi g'ishtlarga zarar", "upgrades.pierce_color.tooltip": "+{{lvl}} shar rangidagi g'ishtlarga zarar",
"upgrades.pierce_color.verbose_description": "To'p bir xil rangdagi g'ishtga tegsa, u to'siqsiz o'tib ketadi. \n\nBoshqa rangdagi g'ishtga etib borgach, uni buzadi, rangini oladi va sakrab chiqadi.\n\nAgar sizda mustahkam g'isht bo'lsa, to'p hali ham bir xil rangdagi g'ishtdan sakrab tushishi mumkin.", "upgrades.pierce_color.verbose_description": "To'p bir xil rangdagi g'ishtga tegsa, u to'siqsiz o'tib ketadi. \n\nBoshqa rangdagi g'ishtga etib borgach, uni buzadi, rangini oladi va sakrab chiqadi.\n\nAgar sizda mustahkam g'isht bo'lsa, to'p hali ham bir xil rangdagi g'ishtdan sakrab tushishi mumkin.",
"upgrades.puck_repulse_ball.help_plural": "", "upgrades.puck_repulse_ball.help_plural": "Qaytaruvchi kuch kattaroq",
"upgrades.puck_repulse_ball.name": "Yumshoq qo'nish", "upgrades.puck_repulse_ball.name": "Yumshoq qo'nish",
"upgrades.puck_repulse_ball.tooltip": "Shayba to'plarni qaytaradi", "upgrades.puck_repulse_ball.tooltip": "Shayba to'plarni qaytaradi",
"upgrades.puck_repulse_ball.verbose_description": "To'p shaybaga yaqinlashganda, u sekinlashadi va hatto shaybaga tegmasdan sakrab tushishi mumkin.", "upgrades.puck_repulse_ball.verbose_description": "To'p shaybaga yaqinlashganda, u sekinlashadi va hatto shaybaga tegmasdan sakrab tushishi mumkin.",
@ -313,6 +313,9 @@
"upgrades.trampoline.name": "Trampolin", "upgrades.trampoline.name": "Trampolin",
"upgrades.trampoline.tooltip": "+ har bir shaybaga sakrash uchun{{lvl}} kombinatsiya,- istalgan chegarada har bir sakrash uchun{{lvl}} ta kombinatsiya", "upgrades.trampoline.tooltip": "+ har bir shaybaga sakrash uchun{{lvl}} kombinatsiya,- istalgan chegarada har bir sakrash uchun{{lvl}} ta kombinatsiya",
"upgrades.trampoline.verbose_description": "Qayta tiklash shartini qo'shmaydigan noyob kombinatsiyalangan yangilanishlardan biri", "upgrades.trampoline.verbose_description": "Qayta tiklash shartini qo'shmaydigan noyob kombinatsiyalangan yangilanishlardan biri",
"upgrades.trickledown.name": "Oqim oqimi",
"upgrades.trickledown.tooltip": "Tangalar ekranning yuqori qismida ko'rinadi.",
"upgrades.trickledown.verbose_description": "Bu sizga tangalarni chetga surib qo'yishga yordam berishi mumkin. ",
"upgrades.unbounded.help_no_ceiling": "Har bir gʻisht uchun +{{lvl}} kombinatsiya, boshqa yon tomonlar yoki shiftlar yoʻq", "upgrades.unbounded.help_no_ceiling": "Har bir gʻisht uchun +{{lvl}} kombinatsiya, boshqa yon tomonlar yoki shiftlar yoʻq",
"upgrades.unbounded.name": "Cheklanmagan", "upgrades.unbounded.name": "Cheklanmagan",
"upgrades.unbounded.tooltip": "Har bir g'isht uchun +{{lvl}} kombinati, to'pni o'yinda ushlab turish uchun boshqa tomonlar yo'q, xavf", "upgrades.unbounded.tooltip": "Har bir g'isht uchun +{{lvl}} kombinati, to'pni o'yinda ushlab turish uchun boshqa tomonlar yo'q, xavf",

View file

@ -188,7 +188,7 @@
"upgrades.corner_shot.verbose_description": "有助于在拐角处瞄准。更高的级别可以让你走得更远。", "upgrades.corner_shot.verbose_description": "有助于在拐角处瞄准。更高的级别可以让你走得更远。",
"upgrades.etherealcoins.name": "太空硬币", "upgrades.etherealcoins.name": "太空硬币",
"upgrades.etherealcoins.tooltip": "硬币不再受重力影响", "upgrades.etherealcoins.tooltip": "硬币不再受重力影响",
"upgrades.etherealcoins.verbose_description": "您必须确保硬币以某种方式掉落下来,否则您一个也得不到。", "upgrades.etherealcoins.verbose_description": "",
"upgrades.extra_levels.name": "再过 5 分钟", "upgrades.extra_levels.name": "再过 5 分钟",
"upgrades.extra_levels.tooltip": "玩 {{count}} 关而不是7关", "upgrades.extra_levels.tooltip": "玩 {{count}} 关而不是7关",
"upgrades.extra_levels.verbose_description": "默认游戏最多可持续 7 个关卡,之后游戏结束。\n\n每升一级就能提高一级。最后一关往往是你得分最多的关卡因此差别会非常大。", "upgrades.extra_levels.verbose_description": "默认游戏最多可持续 7 个关卡,之后游戏结束。\n\n每升一级就能提高一级。最后一关往往是你得分最多的关卡因此差别会非常大。",
@ -313,6 +313,9 @@
"upgrades.trampoline.name": "蹦床", "upgrades.trampoline.name": "蹦床",
"upgrades.trampoline.tooltip": "每次冰球反弹+{{lvl}} 连击,每次反弹在任何边界上-{{lvl}} 连击", "upgrades.trampoline.tooltip": "每次冰球反弹+{{lvl}} 连击,每次反弹在任何边界上-{{lvl}} 连击",
"upgrades.trampoline.verbose_description": "罕见的不增加重置条件的组合升级之一", "upgrades.trampoline.verbose_description": "罕见的不增加重置条件的组合升级之一",
"upgrades.trickledown.name": "径流",
"upgrades.trickledown.tooltip": "硬币出现在屏幕顶部。",
"upgrades.trickledown.verbose_description": "它可能会帮助你存下一些硬币。 ",
"upgrades.unbounded.help_no_ceiling": "每块砖+{{lvl}} 组合,没有更多的侧面或天花板", "upgrades.unbounded.help_no_ceiling": "每块砖+{{lvl}} 组合,没有更多的侧面或天花板",
"upgrades.unbounded.name": "无界", "upgrades.unbounded.name": "无界",
"upgrades.unbounded.tooltip": "每块砖+{{lvl}} 连击,没有更多的边来保持球在游戏中,危险", "upgrades.unbounded.tooltip": "每块砖+{{lvl}} 连击,没有更多的边来保持球在游戏中,危险",

View file

@ -28,12 +28,9 @@ export function getRunLevels(
(l, li) => (l, li) =>
unlockedBefore.has(l.name) || !reasonLevelIsLocked(li, history, false), unlockedBefore.has(l.name) || !reasonLevelIsLocked(li, history, false),
); );
const firstLevel = allLevelsAndIcons.filter(
const firstLevel = (l) => l.name == (params?.level || "icon:" + randomGift),
(params?.level && unlocked.filter((l) => l.name === params?.level)) || );
(randomGift &&
allLevelsAndIcons.filter((l) => l.name == "icon:" + randomGift)) ||
[];
const restInRandomOrder = unlocked const restInRandomOrder = unlocked
.filter((l) => l.name !== params?.level) .filter((l) => l.name !== params?.level)

View file

@ -1,5 +1,6 @@
import { baseCombo, forEachLiveOne, liveCount } from "./gameStateMutators"; import { baseCombo, forEachLiveOne, liveCount } from "./gameStateMutators";
import { import {
ballTransparency,
brickCenterX, brickCenterX,
brickCenterY, brickCenterY,
currentLevelInfo, currentLevelInfo,
@ -270,8 +271,11 @@ export function render(gameState: GameState) {
// Black shadow around balls // Black shadow around balls
if (!isOptionOn("basic")) { if (!isOptionOn("basic")) {
ctx.globalCompositeOperation = "source-over"; ctx.globalCompositeOperation = "source-over";
ctx.globalAlpha = Math.min(0.8, liveCount(gameState.coins) / 20);
gameState.balls.forEach((ball) => { gameState.balls.forEach((ball) => {
ctx.globalAlpha =
Math.min(0.8, liveCount(gameState.coins) / 20) *
(1 - ballTransparency(ball, gameState));
drawBall( drawBall(
ctx, ctx,
level.color || "#000", level.color || "#000",
@ -338,7 +342,8 @@ export function render(gameState: GameState) {
gameState.balls.forEach((ball) => { gameState.balls.forEach((ball) => {
const drawingColor = gameState.ballsColor; const drawingColor = gameState.ballsColor;
const ballAlpha = 1 - ballTransparency(ball, gameState);
ctx.globalAlpha = ballAlpha;
// The white border around is to distinguish colored balls from coins/bg // The white border around is to distinguish colored balls from coins/bg
drawBall( drawBall(
ctx, ctx,
@ -355,10 +360,11 @@ export function render(gameState: GameState) {
) { ) {
ctx.beginPath(); ctx.beginPath();
ctx.moveTo(gameState.puckPosition, gameState.gameZoneHeight); ctx.moveTo(gameState.puckPosition, gameState.gameZoneHeight);
ctx.globalAlpha = Math.max( ctx.globalAlpha =
telekinesisEffectRate(gameState, ball), Math.max(
yoyoEffectRate(gameState, ball), telekinesisEffectRate(gameState, ball),
); yoyoEffectRate(gameState, ball),
) * ballAlpha;
ctx.strokeStyle = gameState.puckColor; ctx.strokeStyle = gameState.puckColor;
ctx.bezierCurveTo( ctx.bezierCurveTo(
gameState.puckPosition, gameState.puckPosition,

View file

@ -680,4 +680,24 @@ export const rawUpgrades = [
help: (lvl: number) => t("upgrades.minefield.tooltip", { lvl }), help: (lvl: number) => t("upgrades.minefield.tooltip", { lvl }),
fullHelp: t("upgrades.minefield.verbose_description"), fullHelp: t("upgrades.minefield.verbose_description"),
}, },
{
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"),
},
] as const; ] as const;