Brighter stands, a serve hint that shows the gesture, and a boy who walks

- The crowd sat in the dark, worst of all in splatter mode where you spend the
  game. Both crowd frames get an identical gamma lift (means 30/14/39 ->
  42/22/56) and the rot tint drops 0.5 -> 0.26. The curve MUST stay identical
  across the two frames or the clap swap flashes brightness; _sheet_crowd1.png
  keeps the pre-lift original.
- The splatter hint led with the tap when pulling is the whole gesture. It now
  reads PULL BACK TO AIM - RELEASE TO FIRE, and after 1.5s of sitting in the
  serve stance untouched a ghost thumb slides back while chevrons grow up-court
  on a loop. Pull back, shoot forward is an inverse relationship that a line of
  text cannot carry on its own.
- The mop boy has three sheets instead of two: the push cycle now plays ONLY
  while he is stopped and working, a new carry sheet walks him upright with the
  mop shouldered, and the run sheet stays for the tennis-mode ball fetch. He was
  mopping thin air the entire way to the stain.

Sheet note: frames 2 and 3 of the carry sheet merged (a mop handle bridging the
gap), so it is cut at the true column gaps plus the thinnest column inside the
merged pair, then common-scaled — same technique as the brute stride sheet.

26-game soak clean. Serve returns 133/150 = 88.7% +/-2.6%, 30 human-tapped
points = 50 hits / 0 whiffs.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
wuwiandClaude Opus 5 committed 2026-07-28 10:34:43 +03:00
1 parent 21b9dd53fa
commit 7dde5874ab
14 files changed
+67 -5

No files matched your search

+2
View File
@@ -46,6 +46,8 @@ export const G = {
afterDuel: null, // the game beat the scheduled duel interrupted ('changeover' | 'game'), resumed when it resolves
pendingGame: false, // a game just ended — flash 'GAME N' when the next one arms
aim: null, // live two-stage serve aim {fx, fy, mag} while the thumb is down (splatter pretoss)
idleHintT: 0, // s the player has sat in pretoss without touching anything — after a beat the
// pull gesture demonstrates itself (render.drawPullHint)
meleeT: 0, // s of racket-swish cooldown left
interlude: false, // sudden-death duel vs the racket zombie: falsy, or {introT} while announcing
duelLerp: 0, // 0..1 — how far the court has returned to tennis colors for the duel