Splatter feel pass: baseline turret, tennis duel, rapid serves, bleeding wounds
- Stand at the baseline: in splatter the player is pinned to the baseline (a turret, side-to-side only) — the duel is exempt so it keeps free depth. - Zombie 1:1 duel now plays like real tennis: no free-aim flick, no drag reticle; lane aim + the toss-then-hit serve (gate on !G.interlude in doHit/hitServe/keyPressed/canAimServe). - Rapid serves: the two-stage reticle serve now fires mid-rally too — a ball still in flight is banished to a ballistic clone so the next serve launches at once. Serve as fast as you can drag-release. - Wounded skins for multi-hit foes: brute (arm off) and racket boss (arm off, then headless) swap by remaining hp, with a graceful fallback to the healthy sprite. The headless boss is drawn a head shorter so the shoulders line up. - Dynamic gore: the blood is NOT painted in — open wounds gush live particles every frame (arm stumps + a neck geyser on the headless boss), absurdly, and bounded so it self-regulates. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
1 parent
7936d83f0f
commit
df4eaf6e39
10 files changed
+53
-21
No files matched your search
@@ -42,8 +42,9 @@ export function takeFlickAim(maxAgeMs = 450) {
|
||||
// the two-stage serve: a drag that STARTS at a serveable pretoss aims a visible reticle
|
||||
// (G.aim, drawn by render); release fires the serve there, dragging back home cancels.
|
||||
const canAimServe = () =>
|
||||
G.mode === 'splatter' && G.phase === 'pretoss' && score.server === 'P' && G.weapon !== 4 // GUN pops on tap, no reticle
|
||||
&& !G.horde && !(G.mgT > 0) && !G.changeover && !(G.interlude && G.interlude.introT > 0);
|
||||
G.mode === 'splatter' && (G.phase === 'pretoss' || G.phase === 'rally') // rally too: rapid serves mid-flight
|
||||
&& score.server === 'P' && G.weapon !== 4 // GUN pops on tap, no reticle
|
||||
&& !G.interlude && !G.horde && !(G.mgT > 0) && !G.changeover; // the duel serves like tennis: no reticle
|
||||
|
||||
let steerPX = null; // live absolute finger x (-1..1 across the canvas) — machine-gun steering reads it
|
||||
export const touchPX = () => steerPX;
|
||||
|
||||
Reference in new issue
Block a user