diff options
-rw-r--r-- | crawl-ref/source/beam.cc | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/crawl-ref/source/beam.cc b/crawl-ref/source/beam.cc index 90f636d0d0..7751bd40fd 100644 --- a/crawl-ref/source/beam.cc +++ b/crawl-ref/source/beam.cc @@ -2830,7 +2830,6 @@ void beam_drop_object( bolt &beam, item_def *item, const coord_def& _p ) item = beam.item; ASSERT( item != NULL ); ASSERT( is_valid_item(*item) ); - ASSERT( item->quantity > 0); #ifdef DEBUG if (!beam.drop_item) @@ -2876,7 +2875,25 @@ void beam_drop_object( bolt &beam, item_def *item, const coord_def& _p ) } if (copy_item_to_grid( *item, p, 1 )) + { beam.dropped_item = true; + beam.item_pos = p; + + // Dropped item might have merged into stack + if (is_stackable_item(*item)) + { + for (stack_iterator si(p); si; ++si) + { + if (items_stack(*item, *si)) + { + beam.item_index = si->index(); + break; + } + } + } + else + beam.item_index = igrd(p); + } else { #ifdef DEBUG |