diff --git a/doc/fixes36.3 b/doc/fixes36.3 index 978496348..e50f1b296 100644 --- a/doc/fixes36.3 +++ b/doc/fixes36.3 @@ -1,4 +1,4 @@ -$NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.188 $ $NHDT-Date: 1574419578 2019/11/22 10:46:18 $ +$NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.189 $ $NHDT-Date: 1574475416 2019/11/23 02:16:56 $ 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, @@ -295,6 +295,11 @@ don't strip leading slash from hallucinatory monster name "/b/tard" quaffing unknown potion of see invisible resulted in asking what to call the potion while updated monster display was buffered so not yet shown, hence potentially noticeable effect was concealed from player +when Riders use their bargethrough capability, don't let them swap places with + something located at a spot where corpses can't be created (their + door opening ability was letting them exchange places with something + co-located with a closed door without opening it; if killed there, + there'd be no corpse so no auto-revive) unix: Fix double DLB definition in linux hints file windows: fix --showpaths output for the data file which relies on being constructed programmatically to incorporate the version suffix diff --git a/doc/fixes37.0 b/doc/fixes37.0 index 08e5903a4..f35050e1a 100644 --- a/doc/fixes37.0 +++ b/doc/fixes37.0 @@ -31,6 +31,9 @@ savefile: add support to deconstruct internal data structures down into their savefile: use little-endian format for fields where that makes a difference replace build-time level compiler and dungeon compiler with run-time loading of the dungeon and level descriptions and interpreting them via LUA +split off some of the functionality that was in makedefs (compiled-in options + build date/time, etc) so that it can be built by a cross-compiler + and accessed on the target platform Platform- and/or Interface-Specific New Features diff --git a/src/monmove.c b/src/monmove.c index 3ec0afef9..d37b93caf 100644 --- a/src/monmove.c +++ b/src/monmove.c @@ -1,4 +1,4 @@ -/* NetHack 3.6 monmove.c $NHDT-Date: 1557094802 2019/05/05 22:20:02 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.113 $ */ +/* NetHack 3.6 monmove.c $NHDT-Date: 1574475416 2019/11/23 02:16:56 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.114 $ */ /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ /*-Copyright (c) Michael Allison, 2006. */ /* NetHack may be freely redistributed. See license for details. */ @@ -1653,8 +1653,8 @@ register struct monst *mtmp; */ boolean undesirable_disp(mtmp, x, y) -struct monst *mtmp; -xchar x, y; +struct monst *mtmp; /* barging creature */ +xchar x, y; /* spot 'mtmp' is considering moving to */ { boolean is_pet = (mtmp && mtmp->mtame && !mtmp->isminion); struct trap *trap = t_at(x, y); @@ -1673,6 +1673,17 @@ xchar x, y; return TRUE; } + /* oversimplification: creatures that bargethrough can't do so when + target monster is in rock or closed door or water (in particular, + avoid moving to spots where mondied() won't leave a corpse) */ + if (!accessible(x, y) + /* mondied() allows ispool() as an exception to !accessible(), + but we'll only do that if both or neither of mtmp's spot and + destination spot are water so that we don't swap a water + critter onto land or the inverse */ + && (!is_pool(x, y) ^ !is_pool(mtmp->mx, mtmp->my))) + return TRUE; + return FALSE; }