summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/behold.cc
diff options
context:
space:
mode:
authorRobert Vollmert <rvollmert@gmx.net>2009-11-21 08:23:21 +0100
committerRobert Vollmert <rvollmert@gmx.net>2009-11-21 08:24:34 +0100
commite672992760d69a5991d113c6f8cac80f86a153ef (patch)
tree007c40ae43eb59313cdc22df6b600c4950ecd27b /crawl-ref/source/behold.cc
parent5ea2782c48d0aac41586e80b76571d9bdcd25699 (diff)
downloadcrawl-ref-e672992760d69a5991d113c6f8cac80f86a153ef.tar.gz
crawl-ref-e672992760d69a5991d113c6f8cac80f86a153ef.zip
Beholder check now uses proper LOS.
This should fix corners cutting mesmerization short (2901182).
Diffstat (limited to 'crawl-ref/source/behold.cc')
-rw-r--r--crawl-ref/source/behold.cc21
1 files changed, 5 insertions, 16 deletions
diff --git a/crawl-ref/source/behold.cc b/crawl-ref/source/behold.cc
index 263affd500..0f9356c778 100644
--- a/crawl-ref/source/behold.cc
+++ b/crawl-ref/source/behold.cc
@@ -158,21 +158,10 @@ bool player::_possible_beholder(const monsters *mon) const
{
if (crawl_state.arena)
return (false);
- if (silenced(pos()))
- return (false);
- if (!mon->alive() || mons_genus(mon->type) != MONS_MERMAID
- || !mons_near(mon) || mon->friendly()
- || mon->submerged() || mon->confused() || mon->cannot_move()
- || mon->asleep() || silenced(mon->pos()))
- {
- return (false);
- }
-
- // TODO: replace this by see/see_no_trans.
- int walls = num_feats_between(pos(), mon->pos(),
- DNGN_UNSEEN, DNGN_MAXOPAQUE);
- if (walls > 0)
- return (false);
- return (true);
+ return (!silenced(pos()) && !silenced(mon->pos())
+ && see_cell(mon->pos()) && mon->see_cell(pos())
+ && mon->alive() && mons_genus(mon->type) == MONS_MERMAID
+ && !mon->submerged() && !mon->confused()
+ && !mon->asleep() && !mon->cannot_move());
}