2edabe6c6475f78e5f199d14221230822f929ae4
THE BALL WAS SOLVED TO THE GROUND. solveShot's terminal height was a hardcoded 0.08 — ball-on-the-grass — so a splatter serve came down past the shambler and registered at the ankles however the mark was drawn. It now takes an arrival height, and a lane shot aims at the body: zombieH x Z_CHEST, scaled off the same height table render draws with, so a brute is struck on the brute rather than at the height a shambler's chest happens to be. Measured at the frame the wound registers: shambler 1.11 m of 1.8, brute 1.64 m of 2.7, and an empty lane still lands on the grass. The aim mark reads the same `ty`, so mark, arc end and impact are now one point instead of three guesses. AND A BUG FOUND ON THE WAY. The net-clearing loop ran for shots that never reach the net. A shambler on your own side sits short of the tape, so `tN` is still positive — the net is ahead in the direction of travel, the ball simply lands first — the height test there is far below the tape, and the loop spent all twelve cuts. Every same-side shot left the racket at 28% of nominal pace as a slow loop. That is exactly the shot that needs to be fast: those are the ones about to eat you. Guarded on the shot actually crossing the net, in serveArc and in doHit's copy. Flight time to a body at z=16 drops 0.71 s -> 0.20 s. THIS ONE IS A FEEL CHANGE YOU DID NOT ASK FOR — near shots are now fast and flat where they used to loop. Say if you want the lob back. Tennis and the duel still serve into the box, far-side shots still clear the tape, 900 frames of splatter render clean. 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%