beyond-all-reason / beyond-all-reason/RecoilEngine
/unbind inconsistent behavior with extra parameters after action
- Dominant language
- C++
- Stars
- 679
- Forks
- 290
- Avg merge
- 3d 2h
- Merged PRs (30d)
- 40
Description
If you bind two distinct action + extra args to the same key: `bind a firestate 2` and `bind a firestate 0`:
- `unbind a firestate 2` removes nothing at all. The whole "firestate 2" string ends up compared against the stored action name "firestate"
- `unbind a firestate` removes both of them
`unbindaction` has the same gap from the other direction. With `bind a firestate 2` and `bind b firestate 0`:
- `unbindaction firestate 2` removes both
- `unbindaction firestate` also removes both
So if a game binds several argument variants of one action, there's no way to drop just one short of unbinding everything on the key and rebinding what you wanted to keep. There should be consistency and parity between /bind and /unbind . Given the use-cases we're likely to see users use, I would expect /unbind to work off of the same exact information that was typed into /bind
Used Claude to help investigate and write this.
Contributor guide
Research direction
Start by tracing the /bind, /unbind, and /unbindaction command handlers, then inspect how action names and extra arguments are parsed and stored. Reproduce the examples from the issue and make sure each exact action-plus-argument variant can be removed independently while preserving the others.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- cli, game-dev
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 55/100