summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/beam.cc
diff options
context:
space:
mode:
authorRobert Vollmert <rvollmert@gmx.net>2009-11-03 12:34:36 +0100
committerRobert Vollmert <rvollmert@gmx.net>2009-11-03 15:27:26 +0100
commit938f201e9125222ed10ef7db216d168cbb12605a (patch)
treebbc67efe8649f284da411fa4b17a52127459128c /crawl-ref/source/beam.cc
parent8e5e988616936c039e56e60796624d582f5499c0 (diff)
downloadcrawl-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.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()