The toss is the server's ball — the real death loop
"still when I lost a single point and try to serve again every further tap does hurt me more until I am dead". Reproduced tap-for-tap this time, and the serveNum fix was a red herring — a real bug, but not this one. tossBall never stamped ball.lastHit. After any rally the zombie touched last, the freshly tossed ball still said lastHit 'O' — and the previous pass moved the server behind the baseline, past the passing-shot line. So the moment the toss went up, the game saw an opponent ball beyond your baseline: "its passing shot ends the duel", point to them, blood. Every tap = a toss = an instant lost point, faster the more he panicked. Two fixes composed into a death loop; the stale field was harmless while serving happened inside the court. One stamp in tossBall — ball.lastHit = sv.side — fixes every caller. The duel and the gore mode carried the same latent bug for anyone tossing deep behind the line after a racket-zombie touch. Verified with the exact field shape: lose a rally the zombie touched last, then eight badly-timed panic taps — one honestly lost point, zero toss-bleeds. Before the fix every single toss bled. 41 tests, 15 seeds clean. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
f67411e330
commit
24be613c61
4 files changed
+52
-2
No files matched your search
+23
@@ -889,6 +889,29 @@ again and again until i die"*.
|
||||
seven straight games: **it now loses the match** (2-3, then blooded out in game two). That may
|
||||
even be too hot — `matchSpeedBase`/`matchFlub` are the two dials, and Oliver's thumb is the judge.
|
||||
|
||||
**SIXTEENTH PASS — the REAL death loop, and my serveNum fix was a red herring.** Oliver, again:
|
||||
*"still when I lost a single point and try to serve again every further tap does hurt me more until
|
||||
I am dead"*. Reproduced tap-for-tap this time before touching anything, and the previous diagnosis
|
||||
was wrong — serveNum was A bug, but not THE bug.
|
||||
|
||||
**`tossBall` never stamped `ball.lastHit`.** After any rally the zombie touched last, the freshly
|
||||
tossed ball still said `lastHit: 'O'` — and the fourteenth pass moved the server BEHIND the baseline
|
||||
(z 24.3, past the passing-shot line at COURT.L + 0.3). So the moment the toss went up, the game saw
|
||||
"an opponent ball beyond your baseline": *its passing shot ends the duel* -> point to them -> blood.
|
||||
Every tap = a toss = an instant lost point, faster the more he panicked. Two of my fixes composed
|
||||
into a death loop: the stale field was harmless while serving happened INSIDE the court.
|
||||
|
||||
One stamp in `tossBall` (`ball.lastHit = sv.side` — the toss is the server's ball) fixes every
|
||||
caller. **The duel and the gore mode carried the same latent bug** for anyone tossing from deep
|
||||
behind the line after a racket-zombie touch; it never fired only because splatter serving used to
|
||||
happen from inside the court. Verified in the browser with the exact field shape: lose a rally the
|
||||
zombie touched last, then eight badly-timed panic taps — one honestly lost point, zero toss-bleeds.
|
||||
|
||||
**The lesson for this file: when a report survives a fix, the fix was wrong — reproduce before
|
||||
re-diagnosing.** The serveNum reset was real and stays, but it was found by reading code, not by
|
||||
reproducing the report, and the actual loop needed the exact field conditions (a zombie touch, the
|
||||
new serve position, panic-speed taps) to show itself.
|
||||
|
||||
**Open, and every one of them is Oliver's call after he plays it:**
|
||||
1. ~~**A ball that carries through the lane can complete two steps at once.**~~ Largely CLOSED by
|
||||
the slice removal (seventh pass) — a cut ball picking its own next victim was the main way this
|
||||
|
||||
Reference in new issue
Block a user