cotn25/area/
cotn25/src/
/***************************************************************************
 *  Original Diku Mud copyright (C) 1990, 1991 by Sebastian Hammer,        *
 *  Michael Seifert, Hans Henrik St{rfeldt, Tom Madsen, and Katja Nyboe.   *
 *                                                                         *
 *  Merc Diku Mud improvements copyright (C) 1992, 1993 by Michael         *
 *  Chastain, Michael Quan, and Mitchell Tse.                              *
 *                                                                         *
 *  In order to use any part of this Merc Diku Mud, you must comply with   *
 *  both the original Diku license in 'license.doc' as well the Merc       *
 *  license in 'license.txt'.  In particular, you may not remove either of *
 *  these copyright notices.                                               *
 *                                                                         *
 *  Much time and thought has gone into this software and you are          *
 *  benefiting.  We hope that you share your changes too.  What goes       *
 *  around, comes around.                                                  *
 ***************************************************************************/


#if defined(macintosh)
#include <types.h>
#else
#include <sys/types.h>
#endif
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <assert.h>
#if !defined(WIN32)
#include <unistd.h>
#endif
#include <string.h>
#include "merc.h"

/*
===========================================================================
This snippet was written by Erwin S. Andreasen, erwin@pip.dknet.dk. You may 
use this code freely, as long as you retain my name in all of the files. You
also have to mail me telling that you are using it. I am giving this,
hopefully useful, piece of source code to you for free, and all I require
from you is some feedback.

Please mail me if you find any bugs or have any new ideas or just comments.

All my snippets are publically available at:

http://pip.dknet.dk/~pip1773/

If you do not have WWW access, try ftp'ing to pip.dknet.dk and examine
the /pub/pip1773 directory.

===========================================================================
*/

extern ROOM_INDEX_DATA *       room_index_hash         [MAX_KEY_HASH];
typedef enum {exit_from, exit_to, exit_both} exit_status;
const sh_int opposite_dir [6] = { DIR_SOUTH, DIR_WEST, DIR_NORTH, DIR_EAST, DIR_DOWN, DIR_UP };

/*
 * get the 'short' name of an area (e.g. MIDGAARD, MIRROR etc.
 * assumes that the filename saved in the AREA_DATA struct is something like midgaard.are
 */
char * area_name (AREA_DATA *pArea)
{
  static char buffer[64];
  char  *period;

  assert (pArea != NULL);

  strncpy (buffer, pArea->filename, 64);
  period = strchr (buffer, '.');
  if (period)
    *period = '\0';
  return buffer;
}

void room_pair (ROOM_INDEX_DATA* left, ROOM_INDEX_DATA* right, exit_status ex, char *buffer)
{
  char *sExit;

  switch (ex)
  {
    default:
      sExit = "??"; break; /* invalid usage */
    case exit_from:
      sExit = "< "; break;
    case exit_to:
      sExit = " >"; break;
    case exit_both:
      sExit = "<>"; break;
  }
  sprintf (buffer, "%5d %-26.26s %s%5d %-26.26s(%-8.8s)\n\r",
    left->vnum, left->name, sExit, right->vnum, right->name, area_name(right->area));
  return;
}

/* for every exit in 'room' which leads to or from pArea but NOT both, print it */
void checkexits (ROOM_INDEX_DATA *room, AREA_DATA *pArea, char* buffer)
{
  char buf[MAX_STRING_LENGTH];
  int i;
  EXIT_DATA *exit;
  ROOM_INDEX_DATA *to_room;

  strcpy(buffer, "");

  for (i = 0; i < 6; i++)
  {
    exit = room->exit[i];
    if (!exit) continue;
    else to_room = exit->to_room;
    if (to_room)
    {
      if ( (room->area == pArea) && (to_room->area != pArea) )
      {
        if ( to_room->exit[opposite_dir[i]] && to_room->exit[opposite_dir[i]]->to_room == room )
          room_pair (room,to_room,exit_both,buf); /* <> */
        else
          room_pair (room,to_room,exit_to,buf); /* > */
        strcat (buffer, buf);				
      }			
      else			
      {
        if ( (room->area != pArea) && (exit->to_room->area == pArea) )
        { /* an exit from another area to our area */
          if  (!(to_room->exit[opposite_dir[i]] && to_room->exit[opposite_dir[i]]->to_room == room ))
          {/* two-way exits are handled in the other if */
            room_pair (to_room,room,exit_from,buf);
            strcat (buffer, buf);
          }
        } /* if room->area */
      } /* for */
    }
  }
  return;
}

/* for now, no arguments, just list the current area */

void do_exlist (CHAR_DATA *ch, char * argument)
{
  AREA_DATA* pArea;
  ROOM_INDEX_DATA* room;
  int i;
  char buffer[MAX_STRING_LENGTH];

  pArea = ch->in_room->area;
  for (i = 0; i < MAX_KEY_HASH; i++)
  {
    for (room = room_index_hash[i]; room != NULL; room = room->next)
    {
      checkexits (room, pArea, buffer);
      send_to_char (buffer, ch);
    }
  }
  return;
}

void set_switchname( CHAR_DATA *ch, char *title )
{
    char buf[MAX_STRING_LENGTH];

    if ( IS_NPC(ch) )
    {
        bug( "Set_switchname: NPC.", 0 );
        return;
    }
    strcpy( buf, title );
    free_string( ch->pcdata->switchname );
    ch->pcdata->switchname = str_dup( buf );
    return;
}

void set_pc_name( CHAR_DATA *ch, char *title )
{
    char buf[MAX_STRING_LENGTH];

    if ( IS_NPC(ch) )
    {
        bug( "Set_pc_name: NPC.", 0 );
        return;
    }
    strcpy( buf, title );
    free_string( ch->name);
    ch->name = str_dup( buf );
    return;
}

