summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/player.cc
diff options
context:
space:
mode:
Diffstat (limited to 'crawl-ref/source/player.cc')
-rw-r--r--crawl-ref/source/player.cc20
1 files changed, 20 insertions, 0 deletions
diff --git a/crawl-ref/source/player.cc b/crawl-ref/source/player.cc
index 237f8da703..57562b1d85 100644
--- a/crawl-ref/source/player.cc
+++ b/crawl-ref/source/player.cc
@@ -5904,6 +5904,26 @@ bool player::invisible() const
return (duration[DUR_INVIS] && !backlit());
}
+bool player::visible_to(actor *looker)
+{
+ if (this == looker)
+ return (!invisible() || can_see_invisible());
+
+ monsters* mon = dynamic_cast<monsters*>(looker);
+
+ return mons_player_visible(mon);
+}
+
+bool player::can_see(actor *target)
+{
+ if (this == target)
+ return visible_to(target);
+
+ monsters* mon = dynamic_cast<monsters*>(target);
+
+ return (mons_near(mon) && target->visible_to(this));
+}
+
bool player::backlit() const
{
return (magic_contamination >= 5 || duration[DUR_BACKLIGHT]);