summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--crawl-ref/source/beam.cc10
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;
}