beyond-all-reason / beyond-all-reason/RecoilEngine

/unbind inconsistent behavior with extra parameters after action

Open
#3,140 0 comments 0 reactions 0 assignees View on GitHub
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.