fix github issue #1360 - autounlock=Kick

Issue reported by ostrosablin:  having Kick enabled as one of the
values for the 'autounlock' option succeeded it prompting "kick it?"
when walking into a locked closed door, but answering "yes" behaved
the same as answering "no".

There's bound to be a better way of fixing this, but this works.

Fixes #1360
This commit is contained in:
PatR
2025-01-04 13:59:06 -08:00
parent 2a50234565
commit 7982c72e8b
3 changed files with 22 additions and 6 deletions

View File

@@ -1073,8 +1073,18 @@ test_move(
" but can't squeeze your possessions through.");
if (flags.autoopen && !svc.context.run
&& !Confusion && !Stunned && !Fumbling) {
(void) doopen_indir(x, y);
svc.context.door_opened = !closed_door(x, y);
int tmp = doopen_indir(x, y);
/* if 'autounlock' includes Kick, we might have a
kick at the door queued up after doopen_indir() */
struct _cmd_queue *cq = cmdq_peek(CQ_CANNED);
if (tmp == ECMD_OK && cq && cq->typ == CMDQ_EXTCMD
&& cq->ec_entry == ext_func_tab_from_func(dokick))
/* door hasn't been opened, but fake it so that
canned kick will be executed as next command */
svc.context.door_opened = TRUE;
else
svc.context.door_opened = !closed_door(x, y);
svc.context.move = (ux != u.ux || uy != u.uy);
} else if (x == ux || y == uy) {
if (Blind || Stunned || ACURR(A_DEX) < 10
@@ -2057,7 +2067,9 @@ domove_fight_web(coordxy x, coordxy y)
/* maybe swap places with a pet? returns TRUE if swapped places */
staticfn boolean
domove_swap_with_pet(struct monst *mtmp, coordxy x, coordxy y)
domove_swap_with_pet(
struct monst *mtmp,
coordxy x, coordxy y)
{
struct trap *trap;
/* if it turns out we can't actually move */