slime by checking for green slime corpse instead of glob
change light radius of stack of candles to square root
could get redundate "mon hits other-mon" messages when mon wields an artifact
+failed untrap while mounted that moved hero onto the trap would leave steed
+ with stale coordinates, triggering warnings if 'sanity_check' is On
Fixes to 3.7.0-x Problems that Were Exposed Via git Repository
}
if (u.uswallow) {
u.dx = u.dy = 0;
- u.ux = x = u.ustuck->mx;
- u.uy = y = u.ustuck->my;
+ x = u.ustuck->mx, y = u.ustuck->my;
+ u_on_newpos(x, y); /* set u.ux,uy and handle CLIPPING */
mtmp = u.ustuck;
} else {
if (Is_airlevel(&u.uz) && rn2(4) && !Levitation && !Flying) {
if (!in_out_region(x, y))
return;
- /* now move the hero */
mtmp = m_at(x, y);
+ /* tentaively move the hero plus steed; leave CLIPPING til later */
u.ux += u.dx;
u.uy += u.dy;
- /* Move your steed, too */
if (u.usteed) {
u.usteed->mx = u.ux;
u.usteed->my = u.uy;
- exercise_steed();
+ /* [if move attempt ends up being blocked, should training count?] */
+ exercise_steed(); /* train riding skill */
}
/*
if (didnt_move) {
u.ux = u.ux0, u.uy = u.uy0; /* didn't move after all */
+ /* could skip this bit since we're about to call u_on_newpos() */
if (u.usteed)
u.usteed->mx = u.ux, u.usteed->my = u.uy;
}
}
+ /* tentative move above didn't handle CLIPPING, in case there was a
+ monster in the way and the move attempt ended up being blocked;
+ do a full re-position now, possibly back to where hero started */
+ u_on_newpos(u.ux, u.uy);
reset_occupations();
if (g.context.run) {
if (!Punished
|| drag_ball(x, y, &bc, &bx, &by, &cx, &cy, &unused, TRUE)) {
u.ux0 = u.ux, u.uy0 = u.uy;
- u.ux = x, u.uy = y;
+ /* set u.ux,u.uy and u.usteed->mx,my plus handle CLIPPING */
+ u_on_newpos(x, y);
u.umoved = TRUE;
newsym(u.ux0, u.uy0);
vision_recalc(1);