diff -i smaug14/src/makeobjs.c smaug18/src/makeobjs.c
8c8
<  * Tricops and Fireblade                                      |             *
---
>  * Tricops, Fireblade, Edmond, Conran                         |             *
25a26,28
> void make_puddle args( ( CHAR_DATA * ch, OBJ_DATA * cont ) );
> 
> 
175c178
<                * This should be anough for the killer to type 'get all corpse'. 
---
>                * This should be enough for the killer to type 'get all corpse'. 
183c186
<       if ( CAN_PKILL( ch ) && CAN_PKILL( killer ) && ch != killer )
---
>       if ( CAN_PKILL( ch ) && CAN_PKILL( killer ) && ch != killer && sysdata.pk_loot )
207a211,215
>               /*
>                * don't put perm player eq in the corpse 
>                */
>               if ( !IS_NPC( ch ) && IS_OBJ_STAT( obj, ITEM_PERMANENT ) )
>                       continue;
210a219,223
>               else if ( IS_OBJ_STAT( obj, ITEM_DEATHDROP ) )
>               {
>                       obj_to_room( obj, ch->in_room );
>                       oprog_drop_trigger( ch, obj );  /* mudprogs */
>               }
219a233,280
> void make_puddle( CHAR_DATA * ch, OBJ_DATA * cont )
> {
>       OBJ_DATA *obj;
>       OBJ_DATA *obj_next;
>       char buf[20];
>       char buf2[70];
>       bool found = FALSE;
> 
>       for ( obj = ch->in_room->first_content; obj; obj = obj_next )
>       {
>               if ( obj->pIndexData->item_type == ITEM_PUDDLE )
>               {
>                       if ( obj->value[2] == cont->value[2] )
>                       {
>                               obj->value[1] += cont->value[1];
>                               obj->value[3] += cont->value[3];
>                               obj->timer = number_range( 2, 4 );
>                               found = TRUE;
>                               break;
>                       }
>               }
>               obj_next = obj->next_content;
>       }
> 
>       if ( !found )
>       {
>               obj = create_object( get_obj_index( OBJ_VNUM_PUDDLE ), 0 );
>               obj->timer = number_range( 2, 4 );
>               obj->value[1] += cont->value[1];
>               obj->value[2] = cont->value[2];
>               obj->value[3] = cont->value[3];
>               obj_to_room( obj, ch->in_room );
>       }
> 
>       if ( obj->value[1] > 15 )
>               sprintf( buf, "large" );
>       else if ( obj->value[1] > 10 )
>               sprintf( buf, "rather large" );
>       else if ( obj->value[1] > 5 )
>               sprintf( buf, "rather small" );
>       else
>               sprintf( buf, "small" );
>       sprintf( buf2, "There is a %s puddle of %s.", buf,
>               ( obj->value[2] >= LIQ_MAX ? "water" : liq_table[obj->value[2]].liq_name ) );
>       obj->description = STRALLOC( buf2 );
>       return;
> }
> 
223a285,297
>       OBJ_DATA *obj_next;
> 
>       for ( obj = ch->in_room->first_content; obj; obj = obj_next )
>       {
>               if ( obj->pIndexData->vnum == OBJ_VNUM_BLOOD )
>               {
>                       obj->description = STRALLOC( "A large pool of spilled blood lies here." );
>                       obj->value[1] += number_range( 3, UMIN( 5, ch->level ) );
>                       obj->timer = number_range( 2, 4 );
>                       return;
>               }
>               obj_next = obj->next_content;
>       }