diff options
author | Robert Vollmert <rvollmert@gmx.net> | 2009-11-26 17:30:49 +0100 |
---|---|---|
committer | Robert Vollmert <rvollmert@gmx.net> | 2009-11-26 17:30:49 +0100 |
commit | 28fc081282c8d833e28427d59d345cc5c51ad2be (patch) | |
tree | 1402a6d71a067a290b7bc359eb34975773cac14a /crawl-ref | |
parent | 9ff367c1410daee974c2a9619485c7d41d2ac6f8 (diff) | |
download | crawl-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.cc | 16 |
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(); |