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:
1 parent
0c90337f2d
commit
c613b6ceba
7 files changed
+147
-21
No files matched your search
+24
-11
@@ -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
|
||||
|
||||
Reference in new issue
Block a user