The wall drops its corner chips

LAST remembered what you played last time, which a gallery of six posters does
not need to do for you, and 18 RUNGS was a number about a mode on the screen
for choosing between modes. Both gone. The difficulty screen keeps its LAST —
there it is the only thing saying what you last set.

The dead sub-poster branch in buildSub went with them: nothing has fanned out
into sub-posters since the cup left the ZOMBIE TENNIS pocket.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
wuwiandClaude Fable 5 committed 2026-08-31 15:17:19 +02:00
1 parent cb3074f99d
commit e09ce992e2
3 files changed
+17 -25

No files matched your search

+8 -18
View File
@@ -124,9 +124,11 @@ const modeSub = document.getElementById('modeSub');
// checkbox and a button combined"). Every poster is full-bright and equal — all of them are live
// answers — and the only memory shown is the LAST tag, an indicator rather than a selection. The
// select-and-confirm border lives solely on the final screen, where SERVE UP actually confirms.
// `opts.line` is the ONE second line the wall still carries (the fixture, under the hero's name);
// `opts.chip` is a fact that changes what a mode IS rather than describing it (18 RUNGS).
const banner = (card, cls, last, opts = {}) => {
// `opts.line` is the ONE second line the wall still carries: the fixture, under the hero's name.
// The corner chips are gone (2026-08-31, Oliver: "sinnlos") — LAST told you what you played last
// time, which the wall does not need to remember for you, and 18 RUNGS was a number about a mode
// on a screen for choosing between modes.
const banner = (card, cls, opts = {}) => {
const b = document.createElement('button');
b.className = cls;
// JUST THE ART. The scrim used to ride in this background stack as a hard linear-gradient; the
@@ -137,8 +139,6 @@ const banner = (card, cls, last, opts = {}) => {
// under every name on the wall — sixty words to make one choice. The rules live in the modal
// that opens with the mode; MODES.sub is still their source, it just no longer prints here.
b.innerHTML = `<span class="cb"><b>${card.name}</b>${opts.line ? `<i>${opts.line}</i>` : ''}</span>`
+ (last ? '<u class="last">LAST</u>' : '')
+ (opts.chip ? `<u class="last chip">${opts.chip}</u>` : '')
// the standing answer to "how do I advance", worn by the poster it is true of (config MODES)
+ (card.tag ? `<u class="way">${card.tag}</u>` : '');
return b;
@@ -167,14 +167,6 @@ function buildSub(top) {
});
modeSub.appendChild(b);
});
else if (t.kids) for (const id of t.kids) {
const b = banner(modeOf(id), 'mode', id === pickedMode);
b.addEventListener('click', () => {
pickMode(id);
go('setup');
});
modeSub.appendChild(b);
}
}
// the top posters are rebuilt on every visit so the LAST tag follows what was actually played
function buildTops() {
@@ -193,11 +185,9 @@ function buildTops() {
continue;
}
const fx = cupFixture(profile.prof.lg, profile.prof.ch);
const b = banner(t.mode ? modeOf(t.mode) : t, 'mode', topOf(pickedMode) === t,
// the fixture is the hero and carries the only second line on the wall; the training court
// carries the one fact that is not a description — how much of the club it holds
{ line: t.mode === 'cup' ? 'LEAGUE ' + fx.lg + ' · ' + fx.line : null,
chip: t.mode === 'train' ? LADDER + ' RUNGS' : null });
// the fixture is the hero and carries the only second line on the wall
const b = banner(t.mode ? modeOf(t.mode) : t, 'mode',
{ line: t.mode === 'cup' ? 'LEAGUE ' + fx.lg + ' · ' + fx.line : null });
b.addEventListener('click', () => {
// the netplay poster opens THE LOBBY and never touches pickedMode — it is not a run mode
// the stats screen or the summary could name, and the lobby starts the game itself