diff --git a/index.html b/index.html index e8960fa..102820f 100644 --- a/index.html +++ b/index.html @@ -431,6 +431,6 @@ if (location.hostname !== 'splatter-tennis.wuwi.one') { - + diff --git a/src/config.js b/src/config.js index 3943a04..cecae40 100644 --- a/src/config.js +++ b/src/config.js @@ -9,8 +9,12 @@ export const TUNE = { playerSpeed: 5.4, aiSpeed: 4.3, reach: 1.3, aiReach: 1.6, // tight contact radius: the assist positions you, the tap must be honest fallSlideDist: 0.5, // s of run the collapse travels: total slide = the body's speed x this - fallSlideMix: [0.10, 0.30, 0.45, 0.15], // how that total is shared across fall1/fall2/fall3/rise, so - // the landing SKIDS and the rise still moves. Tuned in #bench (FALL button). + fallSlideMix: [0.12, 0.35, 0.53, 0], // how the total is shared across fall1/fall2/fall3/rise, so the + // landing SKIDS. THE RISE GETS NOTHING — "the slide must be finished before + // the rise": a body pushing itself back onto its feet is planted, and still + // drifting while it stands up reads as the court moving under it. The 0.15 + // it used to take is redistributed across the first three in proportion, so + // the total travel is unchanged. Tuned in #bench with the FALL button. proneSink: 0.20, // how far a fall3 frame drops, as a fraction of its own drawn height: // its lowest ink is the RACKET, so bottom-aligning it floats the body // (see the note at drawZombie's drawStatic call) diff --git a/src/zombies.js b/src/zombies.js index 451e8cd..33ffd57 100644 --- a/src/zombies.js +++ b/src/zombies.js @@ -1018,7 +1018,12 @@ export function updateZombies(dt) { if (zb.burnT > 0 && burnTick(zb, i, dt)) continue; // the fire finished it — the array moved under us // a chapter boss is excluded: bossAI owns BOTH of its axes, and leaving this in advanced it twice if (!held && zb.variant !== 'B') zb.z += zb.v * (zb.burnT > 0 ? TUNE.burnPanic : 1) * dt; - bleed(zb); // open wounds bleed every frame they're standing + // ...AND A BODY ON THE GROUND IS NOT STANDING, which this line already said and did not enforce. + // bleed()'s wound anchors are ABSOLUTE world heights — the headless neck spurt is pinned at + // y = 1.5 m — so a corpse lying flat through the fall kept spraying from where its neck used to + // be, two metres above itself. Oliver: "this looks like blood fountains midair." The falling body + // is the one G.matchFall owns; every other body on court bleeds as before. + if (!(G.matchFall && zb.variant === 'r')) bleed(zb); // open wounds bleed every frame they're standing if (zb.shieldT > 0) zb.shieldT -= dt; // staggered chair comes back up when this runs out if (zb.hitT > 0) zb.hitT -= dt; // boss contact cooldown (see TUNE.bossHitCool)