-$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,
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
-/* 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. */
*/
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);
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;
}