The splatter music stays on the splatter court

Every run starts the ambience, and the ambience was un-ducking both court beds
at once — so once you had played the gore mode, its music followed you into
classic tennis for the rest of the session. Leaving the court is one event;
arriving is not. Each bed brings itself back and nothing else.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
wuwiandClaude Opus 5 committed 2026-08-15 14:32:30 +02:00
1 parent 3cf3e029a4
commit 2f0c04fad4
5 files changed
+26 -3

No files matched your search

+9 -1
View File
@@ -164,7 +164,15 @@ function loopBed(file, lowcut, vol, loopEnd = 0) {
// whole-scene atmosphere, from the first tap. Un-ducks as well as starts, for the same reason
// menuMusic does: loopBed no-ops once the bed exists, so a SECOND run would have opened over the
// silence the menu left it in.
export const ambient = () => { loopBed('tennis-ambient-loop.wav', 500, 0.035); courtDuck(false); };
// ...but ONLY ITS OWN BED. It briefly un-ducked both court beds together (courtDuck) and that put
// the splatter music back on in classic tennis for the rest of the session, because every run
// starts here (Oliver, 2026-08-15: "after playing the splatter gore, the zombie background sound
// also keeps playing in the normal tennis game"). Leaving the court is one event and ducks both;
// ARRIVING is not — the ambience belongs to every mode and the zombie bed belongs to the gore.
export const ambient = () => {
loopBed('tennis-ambient-loop.wav', 500, 0.035);
fadeBed('tennis-ambient-loop.wav', false);
};
// ...and the splatter bed, same treatment: 5.9 MB of 24-bit WAV down to 287 KB. Its master is
// 982597 frames at 48 kHz, which is the un-round 20.47077 s below — an AAC loop needs the SOURCE
// length as loopEnd, not the decoder's padded one. See the note on menuMusic.
+1 -1
View File
@@ -221,7 +221,7 @@ function farB(z) {
// Asset cache-buster — bump with main.js?v=N (see the img.src note below). EXPORTED because the
// menu screens hang <img> tags on the same files, and two copies of this number is one copy too
// many: the one that does not get bumped is the one that serves a cached 404.
export const SPRV = 130;
export const SPRV = 131;
// The boot bar in main.js watches this. Nothing here CHANGES when things load — every sprite was
// already requested at import — it just makes the wait visible and holds the menu back until the
// last sheet has landed. See the onerror note below for the other half of "sometimes missing".