displacing grid bugs (trunk only)
From a bug report, you could swap places with a pet grid bug when
you're making a diagonal move. Now you can't. [Completely ignored: it
is possible to swap places with pets which are incapable of movement....]
This imposes the same restriction on the astral Riders when they're
exchanging places with monsters in their way.
This commit is contained in:
@@ -254,6 +254,7 @@ sometimes got "you trip over it" after intervening messages following the
|
|||||||
wizard mode: WIZKIT wishes could overflow inventory's 52 slots
|
wizard mode: WIZKIT wishes could overflow inventory's 52 slots
|
||||||
when loading bones files, censor suspect characters from player-supplied
|
when loading bones files, censor suspect characters from player-supplied
|
||||||
strings such as pet and fruit names
|
strings such as pet and fruit names
|
||||||
|
can't swap places with tame grid bug when moving diagonally
|
||||||
|
|
||||||
|
|
||||||
Platform- and/or Interface-Specific Fixes
|
Platform- and/or Interface-Specific Fixes
|
||||||
|
|||||||
+6
-1
@@ -1,4 +1,4 @@
|
|||||||
/* SCCS Id: @(#)hack.c 3.5 2007/04/16 */
|
/* SCCS Id: @(#)hack.c 3.5 2007/07/13 */
|
||||||
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
||||||
/* NetHack may be freely redistributed. See license for details. */
|
/* NetHack may be freely redistributed. See license for details. */
|
||||||
|
|
||||||
@@ -1401,6 +1401,11 @@ domove()
|
|||||||
sobj_at(BOULDER, trap->tx, trap->ty)) {
|
sobj_at(BOULDER, trap->tx, trap->ty)) {
|
||||||
/* can't swap places with pet pinned in a pit by a boulder */
|
/* can't swap places with pet pinned in a pit by a boulder */
|
||||||
u.ux = u.ux0, u.uy = u.uy0; /* didn't move after all */
|
u.ux = u.ux0, u.uy = u.uy0; /* didn't move after all */
|
||||||
|
} else if (u.ux0 != x && u.uy0 != y && NODIAG(mtmp->data - mons)) {
|
||||||
|
/* can't swap places when pet can't move to your spot */
|
||||||
|
u.ux = u.ux0, u.uy = u.uy0;
|
||||||
|
You("stop. %s can't move diagonally.",
|
||||||
|
upstart(y_monnam(mtmp)));
|
||||||
} else if (u.ux0 != x && u.uy0 != y &&
|
} else if (u.ux0 != x && u.uy0 != y &&
|
||||||
bad_rock(mtmp->data, x, u.uy0) &&
|
bad_rock(mtmp->data, x, u.uy0) &&
|
||||||
bad_rock(mtmp->data, u.ux0, y) &&
|
bad_rock(mtmp->data, u.ux0, y) &&
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
/* SCCS Id: @(#)mon.c 3.5 2007/03/30 */
|
/* SCCS Id: @(#)mon.c 3.5 2007/07/13 */
|
||||||
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
||||||
/* NetHack may be freely redistributed. See license for details. */
|
/* NetHack may be freely redistributed. See license for details. */
|
||||||
|
|
||||||
@@ -1259,6 +1259,9 @@ struct monst *magr, /* monster that is currently deciding where to move */
|
|||||||
again when defender gets its chance to move */
|
again when defender gets its chance to move */
|
||||||
if ((pa->mflags3 & M3_DISPLACES) != 0 &&
|
if ((pa->mflags3 & M3_DISPLACES) != 0 &&
|
||||||
(pd->mflags3 & M3_DISPLACES) == 0 &&
|
(pd->mflags3 & M3_DISPLACES) == 0 &&
|
||||||
|
/* no displacing grid bugs diagonally */
|
||||||
|
!(magr->mx != mdef->mx && magr->my != mdef->my &&
|
||||||
|
NODIAG(monsndx(pd))) &&
|
||||||
/* no displacing trapped monsters or multi-location longworms */
|
/* no displacing trapped monsters or multi-location longworms */
|
||||||
!mdef->mtrapped && (!mdef->wormno || !count_wsegs(mdef)) &&
|
!mdef->mtrapped && (!mdef->wormno || !count_wsegs(mdef)) &&
|
||||||
/* riders can move anything; others, same size or smaller only */
|
/* riders can move anything; others, same size or smaller only */
|
||||||
|
|||||||
Reference in New Issue
Block a user