diff -i smaug14/src/act_obj.c smaug18/src/act_obj.c
8c8
<  * Tricops and Fireblade                                      |             *
---
>  * Tricops, Fireblade, Edmond, Conran                         |             *
99c99,100
<       CLAN_DATA *clan;
---
>       VAULT_DATA *vault;
>       char buf[20];
113c114
<                       if ( ch->level - obj->value[5] > 5 || obj->value[5] - ch->level > 5 )
---
>                       if ( !is_name( ch->name, obj->action_desc ) && !IS_IMMORTAL( ch ) )
121c122,123
<                               obj->value[5] = 0;
---
>                               STRFREE( obj->action_desc );
>                               obj->action_desc = STRALLOC( "" );
139c141
<               act( AT_PLAIN, "$d: you can't carry that many items.", ch, NULL, obj->name, TO_CHAR );
---
>               act( AT_PLAIN, "$d: you can't carry that many items.", ch, NULL, obj->short_descr, TO_CHAR );
155a158,173
> 
>               if ( IS_OBJ_STAT( container, ITEM_CLANCORPSE ) )
>               {
>                       if ( IS_NPC( ch ) )
>                               return;
>                       if ( IS_IMMORTAL( ch )
>                               || is_name( ch->name, container->name )
>                               || ( container->action_desc && is_name( ch->name, container->action_desc ) && is_lootable( obj ) ) )
>                               ;
>                       else
>                       {
>                               act( AT_ACTION, "You cannot loot $p.", ch, obj, NULL, TO_CHAR );
>                               return;
>                       }
>               }
> 
178a197,199
>       if ( xIS_SET( ch->in_room->room_flags, ROOM_HOUSE ) )
>               save_house_by_vnum( ch->in_room->vnum );        /* House Object Saving */
> 
182c203
<       if ( IS_SET( ch->in_room->room_flags, ROOM_CLANSTOREROOM ) && ( !container || container->carried_by == NULL ) )
---
>       if ( xIS_SET( ch->in_room->room_flags, ROOM_CLANSTOREROOM ) && ( !container || container->carried_by == NULL ) )
184,188c205,214
< /*    if (!char_died) save_char_obj(ch); */
<               for ( clan = first_clan; clan; clan = clan->next )
<                       if ( clan->storeroom == ch->in_room->vnum )
<                               save_clan_storeroom( ch, clan );
<       }
---
> /*    if (!char_died) save_char_obj(ch); 
>       for ( clan = first_clan; clan; clan = clan->next )
>         if ( clan->storeroom == ch->in_room->vnum )
>           save_clan_storeroom(ch, clan); */
>               for ( vault = first_vault; vault; vault = vault->next )
>                       if ( vault->vnum == ch->in_room->vnum )
>                       {
>                               sprintf( buf, "%d", vault->vnum );
>                               save_storeroom( ch, buf );
>                       }
190,191c216,217
<       if ( obj->item_type != ITEM_CONTAINER )
<               check_for_trap( ch, obj, TRAP_GET );
---
>       }
>       check_for_trap( ch, obj, TRAP_GET );
197,198c223,226
< 
<               amt = obj->value[0];
---
>               /*
>                * Handle grouping -- noticed by Guy Petty 
>                */
>               amt = obj->value[0] * obj->count;
258a287,380
> void do_connect( CHAR_DATA * ch, char *argument )
> {
>       OBJ_DATA *first_ob;
>       OBJ_DATA *second_ob;
>       OBJ_DATA *new_ob;
> 
>       char arg1[MAX_STRING_LENGTH], arg2[MAX_STRING_LENGTH];
>       char buf[MAX_STRING_LENGTH];
> 
>       argument = one_argument( argument, arg1 );
>       argument = one_argument( argument, arg2 );
> 
>       if ( arg1[0] == '\0' || arg2[0] == '\0' )
>       {
>               send_to_char( "Connect what to what?\n\r", ch );
>               return;
>       }
> 
>       if ( ( first_ob = get_obj_carry( ch, arg1 ) ) == NULL )
>       {
>               sprintf( buf, "You aren't holding the necessary objects.\n\r" );
>               send_to_char( buf, ch );
>               return;
>       }
> 
> 
> 
>       if ( ( second_ob = get_obj_carry( ch, arg2 ) ) == NULL )
>       {
>               sprintf( buf, "You aren't holding the necessary objects.\n\r" );
>               send_to_char( buf, ch );
>               return;
>       }
> 
>       separate_obj( first_ob );
>       separate_obj( second_ob );
> 
>       if ( first_ob->item_type != ITEM_PIECE || second_ob->item_type != ITEM_PIECE )
>       {
>               send_to_char( "You stare at them for a moment, but these items clearly don't go together.\n\r", ch );
>               return;
>       }
> 
>       /*
>        * check to see if the pieces connect 
>        */
> 
>       if ( ( first_ob->value[0] == second_ob->pIndexData->vnum )
>               || ( first_ob->value[1] == second_ob->pIndexData->vnum ) )
>               /*
>                * good connection  
>                */
>       {
>               new_ob = create_object( get_obj_index( first_ob->value[2] ), ch->level );
>               extract_obj( first_ob );
>               extract_obj( second_ob );
>               obj_to_char( new_ob, ch );
>               act( AT_ACTION, "$n cobbles some objects together....\r\nsuddenly they snap together, creating $p!", ch, new_ob,
>                       NULL, TO_ROOM );
>               act( AT_ACTION, "You cobble the objects together....\r\nsuddenly they snap together, creating $p!", ch, new_ob,
>                       NULL, TO_CHAR );
> 
>       }
>       else
>       {
>               act( AT_ACTION, "$n jiggles some objects against each other, but can't seem to make them connect.", ch, NULL,
>                       NULL, TO_ROOM );
>               act( AT_ACTION, "You try to fit them together every which way, but they just don't want to connect.", ch, NULL,
>                       NULL, TO_CHAR );
>               return;
>       }
> 
>       return;
> }
> 
> bool is_lootable( OBJ_DATA * obj )
> {
> 
>       return TRUE;
> /*
>     sh_int vnum = obj->pIndexData->vnum;
> 
>     if ( vnum == 21807 || vnum == 21808 || vnum == 21809
>     ||   vnum == 13410 || vnum == 13411 || vnum == 13419
>     ||   vnum == 14200 || vnum == 14201 || vnum == 14202
>     ||   vnum == 10650 || vnum == 10651 || vnum == 10652
>     ||   vnum == 32177 || vnum == 32178 || vnum == 32179
>     ||   vnum == 32722 || vnum == 32725 || vnum == 32721
>     ||   vnum == 31950 || vnum == 31951 || vnum == 31952 )
>       return TRUE;
>     return FALSE;
> */
> }
> 
262a385
>       char buf[MAX_INPUT_LENGTH];
266c389
<       sh_int number;
---
>       int number;
269a393,401
> 
>       if ( ch->carry_number < 0 || ch->carry_weight < 0 )
>       {
>               send_to_char( "Uh oh ... better contact an immortal about your number or weight of items carried.\n\r", ch );
>               sprintf( buf, "%s has negative carry_number or carry_weight!", ch->name );
>               log_string( buf );
>               return;
>       }
> 
332c464
<                       if ( IS_SET( ch->in_room->room_flags, ROOM_DONATION ) )
---
>                       if ( xIS_SET( ch->in_room->room_flags, ROOM_DONATION ) )
462c594,595
<                                               && !IS_NPC( ch ) && str_cmp( name, ch->name ) && container->value[5] >= 3 )
---
>                                               && !IS_NPC( ch ) && !IS_IMMORTAL( ch ) && str_cmp( name, ch->name )
>                                               && container->value[5] >= 3 )
473c606,608
<                                       if ( str_cmp( name, ch->name ) && !IS_IMMORTAL( ch ) )
---
> /* blodkai arg */
> 
>                                       if ( !str_cmp( name, ch->name ) && !IS_IMMORTAL( ch ) )
623c758,759
<       CLAN_DATA *clan;
---
>       VAULT_DATA *vault;
>       char buf[20];
733,735c869,886
<               if ( ( IS_OBJ_STAT( container, ITEM_COVERING )
<                               && ( get_obj_weight( obj ) / obj->count )
<                               > ( ( get_obj_weight( container ) / container->count ) - container->weight ) ) )
---
> /*    if ( (IS_OBJ_STAT(container, ITEM_COVERING)
>       &&   (get_obj_weight(obj) / obj->count)
>         > ((get_obj_weight(container) / container->count)
>         -   container->weight)) )
>       {
>           send_to_char( "It won't fit under there.\n\r", ch );
>           return;
>       }
> 
>       if ( (get_real_obj_weight(obj) / obj->count)
>          + (get_real_obj_weight(container) / container->count)
>          >  container->value[0] )
>       {
>           send_to_char( "It won't fit.\n\r", ch );
>           return;
>       }
> */
> // Fix by Luc - Sometime in 2000?
737,738c888,904
<                       send_to_char( "It won't fit under there.\n\r", ch );
<                       return;
---
>                       int tweight = ( get_real_obj_weight( container ) / container->count )
>                               + ( get_real_obj_weight( obj ) / obj->count );
> 
>                       if ( IS_OBJ_STAT( container, ITEM_COVERING ) )
>                       {
>                               if ( container->item_type == ITEM_CONTAINER
>                                       ? tweight > container->value[0] : tweight - container->weight > container->weight )
>                               {
>                                       send_to_char( "It won't fit under there.\n\r", ch );
>                                       return;
>                               }
>                       }
>                       else if ( tweight - container->weight > container->value[0] )
>                       {
>                               send_to_char( "It won't fit.\n\r", ch );
>                               return;
>                       }
739a906
> // Fix end
741,745c908,909
<               /*
<                * note use of get_real_obj_weight 
<                */
<               if ( ( get_real_obj_weight( obj ) / obj->count )
<                       + ( get_real_obj_weight( container ) / container->count ) > container->value[0] )
---
>               if ( container->in_room && container->in_room->max_weight
>                       && container->in_room->max_weight < get_real_obj_weight( obj ) / obj->count + container->in_room->weight )
770a935,938
>                       if ( container->level > ch->level )
>                               act( AT_DANGER,
>                                       "This container's level is higher than your own and will vanish along with its contents when you log out.  You should remove all items from it and find a different container.",
>                                       ch, NULL, NULL, TO_CHAR );
782a951,954
> 
>               if ( xIS_SET( ch->in_room->room_flags, ROOM_HOUSE ) )
>                       save_house_by_vnum( ch->in_room->vnum );        /* House Object Saving */
> 
786c958
<               if ( IS_SET( ch->in_room->room_flags, ROOM_CLANSTOREROOM ) && container->carried_by == NULL )
---
>               if ( xIS_SET( ch->in_room->room_flags, ROOM_CLANSTOREROOM ) && container->carried_by == NULL )
788,791c960,970
< /*       if (!char_died && !save_char ) save_char_obj(ch); */
<                       for ( clan = first_clan; clan; clan = clan->next )
<                               if ( clan->storeroom == ch->in_room->vnum )
<                                       save_clan_storeroom( ch, clan );
---
> /*       if (!char_died && !save_char ) save_char_obj(ch); 
>          for ( clan = first_clan; clan; clan = clan->next )
>             if ( clan->storeroom == ch->in_room->vnum )
>               save_clan_storeroom(ch, clan); */
>                       for ( vault = first_vault; vault; vault = vault->next )
>                               if ( vault->vnum == ch->in_room->vnum )
>                               {
>                                       sprintf( buf, "%d", vault->vnum );
>                                       save_storeroom( ch, buf );
>                               }
> 
839a1019,1022
>                                       if ( container->level > ch->level )
>                                               act( AT_DANGER,
>                                                       "This container's level is higher than your own and will vanish along with its contents when you log out.  You should remove all items from it and find a different container.",
>                                                       ch, NULL, NULL, TO_CHAR );
872a1056,1057
>               if ( xIS_SET( ch->in_room->room_flags, ROOM_HOUSE ) )
>                       save_house_by_vnum( ch->in_room->vnum );        /* House Object Saving */
876c1061
<               if ( IS_SET( ch->in_room->room_flags, ROOM_CLANSTOREROOM ) && container->carried_by == NULL )
---
>               if ( xIS_SET( ch->in_room->room_flags, ROOM_CLANSTOREROOM ) && container->carried_by == NULL )
878,881c1063,1072
< /*      if (!char_died && !save_char) save_char_obj(ch); */
<                       for ( clan = first_clan; clan; clan = clan->next )
<                               if ( clan->storeroom == ch->in_room->vnum )
<                                       save_clan_storeroom( ch, clan );
---
> /*      if (!char_died && !save_char) save_char_obj(ch); 
>         for ( clan = first_clan; clan; clan = clan->next )
>            if ( clan->storeroom == ch->in_room->vnum )
>               save_clan_storeroom(ch, clan); */
>                       for ( vault = first_vault; vault; vault = vault->next )
>                               if ( vault->vnum == ch->in_room->vnum )
>                               {
>                                       sprintf( buf, "%d", vault->vnum );
>                                       save_storeroom( ch, buf );
>                               }
895c1086,1087
<       CLAN_DATA *clan;
---
>       VAULT_DATA *vault;
>       char buf[20];
928c1120
<       if ( IS_SET( ch->in_room->room_flags, ROOM_NODROP ) && ch != supermob )
---
>       if ( xIS_SET( ch->in_room->room_flags, ROOM_NODROP ) && ch != supermob )
950a1143,1148
>                       if ( ch->level < 3 && ch->gold <= 50000 )
>                       {
>                               send_to_char( "You should gain more experience before throwing away gold.\n\r", ch );
>                               return;
>                       }
> 
974,975c1172,1178
<                       if ( IS_SET( sysdata.save_flags, SV_DROP ) )
<                               save_char_obj( ch );
---
>                       /*
>                        * Band-aid alert :) lets save all the time players normally
>                        * don't drop money until I setup a save on dropgold flag
>                        * -Shaddai
>                        * if ( IS_SET( sysdata.save_flags, SV_DROP ) )
>                        */
>                       save_char_obj( ch );
995a1199,1204
>               if ( ch->in_room->max_weight > 0
>                       && ch->in_room->max_weight < get_real_obj_weight( obj ) / obj->count + ch->in_room->weight )
>               {
>                       send_to_char( "There is not enough room on the ground for that.\n\r", ch );
>                       return;
>               }
1011c1220
<               if ( IS_SET( ch->in_room->room_flags, ROOM_CLANSTOREROOM ) )
---
>               if ( xIS_SET( ch->in_room->room_flags, ROOM_CLANSTOREROOM ) )
1013,1016c1222,1232
< /*       if (!char_died) save_char_obj(ch); */
<                       for ( clan = first_clan; clan; clan = clan->next )
<                               if ( clan->storeroom == ch->in_room->vnum )
<                                       save_clan_storeroom( ch, clan );
---
> /*       if (!char_died) save_char_obj(ch); 
>          for ( clan = first_clan; clan; clan = clan->next )
>             if ( clan->storeroom == ch->in_room->vnum )
>               save_clan_storeroom(ch, clan); */
>                       for ( vault = first_vault; vault; vault = vault->next )
>                               if ( vault->vnum == ch->in_room->vnum )
>                               {
>                                       sprintf( buf, "%d", vault->vnum );
>                                       save_storeroom( ch, buf );
>                               }
> 
1036,1037c1252,1253
<               if ( IS_SET( ch->in_room->room_flags, ROOM_NODROPALL )
<                       || IS_SET( ch->in_room->room_flags, ROOM_CLANSTOREROOM ) )
---
>               if ( xIS_SET( ch->in_room->room_flags, ROOM_NODROPALL )
>                       || xIS_SET( ch->in_room->room_flags, ROOM_CLANSTOREROOM ) )
1048c1264,1268
<                               && can_see_obj( ch, obj ) && obj->wear_loc == WEAR_NONE && can_drop_obj( ch, obj ) )
---
>                               && can_see_obj( ch, obj )
>                               && obj->wear_loc == WEAR_NONE
>                               && can_drop_obj( ch, obj )
>                               && ( !ch->in_room->max_weight
>                                       || ch->in_room->max_weight > get_real_obj_weight( obj ) / obj->count + ch->in_room->weight ) )
1084a1305,1307
>       if ( xIS_SET( ch->in_room->room_flags, ROOM_HOUSE ) )
>               save_house_by_vnum( ch->in_room->vnum );        /* House Object Saving */
> 
1098a1322
>       bool immgive;
1113a1338,1339
>       immgive = FALSE;
> 
1148a1375,1380
>               if ( victim->level == 50 && ch->level < 3 && ch->gold <= 50000 )
>               {
>                       send_to_char( "You should gain experience before giving money to more powerful characters.\n\r", ch );
>                       return;
>               }
> 
1154a1387
>               set_char_color( AT_GOLD, victim );
1157c1390,1394
<               act( AT_ACTION, "You give $N some gold.", ch, NULL, victim, TO_CHAR );
---
>               strcpy( buf, "You give " );
>               strcat( buf, arg1 );
>               strcat( buf, ( amount > 1 ) ? " coins" : " coin" );
>               strcat( buf, " to $N." );
>               act( AT_ACTION, buf, ch, NULL, victim, TO_CHAR );
1171a1409,1411
>       if ( IS_IMMORTAL( ch ) || ( IS_NPC( ch ) && xIS_SET( ch->act, ACT_IMMORTAL ) ) )
>               immgive = TRUE;
> 
1190c1430
<       if ( victim->carry_number + ( get_obj_number( obj ) / obj->count ) > can_carry_n( victim ) )
---
>       if ( victim->carry_number + ( get_obj_number( obj ) / obj->count ) > can_carry_n( victim ) && !immgive )
1196c1436
<       if ( victim->carry_weight + ( get_obj_weight( obj ) / obj->count ) > can_carry_w( victim ) )
---
>       if ( victim->carry_weight + ( get_obj_weight( obj ) / obj->count ) > can_carry_w( victim ) && !immgive )
1204,1205c1444,1452
<               act( AT_PLAIN, "$N can't see it.", ch, NULL, victim, TO_CHAR );
<               return;
---
>               if ( !immgive )
>               {
>                       act( AT_PLAIN, "$N can't see it.", ch, NULL, victim, TO_CHAR );
>                       return;
>               }
>               else
>               {
>                       act( AT_PLAIN, "$N cannot see this item - placed in inventory.", ch, NULL, victim, TO_CHAR );
>               }
1236a1484
>       char buf[MAX_STRING_LENGTH];
1238a1487,1489
>       if ( IS_OBJ_STAT( obj, ITEM_PERMANENT ) )
>               return rNONE;
> 
1323a1575,1579
>       if ( objcode == rOBJ_SCRAPPED && !IS_NPC( ch ) )
>       {
>               sprintf( buf, "%s scrapped %s (vnum: %d)", ch->name, obj->short_descr, obj->pIndexData->vnum );
>               log_string( buf );
>       }
1340c1596
<               act( AT_PLAIN, "$d: you can't carry that many items.", ch, NULL, obj->name, TO_CHAR );
---
>               act( AT_PLAIN, "$d: you can't carry that many items.", ch, NULL, obj->short_descr, TO_CHAR );
1361c1617,1624
<       return TRUE;
---
>       /*
>        * Added check in case, the trigger forces them to rewear the item
>        * * --Shaddai
>        */
>       if ( ( obj = get_eq_char( ch, iWear ) ) == NULL )
>               return TRUE;
>       else
>               return FALSE;
1368a1632,1633
>       if ( ch->stance && !stance_index[ch->stance].dual_wield )
>               return FALSE;
1413a1679
>               {
1418c1684
< 
---
>               }
1465a1732,1733
>                       || ( IS_OBJ_STAT( obj, ITEM_ANTI_MAGE )
>                               && ch->class == CLASS_NEPHANDI )
1472a1741,1759
>       if ( obj->owner[0] != '\0' && !IS_NPC( ch ) && str_cmp( obj->owner, ch->name ) )
>       {
>               /*
>                * Place holder for an echo 
>                */
>               act( AT_MAGIC, "You are not the owner of that item.", ch, NULL, NULL, TO_CHAR );
>               act( AT_ACTION, "$n tries to use $p, but is not the owner.", ch, obj, NULL, TO_ROOM );
>               act( AT_MAGIC, "You feel sick as a wrenching pain overcomes your body.", ch, NULL, NULL, TO_CHAR );
>               act( AT_ACTION, "$n doubles over in pain and drops $p.", ch, obj, NULL, TO_ROOM );
>               if ( obj->carried_by )
>                       obj_from_char( obj );
>               obj_to_room( obj, ch->in_room );
>               oprog_zap_trigger( ch, obj );
>               ch->hit = ch->hit * .5;
>               if ( IS_SET( sysdata.save_flags, SV_ZAPDROP ) && !char_died( ch ) )
>                       save_char_obj( ch );
>               return;
>       }
> 
2124a2412
> 
2127,2131c2415,2416
<               if ( !IS_OBJ_STAT( obj, ITEM_CLANCORPSE ) || IS_NPC( ch ) || !IS_SET( ch->pcdata->flags, PCFLAG_DEADLY ) )
<               {
<                       act( AT_PLAIN, "You cannot bury $p.", ch, obj, 0, TO_CHAR );
<                       return;
<               }
---
>               act( AT_PLAIN, "You cannot bury $p.", ch, obj, 0, TO_CHAR );
>               return;
2133a2419,2429
> /*
>     if ( !CAN_WEAR(obj, ITEM_TAKE) )
>     {
>       if ( !IS_OBJ_STAT( obj, ITEM_CLANCORPSE )
>       || IS_NPC(ch) || !IS_SET( ch->pcdata->flags, PCFLAG_DEADLY ) )
>          {
>               act( AT_PLAIN, "You cannot bury $p.", ch, obj, 0, TO_CHAR );
>               return;
>            }
>     }
> */
2206c2502,2507
<       if ( IS_SET( obj->magic_flags, ITEM_PKDISARMED ) && !IS_NPC( ch ) )
---
>       if ( xIS_SET( ch->in_room->room_flags, ROOM_CLANSTOREROOM ) )
>       {
>               send_to_char( "The gods would not accept such a foolish sacrifice.\n\r", ch );
>               return;
>       }
>       if ( IS_SET( obj->magic_flags, ITEM_PKDISARMED ) && !IS_NPC( ch ) && !IS_IMMORTAL( ch ) )
2210c2511
<                       if ( ch->level - obj->value[5] > 5 || obj->value[5] - ch->level > 5 )
---
>                       if ( !is_name( ch->name, obj->action_desc ) && !IS_IMMORTAL( ch ) )
2231c2532,2535
<               strcpy( name, "Thoric" );
---
>               static char *god_name_table[] = {
>                       "Thoric", "Nivek", "Altrag", "Darrek", "Lascivias", "Moonbeam", "Dria"
>               };
>               strcpy( name, god_name_table[number_range( 0, 6 )] );
2235a2540
> 
2238c2543,2550
<       sprintf( buf, "$n sacrifices $p to %s.", name );
---
>       if ( obj->item_type == ITEM_PAPER )
>       {
>               sprintf( log_buf, "%s sacrificed note: %s", ch->name, obj->short_descr );
>               log_string_plus( log_buf, LOG_ALL, 65 );
>               sprintf( buf, "$n sacrifices a note to %s.", name );
>       }
>       else
>               sprintf( buf, "$n sacrifices $p to %s.", name );
2240c2552,2554
<       oprog_sac_trigger( ch, obj );
---
> 
>       if ( obj->item_type != ITEM_PAPER )
>               oprog_sac_trigger( ch, obj );
2241a2556,2558
>       {
>               if ( xIS_SET( ch->in_room->room_flags, ROOM_HOUSE ) )
>                       save_house_by_vnum( ch->in_room->vnum );        /* Prevent House Object Duplication */
2242a2560
>       }
2244a2563,2569
>       /*
>        * Separate again.  There was a problem here with sac_progs in that if the
>        * object respawned a copy of itself, it would sometimes link it to the
>        * one that was being extracted, resulting in them both getting that evil
>        * extraction :) -- Alty 
>        */
>       separate_obj( obj );
2245a2571,2573
>       if ( xIS_SET( ch->in_room->room_flags, ROOM_HOUSE ) )
>               save_house_by_vnum( ch->in_room->vnum );        /* Prevent House Object Duplication */
> 
2431c2759
<  * Save items in a clan storage room                  -Scryn & Thoric
---
>  * Save items in a clan storage room -Rewritten by Edmond
2433c2761
< void save_clan_storeroom( CHAR_DATA * ch, CLAN_DATA * clan )
---
> void save_storeroom( CHAR_DATA * ch, char *vnum )
2440c2768
<       if ( !clan )
---
>       if ( !vnum )
2442c2770
<               bug( "save_clan_storeroom: Null clan pointer!", 0 );
---
>               bug( "save_storeroom: Null vnum pointer!", 0 );
2448c2776
<               bug( "save_clan_storeroom: Null ch pointer!", 0 );
---
>               bug( "save_storeroom: Null ch pointer!", 0 );
2452c2780,2781
<       sprintf( filename, "%s%s.vault", CLAN_DIR, clan->filename );
---
>       sprintf( filename, "%s%s.vault", VAULT_DIR, vnum );
> 
2455c2784
<               bug( "save_clan_storeroom: fopen", 0 );
---
>               bug( "save_storeroom: fopen", 0 );
2464c2793
<                       fwrite_obj( ch, contents, fp, 0, OS_CARRY );
---
>                       fwrite_obj( ch, contents, fp, 0, OS_VAULT );
2476a2806
>       NOAUCTION_DATA *noauc;
2639a2970
>       {
2661c2992
< 
---
>       }
2662a2994
>       {
2702c3034
<                       if ( newbet < ( auction->bet + 10000 ) )
---
>                       if ( ( newbet < auction->bet ) || ( newbet < ( auction->bet + 10000 ) ) )
2745,2746c3077
< 
<                       sprintf( buf, "A bid of %s gold has been received on %s.\n\r", num_punct( newbet ),
---
>                       sprintf( buf, "A bid of %s gold has been received on %s.", num_punct( newbet ),
2758c3089
< 
---
>       }
2770a3102,3116
>       for ( noauc = first_noauc; noauc; noauc = noauc->next )
>       {
>               if ( obj->pIndexData->vnum == noauc->vnum && !IS_IMMORTAL( ch ) )
>               {
>                       send_to_char( "That item cannot be auctioned.\n\r", ch );
>                       return;
>               }
>       }
> 
>       if ( obj->item_type != obj->pIndexData->item_type )
>       {
>               send_to_char( "This object is too modified to auction.  Please contact an immortal.\n\r", ch );
>               return;
>       }
> 
2776a3123,3134
>       if ( xIS_SET( obj->extra_flags, ITEM_CLANOBJECT ) )
>       {
>               send_to_char( "You can't auction clan items.\n\r", ch );
>               return;
>       }
> 
>       if ( IS_OBJ_STAT( obj, ITEM_PERMANENT ) )
>       {
>               send_to_char( "This item cannot leave your possession.\n\r", ch );
>               return;
>       }
> 
2818a3177
>                       case ITEM_PAPER:
2822d3180
<                       case ITEM_CONTAINER:
2916c3274
<       if ( IS_SET( obj->in_room->room_flags, ROOM_NOFLOOR )
---
>       if ( xIS_SET( obj->in_room->room_flags, ROOM_NOFLOOR )
2952c3310
<               if ( !IS_SET( obj->in_room->room_flags, ROOM_NOFLOOR ) && through )
---
>               if ( !xIS_SET( obj->in_room->room_flags, ROOM_NOFLOOR ) && through )
3133,3138d3490
<       if ( IS_NPC( ch ) )
<       {
<               send_to_char( "Huh?\n\r", ch );
<               return;
<       }
<