Stop calling three different things "the ladder"

Oliver: "the talk about ladder and rung is extremely confusing." It was, and it
was my vocabulary, not his reading. "Ladder" had come to mean three unrelated
things in this codebase — the sequence of opponents in zombie tennis, the
sequence of WOUND STAGES on one body, and the name of a stats screen — and
"rung" meant a position in whichever of those you happened to be reading about.

One word per thing now:

  the OPPONENTS   who you play, in order, one game each (config.OPPONENTS,
                  matchFoe(n), zb.foe). Never "rungs".
  WOUND STAGES    healthy -> arm off -> headless, on one body. Unchanged, and
                  now the only thing allowed to be called a progression.
  a FAMILY        the sprite set a body wears (config.ZFAMS).

Renames: LADDER_TRAITS -> OPPONENTS, matchRung -> matchFoe, zb.rung -> zb.foe,
and the stats screen THE LADDER -> OPPONENTS FELLED, which is what it lists.

The 'L0'..'L9' record keys are deliberately NOT renamed: they are written into
saved run records, and renaming them would orphan every match anyone has
played. A comment says so where they are built.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
wuwiandClaude Opus 5 committed 2026-08-12 13:11:55 +02:00
1 parent e2487b784a
commit df454c5d92
6 files changed
+40 -37

No files matched your search

+3 -3
View File
@@ -2142,9 +2142,9 @@ export function render() {
// Silkscreen pixel font — no code-drawn slots or bevels painted on top of the art.
ctx.textBaseline = 'middle';
// ...and the match names the thing across the net rather than calling it THEM. Eight characters,
// which is the name slot — see `short` on the ladder rows.
const rung = G.match && zombies.find(z => z.variant === 'r' && z.rung);
const names = G.match ? ['YOU', (rung && rung.rung.short) || 'THEM']
// which is the name slot — see `short` on the opponent rows in config.
const foe = G.match && zombies.find(z => z.variant === 'r' && z.foe);
const names = G.match ? ['YOU', (foe && foe.foe.short) || 'THEM']
: splat ? ['YOU', 'THEM'] : ['YOU', 'CPU'];
for (let i = 0; i < 2 && !benchOn; i++) {
const cy = 12 + i * 18, svr = (score.server === 'P') === (i === 0); // rows aligned to the art's two bands