fix H2766 - jumping while punished could leave ball in wrong place
Affected both intrinsic and spell-based jumping. hurtle_step now drags the ball.
This commit is contained in:
@@ -151,6 +151,7 @@ when two or more shopkeepers were visible at once, 'p' command could be used
|
||||
vortexes and other unsolid monsters need not avoid webs
|
||||
barbarian and samurai can achieve basic in their special spell's skill
|
||||
scalpel and tsurugi can now split puddings; bashing with darts or arrows can't
|
||||
jumping while punished could leave ball and chain in the wrong place
|
||||
|
||||
|
||||
Platform- and/or Interface-Specific Fixes
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/* NetHack 3.6 apply.c $NHDT-Date: 1452660177 2016/01/13 04:42:57 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.219 $ */
|
||||
/* NetHack 3.6 apply.c $NHDT-Date: 1455140802 2016/02/10 21:46:42 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.220 $ */
|
||||
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
||||
/* NetHack may be freely redistributed. See license for details. */
|
||||
|
||||
@@ -1645,7 +1645,11 @@ int magic; /* 0=Physical, otherwise skill level */
|
||||
if (range < temp)
|
||||
range = temp;
|
||||
(void) walk_path(&uc, &cc, hurtle_step, (genericptr_t) &range);
|
||||
teleds(cc.x, cc.y, TRUE);
|
||||
/* hurtle_step results in (u.ux, u.uy) == (cc.x, cc.y) and usually
|
||||
* moves the ball if punished, but does not handle all the effects
|
||||
* of landing on the final position.
|
||||
*/
|
||||
teleds(cc.x, cc.y, FALSE);
|
||||
sokoban_guilt();
|
||||
nomul(-1);
|
||||
multi_reason = "jumping around";
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/* NetHack 3.6 dothrow.c $NHDT-Date: 1446975465 2015/11/08 09:37:45 $ $NHDT-Branch: master $:$NHDT-Revision: 1.113 $ */
|
||||
/* NetHack 3.6 dothrow.c $NHDT-Date: 1455140444 2016/02/10 21:40:44 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.118 $ */
|
||||
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
||||
/* NetHack may be freely redistributed. See license for details. */
|
||||
|
||||
@@ -615,6 +615,17 @@ int x, y;
|
||||
}
|
||||
}
|
||||
|
||||
/* Caller has already determined that dragging the ball is allowed */
|
||||
if (Punished && uball->where == OBJ_FLOOR) {
|
||||
int bc_control;
|
||||
xchar ballx, bally, chainx, chainy;
|
||||
boolean cause_delay;
|
||||
|
||||
if (drag_ball(x, y, &bc_control, &ballx, &bally, &chainx,
|
||||
&chainy, &cause_delay, TRUE))
|
||||
move_bc(0, bc_control, ballx, bally, chainx, chainy);
|
||||
}
|
||||
|
||||
ox = u.ux;
|
||||
oy = u.uy;
|
||||
u_on_newpos(x, y); /* set u.<ux,uy>, u.usteed-><mx,my>; cliparound(); */
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/* NetHack 3.6 teleport.c $NHDT-Date: 1446887535 2015/11/07 09:12:15 $ $NHDT-Branch: master $:$NHDT-Revision: 1.62 $ */
|
||||
/* NetHack 3.6 teleport.c $NHDT-Date: 1455140444 2016/02/10 21:40:44 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.66 $ */
|
||||
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
||||
/* NetHack may be freely redistributed. See license for details. */
|
||||
|
||||
@@ -252,7 +252,7 @@ boolean allow_drag;
|
||||
/* unearth it */
|
||||
buried_ball_to_punishment();
|
||||
}
|
||||
ball_active = (Punished && uball->where != OBJ_FREE),
|
||||
ball_active = (Punished && uball->where != OBJ_FREE);
|
||||
ball_still_in_range = FALSE;
|
||||
|
||||
/* If they have to move the ball, then drag if allow_drag is true;
|
||||
|
||||
Reference in New Issue
Block a user