|Name||dcss:brainstorm:interface: Interruptable waiting with . or s|
|Summary||Proposal to make the wait command happen in smaller increments than 10 aut.|
|Related topics||Interrupted Activities Reform|
|Added on||2011-10-11 03:17|
I have talked about “interruptable waiting” before, and how it would be a good feature. Here is a formal proposal for it.
The 's' and '.' commands cause you to wait in increments of 10 aut (often defined as one turn) without being interrupted. I believe this is a bad thing. There are a number of reasons why, but I think the best way to illustrate this is by example. So, imagine a common scenario:
I am a low level character who has found a ring of life protection. I would like to melee an ogre, but would prefer to take as few hits as possible. Right now, my screen looks like this:
####### ..@.O.. (@ = me, O = ogre) #######
I want the ogre to approach me. One way to achieve this would be to press s to wait 10 aut. This is a bad idea though: in 10 aut, it is quite possible for the ogre to approach me *and* attack, depending on energy randomization. The optimal tactic, therefore, is to wait in smaller increments until the ogre approaches. Unfortunately, the wait command cannot accommodate this.
The solution, then, is to find some action that takes less than 10 aut. Many things fall under that. Since I have that ring of life protection and don't need it right now, I can perform a dance of taking it off or putting it on again (5 aut). This will allow the ogre to approach me in a safer way than waiting does (This example comes from rwbarton). Note that this tactic is optimal, but usually not necessary. Thus, there is generally no reason to do it. It is, however, one of those “silly, but optimal” things in crawl, and I think there is a good case for fixing it.
I can imagine a number of ways this silly tactic can be addressed (and I'm sure you can too), some more complicated than others. I think, though, that this problem can be dealt with in a simple, harmless way:
Make the short wait command wait 10 aut, but have it in increments of 1 aut rather than 10 aut. If something interesting happens during that time, interrupt waiting. I will define “something interesting” as follows: (a) a monster comes into view, or (b) a monster moves into melee range, or (c ) some hostile action (eg a melee attack) is made against the player.
There may be other conditions needed, but I think those three basic ones are a good start. The idea is to interrupt the waiting when something tactically relevant happens. Therefore, the wait (10 aut) command should be less restricted than the long rest (100 turn) function (players should still be allowed to wait when in combat, unlike with long rest).
Thus, if a monster is in view, or the player is next to a monster, they can still wait.
This change should be fairly invisible to players. There does not need to be a message when your wait is interrupted in this manner. Implemented properly, most people shouldn't even notice the change unless they have show_game_turns enabled. It will, however, completely kill a tedious-but-optimal tactic that is available, and make the wait command a lot more sensible.
This will also help address some of the problems associated with randomized energy.