diff options
author | Robert Vollmert <rvollmert@gmx.net> | 2009-11-14 00:50:33 +0100 |
---|---|---|
committer | Robert Vollmert <rvollmert@gmx.net> | 2009-11-14 00:50:33 +0100 |
commit | 4399b93a0257ec2d59086ea8baa01529af8d6ed9 (patch) | |
tree | d0db0440ca5f4c75e4d5c3aa11b4aa1aac80881b | |
parent | 2100de921196354c2e4187646a9c2c8d29792fb0 (diff) | |
download | crawl-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.cc | 7 |
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; |