diff options
-rw-r--r-- | crawl-ref/source/beam.cc | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/crawl-ref/source/beam.cc b/crawl-ref/source/beam.cc index db53a28b74..fc17b837b9 100644 --- a/crawl-ref/source/beam.cc +++ b/crawl-ref/source/beam.cc @@ -1722,6 +1722,9 @@ void bolt::finish_beam() void bolt::affect_wall() { + if (is_tracer) + return; + if (flavour == BEAM_DIGGING) digging_wall_effect(); else if (is_fiery()) @@ -1765,7 +1768,7 @@ void bolt::hit_wall() ray.regress(); } while (ray.pos() != source && grid_is_solid(ray.pos())); // target is where the explosion is centered, so update it. - if (is_explosion) + if (is_explosion && !is_tracer) target = ray.pos(); } finish_beam(); @@ -1904,7 +1907,8 @@ void bolt::do_fire() if (stop_at_target() && pos() == target) break; - ASSERT(!grid_is_solid(grd(pos()))); + ASSERT(!grid_is_solid(grd(pos())) + || (is_tracer && affects_wall(grd(pos())))); const bool was_seen = seen; if (!was_seen && range > 0 && !invisible() && see_grid(pos())) |