swap places with pet onto boulder location

when co-located with a boulder you could sometimes swap places
with pets of any size

bg72
This commit is contained in:
nhmall
2019-05-25 00:33:47 -04:00
parent fa8efb15fb
commit 9361a9153b
2 changed files with 14 additions and 2 deletions

View File

@@ -19,6 +19,8 @@ glob shop interaction improved to handle more of the expected scenarios
non-flying steed on Plane of Water would drown when air bubble moved hero
xans fly, but could not reach your feet if you flew
adjust vortex database entry to be consistent with fire and energy vortices
when co-located with a boulder you could sometimes swap places with pets of
any size
Fixes to Post-3.6.2 Problems that Were Exposed Via git Repository

View File

@@ -1354,7 +1354,8 @@ domove_core()
xchar chainx = 0, chainy = 0,
ballx = 0, bally = 0; /* ball&chain new positions */
int bc_control = 0; /* control for ball&chain */
boolean cause_delay = FALSE; /* dragging ball will skip a move */
boolean cause_delay = FALSE, /* dragging ball will skip a move */
u_with_boulder = (sobj_at(BOULDER, u.ux, u.uy) != 0);
if (context.travel) {
if (!findtravelpath(FALSE))
@@ -1781,7 +1782,16 @@ domove_core()
if (u.usteed)
u.usteed->mx = u.ux, u.usteed->my = u.uy;
You("stop. %s can't move diagonally.", upstart(y_monnam(mtmp)));
} else if (u.ux0 != x && u.uy0 != y && bad_rock(mtmp->data, x, u.uy0)
} else if (u_with_boulder
&& !(verysmall(mtmp->data)
&& (!mtmp->minvent || (curr_mon_load(mtmp) <= 600)))) {
/* can't swap places when pet won't fit there with the boulder */
u.ux = u.ux0, u.uy = u.uy0; /* didn't move after all */
if (u.usteed)
u.usteed->mx = u.ux, u.usteed->my = u.uy;
You("stop. %s won't fit into the same spot that you're at.",
upstart(y_monnam(mtmp)));
} else if (u.ux0 != x && u.uy0 != y && bad_rock(mtmp->data, x, u.uy0)
&& bad_rock(mtmp->data, u.ux0, y)
&& (bigmonst(mtmp->data) || (curr_mon_load(mtmp) > 600))) {
/* can't swap places when pet won't fit thru the opening */