Split The code is public; the app answers only to the crew.

A kill looks exactly like a hit, and a grenade that lands looks like nothing #212

Merged opened this

Check · Review · Land · Live done — Landed and live in production.

Merged

`Effect`'s `hitmark` now carries `killed`. `shoot` takes it straight off `applyHit`'s result, and `detonate` pushes one mark per enemy its blast actually damaged — behind the same `thrower === world.me` guard `shoot` uses, and never for the thrower's own body, so a bot's grenade and the RL arena's hot loop push nothing new. Back-to-back `scripts/cost.ts` runs on this box: 0.122 ms a tick after aga…

shipped merged

opened this

Effect's hitmark now carries killed. shoot takes it straight off applyHit's result, and detonate pushes one mark per enemy its blast actually damaged — behind the same thrower === world.me guard shoot uses, and never for the thrower's own body, so a bot's grenade and the RL arena's hot loop push nothing new. Back-to-back scripts/cost.ts runs on this box: 0.122 ms a tick after against 0.124 ms before (an earlier pair read 0.140 / 0.137) — the same number inside the noise, which is expected since bots never throw.

In the HUD the mark for the shot that finished them is its own shape rather than a shade of the old one: the four corner ticks close into an X through the centre, one stroke heavier (3px), held 0.45 s instead of 0.25 s, and still drawn in the headshot's red when it was a headshot. That is four extra moveTo/lineTo on the path already there — one beginPath/stroke per mark, as before. earshot.ts carries killed through on the hit cue and nothing in audio.ts moved: audio.hit(headshot) keeps its signature and the kill tone waits for #110, which is why the flag is on the cue at all.

Worth looking at in the preview: land four body shots and the fifth on a bot and watch the fifth mark change, and throw an HE into two enemies — you get one confirmation each, one of them the kill mark if it drops someone. Tests that fail without the change are in all three files: world.test.ts for killed on a fatal knife and for exactly one mark per enemy your own blast catches (none for a teammate's, none for self-damage), hud.test.ts counting the centred strokes and their line width against the recording context, earshot.test.ts for the cue's new field. bun run check is green: 763 pass.

🤖 Generated with Claude Code

Closes #199

Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs