diff -i smaug14/src/handler.c smaug18/src/handler.c
8c8
<  * Tricops and Fireblade                                      |             *
---
>  * Tricops, Fireblade, Edmond, Conran                         |             *
140,142d139
<       if ( ch->level >= LEVEL_NEOPHYTE && IS_RETIRED( ch ) )
<               return LEVEL_NEOPHYTE;
< 
345c342,346
<       return str_app[get_curr_str( ch )].carry;
---
>       if ( ch->stance && stance_index[ch->stance].max_weight &&
>               str_app[get_curr_str( ch )].carry > stance_index[ch->stance].max_weight )
>               return stance_index[ch->stance].max_weight;
>       else
>               return str_app[get_curr_str( ch )].carry;
397c398,426
<  */
---
> bool is_name2( const char *str, char *namelist )
> {
>     char name[MAX_INPUT_LENGTH];
> 
>     for ( ; ; )
>     {
>       namelist = one_argument2( namelist, name );
>       if ( name[0] == '\0' )
>           return FALSE;
>       if ( !str_cmp( str, name ) )
>           return TRUE;
>     }
> }
> 
> bool is_name2_prefix( const char *str, char *namelist )
> {
>     char name[MAX_INPUT_LENGTH];
> 
>     for ( ; ; )
>     {
>       namelist = one_argument2( namelist, name );
>       if ( name[0] == '\0' )
>           return FALSE;
>       if ( !str_prefix( str, name ) )
>           return TRUE;
>     }
> }
> */
> 
411a441
> 
425a456
> 
428c459,494
<  */
---
> /
> bool nifty_is_name( char *str, char *namelist )
> {
>     char name[MAX_INPUT_LENGTH];
>     
>     if ( !str || str[0] == '\0' )
>       return FALSE;
>  
>     for ( ; ; )
>     {
>       str = one_argument2( str, name );
>       if ( name[0] == '\0' )
>           return TRUE;
>       if ( !is_name2( name, namelist ) )
>           return FALSE;
>     }
> }
> 
> bool nifty_is_name_prefix( char *str, char *namelist )
> {
>     char name[MAX_INPUT_LENGTH];
>     
>     if ( !str || str[0] == '\0' )
>       return FALSE;
>  
>     for ( ; ; )
>     {
>       str = one_argument2( str, name );
>       if ( name[0] == '\0' )
>           return TRUE;
>       if ( !is_name2_prefix( name, namelist ) )
>           return FALSE;
>     }
> }
> */
> 
431a498
>       bool valid = FALSE;
433c500
<       if ( !str || str[0] == '\0' )
---
>       if ( !str || !str[0] )
435d501
< 
439,442c505,512
<               if ( name[0] == '\0' )
<                       return TRUE;
<               if ( !is_name2( name, namelist ) )
<                       return FALSE;
---
>               if ( *name )
>               {
>                       valid = TRUE;
>                       if ( !is_name2( name, namelist ) )
>                               return FALSE;
>               }
>               if ( !*str )
>                       return valid;
448a519
>       bool valid = FALSE;
450c521
<       if ( !str || str[0] == '\0' )
---
>       if ( !str || !str[0] )
452d522
< 
456,459c526,533
<               if ( name[0] == '\0' )
<                       return TRUE;
<               if ( !is_name2_prefix( name, namelist ) )
<                       return FALSE;
---
>               if ( *name )
>               {
>                       valid = TRUE;
>                       if ( !is_name2_prefix( name, namelist ) )
>                               return FALSE;
>               }
>               if ( !*str )
>                       return valid;
462a537
> 
515a591
>  * Bug fix for strength and sticky weapons fix by Gianfranco Finell -Shaddai 
516a593
> 
519c596,601
<       OBJ_DATA *wield;
---
>       OBJ_DATA *WPos, *DPos, *MPos, *ToDrop;
>       int WWeight, DWeight, MWeight, ToDropW;
> 
>       /*
>        * OBJ_DATA *wield;  
>        */
522a605
>       int location = paf->location % REVERSE_APPLY;
529c612
<               if ( paf->location % REVERSE_APPLY == APPLY_RECURRINGSPELL )
---
>               if ( location == APPLY_RECURRINGSPELL )
548,549c631,637
<               if ( ( paf->location % REVERSE_APPLY ) == APPLY_REMOVESPELL )
<                       return;
---
>               /*
>                * Bug fix submitted by gfinello@mail.karmanet.it --Shaddai 
>                */
>               /*
>                * if ( location == APPLY_REMOVESPELL )
>                * return;
>                */
551c639
<               if ( paf->location % REVERSE_APPLY == APPLY_RECURRINGSPELL )
---
>               if ( location == APPLY_RECURRINGSPELL )
560c648
<               switch ( paf->location % REVERSE_APPLY )
---
>               switch ( location )
577,578d664
<                       case APPLY_WEARSPELL:   /* affect only on wear */
<                               return;
581a668,669
>                       default:
>                               break;
586c674
<       switch ( paf->location % REVERSE_APPLY )
---
>       switch ( location )
589c677
<                       bug( "Affect_modify: unknown location %d.", paf->location );
---
>                       bug( "Affect_modify: unknown location %d. (%s)", paf->location, ch->name );
752c840
<                       if ( IS_SET( ch->in_room->room_flags, ROOM_NO_MAGIC ) || IS_SET( ch->immune, RIS_MAGIC ) || saving_char == ch   /* so save/quit doesn't trigger */
---
>                       if ( xIS_SET( ch->in_room->room_flags, ROOM_NO_MAGIC ) || IS_SET( ch->immune, RIS_MAGIC ) || ( ( paf->location % REVERSE_APPLY ) == APPLY_WEARSPELL && !fAdd ) || ( ( paf->location % REVERSE_APPLY ) == APPLY_REMOVESPELL && !fAdd ) || saving_char == ch      /* so save/quit doesn't trigger */
869,872c957,978
<       if ( !IS_NPC( ch )
<               && saving_char != ch
<               && ( wield = get_eq_char( ch, WEAR_WIELD ) ) != NULL
<               && get_obj_weight( wield ) > str_app[get_curr_str( ch )].wield )
---
>       ToDrop = WPos = get_eq_char( ch, WEAR_WIELD );
>       ToDropW = WWeight = WPos ? get_obj_weight( WPos ) : 0;
>       DWeight = MWeight = 0;
>       DPos = get_eq_char( ch, WEAR_DUAL_WIELD );
>       if ( DPos && ( DWeight = get_obj_weight( DPos ) ) > ToDropW )
>       {
>               ToDrop = DPos;
>               ToDropW = WWeight;
>       }
>       MPos = get_eq_char( ch, WEAR_MISSILE_WIELD );
>       if ( MPos && ( MWeight = get_obj_weight( MPos ) ) > ToDropW )
>       {
>               ToDrop = MPos;
>               ToDropW = MWeight;
>       }
> 
>       if ( !IS_NPC( ch ) && saving_char != ch
>               /*
>                * &&  (wield = get_eq_char(ch, WEAR_WIELD) ) != NULL
>                * &&   get_obj_weight(wield) > str_app[get_curr_str(ch)].wield ) 
>                */
>               && ( WWeight + DWeight + MWeight ) > str_app[get_curr_str( ch )].wield )
876c982
<               if ( depth == 0 )
---
>               if ( depth <= 1 )
879,881c985,987
<                       act( AT_ACTION, "You are too weak to wield $p any longer.", ch, wield, NULL, TO_CHAR );
<                       act( AT_ACTION, "$n stops wielding $p.", ch, wield, NULL, TO_ROOM );
<                       unequip_char( ch, wield );
---
>                       act( AT_ACTION, "You are too weak to wield $p any longer.", ch, ToDrop, NULL, TO_CHAR );
>                       act( AT_ACTION, "$n stops wielding $p.", ch, ToDrop, NULL, TO_ROOM );
>                       unequip_char( ch, ToDrop );
1006a1113,1114
>       int location = paf->location % REVERSE_APPLY;
> 
1008c1116
<       switch ( paf->location % REVERSE_APPLY )
---
>       switch ( location )
1016,1018d1123
<               case APPLY_IMMUNE:
<                       SET_BIT( ch->immune, paf->modifier );
<                       break;
1021a1127,1129
>               case APPLY_IMMUNE:
>                       SET_BIT( ch->immune, paf->modifier );
>                       break;
1052d1159
<       ch->immune = 0;
1053a1161
>       ch->immune = 0;
1118a1227
> 
1160c1269,1270
<               && obj->item_type == ITEM_LIGHT && obj->value[2] != 0 && ch->in_room->light > 0 )
---
>               && obj->item_type == ITEM_LIGHT
>               && ( obj->value[2] != 0 || IS_SET( obj->value[3], PIPE_LIT ) ) && ch->in_room->light > 0 )
1162a1273,1280
> /*
>     if ( ( obj = get_eq_char( ch, WEAR_LIGHT ) ) != NULL
>     &&   obj->item_type == ITEM_LIGHT
>     &&   obj->value[2] != 0
>     &&   ch->in_room->light > 0 )
>       --ch->in_room->light;
> */
> 
1219a1338,1340
>       if ( IS_IMMORTAL( ch ) )
>               rprog_imminfo_trigger( ch );
> 
1224c1345,1346
<       if ( ( obj = get_eq_char( ch, WEAR_LIGHT ) ) != NULL && obj->item_type == ITEM_LIGHT && obj->value[2] != 0 )
---
>       if ( ( obj = get_eq_char( ch, WEAR_LIGHT ) ) != NULL
>               && obj->item_type == ITEM_LIGHT && ( obj->value[2] != 0 || IS_SET( obj->value[3], PIPE_LIT ) ) )
1226a1349,1355
> /*
>     if ( (obj=get_eq_char(ch, WEAR_LIGHT)) != NULL
>     &&   obj->item_type == ITEM_LIGHT
>     &&   obj->value[2] != 0 )
>       ++pRoomIndex->light;
> */
> 
1246c1375
<       if ( !IS_NPC( ch ) && IS_SET( pRoomIndex->room_flags, ROOM_SAFE ) && get_timer( ch, TIMER_SHOVEDRAG ) <= 0 )
---
>       if ( !IS_NPC( ch ) && xIS_SET( pRoomIndex->room_flags, ROOM_SAFE ) && get_timer( ch, TIMER_SHOVEDRAG ) <= 0 )
1254c1383
<       if ( IS_SET( pRoomIndex->room_flags, ROOM_TELEPORT ) && pRoomIndex->tele_delay > 0 )
---
>       if ( xIS_SET( pRoomIndex->room_flags, ROOM_TELEPORT ) && pRoomIndex->tele_delay > 0 )
1467a1597
>               {
1471a1602
>               }
1488c1619
<               bug( "Equip_char: already equipped (%d).", iWear );
---
>               bug( "Equip_char: %s already equipped (%d).", ch->name, iWear );
1507c1638
<               obj_to_room( obj, ch->in_room );
---
>               obj = obj_to_room( obj, ch->in_room );
1526c1657,1658
<       if ( obj->item_type == ITEM_LIGHT && obj->value[2] != 0 && ch->in_room )
---
>       if ( loading_char != ch
>               && obj->item_type == ITEM_LIGHT && ( obj->value[2] != 0 || IS_SET( obj->value[3], PIPE_LIT ) ) && ch->in_room )
1528a1661,1667
> /*
>     if ( loading_char != ch
>     &&   obj->item_type == ITEM_LIGHT
>     &&   obj->value[2] != 0
>     &&   ch->in_room )
>         ++ch->in_room->light;
> */
1539a1679
>       OBJ_DATA *tobj;
1546a1687,1695
>       /*
>        * Bug fix to prevent dual wielding from getting stuck. Fix by Gianfranco
>        * * Finell   -- Shaddai
>        */
>       if ( obj->wear_loc == WEAR_WIELD
>               && ch != saving_char
>               && ch != loading_char && ch != quitting_char && ( tobj = get_eq_char( ch, WEAR_DUAL_WIELD ) ) != NULL )
>               tobj->wear_loc = WEAR_WIELD;
> 
1565c1714,1715
<       if ( obj->item_type == ITEM_LIGHT && obj->value[2] != 0 && ch->in_room && ch->in_room->light > 0 )
---
>       if ( obj->item_type == ITEM_LIGHT
>               && ( obj->value[2] != 0 || IS_SET( obj->value[3], PIPE_LIT ) ) && ch->in_room && ch->in_room->light > 0 )
1566a1717,1723
> /*
>     if ( obj->item_type == ITEM_LIGHT
>     &&   obj->value[2] != 0
>     &&   ch->in_room
>     &&   ch->in_room->light > 0 )
>       --ch->in_room->light;
> */
1574a1732
>  * Changed nMatch++ to below thanks to Stuart Price for catching this -Shaddai
1584c1742
<                       nMatch++;
---
>                       nMatch += obj->count;
1625a1784
>       obj->in_room->weight -= get_obj_weight( obj );
1650a1810,1811
>       pRoomIndex->weight += get_obj_weight( obj );
> 
1702a1864,1866
>       if ( obj_to->in_room )
>               obj_to->in_room->weight += get_obj_weight( obj );
> 
1743a1908,1909
>       if ( obj_from->in_room )
>               obj_from->in_room->weight -= get_obj_weight( obj );
1777d1942
< 
1843c2008
<       OBJ_DATA *obj;
---
>       OBJ_DATA *obj, *obj_prev;
1882,1884d2046
< /* DELETE LATER SHADDAI 
<     if ( fPull && !xIS_SET(ch->act, ACT_POLYMORPHED))
< */
1925,1926c2087,2102
<       while ( ( obj = ch->last_carrying ) != NULL )
<               extract_obj( obj );
---
>       /*
>        * Extract all possessions, unless rebirthing character then
>        * retain "permanent" objects   -Thoric
>        */
>       for ( obj = ch->last_carrying; obj; obj = obj_prev )
>       {
>               obj_prev = obj->prev_content;
>               if ( !fPull && IS_OBJ_STAT( obj, ITEM_PERMANENT ) )
>               {
>                       if ( obj->wear_loc != WEAR_NONE )
>                               unequip_char( ch, obj );
>               }
>               else
>                       extract_obj( obj );
>       }
> 
2647c2823,2826
<       if ( IS_SET( pRoomIndex->room_flags, ROOM_DARK ) )
---
>       if ( xIS_SET( pRoomIndex->room_flags, ROOM_LIGHT ) )
>               return FALSE;
> 
>       if ( xIS_SET( pRoomIndex->room_flags, ROOM_DARK ) )
2674c2853
<       if ( !IS_SET( pRoomIndex->room_flags, ROOM_DND ) )
---
>       if ( !xIS_SET( pRoomIndex->room_flags, ROOM_DND ) )
2705c2884
<       if ( IS_SET( pRoomIndex->room_flags, ROOM_PRIVATE ) && count >= 2 )
---
>       if ( xIS_SET( pRoomIndex->room_flags, ROOM_PRIVATE ) && count >= 2 )
2708c2887
<       if ( IS_SET( pRoomIndex->room_flags, ROOM_SOLITARY ) && count >= 1 )
---
>       if ( xIS_SET( pRoomIndex->room_flags, ROOM_SOLITARY ) && count >= 1 )
2736c2915,2924
<               return FALSE;
---
>       {
>               if ( victim->pcdata->see_me && !IS_NPC( ch ) &&
>                       ( is_name( ch->name, victim->pcdata->see_me )
>                               || ( is_name( "room", victim->pcdata->see_me ) && ( ch->in_room->vnum == victim->in_room->vnum ) )
>                               || ( ch->pcdata->council && is_name( ch->pcdata->council->abbrev, victim->pcdata->see_me ) )
>                               || ( ch->pcdata->clan && is_name( ch->pcdata->clan->abbrev, victim->pcdata->see_me ) ) ) )
>                       return TRUE;
>               else
>                       return FALSE;
>       }
2849c3037
<       if ( !IS_OBJ_STAT( obj, ITEM_NODROP ) )
---
>       if ( !IS_OBJ_STAT( obj, ITEM_NODROP ) && !IS_OBJ_STAT( obj, ITEM_PERMANENT ) )
2882a3071
> 
3038a3228
> 
3118a3309,3310
>       if ( xIS_SET( *vector, AFF_GRAPPLE ) )
>               strcat( buf, " grapple" );
3185a3378,3379
>       if ( xIS_SET( *extra_flags, ITEM_PERMANENT ) )
>               strcat( buf, " permanent" );
3490c3684
<       room->room_flags = 0;
---
>       xCLEAR_BITS( room->room_flags );
3607a3802,3803
>  * Added things to change stat names and make it
>  * harder to get really good names                            -Shaddai
3609a3806,3812
> /*
>  * Ok, so this doesn't really stamp based on names
>  * anymore - but at least this way I don't have to rename
>  * all the function calls!  - Eddy
>  */
> #define RAND_NAMES
> #ifdef RAND_NAMES
3612,3613c3815,3969
<       int x, a, b, c;
< 
---
>       int x, i, a, b, c;
>       int stats = 9;
>       int TOT_STAT = 95;
> 
>       if ( class_table[ch->class]->attr_prime )
>               stats -= 3;
>       if ( class_table[ch->class]->attr_second )
>               stats -= 1;
>       if ( class_table[ch->class]->attr_deficient )
>               stats += 4;
>       for ( x = 0; x < strlen( ch->name ); x++ )
>       {
>               c = ( number_range( 65, 122 ) + x + number_range( 65, 122 ) - number_range( 65, 122 ) + number_range( 65,
>                               122 ) );
>               if ( c < 0 )
>                       c = 14;
>               b = c % 15;
>               if ( x == 0 )
>                       a = ( c % 2 ) + ( ( number_range( 65, 122 ) + x ) % 2 );
>               else
>                       a = ( c % 2 ) + ( ( number_range( 65, 122 ) + x ) % 2 );
>               switch ( b )
>               {
>                       case 0:
>                               ch->perm_str = UMIN( 18, ch->perm_str + a );
>                               stats -= a;
>                               break;
>                       case 1:
>                               ch->perm_dex = UMIN( 18, ch->perm_dex + a );
>                               stats -= a;
>                               break;
>                       case 2:
>                               ch->perm_wis = UMIN( 18, ch->perm_wis + a );
>                               stats -= a;
>                               break;
>                       case 3:
>                               ch->perm_int = UMIN( 18, ch->perm_int + a );
>                               stats -= a;
>                               break;
>                       case 4:
>                               ch->perm_con = UMIN( 18, ch->perm_con + a );
>                               stats -= a;
>                               break;
>                       case 5:
>                               ch->perm_cha = UMIN( 18, ch->perm_cha + a );
>                               stats -= a;
>                               break;
>                       case 6:
>                               ch->perm_lck = UMIN( 18, ch->perm_lck + a );
>                               stats -= a;
>                               break;
>                       case 7:
>                               ch->perm_str = UMAX( 9, ch->perm_str - a );
>                               stats += a;
>                               break;
>                       case 8:
>                               ch->perm_dex = UMAX( 9, ch->perm_dex - a );
>                               stats += a;
>                               break;
>                       case 9:
>                               ch->perm_wis = UMAX( 9, ch->perm_wis - a );
>                               stats += a;
>                               break;
>                       case 10:
>                               ch->perm_int = UMAX( 9, ch->perm_int - a );
>                               stats += a;
>                               break;
>                       case 11:
>                               ch->perm_con = UMAX( 9, ch->perm_con - a );
>                               stats += a;
>                               break;
>                       case 12:
>                               ch->perm_cha = UMAX( 9, ch->perm_cha - a );
>                               stats += a;
>                               break;
>                       case 13:
>                               ch->perm_lck = UMAX( 9, ch->perm_lck - a );
>                               stats += a;
>                               break;
>                       case 14:
>                               break;
>               }
>       }
>       if ( stats > 0 )
>       {
>               i = 0;
>               while ( stats > 0 )
>               {
>                       x = number_range( 65, 122 ) % 7;
>                       if ( i > 8 )
>                               x = number_range( 0, 6 );
>                       switch ( x )
>                       {
>                               case 0:
>                                       ch->perm_str += 1;
>                                       break;
>                               case 1:
>                                       ch->perm_dex += 1;
>                                       break;
>                               case 2:
>                                       ch->perm_wis += 1;
>                                       break;
>                               case 3:
>                                       ch->perm_int += 1;
>                                       break;
>                               case 4:
>                                       ch->perm_con += 1;
>                                       break;
>                               case 5:
>                                       ch->perm_cha += 1;
>                                       break;
>                               case 6:
>                                       ch->perm_lck += 1;
>                                       break;
>                       }
>                       stats -= 1;
>                       i++;
>               }
>       }
>       else if ( stats < 0 )
>       {
>               i = 0;
>               while ( stats < 0 )
>               {
>                       x = number_range( 65, 122 ) % 7;
>                       if ( i > 8 )
>                               i = number_range( 0, 6 );
>                       switch ( x )
>                       {
>                               case 0:
>                                       ch->perm_str -= 1;
>                                       break;
>                               case 1:
>                                       ch->perm_dex -= 1;
>                                       break;
>                               case 2:
>                                       ch->perm_wis -= 1;
>                                       break;
>                               case 3:
>                                       ch->perm_int -= 1;
>                                       break;
>                               case 4:
>                                       ch->perm_con -= 1;
>                                       break;
>                               case 5:
>                                       ch->perm_cha -= 1;
>                                       break;
>                               case 6:
>                                       ch->perm_lck -= 1;
>                                       break;
>                       }
>                       stats += 1;
>                       i++;
>               }
>       }
3627a3984
>       x = ch->perm_str + ch->perm_dex + ch->perm_wis + ch->perm_int + ch->perm_con + ch->perm_cha + ch->perm_lck;
3628a3986,4099
>       while ( x != TOT_STAT )
>       {
>               i = number_range( 0, 6 );
>               switch ( i )
>               {
>                       case 0:
>                               if ( x < TOT_STAT && ch->perm_str < 18 )
>                               {
>                                       ch->perm_str++;
>                                       x++;
>                                       break;
>                               }
>                               else if ( x > TOT_STAT && ch->perm_str > 9 )
>                               {
>                                       ch->perm_str--;
>                                       x--;
>                                       break;
>                               }
>                       case 1:
>                               if ( x < TOT_STAT && ch->perm_wis < 18 )
>                               {
>                                       ch->perm_wis++;
>                                       x++;
>                                       break;
>                               }
>                               else if ( x > TOT_STAT && ch->perm_wis > 9 )
>                               {
>                                       ch->perm_wis--;
>                                       x--;
>                                       break;
>                               }
>                       case 2:
>                               if ( x < TOT_STAT && ch->perm_dex < 18 )
>                               {
>                                       ch->perm_dex++;
>                                       x++;
>                                       break;
>                               }
>                               else if ( x > TOT_STAT && ch->perm_dex > 9 )
>                               {
>                                       ch->perm_dex--;
>                                       x--;
>                                       break;
>                               }
>                       case 3:
>                               if ( x < TOT_STAT && ch->perm_int < 18 )
>                               {
>                                       ch->perm_int++;
>                                       x++;
>                                       break;
>                               }
>                               else if ( x > TOT_STAT && ch->perm_int > 9 )
>                               {
>                                       ch->perm_int--;
>                                       x--;
>                                       break;
>                               }
>                       case 4:
>                               if ( x < TOT_STAT && ch->perm_con < 18 )
>                               {
>                                       ch->perm_con++;
>                                       x++;
>                                       break;
>                               }
>                               else if ( x > TOT_STAT && ch->perm_con > 9 )
>                               {
>                                       ch->perm_con--;
>                                       x--;
>                                       break;
>                               }
>                       case 5:
>                               if ( x < TOT_STAT && ch->perm_cha < 18 )
>                               {
>                                       ch->perm_cha++;
>                                       x++;
>                                       break;
>                               }
>                               else if ( x > TOT_STAT && ch->perm_cha > 9 )
>                               {
>                                       ch->perm_cha--;
>                                       x--;
>                                       break;
>                               }
>                       case 6:
>                               if ( x < TOT_STAT && ch->perm_lck < 18 )
>                               {
>                                       ch->perm_lck++;
>                                       x++;
>                                       break;
>                               }
>                               else if ( x > TOT_STAT && ch->perm_lck > 9 )
>                               {
>                                       ch->perm_lck--;
>                                       x--;
>                                       break;
>                               }
>                       default:
>                               break;
>               }
>       }
> }
> #else
> void name_stamp_stats( CHAR_DATA * ch )
> {
>       int x, i, a, b, c;
>       int stats = 9;
>       int TOT_STAT = 100;
> 
>       if ( class_table[ch->class]->attr_prime )
>               stats -= 3;
>       if ( class_table[ch->class]->attr_second )
>               stats -= 1;
>       if ( class_table[ch->class]->attr_deficient )
>               stats += 4;
3631,3633c4102,4114
<               c = ch->name[x] + x;
<               b = c % 14;
<               a = ( c % 1 ) + 1;
---
>               if ( x == 0 )
>                       c = ch->name[0];
>               else if ( x == ( strlen( ch->name ) - 1 ) )
>                       c = ( ch->name[0] + ch->name[strlen( ch->name ) - 1] - ch->name[strlen( ch->name ) / 2] );
>               else
>                       c = ( ch->name[x] + x + ch->name[x - 1] - ch->name[x / 2] + ch->name[x + 1] );
>               if ( c < 0 )
>                       c = 14;
>               b = c % 15;
>               if ( x == 0 )
>                       a = ( c % 2 ) + ( ( ch->name[x + 1] + x ) % 2 );
>               else
>                       a = ( c % 2 ) + ( ( ch->name[x - 1] + x ) % 2 );
3637a4119
>                               stats -= a;
3640a4123
>                               stats -= a;
3643a4127
>                               stats -= a;
3646a4131
>                               stats -= a;
3649a4135
>                               stats -= a;
3652a4139
>                               stats -= a;
3655a4143
>                               stats -= a;
3658a4147
>                               stats += a;
3661a4151
>                               stats += a;
3664a4155
>                               stats += a;
3667a4159
>                               stats += a;
3670a4163
>                               stats += a;
3673a4167
>                               stats += a;
3676a4171,4173
>                               stats += a;
>                               break;
>                       case 14:
3680c4177,4265
< }
---
>       if ( stats > 0 )
>       {
>               i = 0;
>               while ( stats > 0 )
>               {
>                       x = number_range( 0, ( strlen( ch->name ) - 1 ) );
>                       x = ch->name[x] % 7;
>                       if ( i > 8 )
>                               x = number_range( 0, 6 );
>                       switch ( x )
>                       {
>                               case 0:
>                                       ch->perm_str += 1;
>                                       break;
>                               case 1:
>                                       ch->perm_dex += 1;
>                                       break;
>                               case 2:
>                                       ch->perm_wis += 1;
>                                       break;
>                               case 3:
>                                       ch->perm_int += 1;
>                                       break;
>                               case 4:
>                                       ch->perm_con += 1;
>                                       break;
>                               case 5:
>                                       ch->perm_cha += 1;
>                                       break;
>                               case 6:
>                                       ch->perm_lck += 1;
>                                       break;
>                       }
>                       stats -= 1;
>                       i++;
>               }
>       }
>       else if ( stats < 0 )
>       {
>               i = 0;
>               while ( stats < 0 )
>               {
>                       x = number_range( 0, ( strlen( ch->name ) - 1 ) );
>                       x = ch->name[x] % 7;
>                       if ( i > 8 )
>                               i = number_range( 0, 6 );
>                       switch ( x )
>                       {
>                               case 0:
>                                       ch->perm_str -= 1;
>                                       break;
>                               case 1:
>                                       ch->perm_dex -= 1;
>                                       break;
>                               case 2:
>                                       ch->perm_wis -= 1;
>                                       break;
>                               case 3:
>                                       ch->perm_int -= 1;
>                                       break;
>                               case 4:
>                                       ch->perm_con -= 1;
>                                       break;
>                               case 5:
>                                       ch->perm_cha -= 1;
>                                       break;
>                               case 6:
>                                       ch->perm_lck -= 1;
>                                       break;
>                       }
>                       stats += 1;
>                       i++;
>               }
>       }
>       ch->perm_str = UMIN( 18, ch->perm_str );
>       ch->perm_wis = UMIN( 18, ch->perm_wis );
>       ch->perm_dex = UMIN( 18, ch->perm_dex );
>       ch->perm_int = UMIN( 18, ch->perm_int );
>       ch->perm_con = UMIN( 18, ch->perm_con );
>       ch->perm_cha = UMIN( 18, ch->perm_cha );
>       ch->perm_lck = UMIN( 18, ch->perm_lck );
>       ch->perm_str = UMAX( 9, ch->perm_str );
>       ch->perm_wis = UMAX( 9, ch->perm_wis );
>       ch->perm_dex = UMAX( 9, ch->perm_dex );
>       ch->perm_int = UMAX( 9, ch->perm_int );
>       ch->perm_con = UMAX( 9, ch->perm_con );
>       ch->perm_cha = UMAX( 9, ch->perm_cha );
>       ch->perm_lck = UMAX( 9, ch->perm_lck );
>       x = ch->perm_str + ch->perm_dex + ch->perm_wis + ch->perm_int + ch->perm_con + ch->perm_cha + ch->perm_lck;
3681a4267,4368
>       while ( x != TOT_STAT )
>       {
>               i = number_range( 0, 6 );
>               switch ( i )
>               {
>                       case 0:
>                               if ( x < TOT_STAT && ch->perm_str < 18 )
>                               {
>                                       ch->perm_str++;
>                                       x++;
>                                       break;
>                               }
>                               else if ( x > TOT_STAT && ch->perm_str > 9 )
>                               {
>                                       ch->perm_str--;
>                                       x--;
>                                       break;
>                               }
>                       case 1:
>                               if ( x < TOT_STAT && ch->perm_wis < 18 )
>                               {
>                                       ch->perm_wis++;
>                                       x++;
>                                       break;
>                               }
>                               else if ( x > TOT_STAT && ch->perm_wis > 9 )
>                               {
>                                       ch->perm_wis--;
>                                       x--;
>                                       break;
>                               }
>                       case 2:
>                               if ( x < TOT_STAT && ch->perm_dex < 18 )
>                               {
>                                       ch->perm_dex++;
>                                       x++;
>                                       break;
>                               }
>                               else if ( x > TOT_STAT && ch->perm_dex > 9 )
>                               {
>                                       ch->perm_dex--;
>                                       x--;
>                                       break;
>                               }
>                       case 3:
>                               if ( x < TOT_STAT && ch->perm_int < 18 )
>                               {
>                                       ch->perm_int++;
>                                       x++;
>                                       break;
>                               }
>                               else if ( x > TOT_STAT && ch->perm_int > 9 )
>                               {
>                                       ch->perm_int--;
>                                       x--;
>                                       break;
>                               }
>                       case 4:
>                               if ( x < TOT_STAT && ch->perm_con < 18 )
>                               {
>                                       ch->perm_con++;
>                                       x++;
>                                       break;
>                               }
>                               else if ( x > TOT_STAT && ch->perm_con > 9 )
>                               {
>                                       ch->perm_con--;
>                                       x--;
>                                       break;
>                               }
>                       case 5:
>                               if ( x < TOT_STAT && ch->perm_cha < 18 )
>                               {
>                                       ch->perm_cha++;
>                                       x++;
>                                       break;
>                               }
>                               else if ( x > TOT_STAT && ch->perm_cha > 9 )
>                               {
>                                       ch->perm_cha--;
>                                       x--;
>                                       break;
>                               }
>                       case 6:
>                               if ( x < TOT_STAT && ch->perm_lck < 18 )
>                               {
>                                       ch->perm_lck++;
>                                       x++;
>                                       break;
>                               }
>                               else if ( x > TOT_STAT && ch->perm_lck > 9 )
>                               {
>                                       ch->perm_lck--;
>                                       x--;
>                                       break;
>                               }
>                       default:
>                               break;
>               }
>       }
> }
> #endif
3843a4531
>               STRFREE( obj->action_desc );    /* Caught by tim@mkl.com */
4006,4011c4694,4699
<               || IS_SET( victim->in_room->room_flags, ROOM_PRIVATE )
<               || IS_SET( victim->in_room->room_flags, ROOM_SOLITARY )
<               || IS_SET( victim->in_room->room_flags, ROOM_NO_ASTRAL )
<               || IS_SET( victim->in_room->room_flags, ROOM_DEATH )
<               || IS_SET( victim->in_room->room_flags, ROOM_PROTOTYPE )
<               || IS_SET( ch->in_room->room_flags, ROOM_NO_RECALL )
---
>               || xIS_SET( victim->in_room->room_flags, ROOM_PRIVATE )
>               || xIS_SET( victim->in_room->room_flags, ROOM_SOLITARY )
>               || xIS_SET( victim->in_room->room_flags, ROOM_NO_ASTRAL )
>               || xIS_SET( victim->in_room->room_flags, ROOM_DEATH )
>               || xIS_SET( victim->in_room->room_flags, ROOM_PROTOTYPE )
>               || xIS_SET( ch->in_room->room_flags, ROOM_NO_RECALL )
4028c4716,4722
<       else if ( ch->level >= tarea->low_hard_range && ch->level <= tarea->hi_hard_range )
---
>       else
> /*
>   if ( ch->pcdata->council
>   &&   str_cmp( ch->pcdata->council->name, "Newbie Council" ) )
>     return TRUE;
> */
>       if ( ch->level >= tarea->low_hard_range && ch->level <= tarea->hi_hard_range )
4120a4815
>       clone->owner = QUICKLINK( obj->owner );
4166c4861,4886
<               && QUICKMATCH( obj1->name, obj2->name ) && QUICKMATCH( obj1->short_descr, obj2->short_descr ) && QUICKMATCH( obj1->description, obj2->description ) && QUICKMATCH( obj1->action_desc, obj2->action_desc ) && obj1->item_type == obj2->item_type && xSAME_BITS( obj1->extra_flags, obj2->extra_flags ) && obj1->magic_flags == obj2->magic_flags && obj1->wear_flags == obj2->wear_flags && obj1->wear_loc == obj2->wear_loc && obj1->weight == obj2->weight && obj1->cost == obj2->cost && obj1->level == obj2->level && obj1->timer == obj2->timer && obj1->value[0] == obj2->value[0] && obj1->value[1] == obj2->value[1] && obj1->value[2] == obj2->value[2] && obj1->value[3] == obj2->value[3] && obj1->value[4] == obj2->value[4] && obj1->value[5] == obj2->value[5] && !obj1->first_extradesc && !obj2->first_extradesc && !obj1->first_affect && !obj2->first_affect && !obj1->first_content && !obj2->first_content && obj1->count + obj2->count > 0 )        /* prevent count overflow */
---
>               && QUICKMATCH( obj1->name, obj2->name )
>               && QUICKMATCH( obj1->short_descr, obj2->short_descr )
>               && QUICKMATCH( obj1->description, obj2->description )
>               && QUICKMATCH( obj1->action_desc, obj2->action_desc )
>               && obj1->item_type == obj2->item_type
>               && xSAME_BITS( obj1->extra_flags, obj2->extra_flags )
>               && obj1->magic_flags == obj2->magic_flags
>               && obj1->wear_flags == obj2->wear_flags
>               && obj1->wear_loc == obj2->wear_loc
>               && obj1->weight == obj2->weight
>               && obj1->cost == obj2->cost
>               && obj1->level == obj2->level
>               && obj1->timer == obj2->timer
>               && obj1->value[0] == obj2->value[0]
>               && obj1->value[1] == obj2->value[1]
>               && obj1->value[2] == obj2->value[2]
>               && obj1->value[3] == obj2->value[3]
>               && obj1->value[4] == obj2->value[4]
>               && obj1->value[5] == obj2->value[5]
>               && !obj1->first_extradesc && !obj2->first_extradesc
>               && !obj1->first_affect && !obj2->first_affect
>               && !obj1->first_content && !obj2->first_content
>               && QUICKMATCH( obj1->owner, obj2->owner ) && obj1->count + obj2->count <= SHRT_MAX )
> /*
>     &&         obj1->count + obj2->count > 0 ) // prevent count overflow
> */
4251c4971,4974
<                               && get_real_obj_weight( otmp ) + get_real_obj_weight( destobj ) > destobj->value[0] )
---
>                               && ( get_real_obj_weight( otmp ) + get_real_obj_weight( destobj ) > destobj->value[0]
>                                       || ( destobj->in_room
>                                               && destobj->in_room->max_weight
>                                               && destobj->in_room->max_weight < get_real_obj_weight( otmp ) + destobj->in_room->weight ) ) )
4263a4987,4988
>                       if ( destroom->max_weight && destroom->max_weight < get_real_obj_weight( otmp ) + destroom->weight )
>                               continue;