diff options
author | Robert Vollmert <rvollmert@gmx.net> | 2009-11-03 12:34:36 +0100 |
---|---|---|
committer | Robert Vollmert <rvollmert@gmx.net> | 2009-11-03 15:27:26 +0100 |
commit | 938f201e9125222ed10ef7db216d168cbb12605a (patch) | |
tree | bbc67efe8649f284da411fa4b17a52127459128c /crawl-ref/source/beam.cc | |
parent | 8e5e988616936c039e56e60796624d582f5499c0 (diff) | |
download | crawl-ref-938f201e9125222ed10ef7db216d168cbb12605a.tar.gz crawl-ref-938f201e9125222ed10ef7db216d168cbb12605a.zip |
Simplify bounce in view of ray_def::bounce guarantee.
Diffstat (limited to 'crawl-ref/source/beam.cc')
-rw-r--r-- | crawl-ref/source/beam.cc | 29 |
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() |