Is your feature request related to a problem? Please describe.
NPC changes are happening regularly right now, and the progress has been really great.
The main dialogue menu that players use to interact with a single NPC is also changing to accommodate these features.
This is 100% to be expected, however it is having the unintended consequence of making the menu harder to navigate as the key to close the menu has changed across game iterations.
Example:
Here is the menu from September 2018:
Here's a version of this menu from June 2019:
Over time the dialogue option has shifted to another key, and may continue to do so.
Describe the solution you'd like
As this menu can potentially be interacted with hundreds of times per play session, I propose to allow the player to use the Escape key to close this menu.
Describe alternatives you've considered
While having a complete revamp of NPC interactivity/other ways to navigate this menu (up down arrows) would all be great, it would obviously be a lot more work and likely could be left for a larger overhaul at some point in the future.
Additional context
If this is actually lot of work instead of the small change I hope it is, Id understand it having a low priority.
However, as its been bothering me personally since I started playing years ago, I would be willing to throw someone a Gift Card at their local pizza place or something similar to help alleviate that pain.
Another good way would be to make all cancel/previous menu buttons use a set key, e.g q or esc as previoualy mentioned
Another good way would be to make all cancel/previous menu buttons use a set key, e.g q or esc as previoualy mentioned
I tried this.
It has some nuances to it.
Pressing ESC to quit a mugging would be exploiting it, any dialogue that is prompted by the NPC needing to talk to you would just result in them, keep trying to talk to you over and over, it'd need to only be possible when a normal leave dialogue option is available too.
If anyone wants to do this properly, they can take a look at my aborted attempt https://github.com/CleverRaven/Cataclysm-DDA/pull/29201
Having a permanent Escape key probably wont work. There are dialogs that place variables and effects at specific points and escaping out might break things or allow exploits. Imagine if you could escape out of a dialog after you receive a quest reward but before it flags you as having been paid. You could collect infinite stuff.
As far as I know the dialog choices are always listed in order they appear in the .jsons. But they might shift letters as dialog options are made available or removed. So that makes the problem even worse. Instead of changing across game versions, a key might might change multiple times in one game.
A simple way to deal with this problem would be to always have the 'end conversation' option first so it would be bound to the 'a' key. In dialogs without an option to exit, though, the 'a' would still do something else.
It might also be good idea to put some color code or bracketed tag that says 'quit' along with any TOPIC_DONE dialog option so the player can spot it quickly.
There are dialogs that place variables and effects at specific points and escaping out might break things or allow exploits.
We could just think hard of all these cases and check whether if was "force quitting" to determine what game should do next.
Or probably just allow "force quitting" in a limited number of situations (excluding getting reward, for example).
Another way would be to have any TALK_DONE topic selectable through pressing the assigned letter key OR by hitting the escape button. If there were no TALK_DONE option it would take the TALK_NONE option (which returns you to the first menu). If neither were there it wouldn't do anything.
yes ^^
Having ESC as a substitute for a TALK_DONE/TALK_NONE option but only when TALK_DONE/TALK_NONE is there and available, would be the best solution.
So, I thought about it, and realized it would need some kind of tag or option to mark a response for escaping, because you might have an unsafe quit option. For example, you might a dialog option that has TALK_DONE but also makes an NPC go hostile and sets you on fire. If you just rapidly hit escape and that happened it would suck.
So like, another version of TALK_DONE called TALK_DONE_REALLYBAD, and make sure that it is used with any kind of bad or serious consequence.
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.
Still an issue, I've been messing with various UI things and the dialogue menu is my current biggest bugbear. Not sure how best to approach it, though.
I think David's two ideas of reserving a keybind for talk_done and
talk_done_dangermouse pretty much covers it.
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions. Please do not 'bump' or comment on this issue unless you are actively working on it. Stale issues, and stale issues that are closed are still considered.
A TALK_DONE or TALK_DONE_DANGEROUS response can be part of a trial, so it's pretty tricky to figure out if a given set of responses includes a TALK_DONE or TALK_DONE_DANGEROUS. Also, a set of responses might have multiple TALK_DONE responses, so which one gets the keybind? Finally, if there's a fixed keybind for one response, it enormously complicates calculating map of key pressed to response if there are enough responses to require scrolling.
I don't know that there's a solution for this problem.
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions. Please do not 'bump' or comment on this issue unless you are actively working on it. Stale issues, and stale issues that are closed are still considered.
This issue has been automatically closed due to lack of activity. This does not mean that we do not value the issue. Feel free to request that it be re-opened if you are going to actively work on it
Most helpful comment
Another way would be to have any TALK_DONE topic selectable through pressing the assigned letter key OR by hitting the escape button. If there were no TALK_DONE option it would take the TALK_NONE option (which returns you to the first menu). If neither were there it wouldn't do anything.