summaryrefslogtreecommitdiffstats
path: root/crawl-ref
diff options
context:
space:
mode:
authorRobert Vollmert <rvollmert@gmx.net>2009-11-26 17:30:49 +0100
committerRobert Vollmert <rvollmert@gmx.net>2009-11-26 17:30:49 +0100
commit28fc081282c8d833e28427d59d345cc5c51ad2be (patch)
tree1402a6d71a067a290b7bc359eb34975773cac14a /crawl-ref
parent9ff367c1410daee974c2a9619485c7d41d2ac6f8 (diff)
downloadcrawl-ref-28fc081282c8d833e28427d59d345cc5c51ad2be.tar.gz
crawl-ref-28fc081282c8d833e28427d59d345cc5c51ad2be.zip
Fix translevel travel to previously unvisited levels.
This involves only updating stair distances if the target position is more than just a level id.
Diffstat (limited to 'crawl-ref')
-rw-r--r--crawl-ref/source/travel.cc16
1 files changed, 10 insertions, 6 deletions
diff --git a/crawl-ref/source/travel.cc b/crawl-ref/source/travel.cc
index 0c756a7d9c..a3f19fa946 100644
--- a/crawl-ref/source/travel.cc
+++ b/crawl-ref/source/travel.cc
@@ -2333,16 +2333,20 @@ void start_translevel_travel(const travel_target &pos)
level_target = pos;
- if (pos.p.id != level_id::current())
+ // Check that it's level + position, not just level.
+ if (pos.p.is_valid())
{
- if (!_loadlev_populate_stair_distances(pos.p))
+ if (pos.p.id != level_id::current())
{
- mpr("Level memory is imperfect, aborting.");
- return ;
+ if (!_loadlev_populate_stair_distances(pos.p))
+ {
+ mpr("Level memory is imperfect, aborting.");
+ return ;
+ }
}
+ else
+ _populate_stair_distances(pos.p);
}
- else
- _populate_stair_distances(pos.p);
trans_travel_dest = get_trans_travel_dest(level_target);
_start_translevel_travel();