summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/actor-los.cc
diff options
context:
space:
mode:
authorRobert Vollmert <rvollmert@gmx.net>2010-07-20 17:00:36 +0200
committerRobert Vollmert <rvollmert@gmx.net>2010-07-20 17:21:56 +0200
commit09226ac0c680bbbb99986534e466f4e87a902ba8 (patch)
tree315479263c8f25e3ad4ac73fa647e555bf7783fb /crawl-ref/source/actor-los.cc
parentef7bc03388e190b9942fe4e50f756bed8260eb2f (diff)
downloadcrawl-ref-09226ac0c680bbbb99986534e466f4e87a902ba8.tar.gz
crawl-ref-09226ac0c680bbbb99986534e466f4e87a902ba8.zip
Wizard mode xray vision (Ctrl-V).
It would be nice to expose the whole viewed area, but LOS code assumes circular bounds in a few places.
Diffstat (limited to 'crawl-ref/source/actor-los.cc')
-rw-r--r--crawl-ref/source/actor-los.cc17
1 files changed, 16 insertions, 1 deletions
diff --git a/crawl-ref/source/actor-los.cc b/crawl-ref/source/actor-los.cc
index 0b865759b3..74e34a52cd 100644
--- a/crawl-ref/source/actor-los.cc
+++ b/crawl-ref/source/actor-los.cc
@@ -26,7 +26,10 @@ bool player::see_cell(const coord_def &p) const
{
if (crawl_state.game_is_arena() && this == &you)
return (true);
-
+#ifdef WIZARD
+ else if (xray_vision)
+ return (grid_distance(pos(), p) <= LOS_MAX_RANGE);
+#endif
return (actor::see_cell(p));
}
@@ -60,6 +63,14 @@ const los_base* player::get_los()
circle_def(LOS_MAX_RANGE, C_SQUARE));
return (&los);
}
+#ifdef WIZARD
+ else if (xray_vision)
+ {
+ los = los_glob(pos(), LOS_ARENA,
+ circle_def(LOS_MAX_RANGE, C_SQUARE));
+ return (&los);
+ }
+#endif
else
return (actor::get_los());
}
@@ -74,6 +85,10 @@ bool player::can_see(const actor* a) const
{
if (crawl_state.game_is_arena() || crawl_state.arena_suspended)
return (see_cell(a->pos()));
+#ifdef WIZARD
+ else if (xray_vision)
+ return(see_cell(a->pos()));
+#endif
else
return (actor::can_see(a));
}