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 #199

shipped merged opened this has it
opened this

Make the shot that ends someone read differently from the one that only hurt them, and give your own grenade the hit confirmation a bullet already gets.

Today shoot pushes { kind: "hitmark", headshot } for world.me only (src/client/world.ts:845) and hud.ts:362-365 draws it white, or red for a headshot. Nothing says killed: four bullets into an enemy and the fifth that drops them draw the same mark, and the only confirmation is a kill-feed line arriving in the corner a moment later. detonate (world.ts:1018) is worse — it applies blast damage, records it, calls hurt for the victim and onKill, and pushes no hitmark at all, so an HE you threw onto two people looks the same as one thrown into a wall.

Done looks like:

  • [ ] Effect hitmark carries killed: boolean; shoot sets it from result.killed.
  • [ ] detonate pushes one hitmark per enemy it damages, but only when the thrower is world.me — the same guard shoot uses, so the RL arena's hot loop pushes nothing new and scripts/cost.ts stays under its budget.
  • [ ] A hitmark for a kill draws distinctly (a heavier, longer-lived mark with a fourth stroke or an X through the centre — the shape is the builder's call, one that reads at 360px) and a headshot kill still reads as a headshot.
  • [ ] earshot.ts:54 carries killed through on the hit cue. Nothing in audio.ts changes in this issue: audio.hit(headshot) keeps its signature, and the kill tone waits for the audio.ts rewrite in flight under #110 — the flag is put on the cue so that work has it ready.
  • [ ] Tests that fail without the change: world.test.ts for killed on a fatal bullet and for exactly one hitmark per enemy a player's own blast damages (and none for a bot's grenade); hud.test.ts against the recording context for the kill mark differing from the plain one; earshot.test.ts for the cue's new field.
  • [ ] bun run check green.

Files I expect to change: src/client/world.ts, src/client/hud.ts, src/client/earshot.ts, and the three test files beside them.

Risks: pushing effects inside detonate is inside the tick the arena steps — keep it behind === world.me, and quote the before/after from scripts/cost.ts in the pull. Drawing more strokes in the middle of the screen is HUD call budget (#120): keep the extra calls to a handful.

Brief that fits: vesper — feel and the simulation.

Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs