summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source
diff options
context:
space:
mode:
Diffstat (limited to 'crawl-ref/source')
-rw-r--r--crawl-ref/source/delay.cc10
-rw-r--r--crawl-ref/source/misc.cc12
2 files changed, 14 insertions, 8 deletions
diff --git a/crawl-ref/source/delay.cc b/crawl-ref/source/delay.cc
index 8e89bfdec3..1cb974fbdb 100644
--- a/crawl-ref/source/delay.cc
+++ b/crawl-ref/source/delay.cc
@@ -461,6 +461,7 @@ void stop_delay( bool stop_stair_travel )
{
mpr("You stop draining the corpse.");
_xom_check_corpse_waste();
+
item_def &corpse = (delay.parm1 ? you.inv[delay.parm2]
: mitm[delay.parm2]);
@@ -1175,7 +1176,10 @@ static void _finish_delay(const delay_queue_item &delay)
if (delay.type == DELAY_BOTTLE_BLOOD)
{
mpr("You finish bottling this corpse's blood.");
- turn_corpse_into_blood_potions(mitm[delay.parm1]);
+
+ item_def &corpse = mitm[delay.parm1];
+
+ turn_corpse_into_blood_potions(corpse);
}
else
{
@@ -1208,7 +1212,9 @@ static void _finish_delay(const delay_queue_item &delay)
mpr("What a waste.");
}
- turn_corpse_into_chunks(mitm[delay.parm1]);
+ item_def &corpse = mitm[delay.parm1];
+
+ turn_corpse_into_skeleton_and_chunks(corpse);
if (you.duration[DUR_BERSERKER]
&& you.berserk_penalty != NO_BERSERK_PENALTY)
diff --git a/crawl-ref/source/misc.cc b/crawl-ref/source/misc.cc
index 8442ad9c2b..9175c51df5 100644
--- a/crawl-ref/source/misc.cc
+++ b/crawl-ref/source/misc.cc
@@ -159,7 +159,7 @@ void turn_corpse_into_skeleton(item_def &item, int time)
void turn_corpse_into_chunks(item_def &item)
{
- ASSERT(item.base_type == OBJ_CORPSES);
+ ASSERT(item.base_type == OBJ_CORPSES && item.sub_type == CORPSE_BODY);
const int max_chunks = mons_weight(item.plus) / 150;
@@ -931,18 +931,18 @@ int num_blood_potions_from_corpse(int mons_class, int chunk_type)
}
// If autopickup is active, the potions are auto-picked up after creation.
-void turn_corpse_into_blood_potions( item_def &item )
+void turn_corpse_into_blood_potions(item_def &item)
{
- ASSERT( item.base_type == OBJ_CORPSES );
- ASSERT( !food_is_rotten(item) );
+ ASSERT(item.base_type == OBJ_CORPSES);
+ ASSERT(!food_is_rotten(item));
const int mons_class = item.plus;
- ASSERT( can_bottle_blood_from_corpse(mons_class) );
+ ASSERT(can_bottle_blood_from_corpse(mons_class));
item.base_type = OBJ_POTIONS;
item.sub_type = POT_BLOOD;
item_colour(item);
- item.flags &= ~(ISFLAG_THROWN | ISFLAG_DROPPED);
+ item.flags &= ~(ISFLAG_THROWN | ISFLAG_DROPPED);
item.quantity = num_blood_potions_from_corpse(mons_class);