5de42648ec1f228de561a3184f3dc372e7a88940
Oliver, watching a sliced ball circle a shambler it had only wounded: "an orbiting tennis ball midair, nobody knows what is going on." He is right, and not only about that shot. Every ball in this game flies a parabola you can read, so the one that thinks reads as broken even on the shots where it works. The hook was the wrong primitive, not a hook with two bugs in it. So there is no hook. At the instant of a kill the ball is struck again — ONE velocity out of solveShot, the same solver the serve uses, aimed at the next body's chest — and from the next frame it is an ordinary ball under ordinary gravity. It cannot orbit, cannot hover and cannot outlive its shot, because after the strike nothing about the slice is still running. That also deletes the wound bug rather than fixing it. Six sites spend the ball (lastHit = 'X') and not one of them cleared the hook, so a ball that merely WOUNDED its target was left steering at 30% pace toward a point that body had already walked off — the loop he saw. With no persistent state there is nothing to clear: a ball spent on a body it failed to kill just drops, like every other spent ball. The hop draws its own band, white, so a chain leaves the same chalk streak every other shot leaves. sliceTurn and sliceHookT are gone with the steering that needed them; sliceArc stays, no longer as a turn-radius limit but to keep a carom from doubling back down-court, which reads as a stray deflection rather than as a cut. Net 24 lines lighter than the thing it replaces. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Languages
JavaScript
75.2%
Python
15.8%
HTML
7.3%
Shell
1.4%
Swift
0.2%