summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--crawl-ref/source/acr.cc1
-rw-r--r--crawl-ref/source/misc.cc14
-rw-r--r--crawl-ref/source/travel.cc6
3 files changed, 18 insertions, 3 deletions
diff --git a/crawl-ref/source/acr.cc b/crawl-ref/source/acr.cc
index b5f17de3f9..16f528d3e8 100644
--- a/crawl-ref/source/acr.cc
+++ b/crawl-ref/source/acr.cc
@@ -1747,6 +1747,7 @@ static void _go_downstairs()
}
// Does the next level have a warning annotation?
+ // Also checks for entering a labyrinth with teleportitis.
if (!check_annotation_exclusion_warning())
return;
diff --git a/crawl-ref/source/misc.cc b/crawl-ref/source/misc.cc
index 3ea8557f0f..810b708294 100644
--- a/crawl-ref/source/misc.cc
+++ b/crawl-ref/source/misc.cc
@@ -1467,6 +1467,20 @@ static int runes_in_pack()
bool check_annotation_exclusion_warning()
{
+ if (grd(you.pos()) == DNGN_ENTER_LABYRINTH
+ && player_mutation_level(MUT_TELEPORT))
+ {
+ mpr("Within the labyrinth you'll only be able to teleport away from "
+ "the exit!");
+ if (!yesno("Continue anyway?", false, 'N', true, false))
+ {
+ canned_msg(MSG_OK);
+ interrupt_activity( AI_FORCE_INTERRUPT );
+ return (false);
+ }
+ return (true);
+ }
+
level_id next_level_id = level_id::get_next_level_id(you.pos());
crawl_state.level_annotation_shown = false;
diff --git a/crawl-ref/source/travel.cc b/crawl-ref/source/travel.cc
index 7291a98c78..ea38dd925a 100644
--- a/crawl-ref/source/travel.cc
+++ b/crawl-ref/source/travel.cc
@@ -438,8 +438,8 @@ void cycle_exclude_radius(const coord_def &p)
switch (curr_radius)
{
- case 1 : curr_radius = LOS_RADIUS; break;
- case LOS_RADIUS: set_exclude(p, 0); break;
+ case LOS_RADIUS: curr_radius = 1; break;
+ case 1 : set_exclude(p, 0); break;
}
#ifdef USE_TILE
@@ -459,7 +459,7 @@ void toggle_exclude(const coord_def &p)
if (is_exclude_root(p))
set_exclude(p, 0);
else
- set_exclude(p, 1);
+ set_exclude(p, LOS_RADIUS);
#ifdef USE_TILE
_tile_exclude_gmap_update(p);