diff options
-rw-r--r-- | crawl-ref/source/beam.cc | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/crawl-ref/source/beam.cc b/crawl-ref/source/beam.cc index 817e6ab89c..2bf23be891 100644 --- a/crawl-ref/source/beam.cc +++ b/crawl-ref/source/beam.cc @@ -1531,13 +1531,15 @@ static void _munge_bounced_bolt(bolt &old_bolt, bolt &new_bolt, void fire_beam(bolt &pbolt) { - ASSERT(!pbolt.name.empty()); ASSERT(pbolt.flavour > BEAM_NONE && pbolt.flavour < NUM_BEAMS); ASSERT(!pbolt.drop_item || pbolt.item); ASSERT(!pbolt.dropped_item); pbolt.real_flavour = pbolt.flavour; + const bool beam_invisible = + pbolt.type == 0 || (!pbolt.name.empty() && pbolt.name[0] == '0'); + const int reflections = pbolt.reflections; if (reflections == 0) { @@ -1547,7 +1549,7 @@ void fire_beam(bolt &pbolt) // pbolt.seen might be set by caller to supress this. if (!pbolt.seen && see_grid(pbolt.source) && pbolt.range > 0 - && pbolt.type != 0 && pbolt.name[0] != '0') + && !beam_invisible) { pbolt.seen = true; int midx = mgrd(pbolt.source); @@ -1745,8 +1747,8 @@ void fire_beam(bolt &pbolt) break; const bool was_seen = pbolt.seen; - if (!was_seen && pbolt.range > 0 && pbolt.type != 0 - && pbolt.name[0] != '0' && see_grid(testpos)) + if (!was_seen && pbolt.range > 0 && !beam_invisible + && see_grid(testpos)) { pbolt.seen = true; } |