diff options
author | Robert Vollmert <rvollmert@gmx.net> | 2009-10-31 09:19:11 +0100 |
---|---|---|
committer | Robert Vollmert <rvollmert@gmx.net> | 2009-11-01 21:44:15 +0100 |
commit | afca77968d2a0591591a1b0792b2083558d6c3bc (patch) | |
tree | e3b74baa2b8292a4eb376fca7dd2eff1207c1e69 | |
parent | 842722ca2c40bb838d908677677d6096963e879d (diff) | |
download | crawl-ref-afca77968d2a0591591a1b0792b2083558d6c3bc.tar.gz crawl-ref-afca77968d2a0591591a1b0792b2083558d6c3bc.zip |
Special case source==target in num_feats_between.
This was causing a crash through monsters::mon_see_cell.
Also special case monster position there.
-rw-r--r-- | crawl-ref/source/los.cc | 3 | ||||
-rw-r--r-- | crawl-ref/source/monster.cc | 2 |
2 files changed, 5 insertions, 0 deletions
diff --git a/crawl-ref/source/los.cc b/crawl-ref/source/los.cc index 282ddba85c..cff3c128be 100644 --- a/crawl-ref/source/los.cc +++ b/crawl-ref/source/los.cc @@ -752,6 +752,9 @@ int num_feats_between(const coord_def& source, const coord_def& target, int count = 0; int max_dist = grid_distance(source, target); + if (source == target) + return (0); // XXX: might want to count the cell. + // We don't need to find the shortest beam, any beam will suffice. fallback_ray(source, target, ray); diff --git a/crawl-ref/source/monster.cc b/crawl-ref/source/monster.cc index b6fc7c0bd1..374135686e 100644 --- a/crawl-ref/source/monster.cc +++ b/crawl-ref/source/monster.cc @@ -4900,6 +4900,8 @@ bool monsters::visible_to(const actor *looker) const bool monsters::mon_see_cell(const coord_def& p, bool reach) const { + if (p == pos()) + return (true); if (distance(pos(), p) > LOS_RADIUS * LOS_RADIUS + 1) return (false); |