Build 29071527

This commit is contained in:
Renan LE CARO 2025-04-10 15:27:38 +02:00
parent 9ae649743c
commit c37b860fe3
13 changed files with 116 additions and 19 deletions

View file

@ -29,6 +29,8 @@ Some upgrades currently are not really useful
## Done ## Done
- super hot : time moves only when paddle moves. Later levels slow down even more the time when you're not moving.
- fixed memory leak in language detection code
- transparency : ball becomes transparent towards top of screen, +50% coins. - transparency : ball becomes transparent towards top of screen, +50% coins.
- space coins : coins bounce without loosing momentum - space coins : coins bounce without loosing momentum
- trickledown : coins spawn at the top of the screen - trickledown : coins spawn at the top of the screen
@ -248,9 +250,8 @@ Some upgrades currently are not really useful
- 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
- coins doubled when touched by ball, lvl times, looks smaller and lighter
- coins stained by balls - coins stained by balls
- [vikingerik] : reward multiballs with combo somehow
- 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
- ban 3 random perks from pool, gain 2 upgrades - ban 3 random perks from pool, gain 2 upgrades
@ -327,6 +328,7 @@ Some upgrades currently are not really useful
- letters and an associated word or name - letters and an associated word or name
- famous characters and movies - famous characters and movies
- famous places : eiffel tower, taj mahal, etc..
- fruits - fruits
- animals - animals
- countries flags and shapes - countries flags and shapes

View file

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

File diff suppressed because one or more lines are too long

27
dist/index.html vendored

File diff suppressed because one or more lines are too long

View file

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

View file

@ -570,8 +570,8 @@
}, },
{ {
"name": "icon:soft_reset", "name": "icon:soft_reset",
"size": 8, "size": 9,
"bricks": "____yy______yyy_____yyyy____yyyyyyyyyyyyyyyyyyyy_yyyyyy___yyyy__", "bricks": "__rr______rrr_yy__rrrr_yyy_rrrr_yyyy_____yyyy_yyyyyyyy_yyyyyyyy__yyyyyy____yyyy__",
"svg": null "svg": null
}, },
{ {
@ -1376,5 +1376,12 @@
"bricks": "__W_W_W___________W_W_W_W_W_________W_W_W_W_W_________W_W_W_W_W___________W_W_W__", "bricks": "__W_W_W___________W_W_W_W_W_________W_W_W_W_W_________W_W_W_W_W___________W_W_W__",
"svg": null, "svg": null,
"color": "" "color": ""
},
{
"name": "icon:superhot",
"size": 19,
"bricks": "_________________________________________________________WWW_W_W_WWW_WWW_WWWW___W_W_W_W_W___W_WWWW_W_W_WWW_WW__WWW__W_W_W_W___W___WW_WWW_WWW_W___WWW_W_W___________________WW__WW_WWWWW_WWWWWWWW__WW_WWWWW_WWWWWWWW__WW_WW_WW___WW__WWWWWW_WW_WW___WW__WWWWWW_WW_WW___WW__WW__WW_WWWWW___WW__WW__WW_WWWWW___WW___________________________________________________________",
"svg": null,
"color": ""
} }
] ]

View file

@ -1 +1 @@
"29071489" "29071527"

View file

