diff -i smaug14/src/act_info.c smaug18/src/act_info.c
8c8
<  * Tricops and Fireblade                                      |             *
---
>  * Tricops, Fireblade, Edmond, Conran                         |             *
33a34,51
> char *const imm_badge[15] = {
>       "&G&r(&wSupreme Entity&r)",
>       "&G&r(&wInfinite&G&r)",
>       "&G&r(&wEternal&G&r)",
>       "&G&r(&wAncient&G&r)",
>       "&G&r(&wExalted God&G&r)",
>       "&G(&wAscendant God&G)",
>       "&G(&wGreater God&G)",
>       "&G(&wGod&G)",
>       "&G(&wLesser God&G)",
>       "&G(&wImmortal&G)",
>       "&G(&wDemi God&G)",
>       "&G(&WSavior&G)",
>       "&G(&WCreator&G)",
>       "&G(&WAcolyte&G)",
>       "&G&W(Neophyte)"
> };
> 
35,58c53,76
<       "<used as light>     ",
<       "<worn on finger>    ",
<       "<worn on finger>    ",
<       "<worn around neck>  ",
<       "<worn around neck>  ",
<       "<worn on body>      ",
<       "<worn on head>      ",
<       "<worn on legs>      ",
<       "<worn on feet>      ",
<       "<worn on hands>     ",
<       "<worn on arms>      ",
<       "<worn as shield>    ",
<       "<worn about body>   ",
<       "<worn about waist>  ",
<       "<worn around wrist> ",
<       "<worn around wrist> ",
<       "<wielded>           ",
<       "<held>              ",
<       "<dual wielded>      ",
<       "<worn on ears>      ",
<       "<worn on eyes>      ",
<       "<missile wielded>   ",
<       "<worn on back>  ",
<       "<worn over face>  ",
---
>       "<used as light>      ",
>       "<worn on finger>     ",
>       "<worn on finger>     ",
>       "<worn around neck>   ",
>       "<worn around neck>   ",
>       "<worn on body>       ",
>       "<worn on head>       ",
>       "<worn on legs>       ",
>       "<worn on feet>       ",
>       "<worn on hands>      ",
>       "<worn on arms>       ",
>       "<worn as shield>     ",
>       "<worn about body>    ",
>       "<worn about waist>   ",
>       "<worn around wrist>  ",
>       "<worn around wrist>  ",
>       "<wielded>            ",
>       "<held>               ",
>       "<dual wielded>       ",
>       "<worn on ears>       ",
>       "<worn on eyes>       ",
>       "<missile wielded>    ",
>       "<worn on back>       ",
>       "<worn over face>     ",
75a94,101
>       //Similar Helpfile Snippet Declarations
> sh_int str_similarity( const char *astr, const char *bstr );
> sh_int str_prefix_level( const char *astr, const char *bstr );
> void similar_help_files( CHAR_DATA * ch, char *argument );
> 
> extern bool in_same_house args( ( CHAR_DATA * ch, CHAR_DATA * vch ) );
> 
> 
134c160
<       if ( IS_AFFECTED( ch, AFF_DETECTTRAPS ) && is_trapped( obj ) )
---
>       if ( ( IS_AFFECTED( ch, AFF_DETECTTRAPS ) || xIS_SET( ch->act, PLR_HOLYLIGHT ) ) && is_trapped( obj ) )
148c174
<               if ( obj->description )
---
>               else if ( obj->description )
256a283
> *  Memory leak reported by robet@wirehead.com - fixed --Shaddai
279c306
<       return strdup( buf_new );
---
>       return buf_new;
435a463,466
>                       case ITEM_CORPSE_PC:
>                       case ITEM_CORPSE_NPC:
>                               set_char_color( AT_ORANGE, ch );
>                               break;
445a477
>                       case ITEM_PUDDLE:
549a582
>       TIMER *timer;
582,583c615,701
<               if ( IS_IMMORTAL( victim ) && victim->level > 50 )
<                       send_to_char_color( "&P(&WImmortal&P) ", ch );
---
>               int ilevel = victim->level;
> 
>               switch ( ilevel )
>               {
>                       case MAX_LEVEL - 0:
>                               send_to_char_color( "&G&r(&wSupreme Entity&G&r)&P ", ch );
>                               break;
>                       case MAX_LEVEL - 1:
>                               send_to_char_color( "&G&r(&wInfinite&G&r)&P ", ch );
>                               break;
>                       case MAX_LEVEL - 2:
>                               send_to_char_color( "&G&r(&wEternal&G&r)&P ", ch );
>                               break;
>                       case MAX_LEVEL - 3:
>                               send_to_char_color( "&G&r(&wAncient&G&r)&P ", ch );
>                               break;
>                       case MAX_LEVEL - 4:
>                               if ( victim->sex == 2 )
>                                       send_to_char_color( "&G&r(&wExalted Goddess&G&r)&P ", ch );
>                               else
>                                       send_to_char_color( "&G&r(&wExalted God&G&r)&P ", ch );
>                               break;
>                       case MAX_LEVEL - 5:
>                               if ( victim->sex == 2 )
>                                       send_to_char_color( "&G(&wAscendant Goddess&G)&P ", ch );
>                               else
>                                       send_to_char_color( "&G(&wAscendant God&G)&P ", ch );
>                               break;
>                       case MAX_LEVEL - 6:
>                               if ( victim->sex == 2 )
>                                       send_to_char_color( "&G(&wGreater Goddess&G)&P ", ch );
>                               else
>                                       send_to_char_color( "&G(&wGreater God&G)&P ", ch );
>                               break;
>                       case MAX_LEVEL - 7:
>                               if ( victim->sex == 2 )
>                                       send_to_char_color( "&G(&wGoddess&G)&P ", ch );
>                               else
>                                       send_to_char_color( "&G(&wGod&G)&P ", ch );
>                               break;
>                       case MAX_LEVEL - 8:
>                               if ( victim->sex == 2 )
>                                       send_to_char_color( "&G(&wLesser Goddess&G)&P ", ch );
>                               else
>                                       send_to_char_color( "&G(&wLesser God&G)&P ", ch );
>                               break;
>                       case MAX_LEVEL - 9:
>                               send_to_char_color( "&G(&wImmortal&G)&P ", ch );
>                               break;
>                       case MAX_LEVEL - 10:
>                               if ( victim->sex == 2 )
>                                       send_to_char_color( "&G(&wDemi Goddess&G)&P ", ch );
>                               else
>                                       send_to_char_color( "&G(&wDemi God&G)&P ", ch );
>                               break;
>                       case MAX_LEVEL - 11:
>                               send_to_char_color( "&G(&WSavior&G)&P ", ch );
>                               break;
>                       case MAX_LEVEL - 12:
>                               send_to_char_color( "&G(&WCreator&G)&P ", ch );
>                               break;
>                       case MAX_LEVEL - 13:
>                               send_to_char_color( "&G(&WAcolyte&G)&P ", ch );
>                               break;
>                       case MAX_LEVEL - 14:
>                               send_to_char_color( "&G&W(Neophyte)&P ", ch );
>                               break;
>                       default:
>                               break;
>               }
> 
> /*
>       if ( !IS_IMMORTAL( victim ) && !IS_NPC( victim ) && IS_IMMORTAL( ch ) )
>       {
>           if ( xIS_SET( victim->act, PLR_SILENCE )
>           ||   xIS_SET( victim->act, PLR_FREEZE )
>           ||    IS_SET( victim->pcdata->flags, PCFLAG_NOBIO )
>           ||    IS_SET( victim->pcdata->flags, PCFLAG_NODESC )
>           ||    IS_SET( victim->pcdata->flags, PCFLAG_NOBECKON )
>           ||   xIS_SET( victim->act, PLR_NO_EMOTE ) )
>               ch_printf_color( ch, "&G&P(Mulct) " );
>       }
> */
>               if ( !IS_IMMORTAL( victim )
>                       && ch->level < 26
>                       && victim->pcdata->council && !str_cmp( victim->pcdata->council->name, "Newbie Council" ) )
>                       ch_printf_color( ch, "&P&W<&PNew Player Advisor&W>&P " );
588c706
<                       ch_printf_color( ch, "%s ", victim->pcdata->clan->badge );
---
>                       ch_printf_color( ch, "&P%s ", victim->pcdata->clan->badge );
612a731,732
>       if ( IS_AFFECTED( victim, AFF_GRAPPLE ) )
>               strcat( buf, "(Grappling) " );
653c773
<               send_to_char( buf, ch );
---
>               send_to_char_color( buf, ch );  /* Blod color */
668c788
<       switch ( victim->position )
---
>       if ( ( timer = get_timerptr( victim, TIMER_DO_FUN ) ) != NULL )
670,754c790,881
<               case POS_DEAD:
<                       strcat( buf, " is DEAD!!" );
<                       break;
<               case POS_MORTAL:
<                       strcat( buf, " is mortally wounded." );
<                       break;
<               case POS_INCAP:
<                       strcat( buf, " is incapacitated." );
<                       break;
<               case POS_STUNNED:
<                       strcat( buf, " is lying here stunned." );
<                       break;
<               case POS_SLEEPING:
<                       if ( ch->position == POS_SITTING || ch->position == POS_RESTING )
<                               strcat( buf, " is sleeping nearby." );
<                       else
<                               strcat( buf, " is deep in slumber here." );
<                       break;
<               case POS_RESTING:
<                       if ( ch->position == POS_RESTING )
<                               strcat( buf, " is sprawled out alongside you." );
<                       else if ( ch->position == POS_MOUNTED )
<                               strcat( buf, " is sprawled out at the foot of your mount." );
<                       else
<                               strcat( buf, " is sprawled out here." );
<                       break;
<               case POS_SITTING:
<                       if ( ch->position == POS_SITTING )
<                               strcat( buf, " sits here with you." );
<                       else if ( ch->position == POS_RESTING )
<                               strcat( buf, " sits nearby as you lie around." );
<                       else
<                               strcat( buf, " sits upright here." );
<                       break;
<               case POS_STANDING:
<                       if ( IS_IMMORTAL( victim ) )
<                               strcat( buf, " is here before you." );
<                       else if ( ( victim->in_room->sector_type == SECT_UNDERWATER )
<                               && !IS_AFFECTED( victim, AFF_AQUA_BREATH ) && !IS_NPC( victim ) )
<                               strcat( buf, " is drowning here." );
<                       else if ( victim->in_room->sector_type == SECT_UNDERWATER )
<                               strcat( buf, " is here in the water." );
<                       else if ( ( victim->in_room->sector_type == SECT_OCEANFLOOR )
<                               && !IS_AFFECTED( victim, AFF_AQUA_BREATH ) && !IS_NPC( victim ) )
<                               strcat( buf, " is drowning here." );
<                       else if ( victim->in_room->sector_type == SECT_OCEANFLOOR )
<                               strcat( buf, " is standing here in the water." );
<                       else if ( IS_AFFECTED( victim, AFF_FLOATING ) || IS_AFFECTED( victim, AFF_FLYING ) )
<                               strcat( buf, " is hovering here." );
<                       else
<                               strcat( buf, " is standing here." );
<                       break;
<               case POS_SHOVE:
<                       strcat( buf, " is being shoved around." );
<                       break;
<               case POS_DRAG:
<                       strcat( buf, " is being dragged around." );
<                       break;
<               case POS_MOUNTED:
<                       strcat( buf, " is here, upon " );
<                       if ( !victim->mount )
<                               strcat( buf, "thin air???" );
<                       else if ( victim->mount == ch )
<                               strcat( buf, "your back." );
<                       else if ( victim->in_room == victim->mount->in_room )
<                       {
<                               strcat( buf, PERS( victim->mount, ch ) );
<                               strcat( buf, "." );
<                       }
<                       else
<                               strcat( buf, "someone who left??" );
<                       break;
<               case POS_FIGHTING:
<               case POS_EVASIVE:
<               case POS_DEFENSIVE:
<               case POS_AGGRESSIVE:
<               case POS_BERSERK:
<                       strcat( buf, " is here, fighting " );
<                       if ( !victim->fighting )
<                       {
<                               strcat( buf, "thin air???" );
< 
<                               /*
<                                * some bug somewhere.... kinda hackey fix -h 
<                                */
---
>               if ( timer->do_fun == do_meditate )
>                       strcat( buf, " is in a meditative state." );
>               else if ( timer->do_fun == do_cast )
>                       strcat( buf, " is here chanting." );
>               else if ( timer->do_fun == do_dig )
>                       strcat( buf, " is here digging." );
>               else if ( timer->do_fun == do_trance )
>                       strcat( buf, " is in a deep trance." );
>               else if ( timer->do_fun == do_search )
>                       strcat( buf, " is searching the area for something." );
>               else if ( timer->do_fun == do_detrap )
>                       strcat( buf, " is working with the trap here." );
>               else
>                       strcat( buf, " is looking rather lost." );
>       }
>       else
>       {
>               switch ( victim->position )
>               {
>                       case POS_DEAD:
>                               strcat( buf, " is DEAD!!" );
>                               break;
>                       case POS_MORTAL:
>                               strcat( buf, " is mortally wounded." );
>                               break;
>                       case POS_INCAP:
>                               strcat( buf, " is incapacitated." );
>                               break;
>                       case POS_STUNNED:
>                               strcat( buf, " is lying here stunned." );
>                               break;
>                       case POS_SLEEPING:
>                               if ( ch->position == POS_SITTING || ch->position == POS_RESTING )
>                                       strcat( buf, " is sleeping nearby." );
>                               else
>                                       strcat( buf, " is deep in slumber here." );
>                               break;
>                       case POS_RESTING:
>                               if ( ch->position == POS_RESTING )
>                                       strcat( buf, " is sprawled out alongside you." );
>                               else if ( ch->position == POS_MOUNTED )
>                                       strcat( buf, " is sprawled out at the foot of your mount." );
>                               else
>                                       strcat( buf, " is sprawled out here." );
>                               break;
>                       case POS_SITTING:
>                               if ( ch->position == POS_SITTING )
>                                       strcat( buf, " sits here with you." );
>                               else if ( ch->position == POS_RESTING )
>                                       strcat( buf, " sits nearby as you lie around." );
>                               else
>                                       strcat( buf, " sits upright here." );
>                               break;
>                       case POS_STANDING:
>                               if ( IS_IMMORTAL( victim ) )
>                                       strcat( buf, " radiates with a godly light." );
>                               else if ( ( victim->in_room->sector_type == SECT_UNDERWATER )
>                                       && !IS_AFFECTED( victim, AFF_AQUA_BREATH ) && !IS_NPC( victim ) )
>                                       strcat( buf, " is drowning here." );
>                               else if ( victim->in_room->sector_type == SECT_UNDERWATER )
>                                       strcat( buf, " is here in the water." );
>                               else if ( ( victim->in_room->sector_type == SECT_OCEANFLOOR )
>                                       && !IS_AFFECTED( victim, AFF_AQUA_BREATH ) && !IS_NPC( victim ) )
>                                       strcat( buf, " is drowning here." );
>                               else if ( victim->in_room->sector_type == SECT_OCEANFLOOR )
>                                       strcat( buf, " is standing here in the water." );
>                               else if ( IS_AFFECTED( victim, AFF_FLOATING ) || IS_AFFECTED( victim, AFF_FLYING ) )
>                                       if ( victim->stance > STANCE_NONE )
>                                       {
>                                               strcat( buf, " is hovering here in a " );
>                                               strcat( buf, get_stance_name( victim->stance ) );
>                                               strcat( buf, " stance." );
>                                       }
>                                       else
>                                               strcat( buf, " is hovering here." );
>                               else if ( victim->stance > STANCE_NONE )
>                               {
>                                       strcat( buf, " is standing here in a " );
>                                       strcat( buf, get_stance_name( victim->stance ) );
>                                       strcat( buf, " stance." );
>                               }
>                               else
>                                       strcat( buf, " is standing here." );
>                               break;
>                       case POS_SHOVE:
>                               strcat( buf, " is being shoved around." );
>                               break;
>                       case POS_DRAG:
>                               strcat( buf, " is being dragged around." );
>                               break;
>                       case POS_MOUNTED:
>                               strcat( buf, " is here, upon " );
756c883,890
<                                       victim->position = POS_STANDING;
---
>                                       strcat( buf, "thin air???" );
>                               else if ( victim->mount == ch )
>                                       strcat( buf, "your back." );
>                               else if ( victim->in_room == victim->mount->in_room )
>                               {
>                                       strcat( buf, PERS( victim->mount, ch ) );
>                                       strcat( buf, "." );
>                               }
758,770c892,902
<                                       victim->position = POS_MOUNTED;
<                       }
<                       else if ( who_fighting( victim ) == ch )
<                               strcat( buf, "YOU!" );
<                       else if ( victim->in_room == victim->fighting->who->in_room )
<                       {
<                               strcat( buf, PERS( victim->fighting->who, ch ) );
<                               strcat( buf, "." );
<                       }
<                       else
<                               strcat( buf, "someone who left??" );
<                       break;
<       }
---
>                                       strcat( buf, "someone who left??" );
>                               break;
>                       case POS_FIGHTING:
>                       case POS_EVASIVE:
>                       case POS_DEFENSIVE:
>                       case POS_AGGRESSIVE:
>                       case POS_BERSERK:
>                               strcat( buf, " is here, fighting " );
>                               if ( !victim->fighting )
>                               {
>                                       strcat( buf, "thin air???" );
771a904,923
>                                       /*
>                                        * some bug somewhere.... kinda hackey fix -h 
>                                        */
>                                       if ( !victim->mount )
>                                               victim->position = POS_STANDING;
>                                       else
>                                               victim->position = POS_MOUNTED;
>                               }
>                               else if ( who_fighting( victim ) == ch )
>                                       strcat( buf, "YOU!" );
>                               else if ( victim->in_room == victim->fighting->who->in_room )
>                               {
>                                       strcat( buf, PERS( victim->fighting->who, ch ) );
>                                       strcat( buf, "." );
>                               }
>                               else
>                                       strcat( buf, "someone who left??" );
>                               break;
>               }
>       }
774c926
<       send_to_char( buf, ch );
---
>       send_to_char_color( buf, ch );  /* Blod color */
814a967,975
>       /*
>        * Show stance they are in if someone looks at them.  SHADDAI 
>        */
>       if ( victim->stance > STANCE_NORMAL )
>       {
>               ch_printf( ch, "\n\r%s is in a %s fighting stance.\n\r",
>                       capitalize( PERS( victim, ch ) ), get_stance_name( victim->stance ) );
>       }
> 
964a1126,1137
>       char dir_n[50];
>       char dir_e[50];
>       char dir_s[50];
>       char dir_w[50];
>       char dir_u[50];
>       char dir_d[50];
>       char dir_ne[50];
>       char dir_nw[50];
>       char dir_se[50];
>       char dir_sw[50];
>       char dir_sm[50];
>       char *exitcolor;
972a1146
>       int len = colorlen( ch->in_room->name, 50 );
1021,1027c1195,1207
<               /*
<                * 'look' or 'look auto' 
<                */
<               set_char_color( AT_RMNAME, ch );
<               send_to_char( ch->in_room->name, ch );
<               send_to_char( "\n\r", ch );
<               set_char_color( AT_RMDESC, ch );
---
>               if ( xIS_SET( ch->act, PLR_COMPASS ) )
>               {
>                       strcpy( dir_n, "&z-" );
>                       strcpy( dir_e, "&z-" );
>                       strcpy( dir_s, "&z-" );
>                       strcpy( dir_w, "&z-" );
>                       strcpy( dir_u, "&z-" );
>                       strcpy( dir_d, "&z-" );
>                       strcpy( dir_ne, "&z \\" );
>                       strcpy( dir_nw, "&z/ " );
>                       strcpy( dir_se, "&z /" );
>                       strcpy( dir_sw, "&z\\ " );
>                       strcpy( dir_sm, "&z-" );
1028a1209,1292
>                       for ( pexit = ch->in_room->first_exit; pexit; pexit = pexit->next )
>                       {
>                               if ( ( pexit->to_room
>                                               && !IS_SET( pexit->exit_info, EX_HIDDEN ) && !IS_SET( pexit->exit_info, EX_SECRET ) ) )
> 
> /*                    || (IS_SET (pexit->exit_info, EX_SECRET)
>                       && !IS_SET (pexit->exit_info, EX_CLOSED)))
> */
>                               {
>                                       exitcolor = "&Y&G";
>                                       if ( IS_SET( pexit->exit_info, EX_WINDOW ) )
>                                               exitcolor = "&C";
>                                       if ( IS_SET( pexit->exit_info, EX_SECRET ) )
>                                               exitcolor = "&b";
>                                       if ( IS_SET( pexit->exit_info, EX_CLOSED ) )
>                                               exitcolor = "&g";
>                                       if ( IS_SET( pexit->exit_info, EX_LOCKED ) )
>                                               exitcolor = "&r";
>                                       if ( pexit->vdir == DIR_NORTH )
>                                               sprintf( dir_n, "%sN", exitcolor );
>                                       if ( pexit->vdir == DIR_EAST )
>                                               sprintf( dir_e, "%sE", exitcolor );
>                                       if ( pexit->vdir == DIR_SOUTH )
>                                               sprintf( dir_s, "%sS", exitcolor );
>                                       if ( pexit->vdir == DIR_WEST )
>                                               sprintf( dir_w, "%sW", exitcolor );
>                                       if ( pexit->vdir == DIR_UP )
>                                               sprintf( dir_u, "%sU", exitcolor );
>                                       if ( pexit->vdir == DIR_DOWN )
>                                               sprintf( dir_d, "%sD", exitcolor );
>                                       if ( pexit->vdir == DIR_NORTHEAST )
>                                               sprintf( dir_ne, "%sNE", exitcolor );
>                                       if ( pexit->vdir == DIR_NORTHWEST )
>                                               sprintf( dir_nw, "%sNW", exitcolor );
>                                       if ( pexit->vdir == DIR_SOUTHEAST )
>                                               sprintf( dir_se, "%sSE", exitcolor );
>                                       if ( pexit->vdir == DIR_SOUTHWEST )
>                                               sprintf( dir_sw, "%sSW", exitcolor );
>                               }
>                       }
> 
>                       send_to_char( "\n\r", ch );
>                       set_char_color( AT_RMNAME, ch );
> /*            ch_printf( ch, "%-50.50s", ch->in_room->name ); */
>                       if ( xIS_SET( ch->in_room->room_flags, ROOM_COLOR ) )
>                               ch_printf_color( ch, "%-*.*s", len, len, ch->in_room->name );
>                       else
>                               ch_printf( ch, "%-50.50s", ch->in_room->name );
>                       strcat( dir_nw, "  " );
>                       ch_printf_color( ch, "        %s ", dir_nw );
>                       strcat( dir_n, "  " );
>                       ch_printf_color( ch, "  %s", dir_n );
>                       ch_printf_color( ch, "   %s\n\r", dir_ne );
>                       send_to_char_color( "&z------------------------------------------------------- ", ch );
>                       strcat( dir_w, "" );
>                       ch_printf_color( ch, "   %s", dir_w );
>                       send_to_char_color( "&z -", ch );
>                       strcat( dir_u, "&z-&g(&Y&G+&g)&z" );
>                       ch_printf_color( ch, "%s", dir_u );
>                       strcat( dir_d, "&z-" );
>                       send_to_char_color( "&z-", ch );
>                       ch_printf_color( ch, "%s", dir_d );
>                       send_to_char_color( "&z ", ch );
>                       ch_printf_color( ch, "%s\n\r", dir_e );
>                       send_to_char( "                                                        ", ch );
>                       strcat( dir_sw, "  " );
>                       ch_printf_color( ch, "  %s ", dir_sw );
>                       strcat( dir_s, "  " );
>                       ch_printf_color( ch, "  %s", dir_s );
>                       ch_printf_color( ch, "   %s", dir_se );
>                       send_to_char( "\n\r", ch );
> 
>               }
>               else
>               {
>                       set_char_color( AT_RMNAME, ch );
>                       if ( xIS_SET( ch->in_room->room_flags, ROOM_COLOR ) )
>                               send_to_char_color( ch->in_room->name, ch );
>                       else
>                               send_to_char( ch->in_room->name, ch );
>                       send_to_char( "\n\r", ch );
>               }
> 
>               set_char_color( AT_RMDESC, ch );
1030c1294,1309
<                       send_to_char( ch->in_room->description, ch );
---
>               {
>                       if ( xIS_SET( ch->in_room->room_flags, ROOM_COLOR ) )
>                               send_to_char_color( ch->in_room->description, ch );
>                       else
>                               send_to_char( ch->in_room->description, ch );
>               }
> 
> /*
>       if ( !IS_NPC(ch) && xIS_SET(ch->act, PLR_AUTOMAP) )
>       {
>           if(ch->in_room->map != NULL)
>           {
>              do_lookmap(ch, NULL);
>           }
>       }
> */
1032c1311,1314
<               if ( !IS_NPC( ch ) && xIS_SET( ch->act, PLR_AUTOMAP ) ) /* maps */
---
>               /*
>                * Testing automapper snippet - 2002 
>                */
>               if ( !IS_NPC( ch ) && xIS_SET( ch->act, PLR_AUTOMAP ) )
1034,1037c1316,1322
<                       if ( ch->in_room->map != NULL )
<                       {
<                               do_lookmap( ch, NULL );
<                       }
---
>                       ch_printf_color( ch,
>                               "&w_____________________________________________________________________________\n\r" );
>                       if ( IS_IMMORTAL( ch ) )
>                               do_lookmap( ch, "auto" );
>                       ch_printf_color( ch,
>                               "&w_____________________________________________________________________________\n\r" );
> 
1039a1325
> 
1048a1335,1348
>       if ( !str_cmp( arg1, "sky" ) )
>       {
>               if ( !IS_OUTSIDE( ch ) )
>               {
>                       send_to_char( "You can't see the sky indoors.\n\r", ch );
>                       return;
>               }
>               else
>               {
>                       look_sky( ch );
>                       return;
>               }
>       }
> 
1128c1428,1430
<                                       obj->value[1] < 3 * obj->value[0] / 4 ? "about" : "more than", liq_table[obj->value[2]].liq_color );
---
>                                       obj->value[1] < 3 * obj->value[0] / 4
>                                       ? "about" : "more than",
>                                       ( obj->value[2] >= LIQ_MAX ? "clear" : liq_table[obj->value[2]].liq_color ) );
1196c1498,1505
<                               act( AT_PLAIN, "The $d is closed.", ch, NULL, pexit->keyword, TO_CHAR );
---
>                       {
>                               if ( pexit->keyword[strlen( pexit->keyword ) - 1] == 's'
>                                       || ( pexit->keyword[strlen( pexit->keyword ) - 1] == '\''
>                                               && pexit->keyword[strlen( pexit->keyword ) - 2] == 's' ) )
>                                       act( AT_RED, "The $d are closed.", ch, NULL, pexit->keyword, TO_CHAR );
>                               else
>                                       act( AT_RED, "The $d is closed.", ch, NULL, pexit->keyword, TO_CHAR );
>                       }
1200c1509,1516
<                       act( AT_RED, "The $d has been bashed from its hinges!", ch, NULL, pexit->keyword, TO_CHAR );
---
>               {
>                       if ( pexit->keyword[strlen( pexit->keyword ) - 1] == 's'
>                               || ( pexit->keyword[strlen( pexit->keyword ) - 1] == '\''
>                                       && pexit->keyword[strlen( pexit->keyword ) - 2] == 's' ) )
>                               act( AT_RED, "The $d have been bashed from their hinges.", ch, NULL, pexit->keyword, TO_CHAR );
>                       else
>                               act( AT_RED, "The $d has been bashed from its hinges.", ch, NULL, pexit->keyword, TO_CHAR );
>               }
1307a1624,1626
>                               if ( obj->item_type == ITEM_PUDDLE )
>                                       ch_printf( ch, "It's a puddle of %s liquid.\n\r",
>                                               ( obj->value[2] >= LIQ_MAX ? "clear" : liq_table[obj->value[2]].liq_color ) );
1348a1668,1670
>                               if ( obj->item_type == ITEM_PUDDLE )
>                                       ch_printf( ch, "It's a puddle of %s liquid.\n\r",
>                                               ( obj->value[2] >= LIQ_MAX ? "clear" : liq_table[obj->value[2]].liq_color ) );
1626a1949,1963
>                       case ITEM_JOURNAL:
>                               {
>                                       sh_int count = 0;
>                                       EXTRA_DESCR_DATA *ed;
> 
>                                       for ( ed = obj->first_extradesc; ed; ed = ed->next )
>                                               count++;
> 
>                                       ch_printf( ch, "%s has %d %s written in out of a possible %d.\n\r",
>                                               obj->short_descr, count, count == 1 ? "page" : "pages", obj->value[0] );
> 
>                                       break;
>                               }
> 
> 
1630c1967
<                               if ( dam == 0 )
---
>                               if ( dam <= 0 )
1665c2002,2005
<                               else if ( dam == 1 )
---
>                               /*
>                                * Changed to 2, bug caught by Keith Howell 
>                                */
>                               else if ( dam == 2 )
1785d2124
< 
1793d2131
<       set_char_color( AT_EXITS, ch );
1800,1801c2138,2139
<       strcpy( buf, fAuto ? "Exits:" : "Obvious exits:\n\r" );
< 
---
>       set_char_color( AT_EXITS, ch );
>       ch_printf_color( ch, "%s", fAuto ? "Exits: " : "Obvious exits:\n\r" );
1806c2144
<                       && !IS_SET( pexit->exit_info, EX_CLOSED )
---
> /*    &&  !IS_SET(pexit->exit_info, EX_CLOSED) */
1808c2146,2148
<                               || IS_SET( pexit->exit_info, EX_ISDOOR ) ) && !IS_SET( pexit->exit_info, EX_HIDDEN ) )
---
>                               || IS_SET( pexit->exit_info, EX_ISDOOR ) )
>                       && !IS_SET( pexit->exit_info, EX_SECRET )
>                       && !IS_SET( pexit->exit_info, EX_HIDDEN ) && !IS_SET( pexit->exit_info, EX_DIG ) )
1813,1814c2153,2168
<                               strcat( buf, " " );
<                               strcat( buf, dir_name[pexit->vdir] );
---
>                               if ( IS_SET( pexit->exit_info, EX_CLOSED ) )
>                               {
>                                       if ( pexit->keyword
>                                               && ( !str_cmp( "door", pexit->keyword )
>                                                       || !str_cmp( "gate", pexit->keyword ) || pexit->keyword[0] == '\0' ) )
>                                       {
>                                               strcat( buf, "[" );
>                                               strcat( buf, dir_name[pexit->vdir] );
>                                               strcat( buf, "] " );
>                                       }
>                               }
>                               else
>                               {
>                                       strcat( buf, dir_name[pexit->vdir] );
>                                       strcat( buf, " " );
>                               }
1826c2180
<               strcat( buf, fAuto ? " none.\n\r" : "None.\n\r" );
---
>               strcat( buf, fAuto ? "none\n\r" : "None\n\r" );
1828,1829c2182,2183
<               strcat( buf, ".\n\r" );
<       send_to_char( buf, ch );
---
>               strcat( buf, "\n\r" );
>       send_to_char_color( buf, ch );
1832a2187
> 
1970c2325,2328
<               argument = argnew;
---
>               if ( strcmp( argument, argnew ) )
>                       argument = argnew;
>               else
>                       lev = -2;
1999a2358,2377
> void do_nanny_help( CHAR_DATA * ch, char *argument )
> {
>       HELP_DATA *pHelp;
>       char buf[MAX_STRING_LENGTH];
> 
>       sprintf( buf, "nanny_%s", argument );
> 
>       if ( ( pHelp = get_help( ch, buf ) ) == NULL )
>               return;
> 
>       if ( pHelp->level >= 0 )
>       {
>               send_to_pager( "\n\r", ch );
>               set_pager_color( AT_GREY, ch );
>       }
> 
>       send_to_pager_color( pHelp->text + ( pHelp->text[0] == '.' ? 1 : 0 ), ch );
>       return;
> }
> 
2016,2019c2394,2396
< /*
<  * Now this is cleaner
<  */
< void do_help( CHAR_DATA * ch, char *argument )
---
> //  Ranks by number of matches between two whole words. Coded for the Similar Helpfiles
> //  Snippet by Senir.
> sh_int str_similarity( const char *astr, const char *bstr )
2021c2398
<       HELP_DATA *pHelp;
---
>       sh_int matches = 0;
2023c2400,2403
<       if ( ( pHelp = get_help( ch, argument ) ) == NULL )
---
>       if ( !astr || !bstr )
>               return matches;
> 
>       for ( ; *astr; astr++ )
2025,2026c2405,2409
<               send_to_char( "No help on that word.\n\r", ch );
<               return;
---
>               if ( LOWER( *astr ) == LOWER( *bstr ) )
>                       matches++;
> 
>               if ( ++bstr == '\0' )
>                       return matches;
2029,2033c2412,2413
<       /*
<        * Make newbies do a help start. --Shaddai 
<        */
<       if ( !IS_NPC( ch ) && !str_cmp( argument, "start" ) )
<               SET_BIT( ch->pcdata->flags, PCFLAG_HELPSTART );
---
>       return matches;
> }
2035c2415,2424
<       if ( pHelp->level >= 0 && str_cmp( argument, "imotd" ) )
---
> //  Ranks by number of matches until there's a nonmatching character between two words.
> //  Coded for the Similar Helpfiles Snippet by Senir.
> sh_int str_prefix_level( const char *astr, const char *bstr )
> {
>       sh_int matches = 0;
> 
>       if ( !astr || !bstr )
>               return matches;
> 
>       for ( ; *astr; astr++ )
2037,2038c2426,2432
<               send_to_pager( pHelp->keyword, ch );
<               send_to_pager( "\n\r", ch );
---
>               if ( LOWER( *astr ) == LOWER( *bstr ) )
>                       matches++;
>               else
>                       return matches;
> 
>               if ( ++bstr == '\0' )
>                       return matches;
2041,2048c2435
<       /*
<        * Strip leading '.' to allow initial blanks.
<        */
<       if ( pHelp->text[0] == '.' )
<               send_to_pager_color( pHelp->text + 1, ch );
<       else
<               send_to_pager_color( pHelp->text, ch );
<       return;
---
>       return matches;
2051c2438,2444
< void do_news( CHAR_DATA * ch, char *argument )
---
> // Main function of Similar Helpfiles Snippet by Senir. It loops through all of the
> // helpfiles, using the string matching function defined to find the closest matching
> // helpfiles to the argument. It then checks for singles. Then, if matching helpfiles
> // are found at all, it loops through and prints out the closest matching helpfiles.
> // If its a single(there's only one), it opens the helpfile.
> 
> void similar_help_files( CHAR_DATA * ch, char *argument )
2053,2055c2446,2450
<       set_pager_color( AT_NOTE, ch );
<       do_help( ch, "news" );
< }
---
>       HELP_DATA *pHelp = NULL;
>       char buf[MAX_STRING_LENGTH];
>       char *extension;
>       sh_int lvl = 0;
>       bool single = FALSE;
2057d2451
< extern char *help_greeting;   /* so we can edit the greeting online */
2059,2064c2453
< /*
<  * Help editor                                                        -Thoric
<  */
< void do_hedit( CHAR_DATA * ch, char *argument )
< {
<       HELP_DATA *pHelp;
---
>       send_to_pager_color( "&C&RSimilar Help Files:\n\r", ch );
2066c2455
<       if ( !ch->desc )
---
>       for ( pHelp = first_help; pHelp; pHelp = pHelp->next )
2068c2457,2595
<               send_to_char( "You have no descriptor.\n\r", ch );
---
>               buf[0] = '\0';
>               extension = pHelp->keyword;
> 
>               if ( pHelp->level > get_trust( ch ) )
>                       continue;
> 
>               while ( extension[0] != '\0' )
>               {
>                       extension = one_argument( extension, buf );
> 
>                       if ( str_similarity( argument, buf ) > lvl )
>                       {
>                               lvl = str_similarity( argument, buf );
>                               single = TRUE;
>                       }
>                       else if ( str_similarity( argument, buf ) == lvl && lvl > 0 )
>                       {
>                               single = FALSE;
>                       }
>               }
>       }
> 
>       if ( lvl == 0 )
>       {
>               send_to_pager_color( "&C&RNo similar help files.\n\r", ch );
>               return;
>       }
> 
>       for ( pHelp = first_help; pHelp; pHelp = pHelp->next )
>       {
>               buf[0] = '\0';
>               extension = pHelp->keyword;
> 
>               while ( extension[0] != '\0' )
>               {
>                       extension = one_argument( extension, buf );
> 
>                       if ( str_similarity( argument, buf ) >= lvl && pHelp->level <= get_trust( ch ) )
>                       {
>                               if ( single )
>                               {
>                                       send_to_pager_color( "&C&WOpening only similar helpfile.&C\n\r", ch );
>                                       do_help( ch, buf );
>                                       return;
>                               }
> 
>                               pager_printf_color( ch, "&C&W   %s\n\r", pHelp->keyword );
>                               break;
> 
>                       }
> 
>               }
>       }
>       return;
> }
> 
> 
> 
> /* Mods by Luc to alleviate some pager color bleeding */
> void do_help( CHAR_DATA * ch, char *argument )
> {
>       HELP_DATA *pHelp;
> 
>       if ( ( pHelp = get_help( ch, argument ) ) == NULL )
>       {
>               /*
>                *  Write this to a file so we can see what people
>                * are looking for.  --Shaddai
>                */
>               char buf[MAX_STRING_LENGTH];
> 
>               sprintf( buf, "%s : %s", argument, ch->name );
>               append_to_file( NOHELP_FILE, buf );
> 
>               //  Looks better printing out the missed argument before going to similar
>               //  helpfiles. - Senir
>               pager_printf_color( ch, "&C&RNo help on \'%s\' found.\n\r", argument );
>               similar_help_files( ch, argument );
>               return;
>       }
>       /*
>        * Make newbies do a help start. --Shaddai 
>        */
>       if ( !IS_NPC( ch ) && !str_cmp( argument, "start" ) )
>               SET_BIT( ch->pcdata->flags, PCFLAG_HELPSTART );
>       if ( pHelp->level >= 0 && str_cmp( argument, "imotd" ) )
>       {
>               set_pager_color( AT_RED, ch );
>               send_to_pager( pHelp->keyword, ch );
>               send_to_pager( "\n\r", ch );
>               set_pager_color( AT_GREY, ch );
>       }
>       /*
>        * Strip leading '.' to allow initial blanks. 
>        */
>       send_to_pager_color( pHelp->text + ( pHelp->text[0] == '.' ? 1 : 0 ), ch );
> }
> 
> void do_changes( CHAR_DATA * ch, char *argument )
> {
> 
>       if ( IS_NPC( ch ) )
>               return;
>       send_to_char_color( "\n\r&gChanges to the Realms ...\n\r", ch );
>       show_file( ch, CHANGE_FILE );
>       send_to_char_color( "&G&g... type &G'&gnews&G'&g for recent updates.\n\r", ch );
>       if ( IS_IMMORTAL( ch ) )
>               send_to_char_color( "&G&gImmortals should also check &G'&gimmnews&G'&g.\n\r", ch );
>       return;
> }
> 
> /*  Replaced with extended news snippet
> void do_news( CHAR_DATA *ch, char *argument )
> {
> 
>     if ( IS_NPC( ch ) )
>       return;
>     send_to_char_color( "\n\r&gNews of the Realms ...\n\r", ch );
>     show_file( ch, NEWS_FILE );
>     send_to_char_color( "&G&g... type &G'&gchanges&G'&g for other or older updates.\n\r", ch );
>     if ( IS_IMMORTAL( ch ) )
>       send_to_char_color( "&G&gImmortals should also check &G'&gimmnews&G'&g.\n\r", ch );
>     return;
> }
> */
> 
> 
> extern char *help_greeting;   /* so we can edit the greeting online */
> 
> /*
>  * Help editor                                                        -Thoric
>  */
> void do_hedit( CHAR_DATA * ch, char *argument )
> {
>       HELP_DATA *pHelp;
> 
>       if ( !ch->desc )
>       {
>               send_to_char( "You have no descriptor.\n\r", ch );
2400,2415c2927,3543
<       /*
<        * Now for those who have leaders.. 
<        */
<       while ( wc < dc )
<               for ( d = last_descriptor; d; d = d->prev )
<               {
<                       if ( d->connected != CON_PLAYING && d->connected != CON_EDITING )
<                               continue;
<                       if ( find_whogr( d, first_whogr ) )
<                               continue;
<                       wch = ( d->original ? d->original : d->character );
<                       if ( wch->leader && wch->leader != wch && wch->leader->desc &&
<                               !IS_NPC( wch->leader ) && !IS_IMMORTAL( wch ) &&
<                               !IS_IMMORTAL( wch->leader ) && ( whogr_t = find_whogr( wch->leader->desc, first_whogr ) ) )
<                       {
<                               CREATE( whogr, struct whogr_s, 1 );
---
>       /*
>        * Now for those who have leaders.. 
>        */
>       while ( wc < dc )
>               for ( d = last_descriptor; d; d = d->prev )
>               {
>                       if ( d->connected != CON_PLAYING && d->connected != CON_EDITING )
>                               continue;
>                       if ( find_whogr( d, first_whogr ) )
>                               continue;
>                       wch = ( d->original ? d->original : d->character );
>                       if ( wch->leader && wch->leader != wch && wch->leader->desc &&
>                               !IS_NPC( wch->leader ) && !IS_IMMORTAL( wch ) &&
>                               !IS_IMMORTAL( wch->leader ) && ( whogr_t = find_whogr( wch->leader->desc, first_whogr ) ) )
>                       {
>                               CREATE( whogr, struct whogr_s, 1 );
> 
>                               if ( !whogr_t->l_follow )
>                                       whogr_t->follower = whogr_t->l_follow = whogr;
>                               else
>                               {
>                                       whogr_t->l_follow->next = whogr;
>                                       whogr_t->l_follow = whogr;
>                               }
>                               whogr->next = NULL;
>                               whogr->follower = whogr->l_follow = NULL;
>                               whogr->d = d;
>                               whogr->indent = 0;
>                               ++wc;
>                       }
>               }
>       /*
>        * Set up indentation levels 
>        */
>       indent_whogr( looker, first_whogr, 0 );
> 
>       /*
>        * And now to linear link them.. 
>        */
>       for ( whogr_t = NULL, whogr = first_whogr; whogr; )
>               if ( whogr->l_follow )
>               {
>                       whogr->l_follow->next = whogr;
>                       whogr->l_follow = NULL;
>                       if ( whogr_t )
>                               whogr_t->next = whogr = whogr->follower;
>                       else
>                               first_whogr = whogr = whogr->follower;
>               }
>               else
>               {
>                       whogr_t = whogr;
>                       whogr = whogr->next;
>               }
> }
> 
> void do_who( CHAR_DATA * ch, char *argument )
> {
>       char buf[MAX_STRING_LENGTH];
>       char clan_name[MAX_INPUT_LENGTH];
>       char council_name[MAX_INPUT_LENGTH];
>       char invis_str[MAX_INPUT_LENGTH];
>       char char_name[MAX_INPUT_LENGTH];
>       char *extra_title;
>       char class_text[MAX_INPUT_LENGTH];
>       struct whogr_s *whogr, *whogr_p;
>       DESCRIPTOR_DATA *d;
>       int iClass, iRace;
>       int iLevelLower;
>       int iLevelUpper;
>       int nNumber;
>       int nMatch;
>       bool rgfClass[MAX_CLASS];
>       bool rgfRace[MAX_RACE];
>       bool fClassRestrict;
>       bool fRaceRestrict;
>       bool fImmortalOnly;
>       bool fLeader;
>       bool fPkill;
>       bool fShowHomepage;
>       bool fRetired = FALSE;
>       bool fClanMatch;        /* SB who clan (order),who guild, and who council */
>       bool fCouncilMatch;
>       bool fDeityMatch;
>       bool fGroup;
>       CLAN_DATA *pClan = NULL;
>       COUNCIL_DATA *pCouncil = NULL;
>       DEITY_DATA *pDeity = NULL;
>       FILE *whoout = NULL;
> 
>       /*
>        * #define WT_IMM    0;
>        * #define WT_MORTAL 1;
>        * #define WT_DEADLY 2;
>        */
> 
>       WHO_DATA *cur_who = NULL;
>       WHO_DATA *next_who = NULL;
>       WHO_DATA *first_mortal = NULL;
>       WHO_DATA *first_imm = NULL;
>       WHO_DATA *first_deadly = NULL;
>       WHO_DATA *first_grouped = NULL;
>       WHO_DATA *first_groupwho = NULL;
> 
> 
>       /*
>        * Set default arguments.
>        */
>       iLevelLower = 0;
>       iLevelUpper = MAX_LEVEL;
>       fClassRestrict = FALSE;
>       fRaceRestrict = FALSE;
>       fImmortalOnly = FALSE;
>       fPkill = FALSE;
>       fShowHomepage = FALSE;
>       fClanMatch = FALSE;     /* SB who clan (order), who guild, who council */
>       fCouncilMatch = FALSE;
>       fDeityMatch = FALSE;
>       fGroup = FALSE; /* Alty who group */
>       fLeader = FALSE;
>       for ( iClass = 0; iClass < MAX_CLASS; iClass++ )
>               rgfClass[iClass] = FALSE;
>       for ( iRace = 0; iRace < MAX_RACE; iRace++ )
>               rgfRace[iRace] = FALSE;
> 
> #ifdef REQWHOARG
>       /*
>        * The who command must have at least one argument because we often
>        * have up to 500 players on. Too much spam if a player accidentally
>        * types "who" with no arguments.           --Gorog
>        */
>       if ( ch && argument[0] == '\0' )
>       {
>               send_to_char_color( "\n\r&GYou must specify at least one argument.\n\r", ch );
>               send_to_char_color( "Use 'who 1' to view the entire who list.  Other arguments:\n\r", ch );
>               send_to_char_color
>                       ( " ... nc = new player advisors\n\r ... deadly = deadly players\n\r ... group = grouped players\n\r", ch );
>               send_to_char_color( "\n\rFor additional arguments or help, type 'help who'.\n\r", ch );
>               return;
>       }
> #endif
> 
>       /*
>        * Parse arguments.
>        */
>       nNumber = 0;
>       for ( ;; )
>       {
>               char arg[MAX_STRING_LENGTH];
> 
>               argument = one_argument( argument, arg );
>               if ( arg[0] == '\0' )
>                       break;
> 
>               if ( is_number( arg ) )
>               {
>                       switch ( ++nNumber )
>                       {
>                               case 1:
>                                       iLevelLower = atoi( arg );
>                                       break;
>                               case 2:
>                                       iLevelUpper = atoi( arg );
>                                       break;
>                               default:
>                                       send_to_char( "Only two level numbers allowed.\n\r", ch );
>                                       return;
>                       }
>               }
>               else
>               {
>                       if ( strlen( arg ) < 2 )
>                       {
>                               send_to_char( "Arguments must be longer than that.\n\r", ch );
>                               return;
>                       }
> 
>                       if ( !str_cmp( arg, "nc" ) || !str_cmp( arg, "newbie" ) || !str_cmp( arg, "advisor" ) )
>                       {
>                               do_who( ch, "\'newbie council\'" );
>                               return;
>                       }
> 
>                       /*
>                        * Look for classes to turn on.
>                        */
>                       if ( !str_cmp( arg, "deadly" ) || !str_cmp( arg, "pkill" ) )
>                               fPkill = TRUE;
>                       else if ( !str_cmp( arg, "imm" ) || !str_cmp( arg, "gods" ) )
>                               fImmortalOnly = TRUE;
>                       else if ( !str_cmp( arg, "leader" ) )
>                               fLeader = TRUE;
>                       else
> /*
>           if ( !str_cmp( arg, "nc" ) || !str_cmp( arg, "advisor" ) || !str_cmp( arg, "newbie" ) )
>               fShowAdvisor = TRUE;
>           else
> */
>                       if ( !str_cmp( arg, "www" ) )
>                               fShowHomepage = TRUE;
>                       else if ( !str_cmp( arg, "retired" ) )
>                               fRetired = TRUE;
>                       else if ( !str_cmp( arg, "group" ) && ch )
>                               fGroup = TRUE;
>                       else /* SB who clan (order), guild, council */ if ( ( pClan = get_clan( arg ) ) )
>                               fClanMatch = TRUE;
>                       else if ( ( pCouncil = get_council( arg ) ) )
>                               fCouncilMatch = TRUE;
>                       else if ( ( pDeity = get_deity( arg ) ) )
>                               fDeityMatch = TRUE;
>                       else
>                       {
>                               for ( iClass = 0; iClass < MAX_CLASS; iClass++ )
>                               {
>                                       if ( !str_cmp( arg, class_table[iClass]->who_name ) )
>                                       {
>                                               rgfClass[iClass] = TRUE;
>                                               break;
>                                       }
>                               }
>                               if ( iClass != MAX_CLASS )
>                                       fClassRestrict = TRUE;
> 
>                               for ( iRace = 0; iRace < MAX_RACE; iRace++ )
>                               {
>                                       if ( !str_cmp( arg, race_table[iRace]->race_name ) )
>                                       {
>                                               rgfRace[iRace] = TRUE;
>                                               break;
>                                       }
>                               }
>                               if ( iRace != MAX_RACE )
>                                       fRaceRestrict = TRUE;
> 
>                               if ( iClass == MAX_CLASS && iRace == MAX_RACE
>                                       && fClanMatch == FALSE && fRetired == FALSE && fCouncilMatch == FALSE && fDeityMatch == FALSE )
>                               {
>                                       send_to_char( "That\'s not a class, race, order, guild," " council or deity.\n\r", ch );
>                                       return;
>                               }
>                       }
>               }
>       }
> 
>       /*
>        * Now find matching chars.
>        */
>       nMatch = 0;
>       buf[0] = '\0';
>       if ( ch )
>               set_pager_color( AT_GREEN, ch );
>       else
>       {
>               if ( fShowHomepage )
>                       whoout = fopen( WEBWHO_FILE, "w" );
>               else
>                       whoout = fopen( WHO_FILE, "w" );
>               if ( !whoout )
>               {
>                       bug( "do_who: cannot open who file!" );
>                       return;
>               }
>       }
> 
> /* start from last to first to get it in the proper order */
>       if ( fGroup )
>       {
>               create_whogr( ch );
>               whogr = first_whogr;
>               d = whogr->d;
>       }
>       else
>       {
>               whogr = NULL;
>               d = last_descriptor;
>       }
>       whogr_p = NULL;
>       for ( ; d; whogr_p = whogr, whogr = ( fGroup ? whogr->next : NULL ),
>               d = ( fGroup ? ( whogr ? whogr->d : NULL ) : d->prev ) )
>       {
>               CHAR_DATA *wch;
>               char const *class;
> 
>               if ( ( d->connected != CON_PLAYING && d->connected != CON_EDITING )
>                       || !can_see( ch, d->character ) || d->original )
>                       continue;
>               wch = d->original ? d->original : d->character;
>               if ( wch->level < iLevelLower || wch->level > iLevelUpper || ( fPkill && !CAN_PKILL( wch ) )
> /*
>       || ( fShowAdvisor && wch->pcdata->council && !str_cmp( "Newbie Council", wch->pcdata->council->name ) )
> */
>                       || ( fRetired && !IS_RETIRED( wch ) ) || ( fImmortalOnly && wch->level < LEVEL_IMMORTAL ) || ( fClassRestrict && !rgfClass[wch->class] ) || ( fRaceRestrict && !rgfRace[wch->race] ) || ( fClanMatch && ( pClan != wch->pcdata->clan ) )        /* SB */
>                       || ( fCouncilMatch && ( pCouncil != wch->pcdata->council ) )    /* SB */
>                       || ( fDeityMatch && ( pDeity != wch->pcdata->deity ) ) )
>                       continue;
>               if ( fLeader && !( wch->pcdata->council &&
>                               ( ( wch->pcdata->council->head2 &&
>                                               !str_cmp( wch->pcdata->council->head2, wch->name ) ) ||
>                                       ( wch->pcdata->council->head &&
>                                               !str_cmp( wch->pcdata->council->head, wch->name ) ) ) ) &&
>                       !( wch->pcdata->clan && ( ( wch->pcdata->clan->deity &&
>                                               !str_cmp( wch->pcdata->clan->deity, wch->name ) )
>                                       || ( wch->pcdata->clan->leader
>                                               && !str_cmp( wch->pcdata->clan->leader, wch->name ) )
>                                       || ( wch->pcdata->clan->number1
>                                               && !str_cmp( wch->pcdata->clan->number1, wch->name ) )
>                                       || ( wch->pcdata->clan->number2 && !str_cmp( wch->pcdata->clan->number2, wch->name ) ) ) ) )
>                       continue;
> 
>               if ( fGroup && !wch->leader &&
>                       !IS_SET( wch->pcdata->flags, PCFLAG_GROUPWHO ) && ( !whogr_p || !whogr_p->indent ) )
>                       continue;
> 
>               nMatch++;
> 
>               if ( fShowHomepage && wch->pcdata->homepage && wch->pcdata->homepage[0] != '\0' )
>                       sprintf( char_name, "<A HREF=\"%s\">%s</A>", show_tilde( wch->pcdata->homepage ), wch->name );
>               else
>                       strcpy( char_name, wch->name );
> 
>               sprintf( class_text, "%s%2d %s", NOT_AUTHED( wch ) ? "N" : " ", wch->level, class_table[wch->class]->who_name );
>               class = class_text;
>               switch ( wch->level )
>               {
>                       default:
>                               break;
>                       case MAX_LEVEL - 0:
>                               class = "Supreme Entity";
>                               break;
>                       case MAX_LEVEL - 1:
>                               class = "Infinite";
>                               break;
>                       case MAX_LEVEL - 2:
>                               class = "Eternal";
>                               break;
>                       case MAX_LEVEL - 3:
>                               class = "Ancient";
>                               break;
>                       case MAX_LEVEL - 4:
>                               class = "Exalted God";
>                               break;
>                       case MAX_LEVEL - 5:
>                               class = "Ascendant God";
>                               break;
>                       case MAX_LEVEL - 6:
>                               class = "Greater God";
>                               break;
>                       case MAX_LEVEL - 7:
>                               class = "God";
>                               break;
>                       case MAX_LEVEL - 8:
>                               class = "Lesser God";
>                               break;
>                       case MAX_LEVEL - 9:
>                               class = "Immortal";
>                               break;
>                       case MAX_LEVEL - 10:
>                               class = "Demi God";
>                               break;
>                       case MAX_LEVEL - 11:
>                               class = "Savior";
>                               break;
>                       case MAX_LEVEL - 12:
>                               class = "Creator";
>                               break;
>                       case MAX_LEVEL - 13:
>                               class = "Acolyte";
>                               break;
>                       case MAX_LEVEL - 14:
>                               class = "Neophyte";
>                               break;
>                       case MAX_LEVEL - 15:
>                               class = "Avatar";
>                               break;
>               }
> 
>               if ( !str_cmp( wch->name, sysdata.guild_overseer ) )
>                       extra_title = " [Overseer of Guilds]";
>               else if ( !str_cmp( wch->name, sysdata.guild_advisor ) )
>                       extra_title = " [Advisor to Guilds]";
>               else
>                       extra_title = "";
> 
>               if ( IS_GUEST( wch ) )
>                       class = "Guest";
>               else if ( wch->pcdata->clan
>                       && !str_cmp( wch->name, wch->pcdata->clan->leader ) && wch->pcdata->clan->leadrank[0] != '\0' )
>                       class = wch->pcdata->clan->leadrank;
>               else if ( wch->pcdata->clan
>                       && !str_cmp( wch->name, wch->pcdata->clan->number1 ) && wch->pcdata->clan->onerank[0] != '\0' )
>                       class = wch->pcdata->clan->onerank;
>               else if ( wch->pcdata->clan
>                       && !str_cmp( wch->name, wch->pcdata->clan->number2 ) && wch->pcdata->clan->tworank[0] != '\0' )
>                       class = wch->pcdata->clan->tworank;
>               else if ( wch->pcdata->rank && wch->pcdata->rank[0] != '\0' )
>                       class = wch->pcdata->rank;
>               else if ( IS_RETIRED( wch ) )
>                       class = "Retired";
> 
>               if ( wch->pcdata->clan )
>               {
>                       CLAN_DATA *pclan = wch->pcdata->clan;
> 
>                       if ( pclan->clan_type == CLAN_GUILD )
>                               strcpy( clan_name, " <" );
>                       else
>                               strcpy( clan_name, " (" );
> 
>                       if ( pclan->clan_type == CLAN_ORDER )
>                       {
>                               if ( !str_cmp( wch->name, pclan->deity ) )
>                                       strcat( clan_name, "Deity, Order of " );
>                               else if ( !str_cmp( wch->name, pclan->leader ) )
>                                       strcat( clan_name, "Leader, Order of " );
>                               else if ( !str_cmp( wch->name, pclan->number1 ) )
>                                       strcat( clan_name, "Number One, Order of " );
>                               else if ( !str_cmp( wch->name, pclan->number2 ) )
>                                       strcat( clan_name, "Number Two, Order of " );
>                               else
>                                       strcat( clan_name, "Order of " );
>                       }
>                       else if ( pclan->clan_type == CLAN_GUILD )
>                       {
>                               if ( !str_cmp( wch->name, pclan->leader ) )
>                                       strcat( clan_name, "Leader, " );
>                               if ( !str_cmp( wch->name, pclan->number1 ) )
>                                       strcat( clan_name, "First, " );
>                               if ( !str_cmp( wch->name, pclan->number2 ) )
>                                       strcat( clan_name, "Second, " );
>                       }
>                       else
>                       {
>                               if ( !str_cmp( wch->name, pclan->deity ) )
>                                       strcat( clan_name, "Deity of " );
>                               else if ( !str_cmp( wch->name, pclan->leader ) )
>                                       strcat( clan_name, "Leader of " );
>                               else if ( !str_cmp( wch->name, pclan->number1 ) )
>                                       strcat( clan_name, "Number One " );
>                               else if ( !str_cmp( wch->name, pclan->number2 ) )
>                                       strcat( clan_name, "Number Two " );
>                       }
>                       strcat( clan_name, pclan->name );
>                       if ( pclan->clan_type == CLAN_GUILD )
>                               strcat( clan_name, ">" );
>                       else
>                               strcat( clan_name, ")" );
>               }
>               else
>                       clan_name[0] = '\0';
> 
>               if ( wch->pcdata->council )
>               {
>                       strcpy( council_name, " [" );
>                       if ( wch->pcdata->council->head2 == NULL )
>                       {
>                               if ( !str_cmp( wch->name, wch->pcdata->council->head ) )
>                                       strcat( council_name, "Head of " );
>                       }
>                       else
>                       {
>                               if ( !str_cmp( wch->name, wch->pcdata->council->head )
>                                       || !str_cmp( wch->name, wch->pcdata->council->head2 ) )
>                                       strcat( council_name, "Co-Head of " );
>                       }
>                       strcat( council_name, wch->pcdata->council_name );
>                       strcat( council_name, "]" );
>               }
>               else
>                       council_name[0] = '\0';
> 
>               if ( xIS_SET( wch->act, PLR_WIZINVIS ) )
>                       sprintf( invis_str, "(%d) ", wch->pcdata->wizinvis );
>               else
>                       invis_str[0] = '\0';
>               sprintf( buf, "%*s%-15s %s%s%s%s%s%s%s%s.%s%s%s\n\r",
>                       ( fGroup ? whogr->indent : 0 ), "",
>                       class,
>                       invis_str,
>                       ( wch->desc && wch->desc->connected ) ? "[WRITING] " : "",
>                       xIS_SET( wch->act, PLR_AFK ) ? "[AFK] " : "",
>                       xIS_SET( wch->act, PLR_ATTACKER ) ? "(ATTACKER) " : "",
>                       xIS_SET( wch->act, PLR_KILLER ) ? "(KILLER) " : "",
>                       xIS_SET( wch->act, PLR_THIEF ) ? "(THIEF) " : "",
>                       char_name, wch->pcdata->title, extra_title, clan_name, council_name );
> 
>               /*
>                * This is where the old code would display the found player to the ch.
>                * What we do instead is put the found data into a linked list
>                */
> 
>               /*
>                * First make the structure. 
>                */
>               CREATE( cur_who, WHO_DATA, 1 );
>               cur_who->text = str_dup( buf );
>               if ( wch->level > 50 && IS_IMMORTAL( wch ) )
>                       cur_who->type = WT_IMM;
>               else if ( fGroup )
>                       if ( wch->leader || ( whogr_p && whogr_p->indent ) )
>                               cur_who->type = WT_GROUPED;
>                       else
>                               cur_who->type = WT_GROUPWHO;
>               else if ( CAN_PKILL( wch ) )
>                       cur_who->type = WT_DEADLY;
>               else
>                       cur_who->type = WT_MORTAL;
> 
>               /*
>                * Then put it into the appropriate list. 
>                */
>               switch ( cur_who->type )
>               {
>                       case WT_MORTAL:
>                               cur_who->next = first_mortal;
>                               first_mortal = cur_who;
>                               break;
>                       case WT_DEADLY:
>                               cur_who->next = first_deadly;
>                               first_deadly = cur_who;
>                               break;
>                       case WT_GROUPED:
>                               cur_who->next = first_grouped;
>                               first_grouped = cur_who;
>                               break;
>                       case WT_GROUPWHO:
>                               cur_who->next = first_groupwho;
>                               first_groupwho = cur_who;
>                               break;
>                       case WT_IMM:
>                               cur_who->next = first_imm;
>                               first_imm = cur_who;
>                               break;
>               }
> 
>       }
> 
> 
>       /*
>        * Ok, now we have three separate linked lists and what remains is to 
>        * * display the information and clean up.
>        */
>       /*
>        * Two extras now for grouped and groupwho (wanting group). -- Alty
>        */
> 
>       for ( cur_who = first_mortal; cur_who; cur_who = next_who )
>       {
>               if ( !ch )
>                       fprintf( whoout, cur_who->text );
>               else
>                       send_to_pager( cur_who->text, ch );
>               next_who = cur_who->next;
>               DISPOSE( cur_who->text );
>               DISPOSE( cur_who );
>       }
> 
>       if ( first_deadly )
>       {
>               if ( !ch )
>                       fprintf( whoout,
>                               "\n\r-------------------------------[ DEADLY CHARACTERS ]-------------------------\n\r\n\r" );
>               else
>                       send_to_pager_color
>                               ( "\n\r-------------------------------[ &GDEADLY CHARACTERS&g ]--------------------------\n\r\n\r",
>                               ch );
>       }
> 
>       for ( cur_who = first_deadly; cur_who; cur_who = next_who )
>       {
>               if ( !ch )
>                       fprintf( whoout, cur_who->text );
>               else
>                       send_to_pager( cur_who->text, ch );
>               next_who = cur_who->next;
>               DISPOSE( cur_who->text );
>               DISPOSE( cur_who );
>       }
> 
>       if ( first_grouped )
>       {
> /*      if ( !ch )
>         fprintf( whoout, "\n\r-----------------------------[ GROUPED CHARACTERS ]---------------------------\n\r\n\r" );
>       else*/
>               send_to_pager_color
>                       ( "\n\r-----------------------------[ &GGROUPED CHARACTERS&g ]---------------------------\n\r\n\r", ch );
>       }
>       for ( cur_who = first_grouped; cur_who; cur_who = next_who )
>       {
> /*      if ( !ch )
>         fprintf( whoout, cur_who->text );
>       else*/
>               send_to_pager( cur_who->text, ch );
>               next_who = cur_who->next;
>               DISPOSE( cur_who->text );
>               DISPOSE( cur_who );
>       }
> 
>       if ( first_groupwho )
>       {
>               if ( !ch )
>                       fprintf( whoout,
>                               "\n\r-------------------------------[ WANTING GROUP ]------------------------------\n\r\n\r" );
>               else
>                       send_to_pager_color
>                               ( "\n\r-------------------------------[&G WANTING GROUP&g ]------------------------------\n\r\n\r",
>                               ch );
>       }
>       for ( cur_who = first_groupwho; cur_who; cur_who = next_who )
>       {
>               if ( !ch )
>                       fprintf( whoout, cur_who->text );
>               else
>                       send_to_pager( cur_who->text, ch );
>               next_who = cur_who->next;
>               DISPOSE( cur_who->text );
>               DISPOSE( cur_who );
>       }
2417,2434c3545,3554
<                               if ( !whogr_t->l_follow )
<                                       whogr_t->follower = whogr_t->l_follow = whogr;
<                               else
<                               {
<                                       whogr_t->l_follow->next = whogr;
<                                       whogr_t->l_follow = whogr;
<                               }
<                               whogr->next = NULL;
<                               whogr->follower = whogr->l_follow = NULL;
<                               whogr->d = d;
<                               whogr->indent = 0;
<                               ++wc;
<                       }
<               }
<       /*
<        * Set up indentation levels 
<        */
<       indent_whogr( looker, first_whogr, 0 );
---
>       if ( first_imm )
>       {
>               if ( !ch )
>                       fprintf( whoout,
>                               "\n\r-----------------------------------[ IMMORTALS ]-----------------------------\n\r\n\r" );
>               else
>                       send_to_pager_color
>                               ( "\n\r-----------------------------------[&G IMMORTALS&g ]------------------------------\n\r\n\r",
>                               ch );
>       }
2436,2448c3556,3559
<       /*
<        * And now to linear link them.. 
<        */
<       for ( whogr_t = NULL, whogr = first_whogr; whogr; )
<               if ( whogr->l_follow )
<               {
<                       whogr->l_follow->next = whogr;
<                       whogr->l_follow = NULL;
<                       if ( whogr_t )
<                               whogr_t->next = whogr = whogr->follower;
<                       else
<                               first_whogr = whogr = whogr->follower;
<               }
---
>       for ( cur_who = first_imm; cur_who; cur_who = next_who )
>       {
>               if ( !ch )
>                       fprintf( whoout, cur_who->text );
2450,2453c3561,3576
<               {
<                       whogr_t = whogr;
<                       whogr = whogr->next;
<               }
---
>                       send_to_pager( cur_who->text, ch );
>               next_who = cur_who->next;
>               DISPOSE( cur_who->text );
>               DISPOSE( cur_who );
>       }
> 
>       if ( !ch )
>       {
>               fprintf( whoout, "%d player%s.\n\r", nMatch, nMatch == 1 ? "" : "s" );
>               fclose( whoout );
>               return;
>       }
> 
>       set_char_color( AT_YELLOW, ch );
>       ch_printf( ch, "%d player%s.\n\r", nMatch, nMatch == 1 ? "" : "s" );
>       return;
2456c3579,3580
< void do_who( CHAR_DATA * ch, char *argument )
---
> 
> void do_cwho( CHAR_DATA * ch, char *argument )
2483a3608
>       bool fRetired;
2516a3642
>       fRetired = FALSE;
2532,2533c3658,3662
<               send_to_pager_color
<                       ( "\n\r&GYou must specify at least one argument.\n\rUse 'who 1' to view the entire who list.\n\r", ch );
---
>               send_to_char_color( "\n\r&GYou must specify at least one argument.\n\r", ch );
>               send_to_char_color( "Use 'who 1' to view the entire who list.  Other arguments:\n\r", ch );
>               send_to_char_color
>                       ( " ... nc = new player advisors\n\r ... deadly = deadly players\n\r ... group = grouped players\n\r", ch );
>               send_to_char_color( "\n\rFor additional arguments or help, type 'help who'.\n\r", ch );
2567c3696
<                       if ( strlen( arg ) < 3 )
---
>                       if ( strlen( arg ) < 2 )
2572c3701,3707
< 
---
> /*
>           if ( !str_cmp( arg, "nc" ) || !str_cmp( arg, "newbie" ) || !str_cmp( arg, "advisor" ) )
>           {
>               do_who( ch, "\'newbie council\'" );
>               return;
>           }
> */
2582c3717,3723
<                       else if ( !str_cmp( arg, "www" ) )
---
>                       else
> /*
>           if ( !str_cmp( arg, "nc" ) || !str_cmp( arg, "advisor" ) || !str_cmp( arg, "newbie" ) )
>               fShowAdvisor = TRUE;
>           else
> */
>                       if ( !str_cmp( arg, "www" ) )
2583a3725,3726
>                       else if ( !str_cmp( arg, "retired" ) )
>                               fRetired = TRUE;
2617c3760
<                                       && fClanMatch == FALSE && fCouncilMatch == FALSE && fDeityMatch == FALSE )
---
>                                       && fClanMatch == FALSE && fRetired == FALSE && fCouncilMatch == FALSE && fDeityMatch == FALSE )
2669c3812,3816
<               if ( wch->level < iLevelLower || wch->level > iLevelUpper || ( fPkill && !CAN_PKILL( wch ) ) || ( fImmortalOnly && wch->level < LEVEL_IMMORTAL ) || ( fClassRestrict && !rgfClass[wch->class] ) || ( fRaceRestrict && !rgfRace[wch->race] ) || ( fClanMatch && ( pClan != wch->pcdata->clan ) ) /* SB */
---
>               if ( wch->level < iLevelLower || wch->level > iLevelUpper || ( fPkill && !CAN_PKILL( wch ) )
> /*
>       || ( fShowAdvisor && wch->pcdata->council && !str_cmp( "Newbie Council", wch->pcdata->council->name ) )
> */
>                       || ( fRetired && !IS_RETIRED( wch ) ) || ( fImmortalOnly && wch->level < LEVEL_IMMORTAL ) || ( fClassRestrict && !rgfClass[wch->class] ) || ( fRaceRestrict && !rgfRace[wch->race] ) || ( fClanMatch && ( pClan != wch->pcdata->clan ) )        /* SB */
2755c3902
<                       extra_title = " [Overseer of Guilds]";
---
>                       extra_title = " &c[&WOverseer of Guilds&c]&G";
2757c3904
<                       extra_title = " [Advisor to Guilds]";
---
>                       extra_title = " &c[&WAdvisor to Guilds&c]&G";
2761,2763c3908
<               if ( IS_RETIRED( wch ) )
<                       class = "Retired";
<               else if ( IS_GUEST( wch ) )
---
>               if ( IS_GUEST( wch ) )
2775a3921,3922
>               else if ( IS_RETIRED( wch ) )
>                       class = "Retired";
2782c3929
<                               strcpy( clan_name, " <" );
---
>                               strcpy( clan_name, " &c<&W" );
2784c3931
<                               strcpy( clan_name, " (" );
---
>                               strcpy( clan_name, " &c(&W" );
2789c3936
<                                       strcat( clan_name, "Deity, Order of " );
---
>                                       strcat( clan_name, "Deity of " );
2791c3938
<                                       strcat( clan_name, "Leader, Order of " );
---
>                                       strcat( clan_name, "Leader of " );
2793c3940
<                                       strcat( clan_name, "Number One, Order of " );
---
>                                       strcat( clan_name, "Number One, " );
2795c3942
<                                       strcat( clan_name, "Number Two, Order of " );
---
>                                       strcat( clan_name, "Number Two, " );
2797c3944
<                                       strcat( clan_name, "Order of " );
---
>                                       strcat( clan_name, "" );
2815c3962
<                                       strcat( clan_name, "Number One " );
---
>                                       strcat( clan_name, "Number One, " );
2817c3964
<                                       strcat( clan_name, "Number Two " );
---
>                                       strcat( clan_name, "Number Two, " );
2821c3968
<                               strcat( clan_name, ">" );
---
>                               strcat( clan_name, "&c>&G" );
2823c3970
<                               strcat( clan_name, ")" );
---
>                               strcat( clan_name, "&c)&G" );
2830c3977
<                       strcpy( council_name, " [" );
---
>                       strcpy( council_name, " &c[&W" );
2843c3990
<                       strcat( council_name, "]" );
---
>                       strcat( council_name, "&c]&G" );
2849c3996
<                       sprintf( invis_str, "(%d) ", wch->pcdata->wizinvis );
---
>                       sprintf( invis_str, "&g(&G%d&g)&G ", wch->pcdata->wizinvis );
2852c3999
<               sprintf( buf, "%*s%-15s %s%s%s%s%s%s%s%s.%s%s%s\n\r",
---
>               sprintf( buf, "&g%*s%-15s&G %s%s%s%s%s%s%s%s.%s%s%s\n\r",
2928c4075
<                       send_to_pager( cur_who->text, ch );
---
>                       send_to_pager_color( cur_who->text, ch );
2940c4087,4088
<                       send_to_pager( "\n\r-------------------------------[ DEADLY CHARACTERS ]--------------------------\n\r\n\r",
---
>                       send_to_pager_color
>                               ( "\n\r&g-------------------------------[&G DEADLY CHARACTERS &g]--------------------------\n\r\n\r",
2949c4097
<                       send_to_pager( cur_who->text, ch );
---
>                       send_to_pager_color( cur_who->text, ch );
2960,2961c4108,4109
<               send_to_pager( "\n\r-----------------------------[ GROUPED CHARACTERS ]---------------------------\n\r\n\r",
<                       ch );
---
>               send_to_pager_color
>                       ( "\n\r&g-----------------------------[ GROUPED CHARACTERS ]---------------------------\n\r\n\r", ch );
2968c4116
<               send_to_pager( cur_who->text, ch );
---
>               send_to_pager_color( cur_who->text, ch );
2980,2981c4128,4129
<                       send_to_pager( "\n\r-------------------------------[ WANTING GROUP ]------------------------------\n\r\n\r",
<                               ch );
---
>                       send_to_pager_color
>                               ( "\n\r&g-------------------------------[ WANTING GROUP ]------------------------------\n\r\n\r", ch );
2988c4136
<                       send_to_pager( cur_who->text, ch );
---
>                       send_to_pager_color( cur_who->text, ch );
3000c4148,4149
<                       send_to_pager( "\n\r-----------------------------------[ IMMORTALS ]------------------------------\n\r\n\r",
---
>                       send_to_pager_color
>                               ( "\n\r&g-----------------------------------[&G IMMORTALS&g ]------------------------------\n\r\n\r",
3009c4158
<                       send_to_pager( cur_who->text, ch );
---
>                       send_to_pager_color( cur_who->text, ch );
3022c4171
<       set_char_color( AT_YELLOW, ch );
---
>       set_char_color( AT_NOTE, ch );
3123,3124d4271
< 
< 
3126a4274
>       char buf[MAX_STRING_LENGTH];
3130a4279
>       bool PK_WHERE = FALSE;
3135,3136c4284,4285
<               && ( victim = get_char_world( ch, arg ) ) && !IS_NPC( victim )
<               && IS_SET( victim->pcdata->flags, PCFLAG_DND ) && get_trust( ch ) < get_trust( victim ) )
---
>               && ( victim = get_char_world( ch, arg ) )
>               && !IS_NPC( victim ) && IS_SET( victim->pcdata->flags, PCFLAG_DND ) && get_trust( ch ) < get_trust( victim ) )
3138c4287
<               act( AT_PLAIN, "You didn't find any $T.", ch, NULL, arg, TO_CHAR );
---
>               pager_printf_color( ch, "&GYou didn't find any %s.\n\r", capitalize( argument ) );
3142,3143c4291,4296
<       set_pager_color( AT_PERSON, ch );
<       if ( arg[0] == '\0' )
---
>       if ( !str_cmp( arg, "pk" ) )
>               PK_WHERE = TRUE;
> 
>       set_pager_color( AT_GREEN, ch );
> 
>       if ( arg[0] == '\0' || PK_WHERE )
3145c4298
<               pager_printf( ch, "\n\rPlayers near you in %s:\n\r", ch->in_room->area->name );
---
>               pager_printf_color( ch, "\n\r&G&gPlayers near you in %s:\n\r", ch->in_room->area->name );
3148,3149c4301,4317
<                       if ( ( d->connected == CON_PLAYING || d->connected == CON_EDITING ) && ( victim = d->character ) != NULL && !IS_NPC( victim ) && victim->in_room && victim->in_room->area == ch->in_room->area && can_see( ch, victim ) && ( get_trust( ch ) >= get_trust( victim ) || !IS_SET( victim->pcdata->flags, PCFLAG_DND ) ) ) /* if victim has the DND flag ch must outrank them */
< 
---
>               {
>                       if ( ( d->connected == CON_PLAYING || d->connected == CON_EDITING )
>                               && ( victim = d->character ) != NULL
>                               && !IS_NPC( victim )
>                               && victim->in_room
>                               && ( ( victim->in_room->area == ch->in_room->area )
>                                       && ( !xIS_SET( victim->in_room->room_flags, ROOM_HOUSE )
>                                               || in_same_house( victim, ch ) ) )
>                               && can_see( ch, victim )
>                               && ( victim->in_room == ch->in_room
>                                       || IS_IMMORTAL( ch )
>                                       || ( !IS_SET( ch->in_room->area->flags, AFLAG_NOWHERE )
>                                               && !xIS_SET( victim->in_room->room_flags, ROOM_NOWHERE ) ) )
>                               && ( get_trust( ch ) >= get_trust( victim ) || !IS_SET( victim->pcdata->flags, PCFLAG_DND ) ) )
>                               /*
>                                * if victim has the DND flag ch must outrank them 
>                                */
3152,3160c4320,4336
< /*            if ( CAN_PKILL( victim ) )
<                 set_pager_color( AT_PURPLE, ch );
<               else
<                 set_pager_color( AT_PERSON, ch );
< */
<                               pager_printf_color( ch, "&P%-13s  ", victim->name );
<                               if ( IS_IMMORTAL( victim ) && victim->level > 50 )
<                                       send_to_pager_color( "&P(&WImmortal&P)\t", ch );
<                               else if ( CAN_PKILL( victim ) && victim->pcdata->clan
---
>                               if ( PK_WHERE && !IS_PKILL( victim ) )
>                                       continue;
>                               pager_printf_color( ch, "&g| &G%-13s&w  ", victim->name );
>                               if ( IS_IMMORTAL( victim ) && victim->level > 50 && victim->level <= 65 )
>                               {
>                                       if ( imm_badge[MAX_LEVEL - victim->level] )
>                                       {
>                                               sprintf( buf, "%-25.25s\t", imm_badge[MAX_LEVEL - victim->level] );
>                                               send_to_pager_color( buf, ch );
>                                       }
>                                       else
>                                       {
>                                               send_to_pager_color( "&W(Immortal)\t\t", ch );
>                                       }
>                               }
>                               else if ( CAN_PKILL( victim )
>                                       && victim->pcdata->clan
3162c4338,4342
<                                       pager_printf_color( ch, "%-18s\t", victim->pcdata->clan->badge );
---
>                               {
>                                       int len = colorlen( victim->pcdata->clan->badge, 18 );
> 
>                                       pager_printf_color( ch, "&G%-*.*s\t", len, len, victim->pcdata->clan->badge );
>                               }
3164c4344
<                                       send_to_pager_color( "(&wUnclanned&P)\t", ch );
---
>                                       send_to_pager_color( "&W(Unclanned)\t\t", ch );
3167c4347
<                               pager_printf_color( ch, "&P%s\n\r", victim->in_room->name );
---
>                               pager_printf_color( ch, "&g| &w%s&w\n\r", victim->in_room->name );
3168a4349
>               }
3170c4351
<                       send_to_char( "None\n\r", ch );
---
>                       send_to_char_color( "&GNone\n\r", ch );
3175a4357
>               {
3178a4361,4364
>                               && ( ( !IS_SET( ch->in_room->area->flags, AFLAG_NOWHERE )
>                                               && !xIS_SET( victim->in_room->room_flags, ROOM_NOWHERE ) )
>                                       || IS_IMMORTAL( ch )
>                                       || ch->in_room == victim->in_room )
3182c4368,4369
<                               pager_printf( ch, "%-28s %s\n\r", PERS( victim, ch ), victim->in_room->name );
---
>                               pager_printf_color( ch, "&g| &G%s is currently at &w%s&w\n\r",
>                                       PERS( victim, ch ), victim->in_room->name );
3184a4372
>               }
3186c4374
<                       act( AT_PLAIN, "You didn't find any $T.", ch, NULL, arg, TO_CHAR );
---
>                       pager_printf_color( ch, "You didn't find any %s.\n\r", capitalize( argument ) );
3188d4375
< 
3192,3194d4378
< 
< 
< 
3303a4488
> 
3327,3329c4512,4522
<                       if ( !IS_IMMORTAL( ch )
<                               && ( skill_table[sn]->guild != CLASS_NONE
<                                       && ( !IS_GUILDED( ch ) || ( ch->pcdata->clan->class != skill_table[sn]->guild ) ) ) )
---
> /* Pkill only skill */
>                       if ( skill_table[sn]->guild != -1 && !IS_IMMORTAL( ch ) )
>                       {
>                               if ( skill_table[sn]->guild == 99 && !IS_SET( ch->pcdata->flags, PCFLAG_DEADLY ) )
>                                       continue;
>                               else if ( skill_table[sn]->guild != 99
>                                       && ( !IS_GUILDED( ch ) || ( ch->pcdata->clan->class != skill_table[sn]->guild ) ) )
>                                       continue;
>                       }
> 
>                       if ( sysdata.magichell && ch->level > 35 && number_percent(  ) < 30 )
3356a4550
>               char arg[MAX_INPUT_LENGTH];
3382c4576,4577
<               sn = skill_lookup( argument );
---
>               argument = one_argument( argument, arg );
>               sn = skill_lookup( arg );
3425,3427d4619
< 
<       if ( !IS_NPC(ch) && skill_table[sn]->guild != CLASS_NONE 
<            && ch->pcdata->clan->class != skill_table[sn]->guild )
3434c4626
<               if ( !IS_NPC( ch ) && skill_table[sn]->guild != CLASS_NONE )
---
>               if ( !IS_NPC( ch ) && skill_table[sn]->guild != CLASS_NONE && skill_table[sn]->guild != 99 )
3439a4632,4636
>               if ( !IS_NPC( ch ) && skill_table[sn]->guild == 99 && !IS_PKILL( ch ) )
>               {
>                       act( AT_TELL, "$n tells you 'Only deadlies may use that skill ...'", mob, NULL, ch, TO_VICT );
>                       return;
>               }
3522c4719,4722
<       char *pArg;
---
> 
>       /*
>        * char *pArg;
>        */
3525c4725,4728
<       char cEnd;
---
> 
>       /*
>        * char cEnd;
>        */
3529a4733
> #if 0
3570a4775,4778
> #endif
> 
>       argument = case_argument( argument, arg1 );
>       argument = case_argument( argument, arg2 );
3718,3724c4926,4932
<               ch_printf_color( ch, "%s", !IS_SET( ch->deaf, CHANNEL_RACETALK ) ? " &G+RACETALK" : " &g-racetalk" );
<               ch_printf_color( ch, "%s", !IS_SET( ch->deaf, CHANNEL_CHAT ) ? " &G+CHAT" : " &g-chat" );
<               if ( get_trust( ch ) > 2 && !NOT_AUTHED( ch ) )
<                       ch_printf_color( ch, "%s", !IS_SET( ch->deaf, CHANNEL_AUCTION ) ? " &G+AUCTION" : " &g-auction" );
<               ch_printf_color( ch, "%s", !IS_SET( ch->deaf, CHANNEL_TRAFFIC ) ? " &G+TRAFFIC" : " &g-traffic" );
<               ch_printf_color( ch, "%s", !IS_SET( ch->deaf, CHANNEL_QUEST ) ? " &G+QUEST" : " &g-quest" );
<               ch_printf_color( ch, "%s", !IS_SET( ch->deaf, CHANNEL_WARTALK ) ? " &G+WARTALK" : " &g-wartalk" );
---
>               ch_printf_color( ch, "%s", !xIS_SET( ch->deaf, CHANNEL_RACETALK ) ? " &G+RACETALK" : " &g-racetalk" );
>               ch_printf_color( ch, "%s", !xIS_SET( ch->deaf, CHANNEL_CHAT ) ? " &G+CHAT" : " &g-chat" );
>               if ( get_trust( ch ) > 4 && !NOT_AUTHED( ch ) )
>                       ch_printf_color( ch, "%s", !xIS_SET( ch->deaf, CHANNEL_AUCTION ) ? " &G+AUCTION" : " &g-auction" );
>               ch_printf_color( ch, "%s", !xIS_SET( ch->deaf, CHANNEL_TRAFFIC ) ? " &G+TRAFFIC" : " &g-traffic" );
>               ch_printf_color( ch, "%s", !xIS_SET( ch->deaf, CHANNEL_QUEST ) ? " &G+QUEST" : " &g-quest" );
>               ch_printf_color( ch, "%s", !xIS_SET( ch->deaf, CHANNEL_WARTALK ) ? " &G+WARTALK" : " &g-wartalk" );
3726,3730c4934,4937
<                       ch_printf_color( ch, "%s", !IS_SET( ch->deaf, CHANNEL_AVTALK ) ? " &G+AVATAR" : " &g-avatar" );
<               ch_printf_color( ch, "%s", !IS_SET( ch->deaf, CHANNEL_MUSIC ) ? " &G+MUSIC" : " &g-music" );
<               ch_printf_color( ch, "%s", !IS_SET( ch->deaf, CHANNEL_ASK ) ? " &G+ASK" : " &g-ask" );
<               ch_printf_color( ch, "%s", !IS_SET( ch->deaf, CHANNEL_SHOUT ) ? " &G+SHOUT" : " &g-shout" );
<               ch_printf_color( ch, "%s", !IS_SET( ch->deaf, CHANNEL_YELL ) ? " &G+YELL" : " &g-yell" );
---
>                       ch_printf_color( ch, "%s", !xIS_SET( ch->deaf, CHANNEL_AVTALK ) ? " &G+AVATAR" : " &g-avatar" );
>               ch_printf_color( ch, "%s", !xIS_SET( ch->deaf, CHANNEL_MUSIC ) ? " &G+MUSIC" : " &g-music" );
>               ch_printf_color( ch, "%s", !xIS_SET( ch->deaf, CHANNEL_ASK ) ? " &G+ASK" : " &g-ask" );
>               ch_printf_color( ch, "%s", !xIS_SET( ch->deaf, CHANNEL_YELL ) ? " &G+YELL" : " &g-yell" );
3736,3737c4943,4944
<               ch_printf_color( ch, "%s", !IS_SET( ch->deaf, CHANNEL_TELLS ) ? " &G+TELLS" : " &g-tells" );
<               ch_printf_color( ch, "%s", !IS_SET( ch->deaf, CHANNEL_WHISPER ) ? " &G+WHISPER" : " &g-whisper" );
---
>               ch_printf_color( ch, "%s", !xIS_SET( ch->deaf, CHANNEL_TELLS ) ? " &G+TELLS" : " &g-tells" );
>               ch_printf_color( ch, "%s", !xIS_SET( ch->deaf, CHANNEL_WHISPER ) ? " &G+WHISPER" : " &g-whisper" );
3741c4948
<                               send_to_char_color( !IS_SET( ch->deaf, CHANNEL_ORDER ) ? " &G+ORDER" : " &g-order", ch );
---
>                               send_to_char_color( !xIS_SET( ch->deaf, CHANNEL_ORDER ) ? " &G+ORDER" : " &g-order", ch );
3744c4951
<                               send_to_char_color( !IS_SET( ch->deaf, CHANNEL_GUILD ) ? " &G+GUILD" : " &g-guild", ch );
---
>                               send_to_char_color( !xIS_SET( ch->deaf, CHANNEL_GUILD ) ? " &G+GUILD" : " &g-guild", ch );
3746c4953
<                               send_to_char_color( !IS_SET( ch->deaf, CHANNEL_CLAN ) ? " &G+CLAN" : " &g-clan", ch );
---
>                               send_to_char_color( !xIS_SET( ch->deaf, CHANNEL_CLAN ) ? " &G+CLAN" : " &g-clan", ch );
3749c4956
<                       ch_printf_color( ch, "%s", !IS_SET( ch->deaf, CHANNEL_NEWBIE ) ? " &G+NEWBIE" : " &g-newbie" );
---
>                       ch_printf_color( ch, "%s", !xIS_SET( ch->deaf, CHANNEL_NEWBIE ) ? " &G+NEWBIE" : " &g-newbie" );
3751c4958,4960
<                       ch_printf_color( ch, "%s", !IS_SET( ch->deaf, CHANNEL_COUNCIL ) ? " &G+COUNCIL" : " &g-council" );
---
>                       ch_printf_color( ch, "%s", !xIS_SET( ch->deaf, CHANNEL_COUNCIL ) ? " &G+COUNCIL" : " &g-council" );
>               if ( !IS_NPC( ch ) && IS_SET( ch->pcdata->flags, PCFLAG_RETIRED ) )
>                       ch_printf_color( ch, "%s", !xIS_SET( ch->deaf, CHANNEL_RETIRED ) ? " &G+RETIRED" : " &g-retired" );
3759,3760c4968,4969
<                       send_to_char_color( !IS_SET( ch->deaf, CHANNEL_IMMTALK ) ? " &G+IMMTALK" : " &g-immtalk", ch );
< /*          send_to_char_color( !IS_SET( ch->deaf, CHANNEL_PRAY )       ?
---
>                       send_to_char_color( !xIS_SET( ch->deaf, CHANNEL_IMMTALK ) ? " &G+IMMTALK" : " &g-immtalk", ch );
> /*          send_to_char_color( !xIS_SET( ch->deaf, CHANNEL_PRAY )       ?
3763,3765c4972,4976
<                               send_to_char_color( !IS_SET( ch->deaf, CHANNEL_HIGHGOD ) ? " &G+MUSE" : " &g-muse", ch );
<                       send_to_char_color( !IS_SET( ch->deaf, CHANNEL_MONITOR ) ? " &G+MONITOR" : " &g-monitor", ch );
<                       send_to_char_color( !IS_SET( ch->deaf, CHANNEL_AUTH ) ? " &G+AUTH" : " &g-auth", ch );
---
>                               send_to_char_color( !xIS_SET( ch->deaf, CHANNEL_HIGHGOD ) ? " &G+MUSE" : " &g-muse", ch );
>                       send_to_char_color( !xIS_SET( ch->deaf, CHANNEL_MONITOR ) ? " &G+MONITOR" : " &g-monitor", ch );
>                       send_to_char_color( !xIS_SET( ch->deaf, CHANNEL_DEATH ) ? " &G+DEATH" : " &g-death", ch );
>                       send_to_char_color( !xIS_SET( ch->deaf, CHANNEL_AUTH ) ? " &G+AUTH" : " &g-auth", ch );
>                       send_to_char_color( !xIS_SET( ch->deaf, CHANNEL_RETIRED ) ? " &G+RETIRED" : " &g-retired", ch );
3769,3772c4980,4987
<                       send_to_char_color( !IS_SET( ch->deaf, CHANNEL_LOG ) ? " &G+LOG" : " &g-log", ch );
<                       send_to_char_color( !IS_SET( ch->deaf, CHANNEL_BUILD ) ? " &G+BUILD" : " &g-build", ch );
<                       send_to_char_color( !IS_SET( ch->deaf, CHANNEL_COMM ) ? " &G+COMM" : " &g-comm", ch );
<                       send_to_char_color( !IS_SET( ch->deaf, CHANNEL_WARN ) ? " &G+WARN" : " &g-warn", ch );
---
>                       send_to_char_color( !xIS_SET( ch->deaf, CHANNEL_LOG ) ? " &G+LOG" : " &g-log", ch );
>                       send_to_char_color( !xIS_SET( ch->deaf, CHANNEL_BUILD ) ? " &G+BUILD" : " &g-build", ch );
>                       send_to_char_color( !xIS_SET( ch->deaf, CHANNEL_COMM ) ? " &G+COMM" : " &g-comm", ch );
>                       send_to_char_color( !xIS_SET( ch->deaf, CHANNEL_WARN ) ? " &G+WARN" : " &g-warn", ch );
> /*
>           send_to_char_color( !xIS_SET(ch->deaf, CHANNEL_BUG)         ?
>               " &G+BUG"       :       " &g-bug", ch);
> */
3774c4989,4991
<                               send_to_char_color( !IS_SET( ch->deaf, CHANNEL_HIGH ) ? " &G+HIGH" : " &g-high", ch );
---
>                               send_to_char_color( !xIS_SET( ch->deaf, CHANNEL_HIGH ) ? " &G+HIGH" : " &g-high", ch );
>                       if ( get_trust( ch ) >= 57 )
>                               send_to_char_color( !xIS_SET( ch->deaf, CHANNEL_BUG ) ? " &G+BUG" : " &g-bug", ch );
3826a5044,5045
>               else if ( !str_cmp( arg + 1, "death" ) )
>                       bit = CHANNEL_DEATH;
3837,3838d5055
<               else if ( !str_cmp( arg + 1, "shout" ) )
<                       bit = CHANNEL_SHOUT;
3844a5062,5063
>               else if ( !str_cmp( arg + 1, "bug" ) )
>                       bit = CHANNEL_BUG;
3852a5072,5073
>               else if ( !str_cmp( arg + 1, "retired" ) )
>                       bit = CHANNEL_RETIRED;
3863,3873c5084,5093
<                       REMOVE_BIT( ch->deaf, CHANNEL_RACETALK );
<                       REMOVE_BIT( ch->deaf, CHANNEL_AUCTION );
<                       REMOVE_BIT( ch->deaf, CHANNEL_CHAT );
<                       REMOVE_BIT( ch->deaf, CHANNEL_QUEST );
<                       REMOVE_BIT( ch->deaf, CHANNEL_WARTALK );
<                       REMOVE_BIT( ch->deaf, CHANNEL_PRAY );
<                       REMOVE_BIT( ch->deaf, CHANNEL_TRAFFIC );
<                       REMOVE_BIT( ch->deaf, CHANNEL_MUSIC );
<                       REMOVE_BIT( ch->deaf, CHANNEL_ASK );
<                       REMOVE_BIT( ch->deaf, CHANNEL_SHOUT );
<                       REMOVE_BIT( ch->deaf, CHANNEL_YELL );
---
>                       xREMOVE_BIT( ch->deaf, CHANNEL_RACETALK );
>                       xREMOVE_BIT( ch->deaf, CHANNEL_AUCTION );
>                       xREMOVE_BIT( ch->deaf, CHANNEL_CHAT );
>                       xREMOVE_BIT( ch->deaf, CHANNEL_QUEST );
>                       xREMOVE_BIT( ch->deaf, CHANNEL_WARTALK );
>                       xREMOVE_BIT( ch->deaf, CHANNEL_PRAY );
>                       xREMOVE_BIT( ch->deaf, CHANNEL_TRAFFIC );
>                       xREMOVE_BIT( ch->deaf, CHANNEL_MUSIC );
>                       xREMOVE_BIT( ch->deaf, CHANNEL_ASK );
>                       xREMOVE_BIT( ch->deaf, CHANNEL_YELL );
3877c5097
<                        * REMOVE_BIT (ch->deaf, CHANNEL_CLAN);
---
>                        * xREMOVE_BIT (ch->deaf, CHANNEL_CLAN);
3880c5100
<                        * REMOVE_BIT (ch->deaf, CHANNEL_COUNCIL);
---
>                        * xREMOVE_BIT (ch->deaf, CHANNEL_COUNCIL);
3883c5103
<                        * REMOVE_BIT (ch->deaf, CHANNEL_GUILD);
---
>                        * xREMOVE_BIT (ch->deaf, CHANNEL_GUILD);
3886c5106
<                               REMOVE_BIT( ch->deaf, CHANNEL_AVTALK );
---
>                               xREMOVE_BIT( ch->deaf, CHANNEL_AVTALK );
3890c5110
<                        * REMOVE_BIT (ch->deaf, CHANNEL_COMM);
---
>                        * xREMOVE_BIT (ch->deaf, CHANNEL_COMM);
3896,3906c5116,5125
<                       SET_BIT( ch->deaf, CHANNEL_RACETALK );
<                       SET_BIT( ch->deaf, CHANNEL_AUCTION );
<                       SET_BIT( ch->deaf, CHANNEL_TRAFFIC );
<                       SET_BIT( ch->deaf, CHANNEL_CHAT );
<                       SET_BIT( ch->deaf, CHANNEL_QUEST );
<                       SET_BIT( ch->deaf, CHANNEL_PRAY );
<                       SET_BIT( ch->deaf, CHANNEL_MUSIC );
<                       SET_BIT( ch->deaf, CHANNEL_ASK );
<                       SET_BIT( ch->deaf, CHANNEL_SHOUT );
<                       SET_BIT( ch->deaf, CHANNEL_WARTALK );
<                       SET_BIT( ch->deaf, CHANNEL_YELL );
---
>                       xSET_BIT( ch->deaf, CHANNEL_RACETALK );
>                       xSET_BIT( ch->deaf, CHANNEL_AUCTION );
>                       xSET_BIT( ch->deaf, CHANNEL_TRAFFIC );
>                       xSET_BIT( ch->deaf, CHANNEL_CHAT );
>                       xSET_BIT( ch->deaf, CHANNEL_QUEST );
>                       xSET_BIT( ch->deaf, CHANNEL_PRAY );
>                       xSET_BIT( ch->deaf, CHANNEL_MUSIC );
>                       xSET_BIT( ch->deaf, CHANNEL_ASK );
>                       xSET_BIT( ch->deaf, CHANNEL_WARTALK );
>                       xSET_BIT( ch->deaf, CHANNEL_YELL );
3910c5129
<                        * SET_BIT (ch->deaf, CHANNEL_CLAN);
---
>                        * xSET_BIT (ch->deaf, CHANNEL_CLAN);
3913c5132
<                        * SET_BIT (ch->deaf, CHANNEL_COUNCIL);
---
>                        * xSET_BIT (ch->deaf, CHANNEL_COUNCIL);
3916c5135
<                        * SET_BIT (ch->deaf, CHANNEL_GUILD);
---
>                        * xSET_BIT (ch->deaf, CHANNEL_GUILD);
3919c5138
<                               SET_BIT( ch->deaf, CHANNEL_AVTALK );
---
>                               xSET_BIT( ch->deaf, CHANNEL_AVTALK );
3923c5142
<                        * SET_BIT (ch->deaf, CHANNEL_COMM);
---
>                        * xSET_BIT (ch->deaf, CHANNEL_COMM);
3929c5148
<                       REMOVE_BIT( ch->deaf, bit );
---
>                       xREMOVE_BIT( ch->deaf, bit );
3933c5152
<                       SET_BIT( ch->deaf, bit );
---
>                       xSET_BIT( ch->deaf, bit );
3943a5163,5171
>  * display RETRIEDLIST file           -Shaddai
>  */
> void do_retiredlist( CHAR_DATA * ch, char *argument )
> {
>       set_pager_color( AT_IMMORT, ch );
>       show_file( ch, RETIREDLIST_FILE );
> }
> 
> /*
3976c5204
<               ch_printf( ch, "%-12s   %-12s   %-12s   %-12s\n\r           %-12s   %-12s   %-12s   %-12s",
---
>               ch_printf( ch, "%-12s   %-12s   %-12s   %-12s\n\r           %-12s   %-12s   %-12s   %-12s\n\r           %-12s",
3990c5218,5220
<                       : "[-] ansi", xIS_SET( ch->act, PLR_RIP ) ? "[+] RIP" : "[-] rip" );
---
>                       : "[-] ansi",
>                       xIS_SET( ch->act, PLR_RIP ) ? "[+] RIP"
>                       : "[-] rip", xIS_SET( ch->act, PLR_COMPASS ) ? "[+] COMPASS" : "[-] compass" );
4012a5243,5244
>               else
>                       ch_printf( ch, "   %-12s", IS_SET( ch->pcdata->flags, PCFLAG_NOEXP ) ? "[+] NOEXP" : "[-] noexp" );
4017c5249
<               ch_printf( ch, "%-12s   %-12s   %-12s",
---
>               ch_printf( ch, "%-12s   %-12s   %-12s   %-12s",
4021c5253,5255
<                       : "[-] groupwho", IS_SET( ch->pcdata->flags, PCFLAG_NOINTRO ) ? "[+] NOINTRO" : "[-] nointro" );
---
>                       : "[-] groupwho",
>                       IS_SET( ch->pcdata->flags, PCFLAG_NOINTRO ) ? "[+] NOINTRO"
>                       : "[-] nointro", IS_SET( ch->pcdata->flags, PCFLAG_BECKON ) ? "[+] BECKON" : "[-] beckon" );
4026c5260,5261
<               ch_printf_color( ch, "Pager Length (%d)    Wimpy (&W%d&w)", ch->pcdata->pagerlen, ch->wimpy );
---
>               ch_printf_color( ch, "Pager Length (%d)    Wimpy (&W%d&w)   Hints (%s)",
>                       ch->pcdata->pagerlen, ch->wimpy, IS_SET( ch->pcdata->flags, PCFLAG_HINTS ) ? "ON" : "off" );
4040c5275
<               ch_printf( ch, "\n\r%s%s%s%s%s%s",
---
>               ch_printf( ch, "\n\r%s%s%s%s%s%s%s%s",
4051c5286,5290
<                       xIS_SET( ch->act, PLR_KILLER ) ? " For the crime of murder you are sentenced to death...\n\r" : "" );
---
>                       xIS_SET( ch->act, PLR_KILLER ) ?
>                       " For the crime of murder you are sentenced to death...\n\r" : "",
>                       xIS_SET( ch->act, PLR_NOHOMEPAGE ) ?
>                       " You are not permitted to set your homepage.\n\r" : "",
>                       IS_SET( ch->pcdata->flags, PCFLAG_NODESC ) ? " You are not permitted to set your description.\n\r" : "" );
4087a5327,5328
>               else if ( !str_prefix( arg + 1, "compass" ) )
>                       bit = PLR_COMPASS;
4102,4103c5343,5344
<                       if ( ( bit == PLR_FLEE || bit == PLR_NICE || bit == PLR_SHOVEDRAG )
<                               && IS_SET( ch->pcdata->flags, PCFLAG_DEADLY ) )
---
>                       if ( ( bit == PLR_FLEE
>                                       || bit == PLR_NICE || bit == PLR_SHOVEDRAG ) && IS_SET( ch->pcdata->flags, PCFLAG_DEADLY ) )
4121a5363,5364
>                       else if ( !str_prefix( arg + 1, "beckon" ) )
>                               bit = PCFLAG_BECKON;
4129a5373,5376
>                       else if ( !str_prefix( arg + 1, "noexp" ) )
>                               bit = PCFLAG_NOEXP;
>                       else if ( !str_prefix( arg + 1, "hints" ) )
>                               bit = PCFLAG_HINTS;
4136a5384,5390
>                       if ( bit )
>                       {
>                               if ( ( bit == PCFLAG_NOSUMMON ) && IS_SET( ch->pcdata->flags, PCFLAG_DEADLY ) )
>                               {
>                                       send_to_char( "Pkill characters can not config that option.\n\r", ch );
>                                       return;
>                               }
4138,4141c5392,5395
<                       if ( fSet )
<                               SET_BIT( ch->pcdata->flags, bit );
<                       else
<                               REMOVE_BIT( ch->pcdata->flags, bit );
---
>                               if ( fSet )
>                                       SET_BIT( ch->pcdata->flags, bit );
>                               else
>                                       REMOVE_BIT( ch->pcdata->flags, bit );
4143,4144c5397,5399
<                       send_to_char( "Ok.\n\r", ch );
<                       return;
---
>                               send_to_char( "Ok.\n\r", ch );
>                               return;
>                       }
4219,4222c5474,5477
<       char *header_string1 = "\n\r   Author    |             Area"
<               "                     | " "Recommended |  Enforced\n\r";
<       char *header_string2 = "-------------+-----------------" "---------------------+----" "---------+-----------\n\r";
<       char *print_string = "%-12s | %-36s | %4d - %-4d | %3d - " "%-3d \n\r";
---
>       char *header_string1 = "\n\r   &c&GAuthor          &Y|&G              Area"
>               "                     &Y| " "&GRecommended &Y|\n\r";
>       char *header_string2 = "-------------------+------------------" "---------------------+----" "---------+&w&G\n\r";
>       char *print_string = "&c&G%-18.18s &Y| &z%-37s &Y|&W %4d - %-4d &Y|\n\r";
4231a5487
>       char *org = argument;
4242,4243c5498,5499
<                               send_to_pager( header_string1, ch );
<                               send_to_pager( header_string2, ch );
---
>                               send_to_pager_color( header_string1, ch );
>                               send_to_pager_color( header_string2, ch );
4246,4248c5502,5505
<                                       pager_printf( ch, print_string,
<                                               pArea->author, pArea->name,
<                                               pArea->low_soft_range, pArea->hi_soft_range, pArea->low_hard_range, pArea->hi_hard_range );
---
>                                       if ( IS_SET( pArea->flags, AFLAG_HIDDEN ) )
>                                               continue;       /* Blod, 2000 */
>                                       pager_printf_color( ch, print_string,
>                                               pArea->author, pArea->name, pArea->low_soft_range, pArea->hi_soft_range );
4254,4255c5511,5523
<                               send_to_char( "Area may only be followed by numbers, or 'old'.\n\r", ch );
<                               return;
---
>                               for ( pArea = first_area_name; pArea; pArea = pArea->next_sort_name )
>                               {
>                                       if ( !str_cmp( pArea->name, org ) )
>                                       {
>                                               pager_printf_color( ch, "&CArea:  &Y%s\n\r", pArea->name );
>                                               pager_printf_color( ch, "&CAuthor:  &Y%s\n\r", pArea->author );
>                                               pager_printf_color( ch, "&CCredits: &Y%s\n\r", pArea->credits );
>                                               pager_printf_color( ch, "&CLevel Range:  &Y%d - %d\n\r\n\r", pArea->low_soft_range,
>                                                       pArea->hi_soft_range );
>                                               do_help( ch, pArea->name );
>                                               return;
>                                       }
>                               }
4256a5525,5527
> 
>                       send_to_char( "Area may only be followed by numbers, 'old', or an area name.\n\r", ch );
>                       return;
4292,4293c5563,5564
<       send_to_pager( header_string1, ch );
<       send_to_pager( header_string2, ch );
---
>       send_to_pager_color( header_string1, ch );
>       send_to_pager_color( header_string2, ch );
4299,4301c5570,5573
<                       pager_printf( ch, print_string,
<                               pArea->author, pArea->name,
<                               pArea->low_soft_range, pArea->hi_soft_range, pArea->low_hard_range, pArea->hi_hard_range );
---
>                       if ( IS_SET( pArea->flags, AFLAG_HIDDEN ) )
>                               continue;       /* Blod, 2000 */
>                       pager_printf_color( ch, print_string,
>                               pArea->author, pArea->name, pArea->low_soft_range, pArea->hi_soft_range );
4348c5620
<       hilev = 50;
---
>       hilev = LEVEL_AVATAR;
4383a5656,5664
>                       if ( skill_table[sn]->guild != -1 && !IS_IMMORTAL( ch ) )
>                       {
>                               if ( skill_table[sn]->guild == 99 && !IS_SET( ch->pcdata->flags, PCFLAG_DEADLY ) )
>                                       continue;
>                               else if ( skill_table[sn]->guild != 99
>                                       && ( !IS_GUILDED( ch ) || ( ch->pcdata->clan->class != skill_table[sn]->guild ) ) )
>                                       continue;
>                       }
> 
4386a5668,5670
>                       if ( sysdata.magichell && ch->level > 35 && number_percent(  ) < 30 )
>                               continue;
> 
4450a5735
>       CLAN_DATA *pclan;
4458a5744,5745
>       set_pager_color( AT_GREEN, ch );
> 
4490c5777
<       pager_printf( ch, " %s is a %sdeadly player",
---
>       pager_printf_color( ch, " %s is a %sdeadly player",
4494c5781
<       if ( victim->pcdata->clan )
---
>       if ( ( pclan = victim->pcdata->clan ) != NULL )
4496,4502c5783,5821
<               if ( victim->pcdata->clan->clan_type == CLAN_ORDER )
<                       send_to_pager( ", and belongs to the Order ", ch );
<               else if ( victim->pcdata->clan->clan_type == CLAN_GUILD )
<                       send_to_pager( ", and belongs to the ", ch );
<               else
<                       send_to_pager( ", and belongs to Clan ", ch );
<               send_to_pager( victim->pcdata->clan->name, ch );
---
>               switch ( pclan->clan_type )
>               {
>                       default:
>                               if ( !str_cmp( victim->name, pclan->deity ) )
>                                       send_to_pager( ", and is Deity of ", ch );
>                               else if ( !str_cmp( victim->name, pclan->leader ) )
>                                       send_to_pager( ", and is Leader of ", ch );
>                               else if ( !str_cmp( victim->name, pclan->number1 ) )
>                                       send_to_pager( ", and is Number One of ", ch );
>                               else if ( !str_cmp( victim->name, pclan->number2 ) )
>                                       send_to_pager( ", and is Number Two of ", ch );
>                               else
>                                       send_to_pager( ", and belongs to Clan ", ch );
>                               break;
>                       case CLAN_ORDER:
>                               if ( !str_cmp( victim->name, pclan->deity ) )
>                                       send_to_pager( ", and is Deity of the Order of ", ch );
>                               else if ( !str_cmp( victim->name, pclan->leader ) )
>                                       send_to_pager( ", and is Leader of the Order of ", ch );
>                               else if ( !str_cmp( victim->name, pclan->number1 ) )
>                                       send_to_pager( ", and is Number One of the Order of ", ch );
>                               else if ( !str_cmp( victim->name, pclan->number2 ) )
>                                       send_to_pager( ", and is Number Two of the Order of ", ch );
>                               else
>                                       send_to_pager( ", and belongs to the Order of ", ch );
>                               break;
>                       case CLAN_GUILD:
>                               if ( !str_cmp( victim->name, pclan->leader ) )
>                                       pager_printf( ch, ", and is the %s of the ",
>                                               victim->sex == SEX_FEMALE ? "Guildmistress" : "Guildmaster" );
>                               else if ( !str_cmp( victim->name, pclan->number1 ) )
>                                       send_to_pager( ", and is First of the ", ch );
>                               else if ( !str_cmp( victim->name, pclan->number2 ) )
>                                       send_to_pager( ", and is Second of the ", ch );
>                               else
>                                       send_to_pager( ", and belongs to the ", ch );
>                               break;
>               }
>               send_to_pager( pclan->name, ch );
4507,4508c5826,5851
<               pager_printf( ch, " %s holds a seat on:  %s\n\r",
<                       victim->sex == SEX_MALE ? "He" : victim->sex == SEX_FEMALE ? "She" : "It", victim->pcdata->council->name );
---
>       {
>               if ( !str_cmp( victim->name, victim->pcdata->council->head ) )
>                       pager_printf( ch, " %s is the %s of:  %s\n\r",
>                               victim->sex == SEX_MALE ? "He" :
>                               victim->sex == SEX_FEMALE ? "She" : "It",
>                               victim->pcdata->council->head2 == NULL ? "Head" : "Co-Head", victim->pcdata->council->name );
>               else if ( victim->pcdata->council->head2 && !str_cmp( victim->name, victim->pcdata->council->head2 ) )
>                       pager_printf( ch, " %s is the Co-Head of:  %s\n\r",
>                               victim->sex == SEX_MALE ? "He" :
>                               victim->sex == SEX_FEMALE ? "She" : "It", victim->pcdata->council->name );
>               else
>                       pager_printf( ch, " %s holds a seat on:  %s\n\r",
>                               victim->sex == SEX_MALE ? "He" :
>                               victim->sex == SEX_FEMALE ? "She" : "It", victim->pcdata->council->name );
>       }
> 
> 
>       pager_printf( ch, " %s has accumulated %d glory in %s lifetime.\n\r",
>               victim->name,
>               victim->pcdata->quest_accum, victim->sex == SEX_MALE ? "his" : victim->sex == SEX_FEMALE ? "her" : "its" );
> 
>       if ( victim->level >= 50 )
>               pager_printf( ch, " %s has %d honour and %s holds the rank of: %s\n\r",
>                       victim->name,
>                       victim->pcdata->honour,
>                       victim->sex == SEX_MALE ? "he" : victim->sex == SEX_FEMALE ? "she" : "it", get_honour( victim ) );
4518a5862,5871
>       if ( victim->pcdata->email && victim->pcdata->email[0] != '\0' )
>               pager_printf( ch, " %s email is: %s\n\r",
>                       victim->sex == SEX_MALE ? "His" :
>                       victim->sex == SEX_FEMALE ? "Her" : "Its", show_tilde( victim->pcdata->email ) );
> 
>       if ( victim->pcdata->icq && victim->pcdata->icq[0] != '\0' )
>               pager_printf( ch, " %s icq is %s\n\r",
>                       victim->sex == SEX_MALE ? "His" :
>                       victim->sex == SEX_FEMALE ? "Her" : "Its", show_tilde( victim->pcdata->icq ) );
> 
4529,4530c5882,5887
<               if ( victim->pcdata->authed_by && victim->pcdata->authed_by[0] != '\0' )
<                       pager_printf( ch, "%s was authorized by %s.\n\r", victim->name, victim->pcdata->authed_by );
---
>               if ( get_trust( ch ) > LEVEL_GOD )
>               {
>                       if ( victim->pcdata->authed_by && victim->pcdata->authed_by[0] != '\0' )
>                               pager_printf( ch, "%s was authorized by %s.\n\r", victim->name, victim->pcdata->authed_by );
>               }
> 
4564c5921,5927
<                       || xIS_SET( victim->act, PLR_KILLER ) )
---
>                       || xIS_SET( victim->act, PLR_KILLER ) || IS_SET( victim->pcdata->flags, PCFLAG_NOBECKON )
>                       || IS_SET( victim->pcdata->flags, PCFLAG_NODESC )
>                       || IS_SET( victim->pcdata->flags, PCFLAG_NOBIO )
>                       || IS_SET( victim->pcdata->flags, PCFLAG_NOTITLE )
>                       || IS_SET( victim->pcdata->flags, PCFLAG_NOHTTP )
>                       || xIS_SET( victim->act, PLR_NOHOMEPAGE )
>                       || xIS_SET( victim->act, PLR_LITTERBUG ) || xIS_SET( victim->act, PLR_FREEZE ) )
4566c5929
<                       sprintf( buf2, "This player has the following flags set:" );
---
>                       sprintf( buf2, "&GThis character has the following sanctions: &Y" );
4568a5932,5933
>                       if ( xIS_SET( victim->act, PLR_FREEZE ) )
>                               strcat( buf2, " frozen" );
4576a5942,5955
>                       if ( xIS_SET( victim->act, PLR_LITTERBUG ) )
>                               strcat( buf2, " litterbug" );
>                       if ( IS_SET( victim->pcdata->flags, PCFLAG_NOBIO ) )
>                               strcat( buf2, " nobio" );
>                       if ( IS_SET( victim->pcdata->flags, PCFLAG_NODESC ) )
>                               strcat( buf2, " nodesc" );
>                       if ( IS_SET( victim->pcdata->flags, PCFLAG_NOBECKON ) )
>                               strcat( buf2, " nobeckon" );
>                       if ( xIS_SET( victim->act, PLR_NOHOMEPAGE ) )
>                               strcat( buf2, " nohomepage" );
>                       if ( IS_SET( victim->pcdata->flags, PCFLAG_NOTITLE ) )
>                               strcat( buf2, " notitle" );
>                       if ( IS_SET( victim->pcdata->flags, PCFLAG_NOHTTP ) )
>                               strcat( buf2, " nohttp" );
4578c5957
<                       send_to_pager( buf2, ch );
---
>                       send_to_pager_color( buf2, ch );
4579a5959
>               set_char_color( AT_GREEN, ch );
4587a5968,5972
>               else if ( victim->pcdata->recent_site )
>               {
>                       sprintf( buf2, "%s's most recent IP: %s \n\r ", victim->name, victim->pcdata->recent_site );
>                       send_to_pager( buf2, ch );
>               }