mirror of
https://gitlab.com/lecarore/breakout71.git
synced 2025-06-15 10:44:42 -04:00
wip
This commit is contained in:
parent
9716235531
commit
0a1d9dfe2f
18 changed files with 2391 additions and 1981 deletions
10
Readme.md
10
Readme.md
|
@ -22,6 +22,14 @@ Other translation are very welcome, contact me if you'd like to submit one.
|
||||||
|
|
||||||
# Changelog
|
# Changelog
|
||||||
## To do
|
## To do
|
||||||
|
## Done
|
||||||
|
|
||||||
|
- level editor : removed the conditions on bricks count, level name and credits to be able to copy the code
|
||||||
|
- shadow around ball when there are many coins : enabled in basic mode too
|
||||||
|
- hot start : after reset, if you raise the combo again, only start ticking down after a whole second.
|
||||||
|
- new perk : ottawa treaty, breaking a brick near a bomb disarms the bomb
|
||||||
|
- shocks now doesn't add ball speed at level 1
|
||||||
|
- creative mode UI rework
|
||||||
- compound_interest : combo resets as soon as coin passes the paddle line
|
- compound_interest : combo resets as soon as coin passes the paddle line
|
||||||
- added bombs to implosion and kaboom starter levels
|
- added bombs to implosion and kaboom starter levels
|
||||||
- toast an error if storage is blocked
|
- toast an error if storage is blocked
|
||||||
|
@ -320,7 +328,7 @@ Other translation are very welcome, contact me if you'd like to submit one.
|
||||||
- cash out : double last level's gains
|
- cash out : double last level's gains
|
||||||
- snowball : Combo resets every 0.1s . +1 combo for each combo gained Since last reset.
|
- snowball : Combo resets every 0.1s . +1 combo for each combo gained Since last reset.
|
||||||
- Chain reaction : +lvl*lvl combo per brick broken by an explosion, combo resets after explosion is over
|
- Chain reaction : +lvl*lvl combo per brick broken by an explosion, combo resets after explosion is over
|
||||||
|
- catching a coin changes the color of the balls
|
||||||
- coins stained by balls
|
- coins stained by balls
|
||||||
- fast pause : pause delay divided by {{lvl}} (helps with teleport)
|
- fast pause : pause delay divided by {{lvl}} (helps with teleport)
|
||||||
- [colin] Capital - les vies non perdues à la fin du niveau rapportent un bonus de points
|
- [colin] Capital - les vies non perdues à la fin du niveau rapportent un bonus de points
|
||||||
|
|
163
dist/index.html
vendored
163
dist/index.html
vendored
File diff suppressed because one or more lines are too long
|
@ -116,7 +116,7 @@ export async function openCreativeModePerksPicker() {
|
||||||
});
|
});
|
||||||
setSettingValue("creativeModePerks", creativeModePerks);
|
setSettingValue("creativeModePerks", creativeModePerks);
|
||||||
setSettingValue("creativeModeLevel", '')
|
setSettingValue("creativeModeLevel", '')
|
||||||
} else if (choice === "play") {
|
} else if (choice === "play" || ("bricks" in choice && choice.name==getSettingValue("creativeModeLevel", ''))) {
|
||||||
if (await confirmRestart(gameState)) {
|
if (await confirmRestart(gameState)) {
|
||||||
restart({
|
restart({
|
||||||
perks: creativeModePerks,
|
perks: creativeModePerks,
|
||||||
|
@ -131,6 +131,8 @@ export async function openCreativeModePerksPicker() {
|
||||||
creativeModePerks[choice.id] =
|
creativeModePerks[choice.id] =
|
||||||
((creativeModePerks[choice.id] || 0) + 1) %
|
((creativeModePerks[choice.id] || 0) + 1) %
|
||||||
(choice.max + 1 + (creativeModePerks.limitless || 0));
|
(choice.max + 1 + (creativeModePerks.limitless || 0));
|
||||||
|
|
||||||
|
setSettingValue("creativeModePerks", creativeModePerks);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1341,8 +1341,22 @@
|
||||||
{
|
{
|
||||||
"color": "#115988",
|
"color": "#115988",
|
||||||
"size": 21,
|
"size": 21,
|
||||||
"bricks": "__________________________________________________yy_______________yy__yy__yy___________yy__yy__yy____________yy__yy_yy_________y__yy__yy_yy________yyy_yyy_yy_yy_________yy__yy_yyyyy__________yy_yyyyyyyy___yyy____yyyyygggyyy__yyy______yyygBBBgyy_yyy________ygBBBBBgyyyy_________ygBBBBBgyyy__________yygBBBgyyyy___________yygBgyyyy____________yyyByyyy_____________yyyyByy_______________yyByy_________________r_________________________________",
|
"bricks": "__________________________________________________yy_______________yy__yy__yy___________yy__yy__yy____________yy__yy_yy_________y__yy__yy_yy________yyy_yyy_yy_yy_________yy__yy_yyyyy__________yy_yyyyyyyy___yyy____yyyyygggyyy__yyy______yyygBBBgyy_yyy________ygBBBBBgyyyy__W______ygBBBBBgyyy__________yygBBBgyyyy___________yygBgyyyy____________yyyByyyy_____________yyyyByy_______________yyByy_________________r_________________________________",
|
||||||
"name": "A Very Dangerous High-Five",
|
"name": "A Very Dangerous High-Five",
|
||||||
"credit": "Suggested by Noodlemire. A unique shape, fun to bounce the ball between fingers. The palm was initially boring on its own, so I gave it a big bomb. It adds a distinct feeling between the top and bottom halves."
|
"credit": "Suggested by Noodlemire. A unique shape, fun to bounce the ball between fingers. The palm was initially boring on its own, so I gave it a big bomb. It adds a distinct feeling between the top and bottom halves."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "icon:buoy",
|
||||||
|
"size": 7,
|
||||||
|
"bricks": "___b______b_____bbb__abbbbbaaatttaaaaataaaaaaaaaa",
|
||||||
|
"svg": null,
|
||||||
|
"color": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "icon:ottawa_treaty",
|
||||||
|
"size": 8,
|
||||||
|
"bricks": "BBtWWtBBBttWWttBtWWtttWtttWWWWtttttWWtttttWWWtttBWWtWttBBBtttWBB",
|
||||||
|
"svg": null,
|
||||||
|
"color": ""
|
||||||
}
|
}
|
||||||
]
|
]
|
|
@ -5,7 +5,6 @@ import { gameState, pause, restart } from "./game";
|
||||||
import {
|
import {
|
||||||
currentLevelInfo,
|
currentLevelInfo,
|
||||||
describeLevel,
|
describeLevel,
|
||||||
findLast,
|
|
||||||
pickedUpgradesHTMl,
|
pickedUpgradesHTMl,
|
||||||
reasonLevelIsLocked,
|
reasonLevelIsLocked,
|
||||||
} from "./game_utils";
|
} from "./game_utils";
|
||||||
|
@ -98,6 +97,8 @@ export function gameOver(title: string, intro: string) {
|
||||||
help: "",
|
help: "",
|
||||||
},
|
},
|
||||||
`<div id="level-recording-container"></div>`,
|
`<div id="level-recording-container"></div>`,
|
||||||
|
|
||||||
|
pickedUpgradesHTMl(gameState),
|
||||||
unlocksInfo,
|
unlocksInfo,
|
||||||
getHistograms(gameState),
|
getHistograms(gameState),
|
||||||
],
|
],
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -269,6 +269,9 @@
|
||||||
"upgrades.bricks_attract_coins.name": "الطوب يجذب العملات المعدنية",
|
"upgrades.bricks_attract_coins.name": "الطوب يجذب العملات المعدنية",
|
||||||
"upgrades.bricks_attract_coins.tooltip": "يساعدهم على البقاء هناك",
|
"upgrades.bricks_attract_coins.tooltip": "يساعدهم على البقاء هناك",
|
||||||
"upgrades.bricks_attract_coins.verbose_description": "",
|
"upgrades.bricks_attract_coins.verbose_description": "",
|
||||||
|
"upgrades.buoy.name": "",
|
||||||
|
"upgrades.buoy.tooltip": "",
|
||||||
|
"upgrades.buoy.verbose_description": "",
|
||||||
"upgrades.clairvoyant.name": "مستبصر",
|
"upgrades.clairvoyant.name": "مستبصر",
|
||||||
"upgrades.clairvoyant.tooltip": "شاهد المستويات القادمة، نقاط الصحة للطوب واتجاه الكرة",
|
"upgrades.clairvoyant.tooltip": "شاهد المستويات القادمة، نقاط الصحة للطوب واتجاه الكرة",
|
||||||
"upgrades.clairvoyant.verbose_description": "يساعدك على اختيار الترقيات المناسبة وفهم كيفية عمل الطوب المتين. يُضيف المستويان 2 و3 معلومات إضافية حول فائدة مشكوك فيها (متوفرة في وضع الحلقة).",
|
"upgrades.clairvoyant.verbose_description": "يساعدك على اختيار الترقيات المناسبة وفهم كيفية عمل الطوب المتين. يُضيف المستويان 2 و3 معلومات إضافية حول فائدة مشكوك فيها (متوفرة في وضع الحلقة).",
|
||||||
|
@ -340,6 +343,9 @@
|
||||||
"upgrades.one_more_choice.name": "خيار إضافي",
|
"upgrades.one_more_choice.name": "خيار إضافي",
|
||||||
"upgrades.one_more_choice.tooltip": "ستوفر عمليات رفع المستوى الإضافية {{lvl}} خيارًا إضافيًا في القائمة",
|
"upgrades.one_more_choice.tooltip": "ستوفر عمليات رفع المستوى الإضافية {{lvl}} خيارًا إضافيًا في القائمة",
|
||||||
"upgrades.one_more_choice.verbose_description": "ستحتوي كل قائمة ترقية على خيار إضافي. هذا لا يزيد من عدد الترقيات المتاحة.",
|
"upgrades.one_more_choice.verbose_description": "ستحتوي كل قائمة ترقية على خيار إضافي. هذا لا يزيد من عدد الترقيات المتاحة.",
|
||||||
|
"upgrades.ottawa_treaty.name": "",
|
||||||
|
"upgrades.ottawa_treaty.tooltip": "",
|
||||||
|
"upgrades.ottawa_treaty.verbose_description": "",
|
||||||
"upgrades.passive_income.name": "الدخل السلبي",
|
"upgrades.passive_income.name": "الدخل السلبي",
|
||||||
"upgrades.passive_income.tooltip": "+{{lvl}} مجموعة / لبنة، ما لم يتم تحريك المجداف في آخر {{time}}ثانية، ثم يتم إعادة تعيينه بدلاً من ذلك",
|
"upgrades.passive_income.tooltip": "+{{lvl}} مجموعة / لبنة، ما لم يتم تحريك المجداف في آخر {{time}}ثانية، ثم يتم إعادة تعيينه بدلاً من ذلك",
|
||||||
"upgrades.passive_income.verbose_description": "يمكن لبعض الامتيازات أن تساعد الكرات على القيام بما تريد دون الحاجة إلى القيام بأي شيء.",
|
"upgrades.passive_income.verbose_description": "يمكن لبعض الامتيازات أن تساعد الكرات على القيام بما تريد دون الحاجة إلى القيام بأي شيء.",
|
||||||
|
|
|
@ -9617,6 +9617,116 @@
|
||||||
</concept_node>
|
</concept_node>
|
||||||
</children>
|
</children>
|
||||||
</folder_node>
|
</folder_node>
|
||||||
|
<folder_node>
|
||||||
|
<name>buoy</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>false</approved>
|
||||||
|
</translation>
|
||||||
|
<translation>
|
||||||
|
<language>en-US</language>
|
||||||
|
<approved>false</approved>
|
||||||
|
</translation>
|
||||||
|
<translation>
|
||||||
|
<language>es-CL</language>
|
||||||
|
<approved>false</approved>
|
||||||
|
</translation>
|
||||||
|
<translation>
|
||||||
|
<language>fr-FR</language>
|
||||||
|
<approved>false</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>false</approved>
|
||||||
|
</translation>
|
||||||
|
<translation>
|
||||||
|
<language>en-US</language>
|
||||||
|
<approved>false</approved>
|
||||||
|
</translation>
|
||||||
|
<translation>
|
||||||
|
<language>es-CL</language>
|
||||||
|
<approved>false</approved>
|
||||||
|
</translation>
|
||||||
|
<translation>
|
||||||
|
<language>fr-FR</language>
|
||||||
|
<approved>false</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>false</approved>
|
||||||
|
</translation>
|
||||||
|
<translation>
|
||||||
|
<language>en-US</language>
|
||||||
|
<approved>false</approved>
|
||||||
|
</translation>
|
||||||
|
<translation>
|
||||||
|
<language>es-CL</language>
|
||||||
|
<approved>false</approved>
|
||||||
|
</translation>
|
||||||
|
<translation>
|
||||||
|
<language>fr-FR</language>
|
||||||
|
<approved>false</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>
|
<folder_node>
|
||||||
<name>clairvoyant</name>
|
<name>clairvoyant</name>
|
||||||
<children>
|
<children>
|
||||||
|
@ -12217,6 +12327,116 @@
|
||||||
</concept_node>
|
</concept_node>
|
||||||
</children>
|
</children>
|
||||||
</folder_node>
|
</folder_node>
|
||||||
|
<folder_node>
|
||||||
|
<name>ottawa_treaty</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>false</approved>
|
||||||
|
</translation>
|
||||||
|
<translation>
|
||||||
|
<language>en-US</language>
|
||||||
|
<approved>false</approved>
|
||||||
|
</translation>
|
||||||
|
<translation>
|
||||||
|
<language>es-CL</language>
|
||||||
|
<approved>false</approved>
|
||||||
|
</translation>
|
||||||
|
<translation>
|
||||||
|
<language>fr-FR</language>
|
||||||
|
<approved>false</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>false</approved>
|
||||||
|
</translation>
|
||||||
|
<translation>
|
||||||
|
<language>en-US</language>
|
||||||
|
<approved>false</approved>
|
||||||
|
</translation>
|
||||||
|
<translation>
|
||||||
|
<language>es-CL</language>
|
||||||
|
<approved>false</approved>
|
||||||
|
</translation>
|
||||||
|
<translation>
|
||||||
|
<language>fr-FR</language>
|
||||||
|
<approved>false</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>false</approved>
|
||||||
|
</translation>
|
||||||
|
<translation>
|
||||||
|
<language>en-US</language>
|
||||||
|
<approved>false</approved>
|
||||||
|
</translation>
|
||||||
|
<translation>
|
||||||
|
<language>es-CL</language>
|
||||||
|
<approved>false</approved>
|
||||||
|
</translation>
|
||||||
|
<translation>
|
||||||
|
<language>fr-FR</language>
|
||||||
|
<approved>false</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>
|
<folder_node>
|
||||||
<name>passive_income</name>
|
<name>passive_income</name>
|
||||||
<children>
|
<children>
|
||||||
|
|
|
@ -269,6 +269,9 @@
|
||||||
"upgrades.bricks_attract_coins.name": "Ziegelsteine ziehen Münzen an",
|
"upgrades.bricks_attract_coins.name": "Ziegelsteine ziehen Münzen an",
|
||||||
"upgrades.bricks_attract_coins.tooltip": "Hilft ihnen, dort oben zu bleiben",
|
"upgrades.bricks_attract_coins.tooltip": "Hilft ihnen, dort oben zu bleiben",
|
||||||
"upgrades.bricks_attract_coins.verbose_description": "",
|
"upgrades.bricks_attract_coins.verbose_description": "",
|
||||||
|
"upgrades.buoy.name": "",
|
||||||
|
"upgrades.buoy.tooltip": "",
|
||||||
|
"upgrades.buoy.verbose_description": "",
|
||||||
"upgrades.clairvoyant.name": "Hellsichtig",
|
"upgrades.clairvoyant.name": "Hellsichtig",
|
||||||
"upgrades.clairvoyant.tooltip": "Sehen Sie die nächsten Levels, die HP der Steine und die Ballrichtung",
|
"upgrades.clairvoyant.tooltip": "Sehen Sie die nächsten Levels, die HP der Steine und die Ballrichtung",
|
||||||
"upgrades.clairvoyant.verbose_description": "Hilft dir, die richtigen Upgrades auszuwählen und zu verstehen, was es mit den robusten Steinen auf sich hat. Level 2 und 3 bringen zusätzliches Wissen von zweifelhaftem Nutzen (erreichbar im Loop-Modus)",
|
"upgrades.clairvoyant.verbose_description": "Hilft dir, die richtigen Upgrades auszuwählen und zu verstehen, was es mit den robusten Steinen auf sich hat. Level 2 und 3 bringen zusätzliches Wissen von zweifelhaftem Nutzen (erreichbar im Loop-Modus)",
|
||||||
|
@ -340,6 +343,9 @@
|
||||||
"upgrades.one_more_choice.name": "Extra Auswahl",
|
"upgrades.one_more_choice.name": "Extra Auswahl",
|
||||||
"upgrades.one_more_choice.tooltip": "Weitere Stufenaufstiege bieten {{lvl}} weitere Option(en) in der Liste",
|
"upgrades.one_more_choice.tooltip": "Weitere Stufenaufstiege bieten {{lvl}} weitere Option(en) in der Liste",
|
||||||
"upgrades.one_more_choice.verbose_description": "Jedes Upgrade-Menü wird eine weitere Option enthalten. Erhöht nicht die Anzahl der Upgrades, die Sie auswählen können.",
|
"upgrades.one_more_choice.verbose_description": "Jedes Upgrade-Menü wird eine weitere Option enthalten. Erhöht nicht die Anzahl der Upgrades, die Sie auswählen können.",
|
||||||
|
"upgrades.ottawa_treaty.name": "",
|
||||||
|
"upgrades.ottawa_treaty.tooltip": "",
|
||||||
|
"upgrades.ottawa_treaty.verbose_description": "",
|
||||||
"upgrades.passive_income.name": "Passives Einkommen",
|
"upgrades.passive_income.name": "Passives Einkommen",
|
||||||
"upgrades.passive_income.tooltip": "+{{lvl}} Combo / Brick, es sei denn, das Paddel hat sich in den letzten {{time}}s bewegt, dann wird es stattdessen zurückgesetzt",
|
"upgrades.passive_income.tooltip": "+{{lvl}} Combo / Brick, es sei denn, das Paddel hat sich in den letzten {{time}}s bewegt, dann wird es stattdessen zurückgesetzt",
|
||||||
"upgrades.passive_income.verbose_description": "Einige Vergünstigungen können den Bällen helfen, das zu tun, was du willst, ohne dass du etwas tun musst.",
|
"upgrades.passive_income.verbose_description": "Einige Vergünstigungen können den Bällen helfen, das zu tun, was du willst, ohne dass du etwas tun musst.",
|
||||||
|
|
|
@ -269,6 +269,9 @@
|
||||||
"upgrades.bricks_attract_coins.name": "Bricks attract coins",
|
"upgrades.bricks_attract_coins.name": "Bricks attract coins",
|
||||||
"upgrades.bricks_attract_coins.tooltip": "Helps them stay up there",
|
"upgrades.bricks_attract_coins.tooltip": "Helps them stay up there",
|
||||||
"upgrades.bricks_attract_coins.verbose_description": "",
|
"upgrades.bricks_attract_coins.verbose_description": "",
|
||||||
|
"upgrades.buoy.name": "Buoy",
|
||||||
|
"upgrades.buoy.tooltip": "Coins float for {{duration}} seconds on the bottom line. ",
|
||||||
|
"upgrades.buoy.verbose_description": "Effect is most visible in mobile mode",
|
||||||
"upgrades.clairvoyant.name": "Clairvoyant",
|
"upgrades.clairvoyant.name": "Clairvoyant",
|
||||||
"upgrades.clairvoyant.tooltip": "See upcoming levels, bricks HP and ball direction",
|
"upgrades.clairvoyant.tooltip": "See upcoming levels, bricks HP and ball direction",
|
||||||
"upgrades.clairvoyant.verbose_description": "Helps you pick the right upgrades and understand what's going on with sturdy bricks. Level 2 and 3 bring additional knowledge of dubious utility (reachable in loop mode)",
|
"upgrades.clairvoyant.verbose_description": "Helps you pick the right upgrades and understand what's going on with sturdy bricks. Level 2 and 3 bring additional knowledge of dubious utility (reachable in loop mode)",
|
||||||
|
@ -340,6 +343,9 @@
|
||||||
"upgrades.one_more_choice.name": "Extra choice",
|
"upgrades.one_more_choice.name": "Extra choice",
|
||||||
"upgrades.one_more_choice.tooltip": "Further level ups will offer {{lvl}} more option(s) in the list",
|
"upgrades.one_more_choice.tooltip": "Further level ups will offer {{lvl}} more option(s) in the list",
|
||||||
"upgrades.one_more_choice.verbose_description": "Every upgrade menu will have one more option. Doesn't increase the number of upgrades you can pick.",
|
"upgrades.one_more_choice.verbose_description": "Every upgrade menu will have one more option. Doesn't increase the number of upgrades you can pick.",
|
||||||
|
"upgrades.ottawa_treaty.name": "Ottawa treaty",
|
||||||
|
"upgrades.ottawa_treaty.tooltip": "Breaking a brick near a bomb disarms it",
|
||||||
|
"upgrades.ottawa_treaty.verbose_description": "The nearby bomb will be replaced by a colored block. If you have sapper, the ball will loose its sapper effect until next bounce. Only one bomb can be replaced at a time.",
|
||||||
"upgrades.passive_income.name": "Passive income",
|
"upgrades.passive_income.name": "Passive income",
|
||||||
"upgrades.passive_income.tooltip": "+{{lvl}} combo / brick, unless the paddle moved in the last {{time}}s, then it resets instead",
|
"upgrades.passive_income.tooltip": "+{{lvl}} combo / brick, unless the paddle moved in the last {{time}}s, then it resets instead",
|
||||||
"upgrades.passive_income.verbose_description": "Some perks can help the balls do what you want without needing to do anything.",
|
"upgrades.passive_income.verbose_description": "Some perks can help the balls do what you want without needing to do anything.",
|
||||||
|
|
|
@ -269,6 +269,9 @@
|
||||||
"upgrades.bricks_attract_coins.name": "Los ladrillos atraen monedas",
|
"upgrades.bricks_attract_coins.name": "Los ladrillos atraen monedas",
|
||||||
"upgrades.bricks_attract_coins.tooltip": "Les ayuda a permanecer allí arriba.",
|
"upgrades.bricks_attract_coins.tooltip": "Les ayuda a permanecer allí arriba.",
|
||||||
"upgrades.bricks_attract_coins.verbose_description": "",
|
"upgrades.bricks_attract_coins.verbose_description": "",
|
||||||
|
"upgrades.buoy.name": "",
|
||||||
|
"upgrades.buoy.tooltip": "",
|
||||||
|
"upgrades.buoy.verbose_description": "",
|
||||||
"upgrades.clairvoyant.name": "Perspicaz",
|
"upgrades.clairvoyant.name": "Perspicaz",
|
||||||
"upgrades.clairvoyant.tooltip": "Revela los niveles, el PV de los ladrillos y la dirección de las balas",
|
"upgrades.clairvoyant.tooltip": "Revela los niveles, el PV de los ladrillos y la dirección de las balas",
|
||||||
"upgrades.clairvoyant.verbose_description": "Te ayuda a elegir las mejoras adecuadas y a entender qué ocurre con los \"ladrillos macizos\". Los niveles 2 y 3 (en modo bucle) proporcionan información adicional de dudosa utilidad.",
|
"upgrades.clairvoyant.verbose_description": "Te ayuda a elegir las mejoras adecuadas y a entender qué ocurre con los \"ladrillos macizos\". Los niveles 2 y 3 (en modo bucle) proporcionan información adicional de dudosa utilidad.",
|
||||||
|
@ -340,6 +343,9 @@
|
||||||
"upgrades.one_more_choice.name": "La respuesta D",
|
"upgrades.one_more_choice.name": "La respuesta D",
|
||||||
"upgrades.one_more_choice.tooltip": "1 opción de mejora adicional disponible hasta el final del juego",
|
"upgrades.one_more_choice.tooltip": "1 opción de mejora adicional disponible hasta el final del juego",
|
||||||
"upgrades.one_more_choice.verbose_description": "Cada menú de mejoras tendrá una opción adicional. Esto no aumenta el número de mejoras que puede elegir, pero le ayuda a crear el perfil ideal. \"Respuesta D\" es una referencia a un sketch clásico.",
|
"upgrades.one_more_choice.verbose_description": "Cada menú de mejoras tendrá una opción adicional. Esto no aumenta el número de mejoras que puede elegir, pero le ayuda a crear el perfil ideal. \"Respuesta D\" es una referencia a un sketch clásico.",
|
||||||
|
"upgrades.ottawa_treaty.name": "",
|
||||||
|
"upgrades.ottawa_treaty.tooltip": "",
|
||||||
|
"upgrades.ottawa_treaty.verbose_description": "",
|
||||||
"upgrades.passive_income.name": "Ingresos pasivos",
|
"upgrades.passive_income.name": "Ingresos pasivos",
|
||||||
"upgrades.passive_income.tooltip": "+{{lvl}} combo / ladrillo, a menos que la raqueta se haya movido en los últimos {{time}} segundos, en cuyo caso se pierde el combo.",
|
"upgrades.passive_income.tooltip": "+{{lvl}} combo / ladrillo, a menos que la raqueta se haya movido en los últimos {{time}} segundos, en cuyo caso se pierde el combo.",
|
||||||
"upgrades.passive_income.verbose_description": "Algunas mejoras hacen que las pelotas se muevan sin necesidad de poner la raqueta en movimiento.",
|
"upgrades.passive_income.verbose_description": "Algunas mejoras hacen que las pelotas se muevan sin necesidad de poner la raqueta en movimiento.",
|
||||||
|
|
|
@ -269,6 +269,9 @@
|
||||||
"upgrades.bricks_attract_coins.name": "Briques attirent les pièces",
|
"upgrades.bricks_attract_coins.name": "Briques attirent les pièces",
|
||||||
"upgrades.bricks_attract_coins.tooltip": "Aide à garder les pièces en suspension",
|
"upgrades.bricks_attract_coins.tooltip": "Aide à garder les pièces en suspension",
|
||||||
"upgrades.bricks_attract_coins.verbose_description": "",
|
"upgrades.bricks_attract_coins.verbose_description": "",
|
||||||
|
"upgrades.buoy.name": "",
|
||||||
|
"upgrades.buoy.tooltip": "",
|
||||||
|
"upgrades.buoy.verbose_description": "",
|
||||||
"upgrades.clairvoyant.name": "Clairvoyant",
|
"upgrades.clairvoyant.name": "Clairvoyant",
|
||||||
"upgrades.clairvoyant.tooltip": "Révèle les niveaux, PV des briques et direction des balles",
|
"upgrades.clairvoyant.tooltip": "Révèle les niveaux, PV des briques et direction des balles",
|
||||||
"upgrades.clairvoyant.verbose_description": "Vous aide à choisir les bonnes améliorations et à comprendre ce qu'il se passe avec \"briques solides\". Les niveaux 2 et 3 (en mode loop) amènent des informations complémentaires d'une utilité douteuse. ",
|
"upgrades.clairvoyant.verbose_description": "Vous aide à choisir les bonnes améliorations et à comprendre ce qu'il se passe avec \"briques solides\". Les niveaux 2 et 3 (en mode loop) amènent des informations complémentaires d'une utilité douteuse. ",
|
||||||
|
@ -340,6 +343,9 @@
|
||||||
"upgrades.one_more_choice.name": "La réponse D",
|
"upgrades.one_more_choice.name": "La réponse D",
|
||||||
"upgrades.one_more_choice.tooltip": "1 choix supplémentaire d'amélioration proposé jusqu'à la fin de la partie",
|
"upgrades.one_more_choice.tooltip": "1 choix supplémentaire d'amélioration proposé jusqu'à la fin de la partie",
|
||||||
"upgrades.one_more_choice.verbose_description": "Chaque menu d'amélioration comportera une option supplémentaire. Cela n'augmente pas le nombre d'améliorations que vous pouvez choisir, mais vous aide à créer le profile idéal. \"La réponse D\" est une référence à un sketch classique. ",
|
"upgrades.one_more_choice.verbose_description": "Chaque menu d'amélioration comportera une option supplémentaire. Cela n'augmente pas le nombre d'améliorations que vous pouvez choisir, mais vous aide à créer le profile idéal. \"La réponse D\" est une référence à un sketch classique. ",
|
||||||
|
"upgrades.ottawa_treaty.name": "",
|
||||||
|
"upgrades.ottawa_treaty.tooltip": "",
|
||||||
|
"upgrades.ottawa_treaty.verbose_description": "",
|
||||||
"upgrades.passive_income.name": "Revenu passif",
|
"upgrades.passive_income.name": "Revenu passif",
|
||||||
"upgrades.passive_income.tooltip": "+{{lvl}} combo / brique, sauf si la raquette à bougé dans les {{time}} dernières secondes, combo perdu dans ce cas",
|
"upgrades.passive_income.tooltip": "+{{lvl}} combo / brique, sauf si la raquette à bougé dans les {{time}} dernières secondes, combo perdu dans ce cas",
|
||||||
"upgrades.passive_income.verbose_description": "Certaines amélioration font bouger les balles sans avoir besoin de mettre la raquette en mouvement.",
|
"upgrades.passive_income.verbose_description": "Certaines amélioration font bouger les balles sans avoir besoin de mettre la raquette en mouvement.",
|
||||||
|
|
|
@ -269,6 +269,9 @@
|
||||||
"upgrades.bricks_attract_coins.name": "Кирпичи притягивают монеты",
|
"upgrades.bricks_attract_coins.name": "Кирпичи притягивают монеты",
|
||||||
"upgrades.bricks_attract_coins.tooltip": "Помогает им оставаться на вершине",
|
"upgrades.bricks_attract_coins.tooltip": "Помогает им оставаться на вершине",
|
||||||
"upgrades.bricks_attract_coins.verbose_description": "",
|
"upgrades.bricks_attract_coins.verbose_description": "",
|
||||||
|
"upgrades.buoy.name": "",
|
||||||
|
"upgrades.buoy.tooltip": "",
|
||||||
|
"upgrades.buoy.verbose_description": "",
|
||||||
"upgrades.clairvoyant.name": "Ясновидящий",
|
"upgrades.clairvoyant.name": "Ясновидящий",
|
||||||
"upgrades.clairvoyant.tooltip": "Просматривайте предстоящие уровни, количество кирпичей и направление движения мяча",
|
"upgrades.clairvoyant.tooltip": "Просматривайте предстоящие уровни, количество кирпичей и направление движения мяча",
|
||||||
"upgrades.clairvoyant.verbose_description": "Поможет выбрать правильные апгрейды и понять, что происходит с прочными кирпичами. Уровни 2 и 3 дают дополнительные знания сомнительной полезности (достигаются в режиме цикла)",
|
"upgrades.clairvoyant.verbose_description": "Поможет выбрать правильные апгрейды и понять, что происходит с прочными кирпичами. Уровни 2 и 3 дают дополнительные знания сомнительной полезности (достигаются в режиме цикла)",
|
||||||
|
@ -340,6 +343,9 @@
|
||||||
"upgrades.one_more_choice.name": "Дополнительный выбор",
|
"upgrades.one_more_choice.name": "Дополнительный выбор",
|
||||||
"upgrades.one_more_choice.tooltip": "При дальнейшем повышении уровня будет предложено на {{lvl}} больше вариантов в списке",
|
"upgrades.one_more_choice.tooltip": "При дальнейшем повышении уровня будет предложено на {{lvl}} больше вариантов в списке",
|
||||||
"upgrades.one_more_choice.verbose_description": "В каждом меню апгрейдов появится еще одна опция. Это не увеличивает количество апгрейдов, которые вы можете выбрать.",
|
"upgrades.one_more_choice.verbose_description": "В каждом меню апгрейдов появится еще одна опция. Это не увеличивает количество апгрейдов, которые вы можете выбрать.",
|
||||||
|
"upgrades.ottawa_treaty.name": "",
|
||||||
|
"upgrades.ottawa_treaty.tooltip": "",
|
||||||
|
"upgrades.ottawa_treaty.verbose_description": "",
|
||||||
"upgrades.passive_income.name": "Пассивный доход",
|
"upgrades.passive_income.name": "Пассивный доход",
|
||||||
"upgrades.passive_income.tooltip": "+{{lvl}} комбо/кирпич, если только паддл не двигался в течение последних {{time}}с, тогда он сбрасывается.",
|
"upgrades.passive_income.tooltip": "+{{lvl}} комбо/кирпич, если только паддл не двигался в течение последних {{time}}с, тогда он сбрасывается.",
|
||||||
"upgrades.passive_income.verbose_description": "Некоторые привилегии могут помочь шарам делать то, что вы хотите, без необходимости что-либо предпринимать.",
|
"upgrades.passive_income.verbose_description": "Некоторые привилегии могут помочь шарам делать то, что вы хотите, без необходимости что-либо предпринимать.",
|
||||||
|
|
|
@ -269,6 +269,9 @@
|
||||||
"upgrades.bricks_attract_coins.name": "Tuğlalar madeni paraları çeker",
|
"upgrades.bricks_attract_coins.name": "Tuğlalar madeni paraları çeker",
|
||||||
"upgrades.bricks_attract_coins.tooltip": "Onların orada kalmalarına yardımcı olur",
|
"upgrades.bricks_attract_coins.tooltip": "Onların orada kalmalarına yardımcı olur",
|
||||||
"upgrades.bricks_attract_coins.verbose_description": "",
|
"upgrades.bricks_attract_coins.verbose_description": "",
|
||||||
|
"upgrades.buoy.name": "",
|
||||||
|
"upgrades.buoy.tooltip": "",
|
||||||
|
"upgrades.buoy.verbose_description": "",
|
||||||
"upgrades.clairvoyant.name": "Durugörü sahibi",
|
"upgrades.clairvoyant.name": "Durugörü sahibi",
|
||||||
"upgrades.clairvoyant.tooltip": "Yaklaşan seviyeleri, tuğla HP'sini ve top yönünü görün",
|
"upgrades.clairvoyant.tooltip": "Yaklaşan seviyeleri, tuğla HP'sini ve top yönünü görün",
|
||||||
"upgrades.clairvoyant.verbose_description": "Doğru yükseltmeleri seçmenize ve sağlam tuğlalarla neler olup bittiğini anlamanıza yardımcı olur. Seviye 2 ve 3, şüpheli fayda hakkında ek bilgi getirir (döngü modunda erişilebilir)",
|
"upgrades.clairvoyant.verbose_description": "Doğru yükseltmeleri seçmenize ve sağlam tuğlalarla neler olup bittiğini anlamanıza yardımcı olur. Seviye 2 ve 3, şüpheli fayda hakkında ek bilgi getirir (döngü modunda erişilebilir)",
|
||||||
|
@ -340,6 +343,9 @@
|
||||||
"upgrades.one_more_choice.name": "Ekstra seçenek",
|
"upgrades.one_more_choice.name": "Ekstra seçenek",
|
||||||
"upgrades.one_more_choice.tooltip": "Daha fazla seviye atlama, listede {{lvl}} daha fazla seçenek sunacak",
|
"upgrades.one_more_choice.tooltip": "Daha fazla seviye atlama, listede {{lvl}} daha fazla seçenek sunacak",
|
||||||
"upgrades.one_more_choice.verbose_description": "Her yükseltme menüsü bir seçeneğe daha sahip olacak. Seçebileceğiniz yükseltme sayısını artırmaz.",
|
"upgrades.one_more_choice.verbose_description": "Her yükseltme menüsü bir seçeneğe daha sahip olacak. Seçebileceğiniz yükseltme sayısını artırmaz.",
|
||||||
|
"upgrades.ottawa_treaty.name": "",
|
||||||
|
"upgrades.ottawa_treaty.tooltip": "",
|
||||||
|
"upgrades.ottawa_treaty.verbose_description": "",
|
||||||
"upgrades.passive_income.name": "Pasif gelir",
|
"upgrades.passive_income.name": "Pasif gelir",
|
||||||
"upgrades.passive_income.tooltip": "+{{lvl}} kombo / tuğla, kürek son {{time}}saniyede hareket etmediği sürece, bunun yerine sıfırlanır",
|
"upgrades.passive_income.tooltip": "+{{lvl}} kombo / tuğla, kürek son {{time}}saniyede hareket etmediği sürece, bunun yerine sıfırlanır",
|
||||||
"upgrades.passive_income.verbose_description": "Bazı özellikler, topların hiçbir şey yapmanıza gerek kalmadan istediğinizi yapmasına yardımcı olabilir.",
|
"upgrades.passive_income.verbose_description": "Bazı özellikler, topların hiçbir şey yapmanıza gerek kalmadan istediğinizi yapmasına yardımcı olabilir.",
|
||||||
|
|
|
@ -165,10 +165,7 @@ export async function editRawLevelList(nth: number, color = "W") {
|
||||||
text: t("editor.editing.copy"),
|
text: t("editor.editing.copy"),
|
||||||
value: "copy",
|
value: "copy",
|
||||||
help: t("editor.editing.copy_help"),
|
help: t("editor.editing.copy_help"),
|
||||||
disabled:
|
|
||||||
!level.name ||
|
|
||||||
!level.credit ||
|
|
||||||
bricks.filter((b) => b !== "_").length < 6,
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
text: t("editor.editing.bigger"),
|
text: t("editor.editing.bigger"),
|
||||||
|
@ -253,14 +250,14 @@ export async function editRawLevelList(nth: number, color = "W") {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (action === "copy") {
|
if (action === "copy") {
|
||||||
let text = "```\n[" + level.name?.replace(/\[|\]/gi, " ") + "]";
|
let text = "```\n[" + (level.name||'unnamed level')?.replace(/\[|\]/gi, " ") + "]";
|
||||||
bricks.forEach((b, bi) => {
|
bricks.forEach((b, bi) => {
|
||||||
if (!(bi % level.size)) text += "\n";
|
if (!(bi % level.size)) text += "\n";
|
||||||
text += b;
|
text += b;
|
||||||
});
|
});
|
||||||
text +=
|
text +=
|
||||||
"\n[" +
|
"\n[" +
|
||||||
(level.credit?.replace(/\[|\]/gi, " ") || "Missing credits!") +
|
(level.credit?.replace(/\[|\]/gi, " ") || "Missing credits") +
|
||||||
"]\n```";
|
"]\n```";
|
||||||
navigator.clipboard.writeText(text);
|
navigator.clipboard.writeText(text);
|
||||||
// return
|
// return
|
||||||
|
|
|
@ -302,22 +302,20 @@ export function render(gameState: GameState) {
|
||||||
});
|
});
|
||||||
startWork("render:ball shade");
|
startWork("render:ball shade");
|
||||||
// Black shadow around balls
|
// Black shadow around balls
|
||||||
if (!isOptionOn("basic")) {
|
ctx.globalCompositeOperation = "source-over";
|
||||||
ctx.globalCompositeOperation = "source-over";
|
gameState.balls.forEach((ball) => {
|
||||||
gameState.balls.forEach((ball) => {
|
ctx.globalAlpha =
|
||||||
ctx.globalAlpha =
|
Math.min(0.8, liveCount(gameState.coins) / 20) *
|
||||||
Math.min(0.8, liveCount(gameState.coins) / 20) *
|
(1 - ballTransparency(ball, gameState));
|
||||||
(1 - ballTransparency(ball, gameState));
|
|
||||||
|
|
||||||
drawBall(
|
drawBall(
|
||||||
ctx,
|
ctx,
|
||||||
level.color || "#000",
|
level.color || "#000",
|
||||||
gameState.ballSize * 6,
|
gameState.ballSize * 6,
|
||||||
ball.x,
|
ball.x,
|
||||||
ball.y,
|
ball.y,
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
}
|
|
||||||
startWork("render:bricks");
|
startWork("render:bricks");
|
||||||
ctx.globalCompositeOperation = "source-over";
|
ctx.globalCompositeOperation = "source-over";
|
||||||
renderAllBricks();
|
renderAllBricks();
|
||||||
|
|
1
src/types.d.ts
vendored
1
src/types.d.ts
vendored
|
@ -84,6 +84,7 @@ export type Coin = {
|
||||||
destroyed?: boolean;
|
destroyed?: boolean;
|
||||||
collidedLastFrame?: boolean;
|
collidedLastFrame?: boolean;
|
||||||
metamorphosisPoints: number;
|
metamorphosisPoints: number;
|
||||||
|
floatingTime:number;
|
||||||
};
|
};
|
||||||
export type Ball = {
|
export type Ball = {
|
||||||
x: number;
|
x: number;
|
||||||
|
|
|
@ -825,4 +825,25 @@ export const rawUpgrades = [
|
||||||
t("upgrades.bricks_attract_ball.tooltip", { count: lvl * 3 }),
|
t("upgrades.bricks_attract_ball.tooltip", { count: lvl * 3 }),
|
||||||
fullHelp: t("upgrades.bricks_attract_ball.verbose_description"),
|
fullHelp: t("upgrades.bricks_attract_ball.verbose_description"),
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
requires: "",
|
||||||
|
threshold: 220000,
|
||||||
|
gift: false,
|
||||||
|
id: "buoy",
|
||||||
|
max: 3,
|
||||||
|
name: t("upgrades.buoy.name"),
|
||||||
|
help: (lvl: number) =>
|
||||||
|
t("upgrades.buoy.tooltip", { duration: lvl * 0.5 }),
|
||||||
|
fullHelp: t("upgrades.buoy.verbose_description"),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
requires: "",
|
||||||
|
threshold: 225000,
|
||||||
|
gift: false,
|
||||||
|
id: "ottawa_treaty",
|
||||||
|
max: 1,
|
||||||
|
name: t("upgrades.ottawa_treaty.name"),
|
||||||
|
help: () =>t("upgrades.ottawa_treaty.tooltip"),
|
||||||
|
fullHelp: t("upgrades.ottawa_treaty.verbose_description"),
|
||||||
|
},
|
||||||
] as const;
|
] as const;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue