menu handling for ':' when hero is swallowed

Force the menu for the look-here command when 'here' is the inside
of an engulfer to be PICK_NONE.  That way '>' won't exit the menu
by choosing the extra inventory item "> - hero".
This commit is contained in:
PatR
2016-04-18 18:15:58 -07:00
parent a181c2f93b
commit f9a47bb63d
4 changed files with 19 additions and 14 deletions

View File

@@ -1,4 +1,4 @@
/* NetHack 3.6 monst.h $NHDT-Date: 1457995142 2016/03/14 22:39:02 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.23 $ */
/* NetHack 3.6 monst.h $NHDT-Date: 1461028522 2016/04/19 01:15:22 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.24 $ */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/* NetHack may be freely redistributed. See license for details. */
@@ -30,12 +30,14 @@
/* The following flags are used for the second argument to display_minventory
* in invent.c:
*
* PICK_NONE, PICK_ONE, PICK_ANY (wintype.h) 0, 1, 2
* MINV_NOLET If set, don't display inventory letters on monster's inventory.
* MINV_ALL If set, display all items in monster's inventory, otherwise
* just display wielded weapons and worn items.
*/
#define MINV_NOLET 0x01
#define MINV_ALL 0x02
#define MINV_PICKMASK 0x03 /* 1|2 */
#define MINV_NOLET 0x04
#define MINV_ALL 0x08
struct monst {
struct monst *nmon;

View File

@@ -1,4 +1,4 @@
/* NetHack 3.6 wintype.h $NHDT-Date: 1433207914 2015/06/02 01:18:34 $ $NHDT-Branch: master $:$NHDT-Revision: 1.15 $ */
/* NetHack 3.6 wintype.h $NHDT-Date: 1461028538 2016/04/19 01:15:38 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.16 $ */
/* Copyright (c) David Cohrs, 1991 */
/* NetHack may be freely redistributed. See license for details. */
@@ -56,6 +56,7 @@ typedef struct mi {
#define MENU_ITEM_P struct mi
/* select_menu() "how" argument types */
/* [MINV_PICKMASK in monst.h assumes these have values of 0, 1, 2] */
#define PICK_NONE 0 /* user picks nothing (display only) */
#define PICK_ONE 1 /* only pick one */
#define PICK_ANY 2 /* can pick any amount */

View File

@@ -1,4 +1,4 @@
/* NetHack 3.6 invent.c $NHDT-Date: 1457994703 2016/03/14 22:31:43 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.199 $ */
/* NetHack 3.6 invent.c $NHDT-Date: 1461028538 2016/04/19 01:15:38 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.204 $ */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/* NetHack may be freely redistributed. See license for details. */
@@ -2867,7 +2867,7 @@ boolean picked_some;
if (Blind)
Strcpy(fbuf, "You feel");
Strcat(fbuf, ":");
(void) display_minventory(mtmp, MINV_ALL, fbuf);
(void) display_minventory(mtmp, MINV_ALL | PICK_NONE, fbuf);
} else {
You("%s no objects here.", verb);
}
@@ -3709,8 +3709,10 @@ struct obj *obj;
* By default, only worn and wielded items are displayed. The caller
* can pick one. Modifier flags are:
*
* MINV_NOLET - nothing selectable
* MINV_ALL - display all inventory
* PICK_NONE, PICK_ONE - standard menu control
* PICK_ANY - allowed, but we only return a single object
* MINV_NOLET - nothing selectable
* MINV_ALL - display all inventory
*/
struct obj *
display_minventory(mon, dflags, title)
@@ -3724,7 +3726,8 @@ char *title;
menu_item *selected = 0;
int do_all = (dflags & MINV_ALL) != 0,
incl_hero = (do_all && u.uswallow && mon == u.ustuck),
have_inv = (mon->minvent != 0), have_any = (have_inv || incl_hero);
have_inv = (mon->minvent != 0), have_any = (have_inv || incl_hero),
pickings = (dflags & MINV_PICKMASK);
Sprintf(tmp, "%s %s:", s_suffix(noit_Monnam(mon)),
do_all ? "possessions" : "armament");
@@ -3737,10 +3740,8 @@ char *title;
n = query_objlist(title ? title : tmp, &(mon->minvent),
(INVORDER_SORT | (incl_hero ? INCLUDE_HERO : 0)),
&selected,
(dflags & MINV_NOLET) ? PICK_NONE : PICK_ONE,
&selected, pickings,
do_all ? allow_all : worn_wield_only);
set_uasmon();
} else {
invdisp_nothing(title ? title : tmp, "(none)");

View File

@@ -1,4 +1,4 @@
/* NetHack 3.6 zap.c $NHDT-Date: 1457570259 2016/03/10 00:37:39 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.249 $ */
/* NetHack 3.6 zap.c $NHDT-Date: 1461028544 2016/04/19 01:15:44 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.251 $ */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/* NetHack may be freely redistributed. See license for details. */
@@ -466,7 +466,8 @@ struct monst *mtmp;
otmp->cknown = 1;
}
}
(void) display_minventory(mtmp, MINV_ALL | MINV_NOLET, (char *) 0);
(void) display_minventory(mtmp, MINV_ALL | MINV_NOLET | PICK_NONE,
(char *) 0);
} else {
pline("%s is not carrying anything%s.", noit_Monnam(mtmp),
(u.uswallow && mtmp == u.ustuck) ? " besides you" : "");