The cup board: the league ranks, the level breaks the tie
Oliver wanted to rank the level a league was taken at. The challenge held: xp comes only from playing, so a board that rewards a low level rewards not playing — it would pay you to avoid the three rooms the season leans on. It also inverts every other number in the game, freezes after five entries, and makes the player who played more look worse. So the league ranks and the level decides between everyone who got equally far, where "lower is better" reads naturally. BOARDS.u carries subLow; server rank_key is the other half, and the same key decides whether a submission beats the row already standing. The level is written once at the promotion — before the league moves, because it is the level that WON the cup — mirrored like the rest of the profile, and inscribed under the shield it belongs to. Earned shields smoulder while they are on screen: five CSS embers each, no loop. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
e96b4374d8
commit
80eb60d181
8 files changed
+226
-40
No files matched your search
+7
-3
@@ -9,7 +9,7 @@
|
||||
|
||||
import { TUNE, UI, bossArt, matchFoe, BENCH, ZFAMS, COURT, HOME, racketStage, leagueOf, cupRoundsFor, cupFixture, foeLevel } from './config.js';
|
||||
import { endRun, MODE_MATCH } from './stats.js';
|
||||
import { award, prof, save as profSave, push as profPush, setPromo, levelAt, recordCup } from './profile.js';
|
||||
import { award, prof, save as profSave, push as profPush, setPromo, levelAt, recordCup, recordCupWin } from './profile.js';
|
||||
import { G, P, O, ball, score, setupPoint, sendBoy, other } from './state.js';
|
||||
import { voice, zombieDuck, aww } from './audio.js';
|
||||
import { zombies, pellets, extras, shots, spawnRacketZombie, spawnChapterBoss, spawnZombie, explode, killPlayer } from './zombies.js';
|
||||
@@ -920,8 +920,12 @@ function cupWon() {
|
||||
// main.maybeRestart plays once the summary is tapped away. Winning league 5 crowns the profile
|
||||
// instead (prof.ch) — the summary below already says CHAMPION OF THE DEAD CLUB.
|
||||
if (!d.train && G.league === prof.lg) {
|
||||
if (prof.lg < 5) { prof.lg++; setPromo({ to: prof.lg }); }
|
||||
else if (!prof.ch) { prof.ch = 1; setPromo({ champion: true }); }
|
||||
// THE INSCRIPTION (the cup board): the level you were when you took it, written before the
|
||||
// promotion moves anything — it is the level that WON the cup, not the one you walk on with.
|
||||
const at = levelAt(prof.xp);
|
||||
recordCupWin(G.league, at);
|
||||
if (prof.lg < 5) { prof.lg++; setPromo({ to: prof.lg, took: G.league, at }); }
|
||||
else if (!prof.ch) { prof.ch = 1; setPromo({ champion: true, took: G.league, at }); }
|
||||
profSave(); profPush();
|
||||
}
|
||||
if (!d.train) recordCup(G.league, d.cup.rounds.length); // the full record: you took the final
|
||||
|
||||
Reference in new issue
Block a user