diff options
Diffstat (limited to 'crawl-ref/source')
-rw-r--r-- | crawl-ref/source/acr.cc | 1 | ||||
-rw-r--r-- | crawl-ref/source/misc.cc | 14 | ||||
-rw-r--r-- | crawl-ref/source/travel.cc | 6 |
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); |