void do_classself(CHAR_DATA *ch, char *argument)
{
  char buf[MAX_STRING_LENGTH];
  char      arg1 [MAX_INPUT_LENGTH];
  char      arg2 [MAX_INPUT_LENGTH];
  char      arg3 [MAX_INPUT_LENGTH];
  argument = one_argument( argument, arg1 );
  argument = one_argument( argument, arg2 );
  argument = one_argument( argument, arg3 );


  if (IS_NPC(ch))return;

  if (!IS_NPC(ch) && ch->class != 0)
  {   
    send_to_char("You already have a class.\n\r",ch);
    return;
  }
  if (ch->level < 3)
  {
    send_to_char("You must be avatar to selfclass.\n\r",ch);
    return;
  }

if ( arg1[0] == '\0' )
{
stc("#0Type #7selfclass #n<#7class#n> #0to become that class.#n\n\r",ch);
stc("#G************************************************#n\n\r",ch);
stc("#y--#CAngel       #y--#CDemon        #y--#CZombie\n\r",ch);
stc("#y--#CAssassin    #y--#CUndeadKnight #y--#CTechnoMage\n\r",ch);
stc("#y--#CPaladin     #y--#CDrow         #y--#CShinobi\n\r",ch);
stc("#y--#CAntiPaladin #y--#CTanar'ri     #y--#CHydra\n\r",ch);
stc("#y--#CDragon      #y--#CWraith       #y--#CWerewolf\n\r",ch);
stc("#y--#CVampire     #y--#CElemental    #y--#CGiant\n\r",ch);
stc("#y--#CSkyblade    #y--#CPriest       #y--#CGhoul\n\r",ch);
stc("#0Hybrids:   #y--#CUndead Lycan   #y--#CHell Spawn     \n\r",ch); 
stc("           #y--#CHells Soldier  #y--#CStalker        \n\r",ch);
stc("           #y--#CGaia Wolf      #y--#CBlack Assassin \n\r",ch);
stc("           #y--#CShadowborn     #y--#CVampiric Mist  \n\r",ch);
stc("           #y--#CShadow Dragon  #y--#CShadow Fiend   \n\r",ch);
stc("           #y--#CGold Dragon    #y--#CSilver Dragon   \n\r",ch);
stc("           #y--#CDruid               \n\r",ch);
stc("#G************************************************#n\n\r",ch);
  return;
}
do_clearstats2(ch,"");
if (!str_cmp(arg1,"demon"))
{
ch->class = CLASS_DEMON;
set_learnable_disciplines(ch);
send_to_char( "You have chosen the #RDemonic#n path, may god have mercy on yer soul.\n\r", ch);
sprintf(buf,"%s Has become a #7Demon#n.", ch->name);
do_info(ch,buf);
}

else if (!str_cmp(arg1,"elemental"))
{
ch->class = CLASS_ELEMENTAL;
send_to_char( "You are now an ELEMENTAL .\n\r", ch);
sprintf(buf,"%s Has become an #7Elemental#n.", ch->name);
do_info(ch,buf);
}

else if (!str_cmp(arg1,"blackassassin"))
{
ch->class = CLASS_BLACK_ASSASSIN;
set_learnable_disciplines(ch);
send_to_char( "You are now a Drow-Assassin Hybrid.\n\r", ch);
sprintf(buf,"%s Has become an #Black Assassin#n.", ch->name);
do_info(ch,buf);
}
else if (!str_cmp(arg1,"vampiricmist"))
{
ch->class = CLASS_VAMPIRIC_MIST;
set_learnable_disciplines(ch);
send_to_char( "You are now a Vampire-Wraith Hybrid.\n\r", ch);
sprintf(buf,"%s Has become an #7Vampiric Mist#n.", ch->name);
do_info(ch,buf);
}

else if (!str_cmp(arg1,"hellspawn"))
{
ch->class = CLASS_HELL_SPAWN;
set_learnable_disciplines(ch);
send_to_char( "You are now a Vampire-Tanar'ri Hybrid.\n\r", ch);
sprintf(buf,"%s Has become an #7Hell Spawn#n.", ch->name);
do_info(ch,buf);
}

else if (!str_cmp(arg1,"stalker"))
{
ch->class = CLASS_STALKER;
set_learnable_disciplines(ch);
send_to_char( "You are now a Werewolf-Drow Hybrid.\n\r", ch);
sprintf(buf,"%s Has become an #7Stalker#n.", ch->name);
do_info(ch,buf);
}
else if (!str_cmp(arg1,"undeadlycan"))
{
ch->class = CLASS_UNDEAD_LYCAN;
set_learnable_disciplines(ch);
send_to_char( "You are now a Vampire-Werewolf Hybrid.\n\r", ch);
sprintf(buf,"%s Has become an #7Undead Lycan#n.", ch->name);
do_info(ch,buf);
}

else if (!str_cmp(arg1,"hellssoldier"))
{
ch->class = CLASS_HELLS_SOLDIER;
set_learnable_disciplines(ch);
send_to_char( "You are now a Demon-Assassin Hybrid.\n\r", ch);
sprintf(buf,"%s Has become a #7Hells Soldier#n.", ch->name);
do_info(ch,buf);
}
else if (!str_cmp(arg1,"shadowdragon"))
{
ch->class = CLASS_SHADOW_DRAGON;
ch->pcdata->powers[DRAGON_COLOR] = 9;
set_learnable_disciplines(ch);
send_to_char( "You are now a Demon-Dragon Hybrid.\n\r", ch);
sprintf(buf,"%s Has become a #7Shadow Dragon#n.", ch->name);
do_info(ch,buf);
}

else if (!str_cmp(arg1,"shadowfiend"))
{
ch->class = CLASS_SHADOW_FIEND;
set_learnable_disciplines(ch);
send_to_char( "You are now a Demon-Wraith Hybrid.\n\r", ch);
sprintf(buf,"%s Has become a #7Shadow Fiend#n.", ch->name);
do_info(ch,buf);
}

else if (!str_cmp(arg1,"gaiawolf"))
{
ch->class = CLASS_GAIA_WOLF;
set_learnable_disciplines(ch);
send_to_char( "You are now an Elemental-Werewolf Hybrid.\n\r", ch);
sprintf(buf,"%s Has become a #7Gaia Wolf#n.", ch->name);
do_info(ch,buf);
}
else if (!str_cmp(arg1,"shadowborn"))
{
ch->class = CLASS_SHADOWBORN;
set_learnable_disciplines(ch);
send_to_char( "You are now a Drow-Wraith Hybrid.\n\r", ch);
sprintf(buf,"%s Has become a #7Shadowborn#n.", ch->name);
do_info(ch,buf);
}
else if (!str_cmp(arg1,"zombie"))
{
ch->class = CLASS_ZOMBIE;
send_to_char( "You are now a #7Zombie#n.\n\r", ch);
sprintf(buf,"%s Has become a #7Zombie#n.", ch->name);
do_info(ch,buf);
}
else if (!str_cmp(arg1,"druid"))
{
ch->class = CLASS_DRUID;
send_to_char( "You are now a #C-=#y(#rx#gDruid#rx#y)#C=-#n\n\r",ch);
sprintf(buf,"%s Has become a #C-=#y(#rx#gDruid#rx#y)#C=-#n", ch->name);
do_info(ch,buf);
}
else if (!str_cmp(arg1,"antipaladin"))
{
ch->class = CLASS_ANTIPALADIN;
send_to_char( "You are now an #7Anti-Paladin#n.\n\r", ch);
sprintf(buf,"%s Has become an #7Anti-Paladin#n.", ch->name);
do_info(ch,buf);
}

else if (!str_cmp(arg1,"giant"))
{
ch->class = CLASS_GIANT;
send_to_char( "You are now a #7Giant#n.\n\r", ch);
sprintf(buf,"%s Has become a #7Giant#n.", ch->name);
do_info(ch,buf);
}

else if (!str_cmp(arg1,"skyblade"))
{
ch->class = CLASS_SKYBLADE;
send_to_char( "You are now a #7Skyblade#n.\n\r", ch);
sprintf(buf,"%s Has become a #7Skyblade#n.", ch->name);
do_info(ch,buf);
}

else if (!str_cmp(arg1,"priest"))
{
ch->class = CLASS_PRIEST;
send_to_char( "You are now a #7Priest#n.\n\r", ch);
sprintf(buf,"%s Has become a #7Priest#n.", ch->name);
do_info(ch,buf);
}

else if (!str_cmp(arg1,"ghoul"))
{
ch->class = CLASS_GHOUL;
send_to_char( "You are now a #7Ghoul#n.\n\r", ch);
sprintf(buf,"%s Has become a #7Ghoul#n.", ch->name);
do_info(ch,buf);
}


else if(!str_cmp(arg1,"shinobi"))
{

             if(!str_cmp(arg2,"fire")){ 
                ch->class = CLASS_SHINOBI;ch->pcdata->powers[S_ELEMENT] = S_FIRE;
		sprintf(buf,"%s Has Become a Fire Shinobi.", ch->name);
		do_info(ch,buf);stc("You are now a Fire Shinobi.\n\r",ch);}
             else if(!str_cmp(arg2,"earth")){
                ch->class = CLASS_SHINOBI; ch->pcdata->powers[S_ELEMENT] = S_EARTH;
                sprintf(buf,"%s Has Become a Earth Shinobi.", ch->name);
                do_info(ch,buf);stc("You are now an Earth Shinobi.\n\r",ch);}
             else if(!str_cmp(arg2,"wind")){ 
                ch->class = CLASS_SHINOBI;ch->pcdata->powers[S_ELEMENT] = S_WIND;
                sprintf(buf,"%s Has Become a Wind Shinobi.", ch->name);
                do_info(ch,buf);stc("You are now a Wind Shinobi.\n\r",ch);}
             else if(!str_cmp(arg2,"water")){ 
                ch->class = CLASS_SHINOBI;ch->pcdata->powers[S_ELEMENT] = S_WATER;
                sprintf(buf,"%s Has Become a Water Shinobi.", ch->name);
                do_info(ch,buf);stc("You are now a Water Shinobi.\n\r",ch);}
             else if(!str_cmp(arg2,"shadow")){ 
                ch->class = CLASS_SHINOBI;ch->pcdata->powers[S_ELEMENT] = S_SHADOW;
                sprintf(buf,"%s Has Become a Shadow Shinobi.", ch->name);
                do_info(ch,buf);stc("You are now a Shadow Shinobi.\n\r",ch);}
             else if(!str_cmp(arg2,"holy")){ 
                ch->class = CLASS_SHINOBI;ch->pcdata->powers[S_ELEMENT] = S_HOLY;
                sprintf(buf,"%s Has Become a Holy Shinobi.", ch->name);
                do_info(ch,buf);stc("You are now a Holy Shinobi.\n\r",ch);}
             else{
                stc("Select an element: Fire, Earth, Water, Wind, Holy, Shadow\n\r",ch);
                return;}
        }

else if (!str_cmp(arg1,"paladin"))
{
ch->class = CLASS_PALADIN;
send_to_char( "You claim yourself to be a Paladin - train hard and prove yourself.\n\r", ch);
sprintf(buf,"%s Has become a #7Paladin#n.", ch->name);
do_info(ch,buf);
}
   else if ( !str_cmp( arg1, "dragon"      ) )
  {
    if ( !str_cmp( arg2, "red"))
    {
       ch->class = CLASS_DRAGON;
       set_learnable_disciplines(ch);
       ch->pcdata->powers[dragonage] = 1;
       ch->special = 0;
       ch->pcdata->powers[DRAGON_COLOR] = 1;
       send_to_char("You are now a red dragon!\n\r", ch);
    }
    else if ( !str_cmp( arg2, "green"))
    {
       ch->class = CLASS_DRAGON;
       set_learnable_disciplines(ch);
       ch->pcdata->powers[dragonage] = 1;
       ch->special = 0;
       ch->pcdata->powers[DRAGON_COLOR] = 2;
       send_to_char("You are now a green dragon!\n\r", ch);
    }
    else if ( !str_cmp( arg2, "blue"))
    {
       ch->class = CLASS_DRAGON;
       set_learnable_disciplines(ch);
       ch->pcdata->powers[dragonage] = 1;
       ch->special = 0;
       ch->pcdata->powers[DRAGON_COLOR] = 3;
       send_to_char("You are now a blue dragon!\n\r", ch);
    }

    else if ( !str_cmp( arg2, "bronze"))
    {
       ch->class = CLASS_DRAGON;
       set_learnable_disciplines(ch);
       ch->pcdata->powers[dragonage] = 1;
       ch->special = 0;
       ch->pcdata->powers[DRAGON_COLOR] = 4;
       send_to_char("You are now a bronze dragon!\n\r", ch);
    }

    else if ( !str_cmp( arg2, "silver"))
    {
       ch->class = CLASS_DRAGON;
       set_learnable_disciplines(ch);
       ch->pcdata->powers[dragonage] = 1;
       ch->special = 0;
       ch->pcdata->powers[DRAGON_COLOR] = 5;
       send_to_char("You are now a silver dragon!\n\r", ch);
    }
    else if ( !str_cmp( arg2, "white"))
    {
       ch->class = CLASS_DRAGON;
       set_learnable_disciplines(ch);
       ch->pcdata->powers[dragonage] = 1;
       ch->special = 0;
       ch->pcdata->powers[DRAGON_COLOR] = 6;
       send_to_char("You are now a white dragon!\n\r", ch);
    }
    else if ( !str_cmp( arg2, "black"))
    {
       ch->class = CLASS_DRAGON;
       set_learnable_disciplines(ch);
       ch->pcdata->powers[dragonage] = 1;
       ch->special = 0;
       ch->pcdata->powers[DRAGON_COLOR] = 7;
       send_to_char("You are now a black dragon!\n\r", ch);
    }
    else if ( !str_cmp( arg2, "gold"))
    {
       ch->class = CLASS_DRAGON;
       set_learnable_disciplines(ch);
       ch->pcdata->powers[dragonage] = 1;
       ch->special = 0;
       ch->pcdata->powers[DRAGON_COLOR] = 8;
       send_to_char("You are now a gold dragon!\n\r", ch);
    }
    else if ( !str_cmp( arg2, "shadow"))
    {
       ch->class = CLASS_DRAGON;
       set_learnable_disciplines(ch);
       ch->pcdata->powers[dragonage] = 1;
       ch->special = 0;
       ch->pcdata->powers[DRAGON_COLOR] = 9;
       send_to_char("You are now a shadow dragon!\n\r", ch);
    }
    else if ( !str_cmp( arg2, "purple"))
    {
       ch->class = CLASS_DRAGON;
       set_learnable_disciplines(ch);
       ch->pcdata->powers[dragonage] = 1;
       ch->special = 0;
       ch->pcdata->powers[DRAGON_COLOR] = 10;
       send_to_char("You are now a purple dragon!\n\r", ch);
    }
    else if ( !str_cmp( arg2, "chaos"))
    {
       ch->class = CLASS_DRAGON;
       set_learnable_disciplines(ch);
       ch->pcdata->powers[dragonage] = 1;
       ch->special = 0;
       ch->pcdata->powers[DRAGON_COLOR] = 11;
       send_to_char("You are now a chaos dragon!\n\r", ch);
    }
    else if ( !str_cmp( arg2, "sapphire"))
    {
       ch->class = CLASS_DRAGON;
       set_learnable_disciplines(ch);
       ch->pcdata->powers[dragonage] = 1;
       ch->special = 0;
       ch->pcdata->powers[DRAGON_COLOR] = 12;
       send_to_char("Your are now a Sapphire dragon!\n\r", ch);
    }
    else if ( !str_cmp( arg2, "emerald"))
    {
       ch->class = CLASS_DRAGON;
       set_learnable_disciplines(ch);
       ch->pcdata->powers[dragonage] = 1;
       ch->special = 0;
       ch->pcdata->powers[DRAGON_COLOR] = 13;
       send_to_char("You are now an Emerald dragon!\n\r", ch);
    }
    else if ( !str_cmp( arg2, "ruby"))
    {
       ch->class = CLASS_DRAGON;
       set_learnable_disciplines(ch);
       ch->pcdata->powers[dragonage] = 1;
       ch->special = 0;
       ch->pcdata->powers[DRAGON_COLOR] = 14;
       send_to_char("You are now a Ruby Dragon!\n\r", ch);
    }
    else if ( !str_cmp( arg2, "topaz"))
    {
       ch->class = CLASS_DRAGON;
       set_learnable_disciplines(ch);
       ch->pcdata->powers[dragonage] = 1;
       ch->special = 0;
       ch->pcdata->powers[DRAGON_COLOR] = 15;
       send_to_char("Your are now a Topaz dragon!\n\r", ch);
    }
    else if ( !str_cmp( arg2, "diamond"))
    {
       ch->class = CLASS_DRAGON;
       set_learnable_disciplines(ch);
       ch->pcdata->powers[dragonage] = 1;
       ch->special = 0;
       ch->pcdata->powers[DRAGON_COLOR] = 16;
      send_to_char("Your are now a Diamond dragon!\n\r", ch);
    }
	else
    {
    stc("Shadow, Gold, Black, White, Silver, Bronze, Blue, Green \n\r",ch);
    stc("Diamond, Topaz, Ruby, Emerald, Sapphire, Chaos, Purple, Red\n\r",ch);
    return;
    }

    return;
    }
   else if ( !str_cmp( arg1, "golddragon"      ) )
  {
       ch->class = CLASS_GOLD_DRAGON;
       ch->pcdata->powers[dragonage] = 1;
       ch->special = 0;
       ch->pcdata->powers[DRAGON_COLOR] = 8;
       send_to_char("You are now a gold dragon!\n\r", ch);
	sprintf(buf,"%s Has become a #YGold #7Dragon#n.", ch->name);
	do_info(ch,buf);
   }
   else if ( !str_cmp( arg1, "silverdragon"      ) )
  {
       ch->class = CLASS_SILVER_DRAGON;
       ch->pcdata->powers[dragonage] = 1;
       ch->special = 0;
       ch->pcdata->powers[DRAGON_COLOR] = 5;
       send_to_char("You are now a silver dragon!\n\r", ch);
	sprintf(buf,"%s Has become a #7Silver Dragon#n.", ch->name);
	do_info(ch,buf);
   }


else if (!str_cmp(arg1, "hydra"))
{
ch->class = CLASS_HYDRA;
send_to_char( "You are now a multi-headed Serpent.\n\r", ch);
sprintf(buf,"%s Has become a #7Hydra#n.", ch->name);
do_info(ch,buf);
} 
else if (!str_cmp(arg1,"werewolf"))
{
ch->class = CLASS_WEREWOLF;
set_learnable_disciplines(ch);
send_to_char( "You have chosen the path of the #0Garou#n, may gaia guide you.\n\r", ch);
sprintf(buf,"%s Has become a #7Werewolf#n.", ch->name);
do_info(ch,buf);
}
      
else if (!str_cmp(arg1,"drow"))
{
ch->class = CLASS_DROW;
set_learnable_disciplines(ch);
send_to_char( "Choose your profession, and #PLloth#n will guide you.\n\r", ch);
sprintf(buf,"%s Has become a #7Dark Elf#n.", ch->name);
do_info(ch,buf);
}  

else if (!str_cmp(arg1,"technomage"))
{
ch->class = CLASS_HUMAN;
send_to_char( "You Are Now A Human Magic-User.\n\r", ch);
sprintf(buf,"%s Has become a #7Human TechnoMage#n.", ch->name);
do_info(ch,buf);
}

else if (!str_cmp(arg1,"undeadknight"))
{
ch->class = CLASS_UNDEAD_KNIGHT;
send_to_char( "You Are Now An Undead Knight.\n\r", ch);
sprintf(buf,"%s Has become an #7Undead Knight#n.", ch->name);
do_info(ch,buf);
}  

else if (!str_cmp(arg1,"tanarri"))
{
ch->class = CLASS_TANARRI;
send_to_char( "You Are Now A Tanar'ri.\n\r", ch);
sprintf(buf,"%s Has become a #7Tanar'ri#n.", ch->name);
do_info(ch,buf);
}  

else if (!str_cmp(arg1,"angel"))
{
ch->class = CLASS_ANGEL;
send_to_char( "You Are Now An Angel.\n\r", ch);
sprintf(buf,"%s Has become an #7Angel#n.", ch->name);
do_info(ch,buf);
}  

else if (!str_cmp(arg1,"vampire"))
{
ch->class = CLASS_VAMPIRE;
ch->beast = 30;
set_learnable_disciplines(ch);
send_to_char( "Fear the #ySun#n nosferatu, God's curse lives in you.\n\r", ch);
sprintf(buf,"%s Has become a #7Vampire#n.", ch->name);
do_info(ch,buf);
}
 
else if (!str_cmp(arg1,"assassin"))
{
ch->class = CLASS_ASSASSIN;
ch->level = 3;
send_to_char( "You are now a Bloodthirsty Assassin.\n\r", ch);
sprintf(buf,"%s Has become an #7Assassin#n.", ch->name);
do_info(ch,buf);
}
 
else if(!str_cmp(arg1,"wraith"))
{
ch->class = CLASS_WRAITH;
send_to_char("Darkness shrouds you as your body becomes ethereal, you are now a wraith.\n\r",ch);
sprintf(buf,"%s Has become a #7Wraith#n.", ch->name);
do_info(ch,buf);
}

  else do_classself(ch,"");   
  return;
}
 
void do_reimb(CHAR_DATA *ch, char *argument)
{
        char buf[MAX_STRING_LENGTH];
        CHAR_DATA       *vch;
        char            arg[MAX_INPUT_LENGTH];
        char            arg2[MAX_INPUT_LENGTH];
        int v;
        
 
        argument = one_argument(argument, arg);




        if (arg[0] == '\0') {
                send_to_char("Reimburse <target> <xp|qp> <amount>\n\r", ch);
                return;
        }
        if ((vch = get_char_world(ch, arg)) == NULL) {
                send_to_char("They aren't logged on.\n\r", ch);
                return;
        }
        if (IS_NPC(vch)) {
                send_to_char("That is a mob.\n\r", ch);
                return;
        }
        argument = one_argument(argument, arg);
        argument = one_argument(argument, arg2);
        v = atoi(arg2);
        if (arg[0] == '\0' || arg2[0] == '\0'
          || (!is_number(arg2) && v >= 0)) {
                do_reimb(ch, "");
                return;
        }
        if (!str_cmp(arg, "xp")) {
                vch->exp += v;
                vch->pcdata->score[SCORE_TOTAL_XP] += v;
        } else if (!str_cmp(arg, "qp")) {   
                vch->pcdata->quest += v;
                vch->pcdata->questtotal += v;
        } else {
                send_to_char("Please specify XP or QP.\n\r", ch);
                return;
        }
        if (vch->mkill < 5) {
                vch->mkill = 5;
                do_autosave(ch, "");
        }
        sprintf(arg2, "%s reimbursed %d %s.\n\r", vch->name, v, arg);
        send_to_char(arg2, ch);
        sprintf(arg2, "%s has reimbursed you %d %s.\n\r", ch->name, v, arg);
        send_to_char(arg2, vch);
}
        
void do_affects( CHAR_DATA *ch, char *argument )
{
   char buf[MAX_STRING_LENGTH];
   AFFECT_DATA *paf;
        
     if (IS_NPC(ch)) return;

     send_to_char("#0-=#7[ Spell Effects ]#0=-\n\r\n\r",ch);
     if (IS_SET(ch->act, PLR_WIZINVIS))
       send_to_char("#rWizinvis#n.\n\r",ch);
	if(IS_ITEMAFF(ch,ITEMA_VORPAL))
		stc("#RVorpal#n.\n\r",ch);
     if (IS_ITEMAFF(ch, ITEMA_SPEED))
       send_to_char("#rHaste#n.\n\r",ch);
     if (IS_ITEMAFF(ch, ITEMA_REGENERATE))
       send_to_char("#yRegeneration#n.\n\r",ch);
     if (IS_ITEMAFF(ch, ITEMA_ICESHIELD))   
       send_to_char("#7Ice Shield#n.\n\r",ch);
     if (IS_ITEMAFF(ch, ITEMA_SHOCKSHIELD))
       send_to_char("#LShock Shield#n.\n\r",ch);
     if (IS_ITEMAFF(ch, ITEMA_ACIDSHIELD))
       send_to_char("#yAcid Shield#n.\n\r",ch);
     if (IS_ITEMAFF(ch, ITEMA_FIRESHIELD))
       send_to_char("#rFire Shield#n.\n\r",ch);
     if (IS_ITEMAFF(ch, ITEMA_CHAOSSHIELD))
       send_to_char("#pChaos Shield#n.\n\r",ch);
     if (IS_AFFECTED(ch, AFF_PASS_DOOR))
       send_to_char("#gPassDoor#n.\n\r",ch);
     if (IS_AFFECTED(ch, AFF_SNEAK))
       send_to_char("#gSilent Movement#n.\n\r",ch);
     if (IS_AFFECTED(ch, AFF_SANCTUARY))
       send_to_char("#gDamage Reduction#n.\n\r",ch);
     if ( IS_AFFECTED(ch, AFF_PROTECT))
       send_to_char("#7Protection From Malevolence#n.\n\r",ch);
     if ( IS_AFFECTED(ch, AFF_PROTECT_GOOD))
       send_to_char("#7Protection From Benevolence#n.\n\r",ch);
     if ( IS_AFFECTED(ch, AFF_FLYING))
       send_to_char("#cFlight#n\n\r",ch);
     if (IS_AFFECTED(ch, AFF_HIDE))
       send_to_char("#7Hiding#n.\n\r",ch);
     if (IS_CLASS(ch, CLASS_VAMPIRE) && IS_SET(ch->act, AFF_HIDE))
       send_to_char("#0Shrouded#n.\n\r",ch);
     if (IS_CLASS(ch, CLASS_WEREWOLF) && IS_SET(ch->act, AFF_HIDE))
       send_to_char("#0Vanish#n.\n\r",ch);
     if(IS_SET(ch->newbits,NEW_DROWHATE))
       send_to_char("#7Drow HATE#n.\n\r",ch);
    if (IS_SET(ch->special, SPC_WOLFMAN))
       send_to_char("#7WereWolf Form#n.\n\r",ch);

     if (IS_AFFECTED(ch, AFF_BLIND))
       send_to_char("#7Blindness#n.\n\r",ch);
     if (IS_AFFECTED(ch, AFF_INVISIBLE))
       send_to_char("#7Invisibility#n.\n\r",ch);
     if (IS_AFFECTED(ch, AFF_DETECT_EVIL))
       send_to_char("#7Evil Detection#n.\n\r",ch);
     if (IS_AFFECTED(ch, AFF_DETECT_INVIS))
       send_to_char("#7Invisibility Detection#n.\n\r",ch);
     if (IS_AFFECTED(ch, AFF_DETECT_MAGIC))
       send_to_char("#7Arcane Detection#n.\n\r",ch);
     if (IS_AFFECTED(ch, AFF_DETECT_HIDDEN))
       send_to_char("#7Extra Sensory Perception#n.\n\r",ch);
     if (IS_AFFECTED(ch, AFF_SHADOWPLANE))
       send_to_char("#7ShadowPlane#n.\n\r",ch);
     if (IS_AFFECTED(ch, AFF_FAERIE_FIRE))
       send_to_char("#7Faerie Fire#n.\n\r",ch);
     if (IS_AFFECTED(ch, AFF_INFRARED))
       send_to_char("#7InfraRed#n.\n\r",ch);
     if (IS_AFFECTED(ch, AFF_CURSE))
       send_to_char("#7Curse#n.\n\r",ch);
     if (IS_AFFECTED(ch, AFF_FLAMING))
       send_to_char("#7On Fire#n.\n\r",ch);
     if (IS_AFFECTED(ch, AFF_POISON))
       send_to_char("#7Poisoned#n.\n\r",ch);
     if (IS_AFFECTED(ch, AFF_ETHEREAL))
       send_to_char("#7Ethereal#n.\n\r",ch);
     if (IS_AFFECTED(ch, AFF_SLEEP))
       send_to_char("#7Sleeping#n.\n\r",ch);
     if (IS_AFFECTED(ch, AFF_CHARM))
       send_to_char("#7Charmed#n.\n\r",ch);
     if (IS_AFFECTED(ch, AFF_POLYMORPH))
       send_to_char("#7PolyMorphed#n.\n\r",ch);
     if (IS_AFFECTED(ch, AFF_SHADOWSIGHT))
       send_to_char("#7ShadowSight#n.\n\r",ch);
     if (IS_AFFECTED(ch, AFF_WEBBED))
       send_to_char("#7Webbed#n.\n\r",ch);
     if (IS_AFFECTED(ch, AFF_DROWFIRE))
       send_to_char("#7Covered with DrowFire#n.\n\r",ch);
     if (IS_AFFECTED(ch, AFF_ZULOFORM))
       send_to_char("#7Zulo-Form#n.\n\r",ch);
     if (IS_AFFECTED(ch, AFF_PEACE))
       send_to_char("#7Filled with Peace#n.\n\r",ch);
     if (IS_AFFECTED(ch, AFF_INFIRMITY))
       send_to_char("#7Infirmity#n.\n\r",ch);


     if ( ch->affected == NULL )
        {
                send_to_char( "You have nothing affecting you at this time.\n\r", ch);
        return;
        }
     if ( ch->affected != NULL )
       {
   
         send_to_char( "You are affected by:\n\r", ch );
         for ( paf = ch->affected; paf != NULL; paf = paf->next )
            {
               sprintf( buf, "Spell: '%s'", skill_table[paf->type].name );
               send_to_char( buf, ch );     
               if ( ch->level >= 0 )
                   {
   sprintf( buf, " modifies %s by %d for %d hours with bits %s.\n\r",
                      affect_loc_name( paf->location ),
                      paf->modifier,
                      paf->duration,
                      affect_bit_name( paf->bitvector ) );
                      send_to_char( buf, ch );
                   }
     
            }
     
     }
     
     return;
     
}
char * plr_bit_name( int arg )
{
    static char buf[512];
                      
    buf[0] = '\0';
                      
    if ( arg & PLR_IS_NPC       ) strcat( buf, " npc"           );
    if ( arg & PLR_AUTOEXIT     ) strcat( buf, " autoexit"      );
    if ( arg & PLR_AUTOLOOT     ) strcat( buf, " autoloot"      );
    if ( arg & PLR_AUTOSAC      ) strcat( buf, " autosac"       );
    if (arg & PLR_AUTOSIGIL)      strcat(buf, " autosigil");
    if ( arg & PLR_BLANK        ) strcat( buf, " blank"         );
    if ( arg & PLR_BRIEF        ) strcat( buf, " brief"         );
    if ( arg & PLR_COMBINE      ) strcat( buf, " combine"       );
    if ( arg & PLR_PROMPT       ) strcat( buf, " prompt"        );
    if ( arg & PLR_TELNET_GA    ) strcat( buf, " telnet_ga"     );
    if ( arg & PLR_HOLYLIGHT    ) strcat( buf, " holylight"     );
    if ( arg & PLR_WIZINVIS     ) strcat( buf, " wizinvis"      );
    if ( arg & PLR_ANSI         ) strcat( buf, " ansi"          );
    if ( arg & PLR_SILENCE      ) strcat( buf, " silenced"      );
    if ( arg & PLR_NO_TELL      ) strcat( buf, " no_tell"       );
    if ( arg & PLR_LOG          ) strcat( buf, " log"           );
    if ( arg & PLR_FREEZE       ) strcat( buf, " freeze"        );
    return ( buf[0] != '\0' ) ? buf+1 : "none";
}
   
