diff options
author | Robert Vollmert <rvollmert@gmx.net> | 2010-06-05 20:13:30 +0200 |
---|---|---|
committer | Robert Vollmert <rvollmert@gmx.net> | 2010-06-05 21:01:12 +0200 |
commit | ba266bf852f5440f85dccd31a773b24ba7497b64 (patch) | |
tree | 419699b09096a24cb07b0a2e40ecf1b0516fa080 /crawl-ref/source/actor-los.cc | |
parent | bba571c2202a8a7e441cae7d647233870562f275 (diff) | |
download | crawl-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.cc | 6 |
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)); } |