Six calls the umpire got wrong

- The duel misread a spent ('X') ball: bounce out = instant win, two bounces
  = a loss plus a surge, for a shot that should just be re-served.
- Duel serves routed through the temp weapon riding slot 0 — a laser fired
  instead of the ball. Tennis rules now mean plain balls, temp or no temp.
- A tap during the death animation tossed a ball that hung frozen midair.
- The EPIC boss card was clobbered by the SET card when game 30 was both.
- The telegraph glow divided by the wrong wind: negative alpha, no fade-in.
- The crowd clapped forever over the death screen.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
wuwiandClaude Fable 5 committed 2026-08-06 09:33:08 +02:00
1 parent 1f22d3d5a0
commit f1f0d05a61
3 files changed
+33 -8

No files matched your search

+2 -2
View File
@@ -428,7 +428,7 @@ function drawMachine(zb) {
const h = MACH_H * (img.height / SPRITE_H);
drawStatic(name, zb.x, zb.z, h);
if (firing) { // the TELEGRAPH still needs to read at 20px tall, so the muzzle glow stays procedural
const k = 1 - zb.windT / TUNE.bossWind, p = proj(zb.x, h * 0.62, zb.z); // bossWind, not machWind: the boss telegraphs faster
const k = Math.max(0, 1 - zb.windT / (zb.windMax || TUNE.machWind)), p = proj(zb.x, h * 0.62, zb.z); // fade over the ACTUAL wind
ctx.globalAlpha = 0.3 + k * 0.7;
ctx.fillStyle = k > 0.6 ? '#fff2c0' : UI.warm;
const r = Math.max(1.5, p.s * 0.05 * (0.5 + k));
@@ -544,7 +544,7 @@ function drawZombie(zb) {
drawStatic(name, zb.x, zb.z, h, bob, zb.face > 0 && !'cfmB'.includes(v));
if (zb.burnT > 0) drawFlames(zb, h);
if (zb.windT > 0 && zb.variant === 'B') { // the boss telegraphs too: it rears up, glowing, then throws
const k = 1 - zb.windT / TUNE.bossWind, p = proj(zb.x, h * 0.62, zb.z); // bossWind, not machWind: the boss telegraphs faster
const k = Math.max(0, 1 - zb.windT / (zb.windMax || TUNE.bossWind)), p = proj(zb.x, h * 0.62, zb.z); // fade over the design's own wind
ctx.globalAlpha = 0.25 + k * 0.55; ctx.fillStyle = k > 0.6 ? '#fff2c0' : UI.bad;
const r = Math.max(2, p.s * 0.1 * (0.5 + k));
ctx.beginPath(); ctx.arc(Math.round(p.x), Math.round(p.y), r, 0, 7); ctx.fill();