summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/directn.cc
diff options
context:
space:
mode:
Diffstat (limited to 'crawl-ref/source/directn.cc')
-rw-r--r--crawl-ref/source/directn.cc17
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;
}