From bc4f46665288808d592cd0f45244cbbcc4685b37 Mon Sep 17 00:00:00 2001 From: "nethack.rankin" Date: Sat, 25 Feb 2006 06:48:52 +0000 Subject: [PATCH] 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. --- src/dungeon.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) 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 {