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;