mirror of
https://gitlab.com/lecarore/breakout71.git
synced 2025-04-23 21:46:15 -04:00
Build 29060269
This commit is contained in:
parent
b7dacaba0a
commit
d77a58438f
10 changed files with 109 additions and 35 deletions
|
@ -1,5 +1,5 @@
|
|||
// The version of the cache.
|
||||
const VERSION = "29060255";
|
||||
const VERSION = "29060269";
|
||||
|
||||
// The name of the cache
|
||||
const CACHE_NAME = `breakout-71-${VERSION}`;
|
||||
|
|
|
@ -1 +1 @@
|
|||
"29060255"
|
||||
"29060269"
|
||||
|
|
|
@ -216,6 +216,23 @@ export function resetCombo(
|
|||
return lost;
|
||||
}
|
||||
|
||||
export function increaseCombo(
|
||||
gameState: GameState,
|
||||
by: number,
|
||||
x: number,
|
||||
y: number,
|
||||
) {
|
||||
if (by > 0) {
|
||||
gameState.combo += by;
|
||||
}
|
||||
if (
|
||||
isOptionOn("comboIncreaseTexts") &&
|
||||
typeof x !== "undefined" &&
|
||||
typeof y !== "undefined"
|
||||
) {
|
||||
makeText(gameState, x, y, "gold", "+" + by, 25, 400 + by);
|
||||
}
|
||||
}
|
||||
export function decreaseCombo(
|
||||
gameState: GameState,
|
||||
by: number,
|
||||
|
@ -419,23 +436,26 @@ export function explodeBrick(
|
|||
);
|
||||
}
|
||||
|
||||
gameState.combo +=
|
||||
increaseCombo(
|
||||
gameState,
|
||||
gameState.perks.streak_shots +
|
||||
gameState.perks.compound_interest +
|
||||
gameState.perks.left_is_lava +
|
||||
gameState.perks.right_is_lava +
|
||||
gameState.perks.top_is_lava +
|
||||
gameState.perks.picky_eater +
|
||||
gameState.perks.asceticism * 3 +
|
||||
gameState.perks.zen +
|
||||
gameState.perks.passive_income +
|
||||
gameState.perks.nbricks +
|
||||
gameState.perks.addiction +
|
||||
gameState.perks.unbounded;
|
||||
gameState.perks.compound_interest +
|
||||
gameState.perks.left_is_lava +
|
||||
gameState.perks.right_is_lava +
|
||||
gameState.perks.top_is_lava +
|
||||
gameState.perks.picky_eater +
|
||||
gameState.perks.asceticism * 3 +
|
||||
gameState.perks.zen +
|
||||
gameState.perks.passive_income +
|
||||
gameState.perks.addiction +
|
||||
gameState.perks.unbounded,
|
||||
ball.x,
|
||||
ball.y,
|
||||
);
|
||||
|
||||
if (gameState.perks.side_kick) {
|
||||
if (Math.abs(ball.vx) > Math.abs(ball.vy)) {
|
||||
gameState.combo += gameState.perks.side_kick;
|
||||
increaseCombo(gameState, gameState.perks.side_kick, ball.x, ball.y);
|
||||
} else {
|
||||
decreaseCombo(gameState, gameState.perks.side_kick, ball.x, ball.y);
|
||||
}
|
||||
|
@ -456,14 +476,6 @@ export function explodeBrick(
|
|||
resetCombo(gameState, x, y);
|
||||
}
|
||||
|
||||
if (
|
||||
gameState.perks.nbricks &&
|
||||
ball.hitSinceBounce > gameState.perks.nbricks
|
||||
) {
|
||||
// We need to reset at each hit, otherwise it's just an OP version of single puck hit streak
|
||||
resetCombo(gameState, ball.x, ball.y);
|
||||
}
|
||||
|
||||
if (!isExplosion) {
|
||||
// color change
|
||||
if (
|
||||
|
@ -1537,7 +1549,7 @@ export function ballTick(gameState: GameState, ball: Ball, delta: number) {
|
|||
resetCombo(gameState, ball.x, ball.y);
|
||||
}
|
||||
if (gameState.perks.trampoline) {
|
||||
gameState.combo += gameState.perks.trampoline;
|
||||
increaseCombo(gameState, gameState.perks.trampoline, ball.x, ball.y);
|
||||
}
|
||||
if (
|
||||
gameState.perks.nbricks &&
|
||||
|
@ -1614,6 +1626,16 @@ export function ballTick(gameState: GameState, ball: Ball, delta: number) {
|
|||
if (typeof hitBrick !== "undefined") {
|
||||
const initialBrickColor = gameState.bricks[hitBrick];
|
||||
ball.hitSinceBounce++;
|
||||
|
||||
if (gameState.perks.nbricks) {
|
||||
if (ball.hitSinceBounce > gameState.perks.nbricks) {
|
||||
resetCombo(gameState, ball.x, ball.y);
|
||||
} else {
|
||||
increaseCombo(gameState, gameState.perks.nbricks, ball.x, ball.y);
|
||||
}
|
||||
// We need to reset at each hit, otherwise it's just an OP version of single puck hit streak
|
||||
}
|
||||
|
||||
let pierce = false;
|
||||
let damage =
|
||||
1 +
|
||||
|
@ -1646,6 +1668,7 @@ export function ballTick(gameState: GameState, ball: Ball, delta: number) {
|
|||
ball.vx *= -1;
|
||||
}
|
||||
}
|
||||
|
||||
if (!gameState.brickHP[hitBrick]) {
|
||||
ball.brokenSinceBounce++;
|
||||
|
||||
|
|
|
@ -892,6 +892,36 @@
|
|||
</translation>
|
||||
</translations>
|
||||
</concept_node>
|
||||
<concept_node>
|
||||
<name>comboIncreaseTexts</name>
|
||||
<description/>
|
||||
<comment/>
|
||||
<translations>
|
||||
<translation>
|
||||
<language>en-US</language>
|
||||
<approved>false</approved>
|
||||
</translation>
|
||||
<translation>
|
||||
<language>fr-FR</language>
|
||||
<approved>false</approved>
|
||||
</translation>
|
||||
</translations>
|
||||
</concept_node>
|
||||
<concept_node>
|
||||
<name>comboIncreaseTexts_help</name>
|
||||
<description/>
|
||||
<comment/>
|
||||
<translations>
|
||||
<translation>
|
||||
<language>en-US</language>
|
||||
<approved>false</approved>
|
||||
</translation>
|
||||
<translation>
|
||||
<language>fr-FR</language>
|
||||
<approved>false</approved>
|
||||
</translation>
|
||||
</translations>
|
||||
</concept_node>
|
||||
<concept_node>
|
||||
<name>credit_levels</name>
|
||||
<description/>
|
||||
|
|
|
@ -54,6 +54,8 @@
|
|||
"main_menu.basic_help": "Better performance.",
|
||||
"main_menu.colorful_coins": "Colorful coins",
|
||||
"main_menu.colorful_coins_help": "Coins always spawn of the color of the brick",
|
||||
"main_menu.comboIncreaseTexts": "Show +X in gold",
|
||||
"main_menu.comboIncreaseTexts_help": "When the combo increase",
|
||||
"main_menu.credit_levels": "<h2>Levels source or reference link</h2>",
|
||||
"main_menu.credits": "# Credits\n\nI pulled many background patterns from https://pattern.monster/\n\nSome of the sound generating code was written by ChatGPT, and heavily\nadapted to my usage over time.\n\nI wanted an APK to start in fullscreen and be able to list it on fdroid and the play store. I started with an empty view and went to work trimming it down, with the help of that tutorial : https://github.com/fractalwrench/ApkGolf/blob/master/blog/BLOG_POST.md\n\nColin (obigre) brought a lot of fantastic ideas to the game, here's his website (in French) : https://colin-crapahute.bearblog.dev/\n\n# Breakout games suggestions\n\nHere are a few interesting games in the breakout genre :\n\n- LBreakoutHD : https://sourceforge.net/p/lgames/code/HEAD/tree/trunk/lbreakouthd/\n- Wizorb : https://store.steampowered.com/app/207420/Wizorb/\n- Ricochet infinity : https://www.myabandonware.com/game/ricochet-infinity-dxm\n- First prototype of B71 : https://breakout-v1.lecaro.me/\n- Second prototype of B71: https://breakout-v2.lecaro.me/\n\n\n# PC game suggestions\n\nHere are a few games i've sank a lot of time in, and that inspired breakout in some way\n\n- Heat signature : https://www.humblebundle.com/store/heat-signature\n- FTL : https://www.gog.com/en/game/faster_than_light\n- Nova drift : https://www.gog.com/en/game/nova_drift\n- Noita : https://www.gog.com/en/game/noita\n- Enter the gungeon : https://www.gog.com/en/game/enter_the_gungeon\n- Zero Sivert : https://store.steampowered.com/app/1782120/ZERO_Sievert/\n- Factorio : https://www.factorio.com/\n- Nuclear throne : https://store.steampowered.com/app/242680/Nuclear_Throne/ (don't buy on GOG it's outdated) \n- Brigador : https://www.gog.com/en/game/brigador\n- Teleglitch https://www.gog.com/en/game/teleglitch_die_more_edition\n- Rollers of the realm : https://store.steampowered.com/app/262470/Rollers_of_the_Realm/\n",
|
||||
"main_menu.donate": "You've played for {{hours}} hours",
|
||||
|
|
|
@ -54,6 +54,8 @@
|
|||
"main_menu.basic_help": "Meilleures performances.",
|
||||
"main_menu.colorful_coins": "Pièces colorées",
|
||||
"main_menu.colorful_coins_help": "Les pièces apparaissent toujours de la couleur de la brique",
|
||||
"main_menu.comboIncreaseTexts": "Afficher un +X doré",
|
||||
"main_menu.comboIncreaseTexts_help": "Quand le combo augmente",
|
||||
"main_menu.credit_levels": "<h2>Source ou référence des niveaux</h2>",
|
||||
"main_menu.credits": "# Crédits\n\nJ'ai récupéré de nombreux motifs d'arrière-plan sur https://pattern.monster/\n\nUne partie du code de génération de sons a été écrite par ChatGPT et a été largement adaptée à mon utilisation au fil du temps.\n\nJe souhaitais un APK qui démarre en plein écran et puisse être listé sur Android et le Play Store. J'ai commencé avec une vue vide et je me suis attelé à la réduire, à l'aide de ce tutoriel : https://github.com/fractalwrench/ApkGolf/blob/master/blog/BLOG_POST.md\n\nColin (obigre) a apporté de nombreuses idées fantastiques au jeu. Voici son site web : https://colin-crapahute.bearblog.dev/\n\n# Autres jeux de casse-briques\n\nVoici quelques jeux intéressants dans le genre du casse-briques :\n\n- LBreakoutHD : un remake open source intéressant https://sourceforge.net/p/lgames/code/HEAD/tree/trunk/lbreakouthd/\n- Wizorb https://store.steampowered.com/app/207420/Wizorb/\n- Breakout multijoueur : JcJ avec multijoueur de type console aérienne https://casmo.itch.io/breakout-multiplayer\n- Ricochet Infinity : https://www.myabandonware.com/game/ricochet-infinity-dxm\n- Mes premières tentatives dans le genre : https://breakout-v1.lecaro.me/ (décontracté, plus proche du concept original de Breakout) et https://breakout-v2.lecaro.me/ (multijoueur)\n\n# Autres jeux PC à forte rejouabilité\n\n- Rollers of the realm : https://store.steampowered.com/app/262470/Rollers_of_the_Realm/\n- FTL : https://www.gog.com/en/game/faster_than_light\n- Nova Drift : https://www.gog.com/en/game/nova_drift\n- Noita : https://www.gog.com/en/game/noita\n- Enter the Gungeon : https://www.gog.com/en/game/enter_the_gungeon\n- Zero Sivert : https://store.steampowered.com/app/1782120/ZERO_Sievert/\n- Factorio : https://www.factorio.com/\n- Nuclear throne : https://store.steampowered.com/app/242680/Nuclear_Throne/ (ne l'achetez pas sur GOG, c'est obsolète)\n- Brigador : https://www.gog.com/en/game/brigador\n- Teleglitch https://www.gog.com/en/game/teleglitch_die_more_edition\n- Broforce : https://www.gog.com/en/game/broforce\n- Spelunky : https://www.gog.com/en/game/spelunky",
|
||||
"main_menu.donate": "Vous avez joué {{hours}} heures",
|
||||
|
|
|
@ -66,6 +66,11 @@ export const options = {
|
|||
name: t("main_menu.red_miss"),
|
||||
help: t("main_menu.red_miss_help"),
|
||||
},
|
||||
comboIncreaseTexts: {
|
||||
default: false,
|
||||
name: t("main_menu.comboIncreaseTexts"),
|
||||
help: t("main_menu.comboIncreaseTexts_help"),
|
||||
},
|
||||
} as const satisfies { [k: string]: OptionDef };
|
||||
|
||||
export function isOptionOn(key: OptionId) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue