From 4c5606bdd1108251e5c5a4c219ae447e547746d2 Mon Sep 17 00:00:00 2001 From: dshaligram Date: Tue, 12 Dec 2006 20:58:53 +0000 Subject: Fixed stash-tracker bugs introduced by the Pan change. git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@622 c06c8d41-db1a-0410-9941-cceddc491573 --- crawl-ref/source/stash.cc | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) (limited to 'crawl-ref/source/stash.cc') diff --git a/crawl-ref/source/stash.cc b/crawl-ref/source/stash.cc index d9f59c6de6..f69b5285e1 100644 --- a/crawl-ref/source/stash.cc +++ b/crawl-ref/source/stash.cc @@ -856,7 +856,7 @@ std::ostream &operator << (std::ostream &os, const ShopInfo &s) return os; } -LevelStashes::LevelStashes() : place(), stashes(), shops() +LevelStashes::LevelStashes() : place(level_id::current()), stashes(), shops() { } @@ -1268,7 +1268,7 @@ void StashTracker::update_visible_stashes( int x = you.x_pos + cx - 17, y = you.y_pos + cy - 9; if (x < 0 || x >= GXM || y < 0 || y >= GYM) continue; - + if (!env.show[cx - 8][cy] && !(cx == 17 && cy == 9)) continue; @@ -1374,7 +1374,13 @@ void StashTracker::get_matching_stashes( level_id curr = level_id::current(); for (unsigned i = 0; i < results.size(); ++i) - results[i].player_distance = level_distance(curr, results[i].pos.id); + { + int ldist = level_distance(curr, results[i].pos.id); + if (ldist == -1) + ldist = 1000; + + results[i].player_distance = ldist; + } // Sort stashes so that closer stashes come first and stashes on the same // levels with more items come first. @@ -1487,15 +1493,15 @@ void StashTracker::display_search_results( if (res->shop) { dotravel = res->shop->show_menu(short_place_name(res->pos.id), - travelable); + can_travel_to(res->pos.id)); } else if (res->stash) { dotravel = res->stash->show_menu(short_place_name(res->pos.id), - travelable); + can_travel_to(res->pos.id)); } - if (dotravel && travelable) + if (dotravel && can_travel_to(res->pos.id)) { redraw_screen(); const level_pos lp = res->pos; @@ -1508,7 +1514,7 @@ void StashTracker::display_search_results( } redraw_screen(); - if (travelable && sel.size() == 1 && !stashmenu.meta_key) + if (sel.size() == 1 && !stashmenu.meta_key) { const stash_search_result *res = static_cast(sel[0]->data); -- cgit v1.2.3-54-g00ecf