diff options
Diffstat (limited to 'crawl-ref/source/directn.cc')
-rw-r--r-- | crawl-ref/source/directn.cc | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/crawl-ref/source/directn.cc b/crawl-ref/source/directn.cc index 5f6aa57fc9..7959b19807 100644 --- a/crawl-ref/source/directn.cc +++ b/crawl-ref/source/directn.cc @@ -958,7 +958,8 @@ bool _dist_ok(const dist& moves, int range, targ_mode_type mode, return (true); } -static bool _blocked_ray(const coord_def &where) +static bool _blocked_ray(const coord_def &where, + dungeon_feature_type* feat = NULL) { ray_def ray; find_ray(you.pos(), where, true, ray, 0, true); @@ -967,7 +968,11 @@ static bool _blocked_ray(const coord_def &where) while (ray.pos() != where) { if (grd(ray.pos()) <= DNGN_MINMOVE) + { + if (feat != NULL) + *feat = grd(ray.pos()); return (true); + } ray.advance_through(where); } return (false); @@ -3114,6 +3119,16 @@ static std::string _get_monster_desc(const monsters *mon) else if (mons_enslaved_soul(mon)) text += pronoun + " is a disembodied soul.\n"; + dungeon_feature_type blocking_feat; + if (_blocked_ray(mon->pos(), &blocking_feat)) + { + text += "Your line of fire to " + lowercase_string(pronoun) + + " is blocked by " + + feature_description(blocking_feat, NUM_TRAPS, false, + DESC_NOCAP_A) + + "\n"; + } + text += _mon_enchantments_string(mon); return text; } |