From 938f201e9125222ed10ef7db216d168cbb12605a Mon Sep 17 00:00:00 2001 From: Robert Vollmert Date: Tue, 3 Nov 2009 12:34:36 +0100 Subject: Simplify bounce in view of ray_def::bounce guarantee. --- crawl-ref/source/beam.cc | 29 +++++++++++++---------------- 1 file 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() -- cgit v1.2.3-54-g00ecf