From 5511b48771d9a12e3e622e375220091cf94023dd Mon Sep 17 00:00:00 2001 From: j-p-e-g Date: Fri, 3 Oct 2008 16:17:52 +0000 Subject: * Make movement restrictions when beheld also apply to blinking and controlled teleport. * Highlight restricted grids when beheld (ASCII only): - main screen: restricted grids in LOS are darkgrey - X screen: unrestricted grids in view around the mermaid(s) are lightgrey * switch xx command back to leaving examine mode git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@7105 c06c8d41-db1a-0410-9941-cceddc491573 --- crawl-ref/source/spells1.cc | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'crawl-ref/source/spells1.cc') diff --git a/crawl-ref/source/spells1.cc b/crawl-ref/source/spells1.cc index 0ebd200152..65a83236b9 100644 --- a/crawl-ref/source/spells1.cc +++ b/crawl-ref/source/spells1.cc @@ -111,6 +111,29 @@ int blink(int pow, bool high_level_controlled_blink, bool wizard_blink) return (-1); // early return {dlb} } + if (!wizard_blink && you.duration[DUR_BEHELD]) + { + bool blocked_movement = false; + for (unsigned int i = 0; i < you.beheld_by.size(); i++) + { + monsters& mon = menv[you.beheld_by[i]]; + const int olddist = grid_distance(you.pos(), mon.pos()); + const int newdist = grid_distance(beam.target, mon.pos()); + + if (olddist < newdist) + { + mprf("You cannot blink away from %s!", + mon.name(DESC_NOCAP_THE, true).c_str()); + + blocked_movement = true; + break; + } + } + + if (blocked_movement) + continue; + } + // Wizard blink can move past translucent walls. if (see_grid_no_trans(beam.target)) break; -- cgit v1.2.3-54-g00ecf