summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRobert Vollmert <rvollmert@gmx.net>2009-11-14 00:50:33 +0100
committerRobert Vollmert <rvollmert@gmx.net>2009-11-14 00:50:33 +0100
commit4399b93a0257ec2d59086ea8baa01529af8d6ed9 (patch)
treed0db0440ca5f4c75e4d5c3aa11b4aa1aac80881b
parent2100de921196354c2e4187646a9c2c8d29792fb0 (diff)
downloadcrawl-ref-4399b93a0257ec2d59086ea8baa01529af8d6ed9.tar.gz
crawl-ref-4399b93a0257ec2d59086ea8baa01529af8d6ed9.zip
Fix "blink closer" not to try blinking into occupied cells.
-rw-r--r--crawl-ref/source/teleport.cc7
1 files changed, 5 insertions, 2 deletions
diff --git a/crawl-ref/source/teleport.cc b/crawl-ref/source/teleport.cc
index e5f6258911..8caf9cb01a 100644
--- a/crawl-ref/source/teleport.cc
+++ b/crawl-ref/source/teleport.cc
@@ -30,10 +30,13 @@ static coord_def random_close_space(actor* victim, actor* target)
// XXX: should use actor::see_cell_no_trans.
const los_def* vlos = &victim->get_los_no_trans();
const los_def* tlos = &target->get_los_no_trans();
- for (radius_iterator ri(vlos, true); ri; ++ri)
+ for (radius_iterator ri(vlos); ri; ++ri)
{
- if (!tlos->see_cell(*ri) || !victim->is_habitable(*ri))
+ if (!tlos->see_cell(*ri) || !victim->is_habitable(*ri)
+ || actor_at(*ri))
+ {
continue;
+ }
int weight = (LOS_RADIUS+1)*(LOS_RADIUS+1) - (tpos - *ri).abs();
if (weight < 0)
weight = 1;