summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/beam.cc
diff options
context:
space:
mode:
Diffstat (limited to 'crawl-ref/source/beam.cc')
-rw-r--r--crawl-ref/source/beam.cc20
1 files changed, 20 insertions, 0 deletions
diff --git a/crawl-ref/source/beam.cc b/crawl-ref/source/beam.cc
index b33169f852..f531c50491 100644
--- a/crawl-ref/source/beam.cc
+++ b/crawl-ref/source/beam.cc
@@ -3105,6 +3105,26 @@ void bolt::drop_object()
}
copy_item_to_grid(*item, pos(), 1);
}
+ else if (item->sub_type == MI_LARGE_ROCK
+ && !feat_destroys_items(grd(pos())))
+ {
+ // Large rocks mulch to stone.
+ std::string sound_msg = "You hear a cracking sound!";
+ if (you.see_cell(pos()))
+ {
+ mprf("%s shatters into pieces!",
+ item->name(DESC_CAP_THE).c_str());
+ sound_msg = "";
+ }
+ noisy(12, pos(), sound_msg.c_str());
+
+ item->sub_type = MI_STONE;
+ item->quantity = 10 + random2(41);
+ // Remove thrown flag: we might not want to pick up the stones.
+ item->flags &= ~ISFLAG_THROWN;
+
+ copy_item_to_grid(*item, pos(), item->quantity);
+ }
}
// Returns true if the beam hits the player, fuzzing the beam if necessary