char * extra_plr_bit_name( int arg )
{       
    static char buf[512];
        
    buf[0] = '\0';
               
    if ( arg & EXTRA_TRUSTED            ) strcat( buf, " q_trusted" );
    if ( arg & EXTRA_NEWPASS            ) strcat( buf, " newpass" );
    if ( arg & EXTRA_OSWITCH            ) strcat( buf, " oswitch" );
    if ( arg & EXTRA_SWITCH             ) strcat( buf, " switch" );
    if ( arg & EXTRA_FAKE_CON           ) strcat( buf, " fake_con" );
    if ( arg & TIED_UP                  ) strcat( buf, " tied_up" );
    if ( arg & GAGGED                   ) strcat( buf, " gagged" );
    if ( arg & BLINDFOLDED              ) strcat( buf, " blindfolded" );
    if ( arg & EXTRA_DONE               ) strcat( buf, " non_virgin" );
    if ( arg & EXTRA_EXP                ) strcat( buf, " got_exp" );
    if ( arg & EXTRA_PREGNANT           ) strcat( buf, " pregnant" );
    if ( arg & EXTRA_LABOUR             ) strcat( buf, " labour" );
    if ( arg & EXTRA_BORN               ) strcat( buf, " born" ); 
    if ( arg & EXTRA_PROMPT             ) strcat( buf, " prompt" );
    if ( arg & EXTRA_MARRIED            ) strcat( buf, " married" );
    if ( arg & EXTRA_CALL_ALL           ) strcat( buf, " call_all" );
    return ( buf[0] != '\0' ) ? buf+1 : "none";
}
   char * get_position_name( int arg )
{
    switch( arg )
    {
        case 0: return "dead";
        case 1: return "mortal";
        case 2: return "incap";
        case 3: return "stunned";   
        case 4: return "sleeping";
        case 5: return "meditating";
        case 6: return "sitting";
        case 7: return "resting";
        case 8: return "fighting";
        case 9: return "standing";
    }
    bug( "Get_position_name: unknown type %d.", arg );
    return "(unknown)";
}
    
/*
 * Itemaffect bit names :)
 */
char * itemaffect_bit_name( int arg )
{
    static char buf[512];
    
    buf[0] = '\0';
    
    if ( arg & ITEMA_SHOCKSHIELD        ) strcat( buf, " Shockshield"  );
    if ( arg & ITEMA_FIRESHIELD         ) strcat( buf, " Fireshield"    );
    if ( arg & ITEMA_ICESHIELD          ) strcat( buf, " Iceshield"     );
    if ( arg & ITEMA_ACIDSHIELD         ) strcat( buf, " Acidshield"    );
    if ( arg & ITEMA_CHAOSSHIELD        ) strcat( buf, " Chaoshield"    );
    if ( arg & ITEMA_ARTIFACT           ) strcat( buf, " Artifact"      );
    if ( arg & ITEMA_REGENERATE         ) strcat( buf, " Regeneration"  );
    if ( arg & ITEMA_SPEED              ) strcat( buf, " Speed"         );
    if ( arg & ITEMA_VORPAL             ) strcat( buf, " Vorpal"        );
    if ( arg & ITEMA_PEACE              ) strcat( buf, " Peace"         );
    if ( arg & ITEMA_RIGHT_SILVER       ) strcat( buf, " Right Silver"  );
    if ( arg & ITEMA_LEFT_SILVER        ) strcat( buf, " Left Silver"   );
    if ( arg & ITEMA_REFLECT            ) strcat( buf, " Darkshield"    );
    if ( arg & ITEMA_RESISTANCE         ) strcat( buf, " Resistance"    );
    if ( arg & ITEMA_VISION             ) strcat( buf, " Vision"        );
    if ( arg & ITEMA_STALKER            ) strcat( buf, " Stalker"       );
    if ( arg & ITEMA_VANISH             ) strcat( buf, " Vanish"        );
    if ( arg & ITEMA_RAGER              ) strcat( buf, " Rager"         );
    return ( buf[0] != '\0' ) ? buf+1 : "none";
}
 
/*  
 * code by Tijer
 */
void do_pstat ( CHAR_DATA *ch, char *argument )
{
    char        arg[MAX_INPUT_LENGTH];
    char        buf[MAX_STRING_LENGTH];
    CHAR_DATA   *victim;
    
    argument = one_argument( argument, arg );
    
    if ( arg[0] == '\0' )
    {
        send_to_char("Pstat whom?\n\r", ch );
        return;
    }
    
    if ( ( victim = get_char_world( ch, arg ) ) == NULL )
    {
       send_to_char("They aren't here.\n\r", ch );
        return;
    }
    
    sprintf( buf, "Name : %s.\n\r",
        IS_NPC( victim )        ? victim->short_descr : victim->name );   
  send_to_char( buf, ch );
    sprintf( buf, "Sex : %s. Room : %d. Align : %d. Primal : %d. Quest : %d.\n\r",
        victim->sex == SEX_MALE         ? "Male"        :
      victim->sex == SEX_FEMALE       ? "Female"      : "None",
        victim->in_room == NULL         ? 0             : victim->in_room->vnum,
        victim->alignment,
        victim->practice,
        IS_NPC( victim )                ? 0             : victim->pcdata->quest
        );
    send_to_char( buf, ch );
 
    sprintf( buf, "Level : %d. Trust : %d. Gold : %d. Exp : %d.\n\r",
        victim->level,
        victim->trust,  
        victim->gold,
        victim->exp );
   send_to_char( buf, ch );
    
       sprintf( buf, "Hit : %d. Dam : %d. AC : %d. Position : %s\n\r",
       char_hitroll( victim ),
        char_damroll( victim ),
        char_ac( victim ),
        capitalize( get_position_name( victim->position ) ));
    send_to_char( buf, ch );
     
    sprintf( buf, "HP %d/%d. Mana %d/%d. Move %d/%d.\n\r",
        victim->hit, victim->max_hit,
        victim->mana, victim->max_mana,
        victim->move, victim->max_move );
    send_to_char( buf, ch );
        
    sprintf( buf, "Str: %d.  Int: %d.  Wis: %d.  Dex: %d.  Con: %d.\n\r",
      get_curr_str(victim),
        get_curr_int(victim),
        get_curr_wis(victim),
        get_curr_dex(victim),
        get_curr_con(victim) );
    send_to_char( buf, ch );
        
    sprintf( buf, "Fighting : %s. (%d)\n\r",
        victim->fighting ? victim->fighting->name  : "(None)",
        victim->fighting ? victim->fighting->level : 0 );
   send_to_char( buf, ch );


    sprintf( buf, "Symbiote: AC:(%d) Damcap:(%d) Hitroll:(%d) Damroll(%d)\n\r",
	victim->symbioteac, victim->symbiotedc, victim->symbiotehr, victim->symbiotedr );
    send_to_char( buf, ch );
        
    sprintf( buf, "Pkill : %d. Pdeath : %d. Mkill : %d. Mdeath : %d.\n\r",
        IS_NPC( victim ) ? 0 : victim->pkill,
        IS_NPC( victim ) ? 0 : victim->pdeath,
        IS_NPC( victim ) ? 0 : victim->mkill,
       IS_NPC( victim ) ? 0 : victim->mdeath );
    send_to_char( buf, ch );
       
    sprintf( buf, "TotExp  : %12d. TotMobLev  : %10d. TotQuestPoints : %10d.\n\r",
        IS_NPC( victim ) ? 0 : victim->pcdata->score[SCORE_TOTAL_XP],
        IS_NPC( victim ) ? 0 : victim->pcdata->score[SCORE_TOTAL_LEVEL],
        IS_NPC( victim ) ? 0 : victim->pcdata->score[SCORE_QUEST] );
    send_to_char( buf, ch );
   
    sprintf( buf, "HighExp : %12d. HighMobLev : %10d. Tot#Quests     : %10d.\n\r",
      IS_NPC( victim ) ? 0 : victim->pcdata->score[SCORE_HIGH_XP],
        IS_NPC( victim ) ? 0 : victim->pcdata->score[SCORE_HIGH_LEVEL],
        IS_NPC( victim ) ? 0 : victim->pcdata->score[SCORE_NUM_QUEST] );
    send_to_char( buf, ch );
    
    if ( !IS_NPC( victim ) )
   {
        sprintf( buf, "Unarmed : %4d.", victim->wpn[0] );
        send_to_char( buf, ch );
        sprintf( buf, " Slice   : %4d.", victim->wpn[1] );
        send_to_char( buf, ch );
        sprintf( buf, " Stab    : %4d.", victim->wpn[2] );
        send_to_char( buf, ch );
        sprintf( buf, " Slash   : %4d.", victim->wpn[3] );
        send_to_char( buf, ch );
        sprintf( buf, " Whip    : %4d.\n\r", victim->wpn[4] );
        send_to_char( buf, ch );
        sprintf( buf, "Claw    : %4d.", victim->wpn[5] );
        send_to_char( buf, ch );
        sprintf( buf, " Blast   : %4d.", victim->wpn[6] );
        send_to_char( buf, ch );
        sprintf( buf, " Pound   : %4d.", victim->wpn[7] );
send_to_char( buf, ch );
        sprintf( buf, " Crush   : %4d.", victim->wpn[8] );
        send_to_char( buf, ch );
        sprintf( buf, " Grep    : %4d.\n\r", victim->wpn[9] );
        send_to_char( buf, ch );
        sprintf( buf, "Bite    : %4d.", victim->wpn[10] );
     send_to_char( buf, ch );
        sprintf( buf, " Pierce  : %4d.", victim->wpn[11] );
        send_to_char( buf, ch );
        sprintf( buf, " Suck    : %4d.\n\r",victim->wpn[12] );
        send_to_char( buf, ch );
        
        sprintf( buf, "%-8s : %3d. %-8s : %3d. %-8s : %3d. %-8s : %3d. %-8s : %3d.\n\r",
            "Purple",   victim->spl[PURPLE_MAGIC],
            "Red",      victim->spl[RED_MAGIC],
            "Blue",     victim->spl[BLUE_MAGIC],
           "Green",    victim->spl[GREEN_MAGIC],
            "Yellow",   victim->spl[YELLOW_MAGIC] );
        send_to_char( buf, ch );
        sprintf( buf, "%-8s : %3d. %-8s : %3d. %-8s : %3d. %-8s : %3d. %-8s : %3d.\n\r",
            "Viper",    victim->stance[STANCE_VIPER],
            "Crane",    victim->stance[STANCE_CRANE],
            "Crab",     victim->stance[STANCE_CRAB],
            "Mongoose", victim->stance[STANCE_MONGOOSE],
            "Pitbull",     victim->stance[STANCE_PITBULL] );
        send_to_char( buf, ch );
        
        sprintf( buf, "%-8s : %3d. %-8s : %3d. %-8s : %3d. %-8s : %-3d. %-8s : %3d.\n\r",
            "Hawk",   victim->stance[STANCE_HAWK],
            "Badger",   victim->stance[STANCE_BADGER],
            "Cougar",    victim->stance[STANCE_COUGAR],
            "Wolverine",   victim->stance[STANCE_WOLVERINE],
           "Grizzly",  victim->stance[STANCE_GRIZZLY] );  
        
        send_to_char( buf, ch );
//        sprintf( buf, "%-8s : %3d. %-8s : %3d. %-8s : %3d. %-8s : %3d. %-8s : %3d.\n\r",
//            "ss1",   victim->stance[STANCE_SS1],
//            "ss2",   victim->stance[STANCE_SS2],
//            "ss3",    victim->stance[STANCE_SS3],
//            "ss4",   victim->stance[STANCE_SS4],
//            "ss5",  victim->stance[STANCE_SS5] );
//        send_to_char( buf, ch );
        
        
         sprintf( buf, "Act         : %s\n\r", plr_bit_name(victim->act ));
        send_to_char( buf, ch );
        sprintf( buf, "Extra       : %s\n\r",   
        victim->extra <= 0 ? "(None)" : extra_plr_bit_name( victim->extra ) );
        send_to_char( buf, ch );
        sprintf( buf, "ItemAff     : %s\n\r",
        victim->itemaffect <= 0 ? "(None)" : itemaffect_bit_name(victim->itemaffect ) );
        send_to_char( buf, ch );
            
              sprintf( buf, "Affected by : %s.\n\r",
        affect_bit_name( victim->affected_by ) );
        send_to_char( buf, ch );
        
    return;
}
}

/* void do_pkcheck(CHAR_DATA *ch, char *argument)
{
  CHAR_DATA *gch;
  char cankill[MSL];
  char canbekilled[MSL];

  sprintf(cankill,"You can PK: ");
  sprintf(canbekilled,"You can be PKed by: ");

  for ( gch = char_list; gch != NULL; gch = gch->next )
  {
    if (IS_NPC(gch)) continue;
    if (!can_see(ch,gch)) continue;
    if (gch->level < 3 || gch->level > 6) continue;
    if (ch == gch) continue;

    if ( can_decapitate(ch,gch) ) strcat(cankill,gch->name); strcat(cankill," ");
    if ( can_decapitate(gch,ch) ) strcat(canbekilled,gch->name); strcat(canbekilled," ");
  }
  strcat(cankill,"\n\r");
  strcat(canbekilled,"\n\r");
  stc(cankill,ch);
  stc(canbekilled,ch);
}

*/