diff options
Diffstat (limited to 'crawl-ref/source/player.cc')
-rw-r--r-- | crawl-ref/source/player.cc | 20 |
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]); |