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
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))
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 */