The leagues, phase 4: the duel learns, tin tiers by league, level buffs, the board wears the badge

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
wuwiandClaude Fable 5 committed 2026-08-29 12:53:12 +02:00
1 parent 76d88030e5
commit 787877bce6
10 files changed
+175 -24

No files matched your search

+18
View File
@@ -688,6 +688,16 @@ export const TUNE = {
// returner takes. Serve-scoped on purpose: the rally is unchanged.
racketQMax: 0.55, // its return quality is capped here (slower, sloppier than the tennis CPU)
racketFlub: 0.2, // chance the racket zombie whiffs a return
// THE DUEL LEARNS (the leagues, phase 4). At duelFirst 2 / duelEvery 3 with hp-only stiffening
// the duel was a weapon DISPENSER, not a gate — the same inflation class the barrel economy was
// cured of. Its skill now ramps with the RUN, on gore's own clock (G.runGames — the league buffs
// YOU, it never rekeys the director): legs, read, whiff and return quality all climb to these
// caps by duelRampGames. Game 0 is exactly the shipped duel (the calibration rule).
duelRampGames: 24, // games until the duel opponent plays at full skill
duelSpeedMax: 0.35, // its legs end 35% quicker than the shipped 2.8 m/s lumber
duelReadMax: 0.93, // its read climbs from aiRead 0.8 toward here — near-machine, never one
duelFlubCut: 0.6, // racketFlub 0.2 -> 0.08: late duels stop beating themselves
duelQBonus: 0.2, // racketQMax 0.55 -> 0.75: its returns get real pace late
missHud: 0, // show the last miss reason on screen (full log: T.G.missLog) — off; dev-only
killPips: 1, // splatter: show the kills-to-next-point pips on the scoreboard
};
@@ -719,6 +729,14 @@ export const UI = { hot: '#d9705f', warm: '#e0cc72', pick: '#cbd06a', cream: '#e
// palette is near it, so "pink means a weapon is in there" needs no explaining
pink: '#ff5cf0' };
// THE TIN TIERS (the leagues, phase 4; settled: tin-tier, NO starting loadout). The league
// unlocks what a won duel's tin can PAY, independent of the run's own barrel gates — "weapons are
// only ever won" stays literal, the league just deepens the pot: lasers join the duel ladder at
// league 3, rockets at 4, and league 5 duels pay DOUBLE tins. The world board is not devalued by
// starting inventory, and every weapon still arrives through resolveInterlude('P').
export const TIN_LEAGUE = { laser: 3, rocket: 4 };
export const TIN_DOUBLE_LEAGUE = 5;
// ------------------------------------------------------------------ courts ----
// A court type is pure DATA: adding one is a row here plus its four PNGs, never a change to render().
// Each carries TWO palettes because every court still rots — `tennis` is how it looks before the