summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/stash.cc
diff options
context:
space:
mode:
authordshaligram <dshaligram@c06c8d41-db1a-0410-9941-cceddc491573>2006-12-12 20:58:53 +0000
committerdshaligram <dshaligram@c06c8d41-db1a-0410-9941-cceddc491573>2006-12-12 20:58:53 +0000
commit4c5606bdd1108251e5c5a4c219ae447e547746d2 (patch)
tree358eab8e935ececd1e249bdc5265964944ba928b /crawl-ref/source/stash.cc
parent4c1860113f640efeb503505542393f3dccdd5060 (diff)
downloadcrawl-ref-4c5606bdd1108251e5c5a4c219ae447e547746d2.tar.gz
crawl-ref-4c5606bdd1108251e5c5a4c219ae447e547746d2.zip
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
Diffstat (limited to 'crawl-ref/source/stash.cc')
-rw-r--r--crawl-ref/source/stash.cc20
1 files changed, 13 insertions, 7 deletions
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<stash_search_result *>(sel[0]->data);