From: nethack.rankin Date: Sat, 25 Feb 2006 06:48:52 +0000 (+0000) Subject: hero location bookkeeping bit X-Git-Tag: MOVE2GIT~1103 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=bc4f46665288808d592cd0f45244cbbcc4685b37;p=nethack hero location bookkeeping bit On the first move of the game and the first move after each level change, the "previous position's coordinates" 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. --- diff --git a/src/dungeon.c b/src/dungeon.c index ac9e1adb5..854639c67 100644 --- a/src/dungeon.c +++ b/src/dungeon.c @@ -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 {