summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--crawl-ref/source/beam.cc29
1 files changed, 13 insertions, 16 deletions
diff --git a/crawl-ref/source/beam.cc b/crawl-ref/source/beam.cc
index 5a51b27251..f45af3db48 100644
--- a/crawl-ref/source/beam.cc
+++ b/crawl-ref/source/beam.cc
@@ -1627,23 +1627,20 @@ void bolt::bounce()
{
ray_def old_ray = ray;
bolt old_bolt = *this;
- do
- {
- do
- ray.regress();
- while (feat_is_solid(grd(ray.pos())));
- bounce_pos = ray.pos();
- reflect_grid rg;
- for (adjacent_iterator ai(ray.pos()); ai; ++ai)
- rg(*ai - ray.pos() + rg_o) = feat_is_solid(grd(*ai));
- ray.bounce(rg);
- range_used += 2;
- }
- while (range_used < range && feat_is_solid(grd(ray.pos())));
-
- if (!feat_is_solid(grd(ray.pos())))
- _munge_bounced_bolt(old_bolt, *this, old_ray, ray);
+ do
+ ray.regress();
+ while (feat_is_solid(grd(ray.pos())));
+
+ bounce_pos = ray.pos();
+ reflect_grid rg;
+ for (adjacent_iterator ai(ray.pos()); ai; ++ai)
+ rg(*ai - ray.pos() + rg_o) = feat_is_solid(grd(*ai));
+ ray.bounce(rg);
+ range_used += 2;
+
+ ASSERT(!feat_is_solid(grd(ray.pos())));
+ _munge_bounced_bolt(old_bolt, *this, old_ray, ray);
}
void bolt::fake_flavour()