@ -68,6 +68,7 @@ import { hashCode } from "./getLevelBackground";
import { import {
catchRateBest, catchRateBest,
catchRateGood, catchRateGood,
clamp,
hoursSpentPlaying, hoursSpentPlaying,
levelTimeBest, levelTimeBest,
levelTimeGood, levelTimeGood,
@ -397,7 +398,7 @@ export function tick() {
const timeDeltaMs = currentTick - gameState.lastTick; const timeDeltaMs = currentTick - gameState.lastTick;
gameState.lastTick = currentTick; gameState.lastTick = currentTick;
const frames = Math.min(4, timeDeltaMs / (1000 / 60)); let frames = Math.min(4, timeDeltaMs / (1000 / 60));
if (gameState.keyboardPuckSpeed) { if (gameState.keyboardPuckSpeed) {
setMousePos( setMousePos(
@ -405,6 +406,13 @@ export function tick() {
gameState.puckPosition + gameState.keyboardPuckSpeed, gameState.puckPosition + gameState.keyboardPuckSpeed,
); );
} }
if (gameState.perks.superhot) {
frames *= clamp(
Math.abs(gameState.puckPosition - gameState.lastPuckPosition) / 5,
0.2 / gameState.perks.superhot,
1,
);
}
normalizeGameState(gameState); normalizeGameState(gameState);
if (gameState.running) { if (gameState.running) {

View file

@ -1087,7 +1087,7 @@ export function gameStateTick(
if ( if (
!isOptionOn("basic") && !isOptionOn("basic") &&
Math.random() * gameState.perks.ball_attracts_coins > 0.9 Math.random() * gameState.perks.ball_attracts_coins * frames > 0.9
) { ) {
makeParticle( makeParticle(
gameState, gameState,
@ -1108,6 +1108,7 @@ export function gameStateTick(
1 - 1 -
((gameState.perks.viscosity * 0.03 + 0.002) * frames) / ((gameState.perks.viscosity * 0.03 + 0.002) * frames) /
(1 + gameState.perks.etherealcoins); (1 + gameState.perks.etherealcoins);
if (!gameState.perks.etherealcoins) { if (!gameState.perks.etherealcoins) {
coin.vy *= ratio; coin.vy *= ratio;
coin.vx *= ratio; coin.vx *= ratio;
@ -1128,7 +1129,7 @@ export function gameStateTick(
gameState.puckWidth + coin.size; gameState.puckWidth + coin.size;
coin.vy += coin.vy +=
frames * coin.weight * 0.8 * (flip ? -gameState.perks.helium : 1); frames * coin.weight * 0.8 * (flip ? -gameState.perks.helium : 1);
if (flip && !isOptionOn("basic") && Math.random() < 0.1) { if (flip && !isOptionOn("basic") && Math.random() < 0.1 * frames) {
makeParticle( makeParticle(
gameState, gameState,
coin.x, coin.x,

View file

@ -4902,6 +4902,56 @@
</concept_node> </concept_node>
</children> </children>
</folder_node> </folder_node>
<folder_node>
<name>superhot</name>
<children>
<concept_node>
<name>name</name>
<description/>
<comment/>
<translations>
<translation>
<language>en-US</language>
<approved>true</approved>
</translation>
<translation>
<language>fr-FR</language>
<approved>true</approved>
</translation>
</translations>
</concept_node>
<concept_node>
<name>tooltip</name>
<description/>
<comment/>
<translations>
<translation>
<language>en-US</language>
<approved>false</approved>
</translation>
<translation>
<language>fr-FR</language>
<approved>true</approved>
</translation>
</translations>
</concept_node>
<concept_node>
<name>verbose_description</name>
<description/>
<comment/>
<translations>
<translation>
<language>en-US</language>
<approved>false</approved>
</translation>
<translation>
<language>fr-FR</language>
<approved>true</approved>
</translation>
</translations>
</concept_node>
</children>
</folder_node>
<folder_node> <folder_node>
<name>telekinesis</name> <name>telekinesis</name>
<children> <children>

View file

@ -303,6 +303,9 @@
"upgrades.sturdy_bricks.name": "Sturdy bricks", "upgrades.sturdy_bricks.name": "Sturdy bricks",
"upgrades.sturdy_bricks.tooltip": "+{{lvl}} bricks HP, +{{percent}}% coins spawned when broken", "upgrades.sturdy_bricks.tooltip": "+{{lvl}} bricks HP, +{{percent}}% coins spawned when broken",
"upgrades.sturdy_bricks.verbose_description": "Each level of this perk adds one HP to all bricks. You can see the HP number with the \"clairvoyant\" perk. You can increase ball damage by getting the \"piercing\" perk. Each level of the perk adds +50% coins spawn. ", "upgrades.sturdy_bricks.verbose_description": "Each level of this perk adds one HP to all bricks. You can see the HP number with the \"clairvoyant\" perk. You can increase ball damage by getting the \"piercing\" perk. Each level of the perk adds +50% coins spawn. ",
"upgrades.superhot.name": "SUPER HOT",
"upgrades.superhot.tooltip": "Time moves when the paddle moves.",
"upgrades.superhot.verbose_description": "SUPER HOT SUPER HOT SUPER HOT SUPER HOT",
"upgrades.telekinesis.help_plural": "Stronger effect on the ball", "upgrades.telekinesis.help_plural": "Stronger effect on the ball",
"upgrades.telekinesis.name": "Telekinesis", "upgrades.telekinesis.name": "Telekinesis",
"upgrades.telekinesis.tooltip": "Paddle controls the ball's trajectory", "upgrades.telekinesis.tooltip": "Paddle controls the ball's trajectory",

View file

@ -303,6 +303,9 @@
"upgrades.sturdy_bricks.name": "Briques solides", "upgrades.sturdy_bricks.name": "Briques solides",
"upgrades.sturdy_bricks.tooltip": "+{{lvl}} points de vie des briques, +{{percent}}% pièces quand elles sont détruites", "upgrades.sturdy_bricks.tooltip": "+{{lvl}} points de vie des briques, +{{percent}}% pièces quand elles sont détruites",
"upgrades.sturdy_bricks.verbose_description": "Chaque niveau de cet amélioration ajoute un PV à toutes les briques. Vous pouvez consulter le nombre de PV avec l'avantage \"clairvoyant\". Vous pouvez augmenter les dégâts des balles en obtenant l'amélioration \"Balle perçante\". Chaque niveau de cet amélioration ajoute 50% de pièces en plus.", "upgrades.sturdy_bricks.verbose_description": "Chaque niveau de cet amélioration ajoute un PV à toutes les briques. Vous pouvez consulter le nombre de PV avec l'avantage \"clairvoyant\". Vous pouvez augmenter les dégâts des balles en obtenant l'amélioration \"Balle perçante\". Chaque niveau de cet amélioration ajoute 50% de pièces en plus.",
"upgrades.superhot.name": "SUPER HOT",
"upgrades.superhot.tooltip": "Le temps avance quand la raquette bouge. ",
"upgrades.superhot.verbose_description": "SUPER HOT SUPER HOT SUPER HOT SUPER HOT",
"upgrades.telekinesis.help_plural": "Effet plus fort sur la balle", "upgrades.telekinesis.help_plural": "Effet plus fort sur la balle",
"upgrades.telekinesis.name": "Télékinésie", "upgrades.telekinesis.name": "Télékinésie",
"upgrades.telekinesis.tooltip": "Contrôler la trajectoire de la balle", "upgrades.telekinesis.tooltip": "Contrôler la trajectoire de la balle",

View file

@ -700,4 +700,14 @@ export const rawUpgrades = [
help: (lvl: number) => t("upgrades.transparency.tooltip", { lvl }), help: (lvl: number) => t("upgrades.transparency.tooltip", { lvl }),
fullHelp: t("upgrades.transparency.verbose_description"), fullHelp: t("upgrades.transparency.verbose_description"),
}, },
{
requires: "",
threshold: 195000,
giftable: false,
id: "superhot",
max: 3,
name: t("upgrades.superhot.name"),
help: (lvl: number) => t("upgrades.superhot.tooltip", { lvl }),
fullHelp: t("upgrades.superhot.verbose_description"),
},
] as const; ] as const;