Repository navigation
feat(outbreak): radial E menu, a Lab setting with Today one step away - #421
Merged
Merged
Conversation
Playtest Oct 21 (1:45:21): "I also think the press and hold for secondary action is very... It should be that radial thing where you press E and then it gives you the radial thing to pick what action you want to do and you can just click it. Probably the smoothest." On a target with more than one action, a tap still takes E's own action; holding E opens a ring at the cursor with E's tap, its hold, Shift+E's alternative and B's board-up, drawn with the prompt glyphs and kit number caps. Point and release, click, or press the number; release in the middle or Esc cancels. Aim holds and nothing fires while it is up. Choices travel as Command.interactAction, so co-op carries them. Lab > Controls > E actions: Today keeps tap/hold.
…m, Shift+E skips it, server checks the chosen action
kitlangton
force-pushed
the
outbreak-radial-interact
branch
from
October 22, 2026 10:37
12226c0 to
2011010
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What it does. From the Oct 21 playtest: "It should be that radial thing where you press E… and you can just click it." A tap on E still does E's own action. Holding E for 0.2 s opens a ring at the cursor with every action on the target: its tap, its hold, Shift+E and board up. Each shows its glyph, verb and number key. Pick by letting go of E over one, clicking it, or pressing its number; let go in the middle or press Esc to cancel. Lab › Controls › E actions keeps Today's tap/hold one setting away.
How it works.
radial/state.tsis a small state machine: idle, pending, open, spent. It's driven by the input controller and drawn byradial/view.ts.Command.interactAction, which now survives the wire (netSendsAction). The sim only accepts an action the target offers. "Pry off a board" picked from the ring pries, like the hold does.Risk. It changes how E feels for everyone, since the radial is on by default. Server-side, a chosen action not on the target is now ignored; bots only send actions their target lists. If something's wrong, you'd see a stray shot or aim snap when the ring closes, or a ring left on screen.
Proof. Ring open at a door, hovering Lock:
scripts/radial-proof.tsin headless Metal Chromium with real keys and mouse: a tap opens the door, then holding E and releasing over Lock locks it. Errors: none.check-cycles,bunx tsc --noEmitand the server tsconfig: pass.bun teston radial-interact, interactions-boards, interact, input-release, bot-verbs, verbs, coop, coop-secrets, coop-environment-parity and progression: 123 pass. This includes the new radial-pry case and an un-offered action being ignored.bun run build && bun ../../scripts/smoke.mjs: production smoke passed (Metal).