diff --git a/dat/data.base b/dat/data.base index 4a964c905..f098dd7c7 100644 --- a/dat/data.base +++ b/dat/data.base @@ -5374,11 +5374,10 @@ vlad* *vortex vortices Swirling clouds of pure elemental energies, the vortices are - thought to be related to the larger elementals. Though the - vortices do no damage when touched, they are noted for being - able to envelop unwary travellers. The hapless fool thus - swallowed by a vortex will soon perish from exposure to the - element the vortex is composed of. + thought to be related to the larger elementals. They are + noted for being able to envelop unwary travellers. The + hapless fool thus swallowed by a vortex will soon perish from + exposure to the element the vortex is composed of. vrock The vrock is one of the weaker forms of demon. It resembles a cross between a human being and a vulture and does physical diff --git a/doc/fixes36.3 b/doc/fixes36.3 index 5ff4a1850..28564e3da 100644 --- a/doc/fixes36.3 +++ b/doc/fixes36.3 @@ -18,6 +18,9 @@ glob pricing did not consider weight properly 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 diff --git a/src/hack.c b/src/hack.c index 18709fcb4..5f0da7986 100644 --- a/src/hack.c +++ b/src/hack.c @@ -1352,7 +1352,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 (g.context.travel) { if (!findtravelpath(FALSE)) @@ -1779,7 +1780,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 */