summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRobert Vollmert <rvollmert@gmx.net>2009-11-02 10:14:38 +0100
committerRobert Vollmert <rvollmert@gmx.net>2009-11-02 10:15:58 +0100
commit085f837bc52a46badca3e3430885dd3397178c50 (patch)
tree8c67384c923aae9f34af226ecf291ac192f784d6
parentb5cf9fc68435f29c831ebd60b8a2c4cd80f7773f (diff)
downloadcrawl-ref-085f837bc52a46badca3e3430885dd3397178c50.tar.gz
crawl-ref-085f837bc52a46badca3e3430885dd3397178c50.zip
Quick fix for arena dispersal assertions.
The issue is blink referencing player posistion, which is invalid. Better random_near_space fix will come.
-rw-r--r--crawl-ref/source/los.cc2
-rw-r--r--crawl-ref/source/monstuff.cc7
2 files changed, 7 insertions, 2 deletions
diff --git a/crawl-ref/source/los.cc b/crawl-ref/source/los.cc
index e67c364156..408d5e9ff0 100644
--- a/crawl-ref/source/los.cc
+++ b/crawl-ref/source/los.cc
@@ -737,6 +737,8 @@ int num_feats_between(const coord_def& source, const coord_def& target,
int count = 0;
int max_dist = grid_distance(source, target);
+ ASSERT(map_bounds(source) && map_bounds(target));
+
if (source == target)
return (0); // XXX: might want to count the cell.
diff --git a/crawl-ref/source/monstuff.cc b/crawl-ref/source/monstuff.cc
index 9f29fbe8db..64e6276e68 100644
--- a/crawl-ref/source/monstuff.cc
+++ b/crawl-ref/source/monstuff.cc
@@ -2499,8 +2499,9 @@ bool random_near_space(const coord_def& origin, coord_def& target,
int min_walls_between = 0;
// Skip ray tracing if possible.
- if (trans_wall_block)
+ if (trans_wall_block && !crawl_state.arena)
{
+ // XXX: you.pos() is invalid in the arena.
min_walls_between = num_feats_between(origin, you.pos(),
DNGN_CLEAR_ROCK_WALL,
DNGN_CLEAR_PERMAROCK_WALL);
@@ -2578,7 +2579,9 @@ bool random_near_space(const coord_def& origin, coord_def& target,
if (origin_is_player)
continue;
- int walls_between = num_feats_between(target, you.pos(),
+ int walls_between = 0;
+ if (!crawl_state.arena)
+ walls_between = num_feats_between(target, you.pos(),
DNGN_CLEAR_ROCK_WALL,
DNGN_CLEAR_PERMAROCK_WALL);