The body plays the wounds it wears, and the flick finally has a teacher

Score-is-the-body was a picture: the opponent lost an arm and swung exactly as
far, lost its head and missed exactly as often. Two dials now read the same
racketStage the SKINS are picked with, so what you watch it lose is what it
loses — deliberately small (6% reach, 17.5% whiff per stage), texture under the
ladder rather than a second difficulty curve, with a test on that ceiling. An
unhurt body still returns exactly 1 and 1, and the whole thing is gated on
G.match: the gore duel's racket zombie is untouched.

And the placement flick, the mode's one act of skill, was taught nowhere on
touch — the placement ring is a receipt, not a lesson, and you only get one if
you already knew to swipe. The ghost hand teaches it now, in the same register
as PULL DOWN and TAP AS IT ARRIVES, riding the failure it answers: a run of
returns that left with no aim on them. The tap lesson still wins when both
qualify — placement is the wrong thing to teach someone who cannot reach the
ball.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
wuwiandClaude Opus 5 committed 2026-08-17 08:21:18 +02:00
1 parent 0c90337f2d
commit c613b6ceba
7 files changed
+147 -21

No files matched your search

+24 -11
View File
@@ -61,14 +61,19 @@ communicating its own rules. Model A only works if the player can see they are b
board names it (`short`), and the kill files under it so the OPPONENTS FELLED screen can list it.
*(The word "ladder" was retired — it had come to mean the opponent list, the wound stages AND a
stats screen. One word per thing now: OPPONENTS, WOUND STAGES, and a sprite FAMILY.)*
**Still open, and still the cheapest depth in the mode:** `shots[]` and the PARRY are fully built
and completely unused here. A body-shot thrower is a personality no dial can express.
~~**Still open:** `shots[]` and the PARRY are fully built and completely unused here.~~
**SCRATCHED** (2026-08-17, Oliver): a body-shot thrower in the match is not wanted. Both
mechanics stay where they are; do not revive this without him asking.
3. **Wound-driven play** *(small, big payoff)* — the injuries should MEAN something: a one-armed
opponent loses reach, a headless one flubs more. Score-is-the-body becomes score-changes-the-game.
Read the fraction the way `drawZombie` and `bleed()` do (never literal hp).
*The art is now there for it:* every wound stage has its own ready stance, shuffle pair and
forehand (`z_rw1*`, `z_rw2*`), so a wounded opponent still plays rather than reverting to a walk.
3. ~~**Wound-driven play**~~ **DONE** (2026-08-17). Two dials, both read through `racketStage` —
the very call the SKINS are picked with, so what you watch it lose is what it loses:
`config.matchWound` returns `{reach, flub}` and `racketAI` spends it on its contact radius and
its whiff rate. **Deliberately small** ("not too pronounced"): ~6% reach and ~17.5% more whiff
PER STAGE, so at headless it is 12% and 35% — texture under the ladder, never a second
difficulty curve, and a test pins that ceiling so a later tuner cannot quietly cross it.
Unhurt returns exactly `{1, 1}` and the whole thing is gated on `G.match`, which is what keeps
the gore duel's racket zombie untouched. Note the arithmetic: a quarter off a full pool is 0.75,
so **point one changes nothing** — the dials move on points two and three, with the art.
4. ~~**The fall animation**~~ **DONE** (2026-08-12). Point won → the body COLLAPSES → drags itself up
minus the limb. `beats.tickMatchFall`, on its OWN clock beside the horde's warning (a beat that
@@ -85,10 +90,18 @@ communicating its own rules. Model A only works if the player can see they are b
keeps its door (MATCH TEST still works) — the menu did not replace it, it just stopped being the
only way in.
6. **Teaching** *(small)* — a ghost-hand lesson for the PLACEMENT FLICK. It is the counter-attack
(flick during the swing aims the return; wrong-footing is how points are won) and it is taught
nowhere on touch. The placement ring (`G.placeMark`) already shows the result; nothing teaches
the cause.
6. ~~**Teaching**~~ **DONE** (2026-08-17). The ghost-hand lesson for the PLACEMENT FLICK, in the
same register as PULL DOWN and TAP AS IT ARRIVES: a dotted track out of the player, the hand
riding it, SWIPE AS YOU HIT, mimed both ways in turn so it never teaches one corner.
It rides the failure it answers — `G.flatStreak`, returns that left with no aim on them
(`flatCount`, reset by the first aimed one) — and only after `TUNE.flickHintAfter` of them,
because hitting flat is a legal shot and not a mistake. **One lesson at a time:** the tap hint
wins if both qualify, since teaching placement to someone who cannot reach the ball is the wrong
lesson. Touch only (on a keyboard the aim is held keys, and SWIPE would name a gesture that does
not exist there), and it runs in the MATCH as well as classic — the match is `splatter` under a
permanent interlude, so a `G.mode === 'tennis'` gate would have missed the mode it was built for.
The words sit ABOVE the stroke: below them is the baseline, and 10px type over that white line
is unreadable.
7. ~~**Opponent serve games**~~ **DONE** (2026-08-12), and it was almost entirely switched off rather
than missing. `setupPoint`'s tennis branch already placed a non-player server behind its own