Clear the last of the "ladder" vocabulary out of the handoff and the comments
Left over from the rename: the handoff still described opponent 2 as "rung N" and pointed at matchRung, and three comments in gameplay.js still called the opponent curve a ladder. One word per thing, everywhere now — OPPONENTS, WOUND STAGES, a sprite FAMILY — with a note in the handoff saying which word replaced what, so the next reader is not left translating. (The barrel weapons keep their own "rungs of the same ladder" line: that one is about the WEAPON payout order and was never part of the confusion.) Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
e674677f4e
commit
a568d75aed
2 files changed
+12
-10
No files matched your search
+9
-7
@@ -38,7 +38,7 @@ Oliver picked **A: blood-only**, of three options offered:
|
|||||||
blood already spent, and heals are how you last. **The measure becomes OPPONENTS FELLED.**
|
blood already spent, and heals are how you last. **The measure becomes OPPONENTS FELLED.**
|
||||||
- B — tennis-true: a lost game ends the run. Rejected for now (worth one playtest someday; it might
|
- B — tennis-true: a lost game ends the run. Rejected for now (worth one playtest someday; it might
|
||||||
be the mode's real personality).
|
be the mode's real personality).
|
||||||
- C — hybrid, lost game drops a rung. Rejected.
|
- C — hybrid, a lost game drops you an opponent. Rejected.
|
||||||
|
|
||||||
**Important context for whoever implements this:** Oliver believed losing a match killed him
|
**Important context for whoever implements this:** Oliver believed losing a match killed him
|
||||||
("i really die losing one match"). It does not — he was bleeding out during deuce wars and hitting
|
("i really die losing one match"). It does not — he was bleeding out during deuce wars and hitting
|
||||||
@@ -55,10 +55,12 @@ communicating its own rules. Model A only works if the player can see they are b
|
|||||||
same `endRun` with a mode tag — see "The record shape" below. The blood also got a readout, one
|
same `endRun` with a mode tag — see "The record shape" below. The blood also got a readout, one
|
||||||
pip per hit left beside the board, because the vignette says "worse" and never says "how many".
|
pip per hit left beside the board, because the vignette says "worse" and never says "how many".
|
||||||
|
|
||||||
2. ~~**Named opponent ladder**~~ **DONE, partly.** Rung N takes design N's name off the chapter
|
2. ~~**Named opponent list**~~ **DONE, partly.** Opponent N takes design N's name off the chapter
|
||||||
roster (`matchRung` in config) plus a personality that is DIALS — pace, width, flub, speed
|
roster (`matchFoe` in config, rows in `config.OPPONENTS`) plus a personality that is DIALS — pace,
|
||||||
scalings on numbers `racketAI` already reads. Name plate on the walk-on, board names it
|
width, flub, speed scalings on numbers `racketAI` already reads. Name plate on the walk-on, the
|
||||||
(`short`), kills file under the rung so THE LADDER screen can list them.
|
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
|
**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.
|
and completely unused here. A body-shot thrower is a personality no dial can express.
|
||||||
|
|
||||||
@@ -112,7 +114,7 @@ slots carry each MODE's own two numbers:
|
|||||||
|
|
||||||
`g` is what everything ranks on, so each mode's real measure goes in that slot and there is no second
|
`g` is what everything ranks on, so each mode's real measure goes in that slot and there is no second
|
||||||
best stored anywhere to drift. `read(period, runs, mode)` filters; the stats screen is one function
|
best stored anywhere to drift. `read(period, runs, mode)` filters; the stats screen is one function
|
||||||
with three sets of words (BODY COUNT / THE LADDER / THE RECORD). The world board stays the gore
|
with three sets of words (BODY COUNT / OPPONENTS FELLED / THE RECORD). The world board stays the gore
|
||||||
mode's — it ranks kills in a run, and a five-body match would post a "5 kills" row next to a
|
mode's — it ranks kills in a run, and a five-body match would post a "5 kills" row next to a
|
||||||
300-kill massacre. A tennis board would rank FELLED with points won as the tiebreak; that is a
|
300-kill massacre. A tennis board would rank FELLED with points won as the tiebreak; that is a
|
||||||
server change.
|
server change.
|
||||||
@@ -124,7 +126,7 @@ frame is picked off `racketAI`'s own `pose`, so the picture cannot drift from th
|
|||||||
|
|
||||||
Expansion ideas that survived discussion, in `PROJECT.md`'s LATER: the **tournament frame**
|
Expansion ideas that survived discussion, in `PROJECT.md`'s LATER: the **tournament frame**
|
||||||
(QUALIFYING → ROUND OF 16 → THE FINAL vs THE CHAMPION — gives the run a destination), the Hawk-Eye
|
(QUALIFYING → ROUND OF 16 → THE FINAL vs THE CHAMPION — gives the run a destination), the Hawk-Eye
|
||||||
**challenge** as an earned continue, sudden-death deuce past a rung, doubles, and **item 7:
|
**challenge** as an earned continue, sudden-death deuce past a given opponent, doubles, and **item 7:
|
||||||
multiplayer** (ghost match first).
|
multiplayer** (ghost match first).
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|||||||
+3
-3
@@ -153,11 +153,11 @@ function doHit(ch, quality, aim) {
|
|||||||
// time than auto-run needs from the far corner. Opponent one gives you the flight time; the
|
// time than auto-run needs from the far corner. Opponent one gives you the flight time; the
|
||||||
// rungs take it back.
|
// rungs take it back.
|
||||||
// ...and the RUNG's own pace trait rides on top, inside the cap: full pace is still the ceiling,
|
// ...and the RUNG's own pace trait rides on top, inside the cap: full pace is still the ceiling,
|
||||||
// a rung just gets there sooner or later than the flat ladder would (see matchRung in config).
|
// an opponent just gets there sooner or later than the flat curve would (see matchFoe in config).
|
||||||
s *= Math.min(1, (TUNE.matchOppPace + (G.match.opp - 1) * TUNE.matchOppPacePer) * (ch.foe?.pace || 1));
|
s *= Math.min(1, (TUNE.matchOppPace + (G.match.opp - 1) * TUNE.matchOppPacePer) * (ch.foe?.pace || 1));
|
||||||
}
|
}
|
||||||
if (G.match) {
|
if (G.match) {
|
||||||
// THE OPPONENT'S WIDTH IS THE LADDER'S THIRD DIAL. Its returns scatter off aimError x (1 - 0.55
|
// THE OPPONENT'S WIDTH IS THE THIRD DIAL. Its returns scatter off aimError x (1 - 0.55
|
||||||
// quality), which paints lines an auto-run player cannot reach — "still a LOT of unreachable
|
// quality), which paints lines an auto-run player cannot reach — "still a LOT of unreachable
|
||||||
// balls". Opponent one keeps its returns inside matchWideBase of the centre line; each rung
|
// balls". Opponent one keeps its returns inside matchWideBase of the centre line; each rung
|
||||||
// earns matchWidePer more width, so the line-painting is the LATE ladder, not the opening one.
|
// earns matchWidePer more width, so the line-painting is the LATE ladder, not the opening one.
|
||||||
@@ -1045,7 +1045,7 @@ function racketAI(rz, dt) {
|
|||||||
const tz = Math.max(1.5, Math.min(COURT.svcFar, ball.z)); // chase laterally, hold deep on the far court
|
const tz = Math.max(1.5, Math.min(COURT.svcFar, ball.z)); // chase laterally, hold deep on the far court
|
||||||
const dx = ball.x - rz.x, dz = tz - rz.z, d = Math.hypot(dx, dz);
|
const dx = ball.x - rz.x, dz = tz - rz.z, d = Math.hypot(dx, dz);
|
||||||
if (d > 0.15) {
|
if (d > 0.15) {
|
||||||
// THE MATCH LADDER ESCALATES HERE, not in hp: with regicide gone the pool is pure scoreboard,
|
// THE MATCH ESCALATES HERE, not in hp: with regicide gone the pool is pure scoreboard,
|
||||||
// so a harder opponent is a FASTER one that flubs less. The BASE is boosted too — the duel's
|
// so a harder opponent is a FASTER one that flubs less. The BASE is boosted too — the duel's
|
||||||
// 2.8 m/s lumber was tuned for one sudden-death point against a fresh player, and across a
|
// 2.8 m/s lumber was tuned for one sudden-death point against a fresh player, and across a
|
||||||
// whole game it read as "very weak and slow": opponent one already moves at matchSpeedBase.
|
// whole game it read as "very weak and slow": opponent one already moves at matchSpeedBase.
|
||||||
|
|||||||
Reference in new issue
Block a user