diff -i smaug14/src/grub.c smaug18/src/grub.c 8c8 < * Tricops and Fireblade | * --- > * Tricops, Fireblade, Edmond, Conran | * 20a21,24 > extern OBJ_INDEX_DATA *obj_index_hash[MAX_KEY_HASH]; > extern MOB_INDEX_DATA *mob_index_hash[MAX_KEY_HASH]; > extern ROOM_INDEX_DATA *room_index_hash[MAX_KEY_HASH]; > 181c185 < int lo_vnum = 1, hi_vnum = 32767; --- > int lo_vnum = 1, hi_vnum = MAX_VNUM; 183c187 < int i, disp_cou = 0, disp_limit; --- > int hash, disp_cou = 0, disp_limit; 207,208c211,212 < lo_vnum = URANGE( 1, atoi( arg2 ), 32767 ); < hi_vnum = URANGE( 1, atoi( arg3 ), 32767 ); --- > lo_vnum = URANGE( 1, atoi( arg2 ), MAX_VNUM ); > hi_vnum = URANGE( 1, atoi( arg3 ), MAX_VNUM ); 222,224c226,227 < for ( i = lo_vnum; i <= hi_vnum; i++ ) < { < if ( ( pObj = get_obj_index( i ) ) && ( pProg = pObj->mudprogs ) ) --- > for ( hash = 0; hash < MAX_KEY_HASH; hash++ ) > for ( pObj = obj_index_hash[hash]; pObj; pObj = pObj->next ) 226,231c229,240 < tot_vnum = 0; < for ( ; pProg; pProg = pProg->next ) < tot_vnum += str_count( pProg->comlist, argument ); < tot_hits += tot_vnum; < if ( tot_vnum && ++disp_cou <= disp_limit ) < pager_printf( ch, "%5d %5d %5d\n\r", disp_cou, i, tot_vnum ); --- > if ( pObj->vnum < lo_vnum || pObj->vnum > hi_vnum ) > continue; > > if ( pObj && ( pProg = pObj->mudprogs ) ) > { > tot_vnum = 0; > for ( ; pProg; pProg = pProg->next ) > tot_vnum += str_count( pProg->comlist, argument ); > tot_hits += tot_vnum; > if ( tot_vnum && ++disp_cou <= disp_limit ) > pager_printf( ch, "%5d %5d %5d\n\r", disp_cou, pObj->vnum, tot_vnum ); > } 233d241 < } 264a273 > 272c281 < int lo_vnum = 1, hi_vnum = 32767; --- > int lo_vnum = 1, hi_vnum = MAX_VNUM; 274c283,284 < int i, disp_cou = 0, disp_limit; --- > int disp_cou = 0, disp_limit; > int hash; 298,299c308,309 < lo_vnum = URANGE( 1, atoi( arg2 ), 32767 ); < hi_vnum = URANGE( 1, atoi( arg3 ), 32767 ); --- > lo_vnum = URANGE( 1, atoi( arg2 ), MAX_VNUM ); > hi_vnum = URANGE( 1, atoi( arg3 ), MAX_VNUM ); 313,315c323,324 < for ( i = lo_vnum; i <= hi_vnum; i++ ) < { < if ( ( pMob = get_mob_index( i ) ) && ( pProg = pMob->mudprogs ) ) --- > for ( hash = 0; hash < MAX_KEY_HASH; hash++ ) > for ( pMob = mob_index_hash[hash]; pMob; pMob = pMob->next ) 317,322c326,337 < tot_vnum = 0; < for ( ; pProg; pProg = pProg->next ) < tot_vnum += str_count( pProg->comlist, argument ); < tot_hits += tot_vnum; < if ( tot_vnum && ++disp_cou <= disp_limit ) < pager_printf( ch, "%5d %5d %5d\n\r", disp_cou, i, tot_vnum ); --- > if ( pMob->vnum < lo_vnum || pMob->vnum > hi_vnum ) > continue; > > if ( pMob && ( pProg = pMob->mudprogs ) ) > { > tot_vnum = 0; > for ( ; pProg; pProg = pProg->next ) > tot_vnum += str_count( pProg->comlist, argument ); > tot_hits += tot_vnum; > if ( tot_vnum && ++disp_cou <= disp_limit ) > pager_printf( ch, "%5d %5d %5d\n\r", disp_cou, pMob->vnum, tot_vnum ); > } 324d338 < } 363c377 < int lo_vnum = 1, hi_vnum = 32767; --- > int lo_vnum = 1, hi_vnum = MAX_VNUM; 365c379 < int i, disp_cou = 0, disp_limit; --- > int hash, disp_cou = 0, disp_limit; 389,390c403,404 < lo_vnum = URANGE( 1, atoi( arg2 ), 32767 ); < hi_vnum = URANGE( 1, atoi( arg3 ), 32767 ); --- > lo_vnum = URANGE( 1, atoi( arg2 ), MAX_VNUM ); > hi_vnum = URANGE( 1, atoi( arg3 ), MAX_VNUM ); 407,409c421,422 < for ( i = lo_vnum; i <= hi_vnum; i++ ) < { < if ( ( pRoom = get_room_index( i ) ) && ( pProg = pRoom->mudprogs ) ) --- > for ( hash = 0; hash < MAX_KEY_HASH; hash++ ) > for ( pRoom = room_index_hash[hash]; pRoom; pRoom = pRoom->next ) 411,416c424,435 < tot_vnum = 0; < for ( ; pProg; pProg = pProg->next ) < tot_vnum += str_count( pProg->comlist, argument ); < tot_hits += tot_vnum; < if ( tot_vnum && ++disp_cou <= disp_limit ) < pager_printf( ch, "%5d %5d %5d\n\r", disp_cou, i, tot_vnum ); --- > if ( pRoom->vnum < lo_vnum || pRoom->vnum > hi_vnum ) > continue; > > if ( pRoom && ( pProg = pRoom->mudprogs ) ) > { > tot_vnum = 0; > for ( ; pProg; pProg = pProg->next ) > tot_vnum += str_count( pProg->comlist, argument ); > tot_hits += tot_vnum; > if ( tot_vnum && ++disp_cou <= disp_limit ) > pager_printf( ch, "%5d %5d %5d\n\r", disp_cou, pRoom->vnum, tot_vnum ); > } 418d436 < } 499,501d516 < /* < * Displays the help screen for the "rgrub" command < */ 505,507c520,521 < send_to_char( "rgrub st n lo hi - sector type search.\n\r" < " list room vnums between lo and hi that match n.\n\r", ch ); < send_to_char( " e.g. rgrub st 6 901 969 - list all rooms in Olympus\n\r" " that are sectortype 6.\n\r", ch ); --- > send_to_char( "rgrub <type> n lo hi - type search.\n\r list room vnums between lo and hi that match n on <type> of search.\n\r", ch ); > send_to_char( " e.g. rgrub st 6 901 969 - list all rooms in Olympus\n\r that are sectortype 6.\n\r", ch ); 508a523,524 > send_to_char( " e.g. rgrub f nomob 901 969 - list all rooms in Olympus\n\rthat are flagged nomon.\n\r", ch ); > send_to_char( " e.g. rgrub f nomob - list all rooms flagged nomob.\n\r", ch ); 512a529,534 > /* modified by Edmond to support room flag searches 000820 */ > > #define RGRUB_MAX_SIZE 5000 > ROOM_INDEX_DATA *pRoom; > int x, lo, hi, hit_cou, cou, vnum[RGRUB_MAX_SIZE]; > 524c546 < if ( !str_cmp( arg1, "st" ) ) --- > if ( !arg2 ) /* empty arg gets help scrn */ 526,528c548,550 < #define RGRUB_ST_MAX_SIZE 5000 < ROOM_INDEX_DATA *pRoom; < int match, lo, hi, hit_cou, cou, vnum[RGRUB_ST_MAX_SIZE]; --- > rgrub_help( ch ); > return; > } 530,536c552,554 < if ( !*arg2 ) /* empty arg gets help scrn */ < { < rgrub_help( ch ); < return; < } < else < match = atoi( arg2 ); --- > hit_cou = 0; > lo = ( *arg3 ) ? atoi( arg3 ) : 0; > hi = ( *arg4 ) ? atoi( arg4 ) : MAX_VNUM; 538,540c556,561 < hit_cou = 0; /* number of vnums found */ < lo = ( *arg3 ) ? atoi( arg3 ) : 0; < hi = ( *arg4 ) ? atoi( arg4 ) : 32767; --- > > if ( !str_cmp( arg1, "st" ) ) > { > int match; > > match = atoi( arg2 ); 550c571 < if ( match == pRoom->sector_type && hit_cou < RGRUB_ST_MAX_SIZE ) --- > if ( match == pRoom->sector_type && hit_cou < RGRUB_MAX_SIZE ) 557c578 < ch_printf( ch, "%5d %6d\n\r", cou + 1, vnum[cou] ); /* display vnums */ --- > ch_printf( ch, "%6d\n\r", vnum[cou] ); /* display vnums */ 560c581,582 < else --- > > if ( !str_cmp( arg1, "f" ) ) 562c584,604 < rgrub_help( ch ); --- > > ch_printf( ch, "\n\rRoom Vnums\n\r" ); > for ( cou = 0; cou < MAX_KEY_HASH; cou++ ) > { > if ( room_index_hash[cou] ) > for ( pRoom = room_index_hash[cou]; pRoom; pRoom = pRoom->next ) > { > if ( pRoom->vnum >= lo && pRoom->vnum <= hi ) > { > for ( x = 0; x < MAX_ROOM_FLAG; x++ ) > if ( xIS_SET( pRoom->room_flags, x ) ) > { > if ( !str_cmp( arg2, r_flags[x] ) && hit_cou < RGRUB_MAX_SIZE ) > vnum[hit_cou++] = pRoom->vnum; > } > } > } > } > qsort( vnum, hit_cou, sizeof( int ), rgrub_int_comp ); /* sort vnums */ > for ( cou = 0; cou < hit_cou; cou++ ) > ch_printf( ch, "%6d\n\r", vnum[cou] ); /* display vnums */ 564a607,610 > > rgrub_help( ch ); > return; > 566a613 > 1700,1701c1747,1748 < for ( cou = 1; cou <= GR_NUM_FIELDS; cou++ ) /* check field name */ < if ( !str_prefix( gr_fd[cou - 1].nam, arg ) ) --- > for ( cou = 0; cou < GR_NUM_FIELDS; cou++ ) /* check field name */ > if ( !str_prefix( gr_fd[cou].nam, arg ) ) 1703,1704c1750,1751 < arg += strlen( gr_fd[cou - 1].nam ); /* advance to operator */ < gr_op[*op_num].field = cou - 1; /* store field name */ --- > arg += strlen( gr_fd[cou].nam ); /* advance to operator */ > gr_op[*op_num].field = cou; /* store field name */ 1730,1731c1777,1778 < " ", "Gui", "DS ", "MS ", "RB ", "AR ", "Bru", "Las", "Nos", "Tre", < "Ven", "Inc", "Baa", "Rol" --- > " ", "Gui", "DS ", "MS ", "RB ", "AR ", "Sco", "Sur", "Nom", "Oph", > "Ven", "Inc", "Baa", "Rol", "Asc", "Dae", "Pho", "Ill", "Mer", "Ana" 1733c1780 < char council[][4] = { " ", "CoE", "MC ", "NC ", "Pro", "PK ", "QC ", "Neo", "Cod", "AC ", --- > char council[][4] = { " ", "CoE", "MC ", "NC ", "VC ", "PK ", "QC ", "Neo", "Cod", "CoB", 1833a1881,1882 > * > * Redone by Edmond, September of 2000 -- Blodkai 1840a1890,1891 > char arg2[MAX_STRING_LENGTH]; > char buf[MAX_STRING_LENGTH]; 1846a1898 > argument = one_argument( argument, arg2 ); 1848c1900 < if ( !*arg1 ) --- > if ( !*arg1 || ( !is_number( arg1 ) && str_cmp( arg1, "layer" ) ) ) 1849a1902 > set_char_color( AT_IMMORT, ch ); 1851c1904,1934 < send_to_char( "showlayers n - display maximum of n lines.\n\r", ch ); --- > send_to_char( "showlayers n <w> - display maximum of n lines <with w wear location.>\n\r", ch ); > send_to_char( "showlayers layer ## - Show all of the sublayers a particular layer number uses. \n\r", ch ); > send_to_char( " Example: showlayers 30 - Show 30 layerable items.\n\r", ch ); > send_to_char( " showlayers 30 arms - Show 30 items layerable on arms wearloc\n\r", ch ); > send_to_char( " showlayers layer 126 - Displays each of the sublayers to 126\n\r", ch ); > return; > } > > if ( !str_cmp( arg1, "layer" ) ) > { > int match; > int i = 1; > int argnum; > > argnum = atoi( arg2 ); > if ( argnum < 1 || argnum > 128 ) > { > send_to_char( "Invalid Layer Number\n\r", ch ); > return; > } > > ch_printf_color( ch, " >he layer number %d uses the following sub layers:\n\r", argnum ); > ch_printf_color( ch, " &Y--------------------------------------\n\r" ); > for ( match = 0; match < 8; match++ ) > { > i = ( match == 0 ? 1 : i * 2 ); > > if IS_SET > ( ( 1 << match ), argnum ) ch_printf_color( ch, " &Y%4d", i ); > } > ch_printf_color( ch, "\n\r" ); 1856c1939,1940 < pager_printf( ch, " Vnum Wear Layer Description \n\r" ); --- > > send_to_pager_color( " &B# &cVnum &WWear &YLayer &CDescription\n\r", ch ); 1857a1942 > { 1858a1944 > { 1859a1946 > { 1862,1864c1949,1955 < if ( ++cou <= display_limit ) < pager_printf( ch, "%4d %5d %9d %5d %s\n\r", < cou, pObj->vnum, pObj->wear_flags, pObj->layers, pObj->short_descr ); --- > if ( arg2[0] == '\0' || IS_SET( pObj->wear_flags, 1 << get_wflag( arg2 ) ) ) > if ( ++cou <= display_limit ) > { > sprintf( buf, "&B%4d &c%5d &W%9d &Y%5d &C%s\n\r", > cou, pObj->vnum, pObj->wear_flags, pObj->layers, pObj->short_descr ); > send_to_pager_color( buf, ch ); > } 1865a1957,1962 > } > } > } > if ( !cou ) > send_to_pager_color( " &RNo Matches\n\r", ch ); > return; 1916a2014,2022 > void diag_nivek_obj( CHAR_DATA * ch, OBJ_DATA * obj ) > { > pager_printf( ch, "***obj=%s\n\r", obj->name ); > if ( obj->prev_content ) > diag_nivek_obj( ch, obj->prev_content ); > if ( obj->first_content ) > diag_nivek_obj( ch, obj->last_content ); > } > 1990a2097 > int ctimes; 2004a2112,2308 > if ( !str_cmp( arg1, "compass" ) ) > { > CHAR_DATA *victim; > DESCRIPTOR_DATA *d; > int compcount = 0; > > for ( d = first_descriptor; d; d = d->next ) > { > if ( ( d->connected == CON_PLAYING || d->connected == CON_EDITING ) > && ( victim = d->character ) != NULL && !IS_NPC( victim ) ) > { > if ( xIS_SET( victim->act, PLR_COMPASS ) ) > compcount++; > } > } > ch_printf( ch, "%d compass users.\n\r", compcount ); > return; > } > > > if ( !str_cmp( arg1, "clones" ) ) > { > DESCRIPTOR_DATA *dsrc, *ddst, *dsrc_next, *ddst_next; > DESCRIPTOR_DATA *dlistf, *dlistl; > sh_int clone_count; > > set_pager_color( AT_PLAIN, ch ); > pager_printf( ch, " %-12.12s | %-12.12s | %-s\n\r", "characters", "user", "host" ); > pager_printf( ch, "--------------+--------------+---------------------------------------------\n\r" ); > > dlistf = dlistl = NULL; > > for ( dsrc = first_descriptor; dsrc; dsrc = dsrc_next ) > { > if ( ( dsrc->character && !can_see( ch, dsrc->character ) ) || !dsrc->user || !dsrc->host ) > { > dsrc_next = dsrc->next; > continue; > } > > pager_printf( ch, " %-12.12s |", > dsrc->original ? dsrc->original->name : ( dsrc->character ? dsrc->character->name : "(No name)" ) ); > clone_count = 1; > > for ( ddst = first_descriptor; ddst; ddst = ddst_next ) > { > ddst_next = ddst->next; > > if ( dsrc == ddst ) > continue; > if ( ( ddst->character && !can_see( ch, dsrc->character ) ) || !ddst->user || !ddst->host ) > continue; > > if ( !str_cmp( dsrc->user, ddst->user ) && !str_cmp( dsrc->host, ddst->host ) ) > { > UNLINK( ddst, first_descriptor, last_descriptor, next, prev ); > LINK( ddst, dlistf, dlistl, next, prev ); > pager_printf( ch, " |\n\r %-12.12s |", > ddst->original ? ddst->original->name : > ( ddst->character ? ddst->character->name : "(No name)" ) ); > clone_count++; > } > } > > pager_printf( ch, " %-12.12s | %s (%d clone%s)\n\r", > dsrc->user, dsrc->host, clone_count, clone_count > 1 ? "s" : "" ); > > dsrc_next = dsrc->next; > > UNLINK( dsrc, first_descriptor, last_descriptor, next, prev ); > LINK( dsrc, dlistf, dlistl, next, prev ); > } > > > for ( dsrc = dlistf; dsrc; dsrc = dsrc_next ) > { > dsrc_next = dsrc->next; > UNLINK( dsrc, dlistf, dlistl, next, prev ); > LINK( dsrc, first_descriptor, last_descriptor, next, prev ); > } > return; > } > > if ( !str_cmp( arg1, "mcount" ) ) > { > MOB_INDEX_DATA *pMob; > int mcount; > int hash; > int totcount = 0; > > if ( arg2[0] == '\0' ) > { > send_to_pager_color( "\n\rSyntax: mcount <minimum amount>\n\r", ch ); > return; > } > > mcount = atoi( arg2 ); > > pager_printf( ch, "\n\rMobile count:\n\r" ); > for ( hash = 0; hash < MAX_KEY_HASH; hash++ ) > for ( pMob = mob_index_hash[hash]; pMob; pMob = pMob->next ) > { > if ( pMob->count < mcount ) > continue; > else if ( pMob->count >= mcount ) > { > ch_printf( ch, "%5d\t\t%d\t\t%s\n\r", pMob->count, pMob->vnum, pMob->player_name ); > totcount++; > } > } > pager_printf( ch, "%d found.\n\r", totcount ); > return; > } > > if ( !str_cmp( arg1, "dice" ) ) > { > ch_printf( ch, "%d %d\n\r", dice( level, 1 ), dice( level, 6 ) ); > return; > } > > if ( !str_cmp( arg1, "color1" ) ) > { > send_to_char( "Send_to_char_color with codes\n\r", ch ); > send_to_char_color( "&B!&B!&B!&B!&B!&B!&B!&B!&B!&B!&B!&B!&B!&B!&B!&B\n\r", ch ); > return; > } > > if ( !str_cmp( arg1, "color2" ) ) > { > send_to_char( "Send_to_char with codes\n\r", ch ); > send_to_char( "&B!&B!&B!&B!&B!&B!&B!&B!&B!&B!&B!&B!&B!&B!&B!&B\n\r", ch ); > return; > } > if ( !str_cmp( arg1, "color3" ) ) > { > send_to_char( "Send_to_char with no codes\n\r", ch ); > send_to_char( "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n\r", ch ); > return; > } > > if ( !str_cmp( arg1, "color4" ) ) > { > send_to_char( "Send_to_char_color with no codes\n\r", ch ); > send_to_char_color( "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n\r", ch ); > return; > } > > if ( !str_cmp( arg1, "color5" ) ) > { > send_to_char( "Set_char_color and send_to_char_color in for\n\r", ch ); > for ( ctimes = 0; ctimes < 15; ctimes++ ) > { > set_char_color( AT_BLUE, ch ); > send_to_char( "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n\r", ch ); > } > return; > } > > if ( !str_cmp( arg1, "color6" ) ) > { > send_to_char( "Set_char_color one time\n\r", ch ); > set_char_color( AT_BLUE, ch ); > set_char_color( AT_WHITE, ch ); > send_to_char( "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n\r", ch ); > return; > } > > if ( !str_cmp( arg1, "roll" ) ) > { > ch_printf( ch, "%d\n\r", number_range( 66 * .9, 66 * 1.2 ) ); > return; > } > > if ( !str_cmp( arg1, "bits" ) ) > { > int match; > int argnum; > int i = 1; > > argnum = atoi( arg2 ); > ch_printf_color( ch, " &Y| BIT | MATCHED | INT |\n\r" ); > ch_printf_color( ch, " &Y----------------------------\n\r" ); > > for ( match = 0; match < 31; match++ ) > { > i = ( match == 0 ? 1 : i * 2 ); > > if IS_SET > ( ( 1 << match ), argnum ) > ch_printf_color( ch, " &Y| &c%3d &Y| &W%5d &Y| &G%10d &Y|\n\r", match, match, i ); > else > ch_printf_color( ch, " &Y| &c%3d &Y| | |\n\r", match ); > } > ch_printf_color( ch, " &Y----------------------------\n\r" ); > return; > } > 2012a2317,2379 > if ( !str_cmp( arg1, "clones" ) ) > { > DESCRIPTOR_DATA *dsrc, *ddst, *dsrc_next, *ddst_next; > DESCRIPTOR_DATA *dlistf, *dlistl; > sh_int clone_count; > > set_pager_color( AT_PLAIN, ch ); > pager_printf( ch, " %-12.12s | %-12.12s | %-s\n\r", "characters", "user", "host" ); > pager_printf( ch, "--------------+--------------+---------------------------------------------\n\r" ); > > dlistf = dlistl = NULL; > > for ( dsrc = first_descriptor; dsrc; dsrc = dsrc_next ) > { > if ( ( dsrc->character && !can_see( ch, dsrc->character ) ) || !dsrc->user || !dsrc->host ) > { > dsrc_next = dsrc->next; > continue; > } > > pager_printf( ch, " %-12.12s |", > dsrc->original ? dsrc->original->name : ( dsrc->character ? dsrc->character->name : "(No name)" ) ); > clone_count = 1; > > for ( ddst = first_descriptor; ddst; ddst = ddst_next ) > { > ddst_next = ddst->next; > > if ( dsrc == ddst ) > continue; > if ( ( ddst->character && !can_see( ch, dsrc->character ) ) || !ddst->user || !ddst->host ) > continue; > > if ( !str_cmp( dsrc->user, ddst->user ) && !str_cmp( dsrc->host, ddst->host ) ) > { > UNLINK( ddst, first_descriptor, last_descriptor, next, prev ); > LINK( ddst, dlistf, dlistl, next, prev ); > pager_printf( ch, " |\n\r %-12.12s |", > ddst->original ? ddst->original->name : > ( ddst->character ? ddst->character->name : "(No name)" ) ); > clone_count++; > } > } > > pager_printf( ch, " %-12.12s | %s (%d clone%s)\n\r", > dsrc->user, dsrc->host, clone_count, clone_count > 1 ? "s" : "" ); > > dsrc_next = dsrc->next; > > UNLINK( dsrc, first_descriptor, last_descriptor, next, prev ); > LINK( dsrc, dlistf, dlistl, next, prev ); > } > > for ( dsrc = dlistf; dsrc; dsrc = dsrc_next ) > { > dsrc_next = dsrc->next; > UNLINK( dsrc, dlistf, dlistl, next, prev ); > LINK( dsrc, first_descriptor, last_descriptor, next, prev ); > } > return; > } > > 2029c2396 < hi = ( *arg4 ) ? atoi( arg4 ) : 32767; --- > hi = ( *arg4 ) ? atoi( arg4 ) : MAX_VNUM; 2039c2406 < if ( match == ( match & pRoom->room_flags ) && hit_cou < DIAG_RF_MAX_SIZE ) --- > if ( xIS_SET( pRoom->room_flags, match ) && hit_cou < DIAG_RF_MAX_SIZE ) 2166a2534,2538 > if ( !str_cmp( arg1, "nivek" ) ) > { > diag_nivek_obj( ch, ch->first_carrying ); > return; > }