This commit is contained in:
Renan LE CARO 2025-04-22 16:29:17 +02:00
parent 16911620c0
commit b8daf018b1
20 changed files with 1824 additions and 1870 deletions

View file

@ -17,6 +17,7 @@ Break colourful bricks, catch bouncing coins and select powerful upgrades !
## Done
- categorize and color perks
- removed : instant_upgrade
- nerfed : helium : now need to be level 3 to have the same effect of keeping coins up
@ -347,6 +348,7 @@ Break colourful bricks, catch bouncing coins and select powerful upgrades !
## Easy perks ideas
- ball turns following puck motion
- "+1 coin for each ball within a small radius of the broken brick" ?
- two for one : add a 2 for one upgrade combo to the choice lists
- cash out : double last level's gains

1373
dist/index.html vendored

File diff suppressed because one or more lines are too long

View file

@ -100,9 +100,9 @@ export async function openCreativeModePerksPicker() {
"/" +
(u.max + (creativeModePerks.limitless || 0)),
value: u,
className: creativeModePerks[u.id]
? "sandbox highlight"
: "sandbox not-highlighed",
className: ' upgrade '+(creativeModePerks[u.id]
? " highlight"
: " not-highlighed"),
tooltip: u.help(creativeModePerks[u.id] || 1),
})),
t("lab.select_level"),

View file

