fix github issue #905 - ^A vs getpos()

Reported by entrez:  using ^A instead of #retravel after interrupted
travel can pick wrong location if cursor was previously positioned
with movement commands rather than feature targeting because it
won't be starting from the original spot.  Also, ^A after ';' will
just redescribe whatever was examined previously instead of having
the player pick a new spot.

This suppresses cursor positioning from the do-again queue so that
repeating travel or quick-look or other command that needs player
to choose a position will repeat the command but then need to have
a position chosen.  For interrupted #travel, the cursor will already
be placed on the previous destination so that's relatively painless,
but also allows a different destination to be chosen.

It adds iflags.remember_getpos that callers of getpos() could set to
be able to restore the old behavior but none do so far.

Fixes #905
This commit is contained in:
PatR
2022-10-20 10:27:21 -07:00
parent f5111a7fb7
commit 5226c9633d
2 changed files with 5 additions and 1 deletions

View File

@@ -775,7 +775,10 @@ getpos(coord *ccp, boolean force, const char *goal)
free(cmdq);
} else {
c = readchar_poskey(&tx, &ty, &sidx);
if (!g.in_doagain)
/* remember_getpos is normally False because reusing the
current positioning during ^A is almost never the right
thing to do, but caller could set it if that was needed */
if (iflags.remember_getpos && !g.in_doagain)
cmdq_add_key(CQ_REPEAT, c);
}