fix: don't fire weapon when choosing upgrade from level-up menu
This commit is contained in:
1 parent
5e6a7b72fb
commit
7aee2f5f64
3 files changed
+43
-23
No files matched your search
+22
-22
@@ -6,32 +6,32 @@
|
|||||||
<meta name="theme-color" content="#0a0305">
|
<meta name="theme-color" content="#0a0305">
|
||||||
<link rel="icon" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 64 64%22><text y=%2252%22 x=%2250%22 text-anchor=%22middle%22 dominant-baseline=%22middle%22 font-size=%2252%22>🔪</text></svg>">
|
<link rel="icon" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 64 64%22><text y=%2252%22 x=%2250%22 text-anchor=%22middle%22 dominant-baseline=%22middle%22 font-size=%2252%22>🔪</text></svg>">
|
||||||
<title>MEATSLICER</title>
|
<title>MEATSLICER</title>
|
||||||
<link rel="stylesheet" href="css/style.css?v=51">
|
<link rel="stylesheet" href="css/style.css?v=52">
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="wrap">
|
<div id="wrap">
|
||||||
<canvas id="game" width="960" height="640"></canvas>
|
<canvas id="game" width="960" height="640"></canvas>
|
||||||
</div>
|
</div>
|
||||||
<script src="js/utils.js?v=51"></script>
|
<script src="js/utils.js?v=52"></script>
|
||||||
<script src="js/state.js?v=51"></script>
|
<script src="js/state.js?v=52"></script>
|
||||||
<script src="js/input.js?v=51"></script>
|
<script src="js/input.js?v=52"></script>
|
||||||
<script src="js/sfx.js?v=51"></script>
|
<script src="js/sfx.js?v=52"></script>
|
||||||
<script src="js/sfxbank.js?v=51"></script>
|
<script src="js/sfxbank.js?v=52"></script>
|
||||||
<script src="js/audio.js?v=51"></script>
|
<script src="js/audio.js?v=52"></script>
|
||||||
<script src="js/sprites.js?v=51"></script>
|
<script src="js/sprites.js?v=52"></script>
|
||||||
<script src="js/particles.js?v=51"></script>
|
<script src="js/particles.js?v=52"></script>
|
||||||
<script src="js/weapons.js?v=51"></script>
|
<script src="js/weapons.js?v=52"></script>
|
||||||
<script src="js/bullets.js?v=51"></script>
|
<script src="js/bullets.js?v=52"></script>
|
||||||
<script src="js/pickups.js?v=51"></script>
|
<script src="js/pickups.js?v=52"></script>
|
||||||
<script src="js/items.js?v=51"></script>
|
<script src="js/items.js?v=52"></script>
|
||||||
<script src="js/perks.js?v=51"></script>
|
<script src="js/perks.js?v=52"></script>
|
||||||
<script src="js/enemies.js?v=51"></script>
|
<script src="js/enemies.js?v=52"></script>
|
||||||
<script src="js/bosses.js?v=51"></script>
|
<script src="js/bosses.js?v=52"></script>
|
||||||
<script src="js/rooms.js?v=51"></script>
|
<script src="js/rooms.js?v=52"></script>
|
||||||
<script src="js/player.js?v=51"></script>
|
<script src="js/player.js?v=52"></script>
|
||||||
<script src="js/hud.js?v=51"></script>
|
<script src="js/hud.js?v=52"></script>
|
||||||
<script src="js/help.js?v=51"></script>
|
<script src="js/help.js?v=52"></script>
|
||||||
<script src="js/debug.js?v=51"></script>
|
<script src="js/debug.js?v=52"></script>
|
||||||
<script src="js/main.js?v=51"></script>
|
<script src="js/main.js?v=52"></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -221,6 +221,10 @@ function update(dt) {
|
|||||||
break;
|
break;
|
||||||
case 'levelup':
|
case 'levelup':
|
||||||
updateLevelup();
|
updateLevelup();
|
||||||
|
// A click that installed a perk must not carry the held button into play;
|
||||||
|
// updatePlayer fires on Input.mdown, so the very next frame would shoot.
|
||||||
|
// Same mask pattern as the pinned debug console below.
|
||||||
|
if (G.mode !== 'levelup') Input.mdown = false;
|
||||||
updateParticles(dt);
|
updateParticles(dt);
|
||||||
break;
|
break;
|
||||||
case 'debug':
|
case 'debug':
|
||||||
|
|||||||
+17
-1
@@ -61,7 +61,7 @@ for (const f of files) {
|
|||||||
}
|
}
|
||||||
// const/let top-level bindings live in the context's lexical scope, not on the
|
// const/let top-level bindings live in the context's lexical scope, not on the
|
||||||
// global object — expose the ones the harness pokes at directly.
|
// global object — expose the ones the harness pokes at directly.
|
||||||
vm.runInContext('Object.assign(this, { G, Input, WEAPONS, Music, Sfx, SfxBank, W, H, WALL, ITEMS, ACTIVES, PERKS, ENEMY_TYPES, BOSS_DEFS, SPRITE_MANIFEST, Sprites, ACTOR_ANIMS, PRESSURE_UNIT, PRESSURE_MIN, PRESSURE_MAX, PRESSURE_DIAL_MIN, PRESSURE_DIAL_MAX, ROOM_SHAPES, ROOM_THEMES, HELP_PAGES, HELP_RENDERERS, SPAWN_WARN, defaultPlayerStats, applyPressureDelta, debugRebuildStats, debugEnabled, DEBUG_PAGES })', sandbox);
|
vm.runInContext('Object.assign(this, { G, Input, WEAPONS, Music, Sfx, SfxBank, W, H, WALL, ITEMS, ACTIVES, PERKS, ENEMY_TYPES, BOSS_DEFS, SPRITE_MANIFEST, Sprites, ACTOR_ANIMS, PRESSURE_UNIT, PRESSURE_MIN, PRESSURE_MAX, PRESSURE_DIAL_MIN, PRESSURE_DIAL_MAX, WEAPON_DROP_LOCKOUT, ROOM_SHAPES, ROOM_THEMES, HELP_PAGES, HELP_RENDERERS, SPAWN_WARN, defaultPlayerStats, applyPressureDelta, debugRebuildStats, debugEnabled, DEBUG_PAGES })', sandbox);
|
||||||
|
|
||||||
let simTime = 0;
|
let simTime = 0;
|
||||||
const ctx = sandbox;
|
const ctx = sandbox;
|
||||||
@@ -308,6 +308,22 @@ console.log('== rebalanced perks + automatic draft ==');
|
|||||||
ctx.G.autoPerk = false;
|
ctx.G.autoPerk = false;
|
||||||
ctx.startRun(); step(3, 16);
|
ctx.startRun(); step(3, 16);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
console.log('== upgrade card click does not fire ==');
|
||||||
|
{
|
||||||
|
ctx.startRun(); step(3, 16); // fresh run in play mode
|
||||||
|
ctx.G.enemies.length = 0; // determinism: nothing can interfere
|
||||||
|
const perksBefore = ctx.G.player.perks.length;
|
||||||
|
ctx.G.pendingLevelups = 1; ctx.G.perkChoices = ctx.PERKS.slice(0, 3); ctx.G.mode = 'levelup';
|
||||||
|
// click inside card 0 (cards start at x=207, y=220, 170x230)
|
||||||
|
ctx.Input.mx = 300; ctx.Input.my = 300;
|
||||||
|
ctx.Input.mpressed = true; ctx.Input.mdown = true;
|
||||||
|
step(6, 16); // first frame consumes the click, the rest run with mdown held
|
||||||
|
check('card click exits the draft into play', ctx.G.mode === 'play');
|
||||||
|
check('card click grants exactly one perk', ctx.G.player.perks.length === perksBefore + 1);
|
||||||
|
check('card click fires no bullet (mdown not carried into play)', ctx.G.bullets.length === 0);
|
||||||
|
}
|
||||||
|
|
||||||
autoDraft = true; // later sections must not get stuck in the perk draft
|
autoDraft = true; // later sections must not get stuck in the perk draft
|
||||||
|
|
||||||
console.log('== shield heart perk ==');
|
console.log('== shield heart perk ==');
|
||||||
|
|||||||
Reference in new issue
Block a user