The blood you have left, the bodies behind you, and a face for staging
Three things, all in service of the match reading as its own mode: BLOOD, COUNTED. The vignette says "worse" and never says "how many". One pip per hit left, top-right beside the board, in the panel language the game/sets bar already uses; the last two breathe. Pips rather than a bar on purpose — the pool is 4 or 8, and a smooth readout of a small integer is the exact ambiguity being fixed. OPPONENTS FELLED IS THE MEASURE (handoff slice 1). Blood-only scoring means a lost game costs nothing but the blood already spent, so games survived is not the achievement. The in-play bar prints OPPONENT n · m FELLED instead of the game/sets line, the death screen says BLED OUT / FELLED n OPPONENTS · m GAMES, and it keeps its own matchBest — drillBest's pattern. The kills-to-next-point pips are hidden in a match: nothing there is killed for points, and they were colliding with the new line anyway. STAGING WEARS A DIFFERENT ICON. Both builds live on the same phone and two identical bloody tennis balls is a coin toss. Driven by HOSTNAME, not by the branch — the block is identical on staging and main, so it never conflicts on a merge and never has to be remembered. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
a54cfa5f4f
commit
8011186cda
10 files changed
+113
-9
No files matched your search
+17
-1
@@ -14,6 +14,22 @@
|
||||
<meta name="apple-mobile-web-app-title" content="Splatter">
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
|
||||
<meta name="theme-color" content="#2b2735">
|
||||
<!-- STAGING WEARS A DIFFERENT FACE. Both builds get added to the same phone's homescreen, and two
|
||||
identical bloody tennis balls is a coin toss every time you open one. Driven by HOSTNAME, not by
|
||||
the branch: this block is identical on staging and on main, so it never conflicts on a merge and
|
||||
never has to be remembered. Prod is the one named host; everything else (staging, localhost, an
|
||||
IP) is a test build and says so. Runs in <head>, before the install prompt can read any of it. -->
|
||||
<script>
|
||||
if (location.hostname !== 'splatter-tennis.wuwi.one') {
|
||||
for (const [sel, href] of [['link[rel=icon]', 'assets/favicon-stg.png'],
|
||||
['link[rel=apple-touch-icon]', 'assets/icon-180-stg.png'],
|
||||
['link[rel=manifest]', 'manifest-stg.webmanifest']])
|
||||
document.querySelector(sel).setAttribute('href', href);
|
||||
document.querySelector('meta[name=apple-mobile-web-app-title]').setAttribute('content', 'Splatter STG');
|
||||
document.querySelector('meta[name=theme-color]').setAttribute('content', '#14334a');
|
||||
document.title = 'Splatter Tennis — STAGING';
|
||||
}
|
||||
</script>
|
||||
<style>
|
||||
/* pixel HUD font — bundled so it renders offline; used by the canvas scoreboard + rack.
|
||||
?v= like the sprites: server.py caches a VERSIONED asset for a year and an unversioned one for
|
||||
@@ -400,6 +416,6 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script type="module" src="src/main.js?v=176"></script>
|
||||
<script type="module" src="src/main.js?v=177"></script>
|
||||
</body>
|
||||
</html>
|
||||
Reference in new issue
Block a user