hero location bookkeeping bit
On the first move of the game and the first move after each level change, the "previous position's coordinates" <u.ux0, u.uy0> had bogus values: zero at start, last location on old level otherwise. They're never used to undo a level change, so the last location on the old level isn't interesting. Set them to match current location, as if you'd just rested on the new spot. I'm not aware of any bugs attributable to this.
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
/* SCCS Id: @(#)dungeon.c 3.5 1999/10/30 */
|
||||
/* SCCS Id: @(#)dungeon.c 3.5 2006/02/24 */
|
||||
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
||||
/* NetHack may be freely redistributed. See license for details. */
|
||||
|
||||
@@ -1093,11 +1093,14 @@ int x, y;
|
||||
/* ridden steed always shares hero's location */
|
||||
if (u.usteed) u.usteed->mx = u.ux, u.usteed->my = u.uy;
|
||||
#endif
|
||||
/* when changing levels, don't leave old position set with
|
||||
stale values from previous level */
|
||||
if (!on_level(&u.uz, &u.uz0)) u.ux0 = u.ux, u.uy0 = u.uy;
|
||||
}
|
||||
|
||||
void
|
||||
u_on_sstairs() { /* place you on the special staircase */
|
||||
|
||||
u_on_sstairs() /* place you on the special staircase */
|
||||
{
|
||||
if (sstairs.sx) {
|
||||
u_on_newpos(sstairs.sx, sstairs.sy);
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user