summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/travel.cc
diff options
context:
space:
mode:
Diffstat (limited to 'crawl-ref/source/travel.cc')
-rw-r--r--crawl-ref/source/travel.cc25
1 files changed, 23 insertions, 2 deletions
diff --git a/crawl-ref/source/travel.cc b/crawl-ref/source/travel.cc
index 4bf3c08b97..b8dff8d1f2 100644
--- a/crawl-ref/source/travel.cc
+++ b/crawl-ref/source/travel.cc
@@ -3753,7 +3753,10 @@ void TravelCache::add_waypoint(int x, int y)
}
if (keyin < '0' || keyin > '9')
+ {
+ canned_msg(MSG_OK);
return;
+ }
int waynum = keyin - '0';
@@ -3764,11 +3767,29 @@ void TravelCache::add_waypoint(int x, int y)
const level_id &lid = level_id::current();
const bool overwrite = waypoints[waynum].is_valid();
+
+ std::string old_dest =
+ overwrite ? get_trans_travel_dest(waypoints[waynum], false, true) : "";
+ level_id old_lid = (overwrite ? waypoints[waynum].id : lid);
+
waypoints[waynum].id = lid;
waypoints[waynum].pos = pos;
- mprf("%s waypoint %d to your current position.",
- overwrite ? "Reset" : "Set new", waynum);
+ std::string new_dest = get_trans_travel_dest(waypoints[waynum],
+ false, true);
+ mesclr();
+ if (overwrite)
+ {
+ if (lid == old_lid) // same level
+ mprf("Waypoint %d re-assigned to your current position.", waynum);
+ else
+ {
+ mprf("Waypoint %d re-assigned from %s to %s.",
+ waynum, old_dest.c_str(), new_dest.c_str());
+ }
+ }
+ else
+ mprf("Waypoint %d assigned to %s.", waynum, new_dest.c_str());
update_waypoints();
}