The host names the stakes: classic tennis, or the death match
Three chips under VS A FRIEND — the host's pick rides the room and the start message rebuilds both courts on pairing. In the death match your opponent IS the zombie: their lost points tear its wound stages, their won points draw your blood, and bleeding out crosses the wire as the other phone's win. The same receiver-is-judge verdicts drive the match machinery through resolveInterlude, so the fall, the mop beat and the burst come along unmodified. New: gushProne — the game-winning body bleeds out on the ground, from prone-height anchors, until it bursts. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
5e80c4e69d
commit
c0b59eee90
10 files changed
+241
-26
No files matched your search
+19
@@ -451,6 +451,25 @@ agree on the same point from opposite perspectives). 73 tests.
|
||||
- **Test on staging with two phones** — the relay deploys with the ordinary push, nothing to
|
||||
provision. Coolify's proxy passes WebSocket upgrades as-is.
|
||||
|
||||
**SAME DAY: THE HOST PICKS THE MODE, and DEATH MATCH is the second pick.** Oliver: *"the one
|
||||
creating the room could decide whether it is classic tennis or death match.. in deathmatch the
|
||||
wounded opponent would show increased dynamic bleeding before exploding."* The VS second step is
|
||||
three chips now (HOST — CLASSIC TENNIS / HOST — DEATH MATCH / JOIN WITH A CODE); the host's pick
|
||||
rides the room (`?death=1` at creation, carried in the relay's start message), so the joiner never
|
||||
answers a question. On pairing BOTH phones rebuild the court into the zombie-tennis match — the
|
||||
same verdicts drive `resolveInterlude`/`matchPoint` instead of `pointTo`, so wounds, blood, the
|
||||
fall, the mop beat and the burst all come along unmodified. On each phone YOUR OPPONENT IS THE
|
||||
ZOMBIE: their lost points tear its wound stages (your win = their body comes apart), their won
|
||||
points draw your blood, and bleeding out sends `dead` — the other phone banks a NOT-dead match run
|
||||
and holds the win screen. Wired details: the same friend walks back on after each burst (`d.opp`
|
||||
frozen — the roster climb would hand them a new face; returns get an IT RISES AGAIN flash, not a
|
||||
repeated name card), racketAI and the early-decide are gated off (`!G.net` — you cannot predict a
|
||||
human's legs), match balls already passed through the body so no contact work was needed, and
|
||||
`gushProne()` in zombies.js is the asked-for bleed-out: LOW anchors around the corpse during the
|
||||
kill fall's prone hold (bleed() stays suppressed there — its standing-height anchors are the
|
||||
"blood fountains midair" bug), `TUNE.killGush` attempts per frame until the burst. #netd hosts a
|
||||
death room from a URL. 80 tests; the wound/blood/burst loop verified across two panes.
|
||||
|
||||
## Session log: the far court, without spending the lens (2026-08-13)
|
||||
|
||||
Oliver: the far-side opponent is barely visible in portrait, and the lens (camZ/camF, already at its
|
||||
|
||||
Reference in new issue
Block a user