mirror of
https://gitlab.com/lecarore/breakout71.git
synced 2025-04-26 15:06:16 -04:00
wip
This commit is contained in:
parent
16911620c0
commit
b8daf018b1
20 changed files with 1824 additions and 1870 deletions
|
@ -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
|
||||
|
|
1361
dist/index.html
vendored
1361
dist/index.html
vendored
File diff suppressed because one or more lines are too long
|
@ -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"),
|
||||
|
|
|
@ -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": ""
|
||||
},
|
||||
{
|
||||
|
|
|
@ -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 ,
|
||||
|
|
|
@ -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";
|
||||
|
||||
|
|
|
@ -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 '
|
||||
|
||||
}));
|
||||
}
|
||||
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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.",
|
||||
|
|
|
@ -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.",
|
||||
|
|
|
@ -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 d’explosion est appliquée dans l’autre 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.",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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,
|
||||
};
|
||||
|
|
|
@ -28,7 +28,6 @@ import {
|
|||
wallBouncedBest,
|
||||
wallBouncedGood,
|
||||
} from "./pure_functions";
|
||||
import { getCurrentMaxCoins } from "./settings";
|
||||
|
||||
export const gameCanvas = document.getElementById("game") as HTMLCanvasElement;
|
||||
export const ctx = gameCanvas.getContext("2d", {
|
||||
|
@ -57,6 +56,7 @@ export function getHaloScale() {
|
|||
}
|
||||
|
||||
let framesCounter = 0;
|
||||
|
||||
export function render(gameState: GameState) {
|
||||
framesCounter++;
|
||||
startWork("render:init");
|
||||
|
@ -567,18 +567,19 @@ export function render(gameState: GameState) {
|
|||
startWork("render:bottom_line");
|
||||
ctx.globalAlpha = 1;
|
||||
const corner = getCornerOffset(gameState);
|
||||
const bottomLineIsRed = hasCombo && gameState.perks.compound_interest
|
||||
drawStraightLine(
|
||||
ctx,
|
||||
gameState,
|
||||
(hasCombo && gameState.perks.compound_interest && "#FF0000") ||
|
||||
(isOptionOn("mobile-mode") && "#666666") ||
|
||||
(corner && "#666666") ||
|
||||
(bottomLineIsRed && "#FF0000") ||
|
||||
(isOptionOn("mobile-mode") && "#FFFFFF") ||
|
||||
(corner && "#FFFFFF") ||
|
||||
"",
|
||||
gameState.offsetXRoundedDown - corner,
|
||||
gameState.gameZoneHeight - 1,
|
||||
width - gameState.offsetXRoundedDown + corner,
|
||||
gameState.gameZoneHeight - 1,
|
||||
1,
|
||||
bottomLineIsRed ? 1 : 0.5,
|
||||
);
|
||||
|
||||
startWork("render:contrast");
|
||||
|
@ -652,27 +653,32 @@ function drawStraightLine(
|
|||
y2,
|
||||
alpha = 1,
|
||||
) {
|
||||
|
||||
ctx.globalAlpha = alpha;
|
||||
if (!mode) return;
|
||||
|
||||
x1 = Math.round(x1);
|
||||
y1 = Math.round(y1);
|
||||
x2 = Math.round(x2);
|
||||
y2 = Math.round(y2);
|
||||
ctx.globalAlpha = alpha;
|
||||
if (!mode) return;
|
||||
ctx.strokeStyle = mode;
|
||||
|
||||
if (mode == "#FF0000") {
|
||||
ctx.strokeStyle='red'
|
||||
ctx.lineDashOffset = getDashOffset(gameState);
|
||||
ctx.lineWidth = 2;
|
||||
ctx.setLineDash(redBorderDash);
|
||||
} else {
|
||||
ctx.lineWidth = 1;
|
||||
}
|
||||
ctx.beginPath();
|
||||
ctx.moveTo(x1, y1);
|
||||
ctx.lineTo(x2, y2);
|
||||
ctx.stroke();
|
||||
if (mode == "#FF0000") {
|
||||
ctx.setLineDash(emptyArray);
|
||||
ctx.lineWidth = 1;
|
||||
} else {
|
||||
ctx.fillStyle = mode;
|
||||
ctx.fillRect(Math.min(x1,x2), Math.min(y1,y2), Math.max(1, Math.abs(x1-x2)), Math.max(1, Math.abs(y1-y2)), )
|
||||
}
|
||||
|
||||
if (mode == "#FF0000") {
|
||||
}
|
||||
ctx.globalAlpha = 1;
|
||||
}
|
||||
|
@ -1177,6 +1183,7 @@ export function getDashOffset(gameState: GameState) {
|
|||
|
||||
let wakeLock = null,
|
||||
wakeLockPending = false;
|
||||
|
||||
function askForWakeLock(gameState: GameState) {
|
||||
if (
|
||||
gameState.startParams.computer_controlled &&
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue