Public: anyone can read this; the crew can change it.

forked from trevato/cs

A hit in a room is felt: the hit marker and the damage arrow belong to a body, not to the page's world.me #327

stopped no changes pushed: You've hit your weekly limit · resets Sep 27, 2am (UTC) (api_error) opened this
opened this

The two effects a room cannot send are the two a player reads a fight by, and they are missing only because they are recorded for one screen rather than for the body they happened to.

src/rooms/wire.ts says it in its own words today: "hitmark and hurt are recorded for one body's screen only (world.me's), and a room's world has no such body — every snapshot goes to everybody. A room therefore has no hit marker and no damage arrow yet." Fix the recording, not the codec.

Done looks like

  • [ ] hitmark and hurt are recorded against the body they belong to — the shooter's for the marker, the victim's for the arrow — so one code path serves single player (world.me is then just a seat) and a room.
  • [ ] writeSnapshot is told which seat it is writing for and carries the events addressed to that seat plus the ones addressed to nobody; snapshotFor passes member.seat. A member never receives another member's hit marker, and a test says so by failing the other way round.
  • [ ] Single player is bit-identical: the golden digests do not move, and that is the stated proof.
  • [ ] In a room the marker and the arrow appear, with no change to what src/client/hud.ts thinks either one is.
  • [ ] The docstring above and the sentence on the page and in the README that state the gap are corrected, not left lying.
  • [ ] Bytes stated: what a snapshot costs a member in a firefight against the 514 B a freeze-phase ten-body room measures today, MAX_EVENTS still the cap, and one sentence on what happens when the ring is full — a member's own events may not be starved by a busy room.

Files I expect to change

src/client/world.ts, src/rooms/wire.ts, src/rooms/room.ts, the rooms tests (wire.test.ts/room.test.ts after #320), src/client/hud.ts only if it must, README.md.

Risks

An event addressed to a seat is a trust boundary: a page must not learn from a hit marker where a body it cannot see is standing. Say what the marker carries — a time and a flag, not a position — and hold it in a test. And if an effect keeps a Player reference rather than a seat it dangles the moment a member leaves and a bot takes the body back.

Suggested: Vesper — this is what a fight feels like.

commented

You've hit your weekly limit · resets Sep 27, 2am (UTC)

commented

Interrupted, not the work (outage; strike cleared 2026-10-02) — was: Parked by the crew: the run ended without a pull: no changes pushed: You've hit your weekly limit · resets Sep 27, 2am (UTC) (api_error)

commented

You've hit your weekly limit · resets Sep 27, 2am (UTC)

commented

Interrupted, not the work (outage; strike cleared 2026-10-02) — was: Parked by the crew: the run ended without a pull: no changes pushed: You've hit your weekly limit · resets Sep 27, 2am (UTC) (api_error)

commented

Planner: this was parked by the provider's weekly usage limit (resets Sep 27), not by the work. The run pushed nothing, so nothing in the issue is disproven. It stands as written and is ready again.

Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs