Merge branch 'master' into NetHack-3.7

This commit is contained in:
nhmall
2019-06-23 21:12:08 -04:00
4 changed files with 39 additions and 23 deletions
+4 -1
View File
@@ -1,4 +1,4 @@
$NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.64 $ $NHDT-Date: 1561233801 2019/06/22 20:03:21 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.65 $ $NHDT-Date: 1561314651 2019/06/23 18:30:51 $
This fixes36.3 file is here to capture information about updates in the 3.6.x This fixes36.3 file is here to capture information about updates in the 3.6.x
lineage following the release of 3.6.2 in May 2019. Please note, however, lineage following the release of 3.6.2 in May 2019. Please note, however,
@@ -84,6 +84,9 @@ partly eaten food with one bite left had message anomalies when eaten; the
usual "you resume your meal" case lacked the "you're finished" message usual "you resume your meal" case lacked the "you're finished" message
when done; eating something else in between to clobber meal context when done; eating something else in between to clobber meal context
resulted in no messages at all when restarting and finishing last bite resulted in no messages at all when restarting and finishing last bite
wizard mode ^I menu could list "Not carrying anything" after inventory items
if perm_invent option was On (even on tty where that's not supported)
change #adjust to treat carrying only gold as not having anything to adjust
Fixes to Post-3.6.2 Problems that Were Exposed Via git Repository Fixes to Post-3.6.2 Problems that Were Exposed Via git Repository
+16 -9
View File
@@ -1,4 +1,4 @@
/* NetHack 3.6 invent.c $NHDT-Date: 1558234540 2019/05/19 02:55:40 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.258 $ */ /* NetHack 3.6 invent.c $NHDT-Date: 1561314651 2019/06/23 18:30:51 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.259 $ */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/*-Copyright (c) Derek S. Ray, 2015. */ /*-Copyright (c) Derek S. Ray, 2015. */
/* NetHack may be freely redistributed. See license for details. */ /* NetHack may be freely redistributed. See license for details. */
@@ -2540,7 +2540,7 @@ long *out_cnt;
menu_item *selected; menu_item *selected;
unsigned sortflags; unsigned sortflags;
Loot *sortedinvent, *srtinv; Loot *sortedinvent, *srtinv;
boolean wizid = FALSE; boolean wizid = FALSE, gotsomething = FALSE;
if (lets && !*lets) if (lets && !*lets)
lets = 0; /* simplify tests: (lets) instead of (lets && *lets) */ lets = 0; /* simplify tests: (lets) instead of (lets && *lets) */
@@ -2644,13 +2644,14 @@ long *out_cnt;
/* wiz_identify stuffed the wiz_identify command character (^I) /* wiz_identify stuffed the wiz_identify command character (^I)
into iflags.override_ID for our use as an accelerator; into iflags.override_ID for our use as an accelerator;
it could be ambiguous if player has assigned a letter to it could be ambiguous if player has assigned a letter to
the #wizidentify command */ the #wizidentify command, so include it as a group accelator
but use '_' as the primary selector */
if (unid_cnt > 1) if (unid_cnt > 1)
Sprintf(eos(prompt), " (%s for all)", Sprintf(eos(prompt), " (%s for all)",
visctrl(iflags.override_ID)); visctrl(iflags.override_ID));
add_menu(win, NO_GLYPH, &any, '_', iflags.override_ID, ATR_NONE, add_menu(win, NO_GLYPH, &any, '_', iflags.override_ID, ATR_NONE,
prompt, MENU_UNSELECTED); prompt, MENU_UNSELECTED);
wizid = TRUE; wizid = gotsomething = TRUE;
} }
} else if (xtra_choice) { } else if (xtra_choice) {
/* wizard override ID and xtra_choice are mutually exclusive */ /* wizard override ID and xtra_choice are mutually exclusive */
@@ -2660,6 +2661,7 @@ long *out_cnt;
any.a_char = HANDS_SYM; /* '-' */ any.a_char = HANDS_SYM; /* '-' */
add_menu(win, NO_GLYPH, &any, HANDS_SYM, 0, ATR_NONE, add_menu(win, NO_GLYPH, &any, HANDS_SYM, 0, ATR_NONE,
xtra_choice, MENU_UNSELECTED); xtra_choice, MENU_UNSELECTED);
gotsomething = TRUE;
} }
nextclass: nextclass:
classcount = 0; classcount = 0;
@@ -2685,6 +2687,7 @@ long *out_cnt;
add_menu(win, obj_to_glyph(otmp, rn2_on_display_rng), &any, ilet, add_menu(win, obj_to_glyph(otmp, rn2_on_display_rng), &any, ilet,
wizid ? def_oc_syms[(int) otmp->oclass].sym : 0, wizid ? def_oc_syms[(int) otmp->oclass].sym : 0,
ATR_NONE, doname(otmp), MENU_UNSELECTED); ATR_NONE, doname(otmp), MENU_UNSELECTED);
gotsomething = TRUE;
} }
} }
if (flags.sortpack) { if (flags.sortpack) {
@@ -2702,13 +2705,14 @@ long *out_cnt;
any.a_char = '*'; any.a_char = '*';
add_menu(win, NO_GLYPH, &any, '*', 0, ATR_NONE, add_menu(win, NO_GLYPH, &any, '*', 0, ATR_NONE,
"(list everything)", MENU_UNSELECTED); "(list everything)", MENU_UNSELECTED);
gotsomething = TRUE;
} }
unsortloot(&sortedinvent); unsortloot(&sortedinvent);
/* for permanent inventory where we intend to show everything but /* for permanent inventory where we intend to show everything but
nothing has been listed (because there isn't anyhing to list; nothing has been listed (because there isn't anyhing to list;
recognized via any.a_char still being zero; the n==0 case above the n==0 case above gets skipped for perm_invent), put something
gets skipped for perm_invent), put something into the menu */ into the menu */
if (iflags.perm_invent && !lets && !any.a_char) { if (iflags.perm_invent && !lets && !gotsomething) {
any = cg.zeroany; any = cg.zeroany;
add_menu(win, NO_GLYPH, &any, 0, 0, 0, add_menu(win, NO_GLYPH, &any, 0, 0, 0,
not_carrying_anything, MENU_UNSELECTED); not_carrying_anything, MENU_UNSELECTED);
@@ -4001,8 +4005,11 @@ doorganize() /* inventory organizer by Del Lamb */
const char *adj_type; const char *adj_type;
boolean ever_mind = FALSE, collect; boolean ever_mind = FALSE, collect;
if (!g.invent) { /* when no invent, or just gold in '$' slot, there's nothing to adjust */
You("aren't carrying anything to adjust."); if (!g.invent || (g.invent->oclass == COIN_CLASS
&& g.invent->invlet == GOLD_SYM && !g.invent->nobj)) {
You("aren't carrying anything %s.",
!g.invent ? "to adjust" : "adjustable");
return 0; return 0;
} }
+4 -3
View File
@@ -1,4 +1,4 @@
/* NetHack 3.6 teleport.c $NHDT-Date: 1559733391 2019/06/05 11:16:31 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.88 $ */ /* NetHack 3.6 teleport.c $NHDT-Date: 1561336020 2019/06/24 00:27:00 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.89 $ */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/*-Copyright (c) Robert Patrick Rankin, 2011. */ /*-Copyright (c) Robert Patrick Rankin, 2011. */
/* NetHack may be freely redistributed. See license for details. */ /* NetHack may be freely redistributed. See license for details. */
@@ -1350,8 +1350,9 @@ int in_sight;
get_level(&tolevel, depth(&u.uz) + 1); get_level(&tolevel, depth(&u.uz) + 1);
} }
} else if (tt == MAGIC_PORTAL) { } else if (tt == MAGIC_PORTAL) {
if (In_endgame(&u.uz) if (In_endgame(&u.uz) && (mon_has_amulet(mtmp)
&& (mon_has_amulet(mtmp) || is_home_elemental(mtmp->data))) { || is_home_elemental(mtmp->data)
|| rn2(7))) {
if (in_sight && mtmp->data->mlet != S_ELEMENTAL) { if (in_sight && mtmp->data->mlet != S_ELEMENTAL) {
pline("%s seems to shimmer for a moment.", Monnam(mtmp)); pline("%s seems to shimmer for a moment.", Monnam(mtmp));
seetrap(trap); seetrap(trap);
+15 -10
View File
@@ -1,4 +1,4 @@
/* NetHack 3.6 wizard.c $NHDT-Date: 1539804905 2018/10/17 19:35:05 $ $NHDT-Branch: keni-makedefsm $:$NHDT-Revision: 1.53 $ */ /* NetHack 3.6 wizard.c $NHDT-Date: 1561336025 2019/06/24 00:27:05 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.56 $ */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/*-Copyright (c) Robert Patrick Rankin, 2016. */ /*-Copyright (c) Robert Patrick Rankin, 2016. */
/* NetHack may be freely redistributed. See license for details. */ /* NetHack may be freely redistributed. See license for details. */
@@ -356,7 +356,6 @@ xchar *sy;
*sx = x; *sx = x;
*sy = y; *sy = y;
} }
} }
int int
@@ -364,28 +363,33 @@ tactics(mtmp)
register struct monst *mtmp; register struct monst *mtmp;
{ {
unsigned long strat = strategy(mtmp); unsigned long strat = strategy(mtmp);
xchar sx = 0, sy = 0; xchar sx = 0, sy = 0, mx, my;
mtmp->mstrategy = mtmp->mstrategy =
(mtmp->mstrategy & (STRAT_WAITMASK | STRAT_APPEARMSG)) | strat; (mtmp->mstrategy & (STRAT_WAITMASK | STRAT_APPEARMSG)) | strat;
switch (strat) { switch (strat) {
case STRAT_HEAL: /* hide and recover */ case STRAT_HEAL: /* hide and recover */
mx = mtmp->mx, my = mtmp->my;
/* if wounded, hole up on or near the stairs (to block them) */ /* if wounded, hole up on or near the stairs (to block them) */
choose_stairs(&sx, &sy); choose_stairs(&sx, &sy);
mtmp->mavenge = 1; /* covetous monsters attack while fleeing */ mtmp->mavenge = 1; /* covetous monsters attack while fleeing */
if (In_W_tower(mtmp->mx, mtmp->my, &u.uz) if (In_W_tower(mx, my, &u.uz)
|| (mtmp->iswiz && !sx && !mon_has_amulet(mtmp))) { || (mtmp->iswiz && !sx && !mon_has_amulet(mtmp))) {
if (!rn2(3 + mtmp->mhp / 10)) if (!rn2(3 + mtmp->mhp / 10))
(void) rloc(mtmp, TRUE); (void) rloc(mtmp, TRUE);
} else if (sx && (mtmp->mx != sx || mtmp->my != sy)) { } else if (sx && (mx != sx || my != sy)) {
if (!mnearto(mtmp, sx, sy, TRUE)) { if (!mnearto(mtmp, sx, sy, TRUE)) {
m_into_limbo(mtmp); /* couldn't move to the target spot for some reason,
so stay where we are (don't actually need rloc_to()
because mtmp is still on the map at <mx,my>... */
rloc_to(mtmp, mx, my);
return 0; return 0;
} }
mx = mtmp->mx, my = mtmp->my; /* update cached location */
} }
/* if you're not around, cast healing spells */ /* if you're not around, cast healing spells */
if (distu(mtmp->mx, mtmp->my) > (BOLT_LIM * BOLT_LIM)) if (distu(mx, my) > (BOLT_LIM * BOLT_LIM))
if (mtmp->mhp <= mtmp->mhpmax - 8) { if (mtmp->mhp <= mtmp->mhpmax - 8) {
mtmp->mhp += rnd(8); mtmp->mhp += rnd(8);
return 1; return 1;
@@ -435,12 +439,13 @@ register struct monst *mtmp;
return 0; return 0;
} }
} else { /* a monster has it - 'port beside it. */ } else { /* a monster has it - 'port beside it. */
mx = mtmp->mx, my = mtmp->my;
if (!mnearto(mtmp, tx, ty, FALSE)) if (!mnearto(mtmp, tx, ty, FALSE))
m_into_limbo(mtmp); rloc_to(mtmp, mx, my); /* no room? stay put */
return 0; return 0;
} }
} } /* default case */
} } /* switch */
/*NOTREACHED*/ /*NOTREACHED*/
return 0; return 0;
} }