@ -371,17 +371,17 @@
{
"name": "icon:extra_life",
"size": 9,
"bricks": "___________rr_rr___rrrrrrr_rrrrrrrrrrrrrrrrrr_rrrrrrr___rrrrr_____rrr_______r_____________"
"bricks": "___________kk_Gk___kkGGkkG_kkGGkkGGkkGGkkGGkk_GkkGGkk___kGGkk_____Gkk_______k____"
},
{
"name": "icon:streak_shots",
"size": 8,
"bricks": "_W_W_W__W_W_W_W_tttttt_WttttttW________W______W______W_____WWWW_"
"bricks": "_tttttt__ttWttt___W_W____W___W__W_____W__W___W____W_W_____rrr___"
},
{
"name": "icon:base_combo",
"size": 7,
"bricks": "________bbbbb__bybyb__bbbbb__bybyb__bbbbb________"
"bricks": "________ttttt__tytyt__ttttt__tytyt__ttttt________"
},
{
"name": "icon:slow_down",
@ -391,12 +391,12 @@
{
"name": "icon:bigger_puck",
"size": 8,
"bricks": "_________tttttt__tttttt______________________W___________WWWWWW_"
"bricks": "_________kkkkkk__kkkkkk______________________W___________GGGGGG_"
},
{
"name": "icon:viscosity",
"size": 8,
"bricks": "________tt______bbtt__ttbbbbttbbbtbbtbbbbbtbbtbbbbbybbybbbbbbbbb"
"bricks": "________bb______ttbb__bbttttbbtttbttbtttttbttbtttttyttyttttttttt"
},
{
"name": "icon:left_is_lava",
@ -411,7 +411,7 @@
{
"name": "icon:telekinesis",
"size": 8,
"bricks": "_____PW_____s______P______s_______P_______s_______P_____WWWWW"
"bricks": "_____GW_____G______G______G_______G_______G_______G_____kkkkk___"
},
{
"name": "icon:top_is_lava",
@ -426,7 +426,7 @@
{
"name": "icon:skip_last",
"size": 5,
"bricks": "_ttt_t_t_ttt_ttt_t_t_ttt_"
"bricks": "kGGGkGkGkGGGkGGGkGkGkGGGk"
},
{
"name": "icon:multiball",
@ -461,7 +461,7 @@
{
"name": "icon:hot_start",
"size": 7,
"bricks": "ttttttttttt_tt_____W_____y_y_____y_____y_y_WWW_y_"
"bricks": "_______rry_rrryyr_ryryry_ryryyr_ryrrry_rrr_______"
},
{
"name": "icon:sapper",
@ -472,7 +472,7 @@
{
"name": "icon:bigger_explosions",
"size": 8,
"bricks": "__r_______ry_rr___ryry__ryyyWBrr_rrWyyy__Byryrr__yrryBrr_rr_____"
"bricks": "__O_______Oy_OO___OyOy__OyyyWBOO_OOWyyy__ByOyOO__yOOyBOO_OO_____"
},
{
"name": "icon:extra_levels",
@ -487,7 +487,7 @@
{
"name": "icon:soft_reset",
"size": 9,
"bricks": "__rr______rrr_yy__rrrr_yyy_rrrr_yyyy_____yyyy_yyyyyyyy_yyyyyyyy__yyyyyy____yyyy__"
"bricks": "__gg______ggg_yy__gggg_yyy_gggg_yyyy_____yyyy_yyyyyyyy_yyyyyyyy__yyyyyy____yyyy__"
},
{
"name": "icon:ball_repulse_ball",
@ -717,73 +717,73 @@
{
"name": "icon:concave_puck",
"size": 7,
"bricks": "___W_____________W__________W__W__WWW___WWWWWWWWW",
"bricks": "___G_____________G__________k__G__kkk___kkkkkkkkk",
"color": ""
},
{
"name": "icon:helium",
"size": 8,
"bricks": "v______vvv____vvv______vv______vv______vv______vv______v__WWWW__",
"bricks": "_y____y_yP____PyPP___yPPP____P_P_____P____y_y______y______WWW___",
"color": ""
},
{
"name": "icon:asceticism",
"size": 8,
"bricks": "_________y____y____W____y______y_________y____y_________y_WWWW_y",
"bricks": "_yyyyyy__yy__yy_____W_______r_________r____r_________r__WWW___r_",
"color": ""
},
{
"name": "icon:unbounded",
"size": 9,
"bricks": "WWWWWWWWWW_ttttt_WWrtttttrWW_ttttt_WWr_____rWW_______WWr___W_rWW_______WWrWWW__rW",
"size": 8,
"bricks": "ggttttggggttttggggttttgggg____gggg____gggg__W_gggg____ggggWWW_gg",
"color": ""
},
{
"name": "icon:shunt",
"size": 8,
"bricks": "_______y______yy______yy__yCCyyy__y__yyy_yy__yyy_yy__yyyyyy__yyy",
"bricks": "_______y______yy______yy__yyyyyy__y__yyy_yy__yyy_yy__yyyyyy__yyy",
"color": ""
},
{
"name": "icon:yoyo",
"size": 8,
"bricks": "_rrrrrr_rrrrrrrrrrrrrrrr_WWWWWW_rWrrrrrrrrWrrrrr_rrWrrr_____W___",
"bricks": "_GGGGGG_kkkkkkkkGGGGGGGG_WWWWWW_GWGGGGGGkkWkkkkk_GGWGGG_____W___",
"color": ""
},
{
"name": "icon:nbricks",
"size": 6,
"bricks": "yy__yyyyy_yyyyyyyyyyyyyyyy_yyyyy__yy",
"bricks": "yy__rryyy_yyyyyyyyyyyyyyyy_yyyrr__yy",
"color": ""
},
{
"name": "icon:etherealcoins",
"size": 11,
"bricks": "_____v_________vvv________ttt________ttt_______vtttv_____vvtttvv____vvtttvv____vvtttvv____v_ryr_v_______r________________",
"bricks": "_____y_________yyy________WWW________WWW_______yWWWy_____yyWWWyy____yyWWWyy____yyWWWyy____y_WyW_y_______W________________",
"color": ""
},
{
"name": "icon:shocks",
"size": 8,
"bricks": "_r__r_r_rWWWyy_r_WWW__r_yWWWyry_y_ryyy_rry__WWW___ryWWWryr__WWWy",
"bricks": "____y_Oy_WWWO_y__WWWOO_O_WWWy_yyyyOyyOO_OO_yWWW__yO_WWW_y__yWWW_",
"color": ""
},
{
"name": "icon:zen",
"size": 9,
"bricks": "___tt______tttt_____BttB_____bbbb____bbbbbb___BbbbbB___tttttt__tttttttt__tttttt__",
"size": 12,
"bricks": "________________bbbb_______bbbbbb_______bbbb________BrrB_______tttttt_____tttttttt_____tttttt______BrrrrB_____bbbbbbbb___bbbbbbbbbb___bbbbbbbb__",
"color": ""
},
{
"name": "icon:sacrifice",
"size": 9,
"bricks": "__r___r___rrr_rrr_rrWWWWWrrrrWrWrWrrrrWWrWWrr_rrWWWrr___rWrWr_____rrr_______r____",
"bricks": "__t___t___ttt_ttt_ttWWWWWttttWbWbWttttWWbWWtt_ttWWWtt___tWtWt_____ttt_______t____",
"color": ""
},
{
"name": "icon:trampoline",
"size": 8,
"bricks": "___y_____y____y___bbyb___bttttb_bttytttb_bttttb__tbbbbt__t____t_",
"bricks": "rrrrrrrrrttttttrrttttttrr______rr___W__rr______rr______r__yyy___",
"color": ""
},
{
@ -795,7 +795,7 @@
{
"name": "icon:forgiving",
"size": 8,
"bricks": "____G______G_G____G___G__G_____GG_____G__G___G____G_G____WWWWW__",
"bricks": "____y______y_y____y___y__y_____yy_____y__y___y____y_y____WWWWW__",
"color": ""
},
{
@ -807,13 +807,13 @@
{
"name": "icon:reach",
"size": 8,
"bricks": "________ttt__tttttt_Wttt__t__t____r__r___________________WWW____",
"bricks": "tttttttttttttttttt____ttrr____rr___________W_____________WWW____",
"color": ""
},
{
"name": "icon:passive_income",
"size": 7,
"bricks": "_ttttt__ttt_t______W____y____________y______ggg__",
"bricks": "_ttttt__ttt_t______W____y____________y_____rgggr_",
"color": ""
},
{
@ -825,7 +825,7 @@
{
"name": "icon:implosions",
"size": 8,
"bricks": "y______W__ryW_W__yrBWW____rBWWWy_WWWBrr___WWBrrryW_Wy___W_____y_",
"bricks": "y______W___yW_W__y_BWW_____BWWWy_WWWB_____WWB___yW_Wy___W_____y_",
"color": ""
},
{
@ -846,16 +846,10 @@
"bricks": "__llllll_llBlBlelllllleBWWWWWeeeWBWBWeBeWWWWWeeeWBWBWBe_WWWWWe__",
"color": ""
},
{
"name": "icon:loop",
"size": 7,
"bricks": "bbbbbbbtttttt_aaaaa__cccc___CCC____GG_____y______",
"color": ""
},
{
"name": "icon:addiction",
"size": 9,
"bricks": "__________________________l__WWWWW_lWWWyylllly_WWWWW_ly_______l__________________",
"bricks": "__________________________l__WWWWW_lWWWrrllllr_WWWWW_lr_______l__________________",
"color": ""
},
{
@ -937,7 +931,7 @@
{
"name": "icon:fountain_toss",
"size": 12,
"bricks": "__________________________________________________WWWWWWWW___WttttttttW_WtytttytyttWWtttyttttttWlWtyttttytWl_lWWWWWWWWl___llllllll______________",
"bricks": "WWWWW_______WWWWW____y_________y______________y______y__y_____WWWWWWWW___WttttttttW_WtytttytyttWWtttyttttttWlWtyttttytWl_lWWWWWWWWl___llllllll__",
"color": ""
},
{
@ -1181,13 +1175,13 @@
{
"name": "icon:hypnosis",
"size": 8,
"bricks": "WrrrrrrrWrWWWWWrWrWrrrWrWrWrWrWrWrWWWrWrWrrrrrWrWWWWWWWrrrrrrrrr",
"bricks": "___WW______WW_______ay_____c__a______c______y_______a_c____c_y_a",
"color": ""
},
{
"name": "icon:bricks_attract_ball",
"size": 8,
"bricks": "llW_____ll_v________p________bll____t_ll___G____lly_____ll_r____",
"bricks": "llW_____ll_P________P________Pll____P_ll___P____llP_____ll_P____",
"color": ""
},
{

View file

@ -297,6 +297,7 @@ export async function openUpgradesPicker(gameState: GameState) {
icon: string;
value: PerkId | "reroll";
help: string;
className:string;
}> = pickRandomUpgrades(
gameState,
3 + gameState.perks.one_more_choice ,

View file

@ -17,7 +17,6 @@ import {
import { stopRecording } from "./recording";
import { asyncAlert } from "./asyncAlert";
import { rawUpgrades } from "./upgrades";
import { run } from "jest";
import { editRawLevelList } from "./levelEditor";
import { openCreativeModePerksPicker } from "./creative";

View file

@ -607,6 +607,8 @@ export function pickRandomUpgrades(gameState: GameState, count: number) {
icon: icons["icon:" + u.id],
value: u.id as PerkId,
help: u.help(gameState.perks[u.id] + 1),
className: 'upgrade '
}));
}

View file

@ -328,9 +328,6 @@
"upgrades.implosions.name": "الانفجارات",
"upgrades.implosions.tooltip": "تؤدي الانفجارات إلى امتصاص العملات المعدنية بدلاً من تفجيرها",
"upgrades.implosions.verbose_description": "تُطبّق قوة الانفجار بطريقة أخرى. المستويات الأخرى تُشكّل \"انفجارًا أكبر\".",
"upgrades.instant_upgrade.name": "ترقية فورية",
"upgrades.instant_upgrade.tooltip": "+2 ترقية الآن، -1 اختيار حتى نهاية اللعبة.",
"upgrades.instant_upgrade.verbose_description": "اختر ترقيتين فورًا، لتحصل على واحدة مجانية وأخرى لاسترداد قيمة الميزة التي استخدمتها. مع كل قائمة تالية لاختيار الترقيات، ستجد خيارات أقل.",
"upgrades.left_is_lava.name": "تجنب الجانب الأيسر",
"upgrades.left_is_lava.tooltip": "+{{lvl}} مجموعة لكل طوبة مكسورة. تُعاد المجموعة إلى وضعها الطبيعي إذا ضربت الكرة الجانب الأيسر من الشاشة.",
"upgrades.left_is_lava.verbose_description": "كلما كسرتَ لبنة، ستزداد مجموعتكَ بواحدة، ما يعني أنك ستحصل على عملة إضافية من كل لبنة تكسرها لاحقًا.\n\nمع ذلك، ستُعاد ضبط مجموعتكَ بمجرد أن تصطدم كرتكَ بالجانب الأيسر.\n\nبمجرد أن ترتفع مجموعتكَ، يصبح الجانب الأيسر أحمر لتذكيرك بضرورة تجنب ضربها.\n\n",

View file

@ -11772,116 +11772,6 @@
</concept_node>
</children>
</folder_node>
<folder_node>
<name>instant_upgrade</name>
<children>
<concept_node>
<name>name</name>
<description/>
<comment/>
<translations>
<translation>
<language>ar-LB</language>
<approved>false</approved>
</translation>
<translation>
<language>de-DE</language>
<approved>true</approved>
</translation>
<translation>
<language>en-US</language>
<approved>true</approved>
</translation>
<translation>
<language>es-CL</language>
<approved>false</approved>
</translation>
<translation>
<language>fr-FR</language>
<approved>true</approved>
</translation>
<translation>
<language>ru-RU</language>
<approved>false</approved>
</translation>
<translation>
<language>tr-TR</language>
<approved>false</approved>
</translation>
</translations>
</concept_node>
<concept_node>
<name>tooltip</name>
<description/>
<comment/>
<translations>
<translation>
<language>ar-LB</language>
<approved>false</approved>
</translation>
<translation>
<language>de-DE</language>
<approved>true</approved>
</translation>
<translation>
<language>en-US</language>
<approved>true</approved>
</translation>
<translation>
<language>es-CL</language>
<approved>false</approved>
</translation>
<translation>
<language>fr-FR</language>
<approved>true</approved>
</translation>
<translation>
<language>ru-RU</language>
<approved>false</approved>
</translation>
<translation>
<language>tr-TR</language>
<approved>false</approved>
</translation>
</translations>
</concept_node>
<concept_node>
<name>verbose_description</name>
<description/>
<comment/>
<translations>
<translation>
<language>ar-LB</language>
<approved>false</approved>
</translation>
<translation>
<language>de-DE</language>
<approved>true</approved>
</translation>
<translation>
<language>en-US</language>
<approved>true</approved>
</translation>
<translation>
<language>es-CL</language>
<approved>false</approved>
</translation>
<translation>
<language>fr-FR</language>
<approved>true</approved>
</translation>
<translation>
<language>ru-RU</language>
<approved>false</approved>
</translation>
<translation>
<language>tr-TR</language>
<approved>false</approved>
</translation>
</translations>
</concept_node>
</children>
</folder_node>
<folder_node>
<name>left_is_lava</name>
<children>

View file

@ -328,9 +328,6 @@
"upgrades.implosions.name": "Implosionen",
"upgrades.implosions.tooltip": "Explosionen saugen Münzen an, anstatt sie wegzublasen",
"upgrades.implosions.verbose_description": "Die Explosionskraft wird in die andere Richtung angewendet. Weitere Stufen wirken als \"größere Explosion\".",
"upgrades.instant_upgrade.name": "Sofortiges Upgrade",
"upgrades.instant_upgrade.tooltip": "+2 Aufwertung jetzt, -1 Wahl bis Spielende.",
"upgrades.instant_upgrade.verbose_description": "Wählen Sie sofort zwei Upgrades aus, so dass Sie ein kostenloses Upgrade erhalten und eines, mit dem Sie das Upgrade, mit dem Sie diese Vergünstigung erhalten haben, zurückzahlen. Bei jedem weiteren Menü zur Auswahl von Upgrades gibt es weniger Optionen zur Auswahl.",
"upgrades.left_is_lava.name": "Linke Seite meiden",
"upgrades.left_is_lava.tooltip": "+{{lvl}} Combo pro zerbrochenem Stein. Combo wird zurückgesetzt, wenn der Ball die linke Seite des Bildschirms trifft.",
"upgrades.left_is_lava.verbose_description": "Jedes Mal, wenn du einen Ziegelstein zerbrichst, erhöht sich deine Kombo um eins, so dass du von allen weiteren Ziegelsteinen, die du zerbrichst, eine Münze mehr bekommst.\n\nAllerdings wird deine Combo zurückgesetzt, sobald dein Ball die linke Seite trifft.\n\nSobald deine Combo ansteigt, wird die linke Seite rot, um dich daran zu erinnern, dass du es vermeiden solltest, sie zu treffen.\n",

View file

@ -328,9 +328,6 @@
"upgrades.implosions.name": "Implosions",
"upgrades.implosions.tooltip": "Explosions suck coins in instead of blowing them out",
"upgrades.implosions.verbose_description": "The explosion force is applied the other way. Further levels act as \"bigger explosion\"",
"upgrades.instant_upgrade.name": "Instant upgrade",
"upgrades.instant_upgrade.tooltip": "+2 upgrade now, -1 choice until game end.",
"upgrades.instant_upgrade.verbose_description": "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.left_is_lava.name": "Avoid left side",
"upgrades.left_is_lava.tooltip": "+{{lvl}} combo per brick broken. Combo resets if ball hits the left side of the screen",
"upgrades.left_is_lava.verbose_description": "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",
@ -459,10 +456,10 @@
"upgrades.wind.verbose_description": "Wind depends on paddle position: left blows left, right blows right. Affects both balls and coins.",
"upgrades.wrap_left.name": "Wrap left",
"upgrades.wrap_left.tooltip": "Hitting the left side teleports the ball to the right side",
"upgrades.wrap_left.verbose_description": "Higher levels might teleport coins too",
"upgrades.wrap_left.verbose_description": "Teleporting will NOT count as a right side bounce. Higher levels might teleport coins too.",
"upgrades.wrap_right.name": "Wrap right",
"upgrades.wrap_right.tooltip": "Hitting the right side teleports the ball to the left side",
"upgrades.wrap_right.verbose_description": "Higher levels might teleport coins too",
"upgrades.wrap_right.verbose_description": "Teleporting will NOT count as a left side bounce. Higher levels might teleport coins too",
"upgrades.yoyo.name": "Yo-yo",
"upgrades.yoyo.tooltip": "Ball falls toward paddle",
"upgrades.yoyo.verbose_description": "It's the opposite of telekinesis, control the ball while it's falling back down.",

View file

@ -328,9 +328,6 @@
"upgrades.implosions.name": "Implosiones",
"upgrades.implosions.tooltip": "Las explosiones absorben las piezas en lugar de hacerlas estallar.",
"upgrades.implosions.verbose_description": "La fuerza de la explosión se aplica en sentido contrario. El nivel 2+ aumenta la potencia de la implosión.",
"upgrades.instant_upgrade.name": "Más vale pájaro en mano que ciento volando",
"upgrades.instant_upgrade.tooltip": "+2 de mejora ahora, -1 de elección hasta el final del juego.",
"upgrades.instant_upgrade.verbose_description": "Elige inmediatamente dos mejoras para conseguir una gratis y otra para pagar la que usaste para conseguir esta ventaja. Cada vez que elijas mejoras del siguiente menú, tendrás menos opciones.",
"upgrades.left_is_lava.name": "Evitar el lado izquierdo",
"upgrades.left_is_lava.tooltip": "+{{lvl}} combo por ladrillo, se pierde al tocar el borde izquierdo",
"upgrades.left_is_lava.verbose_description": "Cada vez que rompes un ladrillo, tu combo aumenta en uno, dándote una moneda extra cada vez que rompes un ladrillo.\n\nSin embargo, tu combo se reinicia en cuanto tu bola golpea el lado izquierdo.\n\nEn cuanto tu combo aumenta, el lado izquierdo se vuelve rojo para recordarte que debes evitar golpearlo.",

View file

@ -328,9 +328,6 @@
"upgrades.implosions.name": "Implosions",
"upgrades.implosions.tooltip": "Les explosions aspirent les pièces au lieu de les faire exploser.",
"upgrades.implosions.verbose_description": "La force dexplosion est appliquée dans lautre sens. Les niveaux 2+ augmentent la puissance de l'implosion. ",
"upgrades.instant_upgrade.name": "Un tiens vaut deux tu l'auras",
"upgrades.instant_upgrade.tooltip": "+2 améliorations, -1 choix jusqu'à la fin de la partie.",
"upgrades.instant_upgrade.verbose_description": "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.left_is_lava.name": "Éviter le côté gauche",
"upgrades.left_is_lava.tooltip": "+{{lvl}} combo par brique, perdu en touchant le bord gauche",
"upgrades.left_is_lava.verbose_description": "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.",

View file

@ -328,9 +328,6 @@
"upgrades.implosions.name": "Имплозии",
"upgrades.implosions.tooltip": "Взрывы всасывают монеты, а не выдувают их.",
"upgrades.implosions.verbose_description": "Сила взрыва действует в обратном направлении. Дальние уровни действуют как \"больший взрыв\".",
"upgrades.instant_upgrade.name": "Мгновенное обновление",
"upgrades.instant_upgrade.tooltip": "+2 апгрейда сейчас, -1 выбор до конца игры.",
"upgrades.instant_upgrade.verbose_description": "Сразу же выберите два апгрейда, чтобы получить один бесплатный и один в качестве компенсации за тот, что был использован для получения этого перка. В каждом последующем меню выбора апгрейдов будет все меньше вариантов.",
"upgrades.left_is_lava.name": "Избегайте левой стороны",
"upgrades.left_is_lava.tooltip": "+{{lvl}} комбо за каждый разбитый кирпич. Комбо сбрасывается, если мяч попадает в левую часть экрана",
"upgrades.left_is_lava.verbose_description": "Каждый раз, когда вы разбиваете кирпич, ваше комбо увеличивается на один, так что вы получите на одну монету больше со всех следующих разбитых кирпичей.\n\nОднако ваше комбо обнуляется, как только ваш шарик попадает в левую сторону.\n\nКак только ваше комбо увеличится, левая сторона станет красной, чтобы напомнить вам, что вы должны избегать столкновения с ней.\n",

View file

@ -328,9 +328,6 @@
"upgrades.implosions.name": "İç patlamalar",
"upgrades.implosions.tooltip": "Patlamalar paraları dışarı atmak yerine içeri çekiyor",
"upgrades.implosions.verbose_description": "Patlama kuvveti diğer şekilde uygulanır. Daha ileri seviyeler \"daha büyük patlama\" olarak işlev görür.",
"upgrades.instant_upgrade.name": "Anında yükseltme",
"upgrades.instant_upgrade.tooltip": "Şimdi +2 yükseltme, oyun sonuna kadar -1 seçim.",
"upgrades.instant_upgrade.verbose_description": "Hemen iki yükseltme seçin, böylece birini ücretsiz, diğerini de bu avantajı elde etmek için kullanılanı geri ödeyin. Yükseltmeleri seçmek için her sonraki menüde seçebileceğiniz daha az seçenek olacak.",
"upgrades.left_is_lava.name": "Sol taraftan kaçının",
"upgrades.left_is_lava.tooltip": "+ Kırılan tuğla başına{{lvl}} kombo. Top ekranın sol tarafına çarparsa kombo sıfırlanır",
"upgrades.left_is_lava.verbose_description": "Bir tuğlayı kırdığınızda, kombonuz bir artacak, böylece kırdığınız sonraki tüm tuğlalardan bir jeton daha alacaksınız.\n\nAncak, kombonuz topunuz sol tarafa çarptığı anda sıfırlanacaktır. \n\nKombonuz yükseldiği anda, sol taraf kırmızıya dönerek onlara çarpmamanız gerektiğini hatırlatır.\n",

View file

@ -289,7 +289,7 @@ export async function editRawLevelList(nth: number, color = "W") {
editRawLevelList(nth, color);
}
function automaticBackgroundColor(bricks: string[]) {
export function automaticBackgroundColor(bricks: string[]) {
return bricks.filter((b) => b === "g").length >
bricks.filter((b) => b !== "_").length * 0.05
? "#115988"

View file

@ -5,6 +5,7 @@ import _appVersion from "./data/version.json";
import { rawUpgrades } from "./upgrades";
import { getLevelBackground } from "./getLevelBackground";
import { levelIconHTML } from "./levelIcon";
import {automaticBackgroundColor} from "./levelEditor";
const palette = _palette as Palette;
@ -15,8 +16,9 @@ export const appVersion = _appVersion as string;
export const icons = {} as { [k: string]: string };
export function transformRawLevel(level: RawLevel) {
const bricks = level.bricks
const splitBricks=level.bricks
.split("")
const bricks = splitBricks
.map((c) => palette[c])
.slice(0, level.size * level.size);
const bricksCount = bricks.filter((i) => i).length;
@ -27,7 +29,7 @@ export function transformRawLevel(level: RawLevel) {
bricks,
bricksCount,
icon,
color: level.color || "#000000",
color: automaticBackgroundColor(splitBricks) ,
svg: getLevelBackground(level),
sortKey: ((Math.random() + 3) / 3.5) * bricksCount,
};

File diff suppressed because it is too large Load diff

View file

@ -38,7 +38,7 @@ export async function openStartingPerksEditor() {
text: u.name,
tooltip: u.help(1),
value: [u],
checked,
checked
};
});
const checkedList = buttons.filter((b) => b.checked);

View file

@ -13,6 +13,7 @@ export const noCreative: PerkId[] = [
export const rawUpgrades = [
{
requires: "",
threshold: 0,
gift: false,
@ -28,6 +29,7 @@ export const rawUpgrades = [
},
{
requires: "",
threshold: 0,
id: "base_combo",
@ -40,6 +42,7 @@ export const rawUpgrades = [
fullHelp: t("upgrades.base_combo.verbose_description"),
},
{
requires: "",
threshold: 0,
gift: false,
@ -51,6 +54,7 @@ export const rawUpgrades = [
fullHelp: t("upgrades.slow_down.verbose_description"),
},
{
requires: "",
threshold: 0,
gift: false,
@ -62,6 +66,7 @@ export const rawUpgrades = [
fullHelp: t("upgrades.bigger_puck.verbose_description"),
},
{
requires: "",
threshold: 0,
gift: false,
@ -74,6 +79,7 @@ export const rawUpgrades = [
fullHelp: t("upgrades.viscosity.verbose_description"),
},
{
requires: "",
threshold: 50,
gift: false,
@ -88,6 +94,7 @@ export const rawUpgrades = [
fullHelp: t("upgrades.skip_last.verbose_description"),
},
{
requires: "",
threshold: 100,
id: "streak_shots",
@ -100,6 +107,7 @@ export const rawUpgrades = [
},
{
requires: "",
threshold: 200,
@ -113,6 +121,7 @@ export const rawUpgrades = [
fullHelp: t("upgrades.left_is_lava.verbose_description"),
},
{
requires: "",
threshold: 300,
@ -125,6 +134,7 @@ export const rawUpgrades = [
fullHelp: t("upgrades.right_is_lava.verbose_description"),
},
{
requires: "",
threshold: 400,
@ -137,6 +147,7 @@ export const rawUpgrades = [
fullHelp: t("upgrades.top_is_lava.verbose_description"),
},
{
requires: "",
threshold: 500,
@ -152,6 +163,7 @@ export const rawUpgrades = [
fullHelp: t("upgrades.telekinesis.verbose_description"),
},
{
requires: "",
threshold: 700,
gift: false,
@ -166,6 +178,7 @@ export const rawUpgrades = [
fullHelp: t("upgrades.coin_magnet.verbose_description"),
},
{
requires: "",
threshold: 800,
@ -178,6 +191,7 @@ export const rawUpgrades = [
fullHelp: t("upgrades.multiball.verbose_description"),
},
{
requires: "",
threshold: 1000,
@ -191,6 +205,7 @@ export const rawUpgrades = [
fullHelp: t("upgrades.smaller_puck.verbose_description"),
},
{
requires: "",
threshold: 1500,
id: "pierce",
@ -202,6 +217,7 @@ export const rawUpgrades = [
fullHelp: t("upgrades.pierce.verbose_description"),
},
{
requires: "",
threshold: 2000,
@ -214,6 +230,7 @@ export const rawUpgrades = [
fullHelp: t("upgrades.picky_eater.verbose_description"),
},
{
requires: "",
threshold: 2500,
@ -226,6 +243,7 @@ export const rawUpgrades = [
fullHelp: t("upgrades.metamorphosis.verbose_description"),
},
{
requires: "",
threshold: 3000,
@ -238,6 +256,7 @@ export const rawUpgrades = [
fullHelp: t("upgrades.compound_interest.verbose_description"),
},
{
requires: "",
threshold: 4000,
id: "hot_start",
@ -253,6 +272,7 @@ export const rawUpgrades = [
fullHelp: t("upgrades.hot_start.verbose_description"),
},
{
requires: "",
threshold: 6000,
@ -268,6 +288,7 @@ export const rawUpgrades = [
fullHelp: t("upgrades.sapper.verbose_description"),
},
{
requires: "",
threshold: 9000,
@ -280,6 +301,7 @@ export const rawUpgrades = [
fullHelp: t("upgrades.bigger_explosions.verbose_description"),
},
{
requires: "",
threshold: 13000,
@ -294,6 +316,7 @@ export const rawUpgrades = [
fullHelp: t("upgrades.extra_levels.verbose_description"),
},
{
requires: "",
threshold: 15000,
@ -306,6 +329,7 @@ export const rawUpgrades = [
fullHelp: t("upgrades.pierce_color.verbose_description"),
},
{
requires: "",
threshold: 18000,
gift: false,
@ -320,6 +344,7 @@ export const rawUpgrades = [
fullHelp: t("upgrades.soft_reset.verbose_description"),
},
{
requires: "multiball",
threshold: 21000,
gift: false,
@ -334,6 +359,7 @@ export const rawUpgrades = [
fullHelp: t("upgrades.ball_repulse_ball.verbose_description"),
},
{
requires: "multiball",
threshold: 25000,
gift: false,
@ -348,6 +374,7 @@ export const rawUpgrades = [
fullHelp: t("upgrades.ball_attract_ball.verbose_description"),
},
{
requires: "",
threshold: 30000,
@ -363,6 +390,7 @@ export const rawUpgrades = [
fullHelp: t("upgrades.puck_repulse_ball.verbose_description"),
},
{
requires: "",
threshold: 35000,
@ -376,6 +404,7 @@ export const rawUpgrades = [
fullHelp: t("upgrades.wind.verbose_description"),
},
{
requires: "",
threshold: 40000,
@ -392,6 +421,7 @@ export const rawUpgrades = [
fullHelp: t("upgrades.sturdy_bricks.verbose_description"),
},
{
requires: "",
threshold: 45000,
@ -408,6 +438,7 @@ export const rawUpgrades = [
fullHelp: t("upgrades.respawn.verbose_description"),
},
{
requires: "",
threshold: 50000,
gift: false,
@ -419,6 +450,7 @@ export const rawUpgrades = [
fullHelp: t("upgrades.one_more_choice.verbose_description"),
},
{
requires: "",
threshold: 55000,
gift: false,
@ -433,6 +465,7 @@ export const rawUpgrades = [
fullHelp: t("upgrades.double_or_nothing.verbose_description"),
},
{
requires: "",
threshold: 60000,
gift: false,
@ -444,6 +477,7 @@ export const rawUpgrades = [
fullHelp: t("upgrades.concave_puck.verbose_description"),
},
{
requires: "",
threshold: 65000,
gift: false,
@ -455,6 +489,7 @@ export const rawUpgrades = [
fullHelp: t("upgrades.helium.verbose_description"),
},
{
requires: "",
threshold: 70000,
gift: true,
@ -466,8 +501,8 @@ export const rawUpgrades = [
fullHelp: t("upgrades.asceticism.verbose_description"),
},
{
requires: "",
requires: "",
threshold: 75000,
gift: false,
@ -478,6 +513,7 @@ export const rawUpgrades = [
fullHelp: t("upgrades.unbounded.verbose_description"),
},
{
requires: "",
threshold: 80000,
@ -493,6 +529,7 @@ export const rawUpgrades = [
fullHelp: t("upgrades.shunt.verbose_description"),
},
{
requires: "",
threshold: 85000,
@ -505,6 +542,7 @@ export const rawUpgrades = [
fullHelp: t("upgrades.yoyo.verbose_description"),
},
{
requires: "",
threshold: 90000,
@ -517,6 +555,7 @@ export const rawUpgrades = [
fullHelp: t("upgrades.nbricks.verbose_description"),
},
{
requires: "",
threshold: 95000,
@ -529,6 +568,7 @@ export const rawUpgrades = [
fullHelp: t("upgrades.etherealcoins.verbose_description"),
},
{
requires: "multiball",
threshold: 100000,
gift: false,
@ -540,6 +580,7 @@ export const rawUpgrades = [
fullHelp: t("upgrades.shocks.verbose_description"),
},
{
requires: "",
threshold: 105000,
gift: true,
@ -551,6 +592,7 @@ export const rawUpgrades = [
fullHelp: t("upgrades.zen.verbose_description"),
},
{
requires: "extra_life",
threshold: 110000,
gift: false,
@ -566,6 +608,7 @@ export const rawUpgrades = [
},
{
requires: "",
threshold: 115000,
gift: true,
@ -577,6 +620,7 @@ export const rawUpgrades = [
fullHelp: t("upgrades.trampoline.verbose_description"),
},
{
requires: "",
threshold: 120000,
@ -589,6 +633,7 @@ export const rawUpgrades = [
fullHelp: t("upgrades.ghost_coins.verbose_description"),
},
{
requires: "",
threshold: 125000,
gift: false,
@ -600,6 +645,7 @@ export const rawUpgrades = [
fullHelp: t("upgrades.forgiving.verbose_description"),
},
{
requires: "",
threshold: 130000,
@ -612,6 +658,7 @@ export const rawUpgrades = [
fullHelp: t("upgrades.ball_attracts_coins.verbose_description"),
},
{
requires: "",
threshold: 135000,
// a bit too hard when starting up
@ -624,6 +671,7 @@ export const rawUpgrades = [
fullHelp: t("upgrades.reach.verbose_description"),
},
{
requires: "",
threshold: 140000,
@ -637,6 +685,7 @@ export const rawUpgrades = [
fullHelp: t("upgrades.passive_income.verbose_description"),
},
{
requires: "",
threshold: 145000,
gift: false,
@ -648,6 +697,7 @@ export const rawUpgrades = [
fullHelp: t("upgrades.clairvoyant.verbose_description"),
},
{
requires: "",
threshold: 150000,
@ -661,6 +711,7 @@ export const rawUpgrades = [
fullHelp: t("upgrades.side_kick.verbose_description"),
},
{
requires: "",
threshold: 150000,
@ -674,6 +725,7 @@ export const rawUpgrades = [
fullHelp: t("upgrades.side_flip.verbose_description"),
},
{
requires: "",
threshold: 155000,
gift: false,
@ -685,6 +737,7 @@ export const rawUpgrades = [
fullHelp: t("upgrades.implosions.verbose_description"),
},
{
requires: "",
threshold: 160000,
gift: false,
@ -696,6 +749,7 @@ export const rawUpgrades = [
fullHelp: t("upgrades.corner_shot.verbose_description"),
},
{
requires: "",
threshold: 165000,
gift: false,
@ -708,6 +762,7 @@ export const rawUpgrades = [
fullHelp: t("upgrades.addiction.verbose_description"),
},
{
requires: "",
threshold: 170000,
gift: false,
@ -719,6 +774,7 @@ export const rawUpgrades = [
fullHelp: t("upgrades.fountain_toss.verbose_description"),
},
{
requires: "",
threshold: 175000,
gift: false,
@ -729,6 +785,7 @@ export const rawUpgrades = [
fullHelp: t("upgrades.limitless.verbose_description"),
},
{
requires: "",
threshold: 180000,
gift: false,
@ -740,6 +797,7 @@ export const rawUpgrades = [
fullHelp: t("upgrades.minefield.verbose_description"),
},
{
requires: "",
threshold: 185000,
gift: false,
@ -751,6 +809,7 @@ export const rawUpgrades = [
fullHelp: t("upgrades.trickledown.verbose_description"),
},
{
requires: "",
threshold: 190000,
gift: false,
@ -763,6 +822,7 @@ export const rawUpgrades = [
fullHelp: t("upgrades.transparency.verbose_description"),
},
{
requires: "",
threshold: 195000,
gift: false,
@ -774,6 +834,7 @@ export const rawUpgrades = [
fullHelp: t("upgrades.superhot.verbose_description"),
},
{
requires: "",
threshold: 200000,
gift: false,
@ -785,6 +846,7 @@ export const rawUpgrades = [
fullHelp: t("upgrades.bricks_attract_coins.verbose_description"),
},
{
requires: "",
threshold: 205000,
gift: false,
@ -796,6 +858,7 @@ export const rawUpgrades = [
fullHelp: t("upgrades.rainbow.verbose_description"),
},
{
requires: "metamorphosis",
threshold: 210000,
gift: false,
@ -807,6 +870,7 @@ export const rawUpgrades = [
fullHelp: t("upgrades.hypnosis.verbose_description"),
},
{
requires: "",
threshold: 215000,
gift: false,
@ -818,6 +882,7 @@ export const rawUpgrades = [
fullHelp: t("upgrades.bricks_attract_ball.verbose_description"),
},
{
requires: "",
threshold: 220000,
gift: false,
@ -828,6 +893,7 @@ export const rawUpgrades = [
fullHelp: t("upgrades.buoy.verbose_description"),
},
{
requires: "",
threshold: 225000,
gift: false,
@ -838,6 +904,7 @@ export const rawUpgrades = [
fullHelp: t("upgrades.ottawa_treaty.verbose_description"),
},
{
requires: "",
threshold: 230000,
gift: false,
@ -849,6 +916,7 @@ export const rawUpgrades = [
fullHelp: t("upgrades.three_cushion.verbose_description"),
},
{
requires: "",
threshold: 235000,
gift: false,
@ -859,6 +927,7 @@ export const rawUpgrades = [
fullHelp: t("upgrades.sticky_coins.verbose_description"),
},
{
requires: "",
threshold: 240000,
gift: false,
@ -869,6 +938,7 @@ export const rawUpgrades = [
fullHelp: t("upgrades.wrap_left.verbose_description"),
},
{
requires: "",
threshold: 245000,
gift: false,
@ -879,6 +949,7 @@ export const rawUpgrades = [
fullHelp: t("upgrades.wrap_right.verbose_description"),
},
{
requires: "multiball",
threshold: 245000,
gift: false,