summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/actor-los.cc
diff options
context:
space:
mode:
authorRobert Vollmert <rvollmert@gmx.net>2010-06-05 20:13:30 +0200
committerRobert Vollmert <rvollmert@gmx.net>2010-06-05 21:01:12 +0200
commitba266bf852f5440f85dccd31a773b24ba7497b64 (patch)
tree419699b09096a24cb07b0a2e40ecf1b0516fa080 /crawl-ref/source/actor-los.cc
parentbba571c2202a8a7e441cae7d647233870562f275 (diff)
downloadcrawl-ref-ba266bf852f5440f85dccd31a773b24ba7497b64.tar.gz
crawl-ref-ba266bf852f5440f85dccd31a773b24ba7497b64.zip
Actors outside the map can't see anything.
This fixes crashes on player LOS checks while the player is off-level during level load.
Diffstat (limited to 'crawl-ref/source/actor-los.cc')
-rw-r--r--crawl-ref/source/actor-los.cc6
1 files changed, 5 insertions, 1 deletions
diff --git a/crawl-ref/source/actor-los.cc b/crawl-ref/source/actor-los.cc
index 7913c37e8d..d9a51ebd70 100644
--- a/crawl-ref/source/actor-los.cc
+++ b/crawl-ref/source/actor-los.cc
@@ -17,8 +17,12 @@ bool actor::observable() const
bool actor::see_cell(const coord_def &p) const
{
los_type lt = LOS_DEFAULT;
+
if (crawl_state.game_is_arena() && this == &you)
- lt = LOS_ARENA;
+ lt = LOS_ARENA; // observer can see everything
+ else if (!in_bounds(pos()))
+ return (false); // actor is off the map
+
return (cell_see_cell(pos(), p, lt));
}