vw/doc/
vw/player/J/
/**************************************************
*                                                 *
*   Some new functions for some pkilling fun!     *
*   Added by the Joker with help                  *
*   & ideas from Malice,Kavir & Rotain            *
*                                                 *
***************************************************/
#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 "merc.h"


extern void	fwrite_char	args( ( CHAR_DATA *ch,  FILE *fp ) );
extern void	fwrite_obj	args( ( CHAR_DATA *ch,  OBJ_DATA  *obj,
						FILE *fp, int iNest ) );

void do_trap(CHAR_DATA *ch, char *argument)
{
    /*	OBJ_DATA *trap; */
    OBJ_DATA *used;
    int      dammax;   
    int      dam;
    OBJ_DATA *bomb;
    /*	char buf[MAX_STRING_LENGTH];    */
    
    dammax = 0;
    dam = 0;
    
    bomb = get_eq_char(ch, WEAR_WIELD);
    
    if(ch->level < 2)
    {
	   send_to_char("Huh?\n\r",ch);
	   return;
    }
    
    if(ch->race == 0)
    {
	   send_to_char("You lack the ability to set a trap.\n\r",ch);
	   return;
    }
    
    
    if( bomb==NULL )
    {
	   send_to_char("You hold nothing in your right hand.\n\r",ch);
	   return;
    }   
    
    if( bomb->item_type != ITEM_BOMB) 
    {
	   send_to_char("You can only set a trap with a bomb!\n\r",ch);
	   return;
    }
    
    if( IS_SET(ch->in_room->room_flags, ROOM_SAFE))
    {
	   send_to_char("You cannot set a trap in a safe room.\n\r",ch);
	   return;
    }
    
    dammax = bomb->value[3];
    
    for(used=ch->carrying;used;used=used->next_content)
    {
	   if(used->item_type==ITEM_BOMB && used->value[3]==dammax
		  && IS_SET(used->wear_loc, WEAR_HOLD)) break;
    }
    
    if( !used )
    {
	   send_to_char("You lack the essential ingredients for the trap.\n\r", ch);
	   return;
    }
    
    obj_from_char(used);
    
    dam = (((ch->damroll + ch->hitroll)/2)*ch->race);
    
    if(dam >= dammax)
    {	
	   ch->in_room->bomb = ch->in_room->bomb + dammax;
    }
    else
    {
	   ch->in_room->bomb = ch->in_room->bomb + dam;
    }
    if(ch->in_room->bomb > 10000) ch->in_room->bomb = 10000;
    extract_obj(used);
    return;
    
    
}

void do_email(CHAR_DATA *ch, char *argument)
{
    if( !IS_NPC( ch ) )
    {
	   if( longstring( ch, argument) )
		  return;
	   
	   smash_tilde( argument );
	   free_string( ch->pcdata->email);
	   ch->pcdata->email = str_dup(argument);
	   send_to_char("Ok.\n\r",ch);
    }
    return;
}

bool longstring(CHAR_DATA *ch, char *argument)
{
    if( strlen(argument) > 60)
    {
	   send_to_char("No more than 60 characters please.\n\r",ch);
	   return TRUE;
    }
    else 
	   return FALSE;
}

void do_finger(CHAR_DATA *ch, char *argument)
{
    CHAR_DATA       *victim;
    char		buf[MAX_INPUT_LENGTH];
    char		buf1[MAX_INPUT_LENGTH];
    bool            fOld=FALSE;
    bool            fPlay=FALSE;
    bool            fExtra=FALSE;
    char*           status;
    static char *    const he_she [ ] = { "It", "He", "She" };
    
    strncpy(buf1, "", MAX_INPUT_LENGTH);
    if( argument[0] == '\0')
    {
	   send_to_char("Finger who?\n\r",ch);
	   return;
    }
    
    argument[0] = UPPER( argument[0] );
    
    if( !check_parse_name(argument) )
    {
	   send_to_char("Illegal name.\n\r",ch);
	   return;
    }
    
    if( !( victim = get_char_world(ch, argument) ))
    {
    /*		fOld = load_char_obj( &d, argument);
	   if (fOld) victim = d.character; */
    }
    else
    {
	   fPlay=TRUE;
	   fOld=TRUE;
    }
    
    if(!fOld)
    {
	   send_to_char("That person is not on Vampire Wars at the moment!\n\r",ch);
	   return;
    }
    
    if(IS_NPC(victim))
    {
	   send_to_char("That is a mob!\n\r", ch);
	   return;
    }
    
    if(IS_NPC(ch)) fExtra=FALSE;
    
    send_to_char_formatted("----------------------------------------------------\n\r", ch);	
    snprintf(buf,  MAX_INPUT_LENGTH, "%s%s.\n\r" , victim->name, victim->pcdata->title);
    send_to_char_formatted(buf, ch);
    send_to_char_formatted(victim->description, ch);
    if( victim->sex < 0 || victim->sex > 2) victim->sex = 0;
    snprintf( buf, MAX_INPUT_LENGTH, "%s is %d years old.\n\r", he_she[victim->sex], get_age(victim));
    send_to_char( buf, ch);
    
    snprintf( buf, MAX_INPUT_LENGTH, "%s was created %s\n\r", he_she[victim->sex], victim->createtime);
    send_to_char( buf, ch);

	status = " bugged character";
	if ( victim->level < 3 )													status = " Mortal";
	else if ( victim->level == 3 )
	{
		if ( victim->race == 0 )												status = "n Avatar";
		else if ( victim->race >= 1 && victim->race < 5 )						status = "n Immortal";
		else if ( victim->race >= 5 && victim->race < 10 )						status = " Fighter";
		else if ( victim->race >= 10 && victim->race < 15 )						status = "n Adventurer";
		else if ( victim->race >= 15 && victim->race < 20 )						status = " Champion";
		else if ( victim->race >= 20 && victim->race < 25 )						status = " Warrior";
		else if ( victim->race >= 25 )											status = " Hero";
	}
	else
	{
		if ( victim->level == LEVEL_JUSTICAR && IS_SET( victim->act, PLR_VAMPIRE) )
		{
			if ( ch->level < 3 )												status = " clan leader";
			else
			{
				if ( !str_cmp( victim->clan, "Brujah" ) )							status = " Brujah clan leader";
				else if ( !str_cmp( victim->clan, "Caitiff" ) )						status = " sinner";
				else if ( !str_cmp( victim->clan, "Cappadocian" ) )					status = " Cappadocian clan leader";
				else if ( !str_cmp( victim->clan, "Gangrel" ) )						status = " Gangrel clan leader";
				else if ( !str_cmp( victim->clan, "Malkavian" ) )					status = " Malkavian clan leader";
				else if ( !str_cmp( victim->clan, "Nosferatu" ) )					status = " Nosferatu clan leader";
				else if ( !str_cmp( victim->clan, "Toreador" ) )					status = " Toreador clan leader";
				else if ( !str_cmp( victim->clan, "Tremere" ) )						status = " Tremere clan leader";
				else if ( !str_cmp( victim->clan, "Ventrue" ) )						status = " Ventrue clan leader";
			}
		}
		else
		{
			status = " member of the Admin team";
		}
	}
	snprintf( buf, MAX_INPUT_LENGTH, "%s is a%s.\n\r", he_she[victim->sex], status );
	send_to_char( buf, ch );

    if(victim->pcdata->email[0]!='\0')
	   snprintf(buf,  MAX_INPUT_LENGTH, "Email: %s\n\r",victim->pcdata->email);
    else strncpy( buf, "No email address submitted.\n\r", MAX_INPUT_LENGTH);
    send_to_char(buf, ch);
    
    send_to_char("----------------------------------------------------\n\r", ch);	
    
    if (fPlay && victim->level >= LEVEL_JUSTICAR)
	   act("$n just retrieved finger information about you.",ch,NULL,victim, TO_VICT);
    
    
    
    
    return;
    
    
}

void do_member(CHAR_DATA *ch, char *argument)
{
    CHAR_DATA *mch;
    char buf[MAX_INPUT_LENGTH];
    
    
    if( argument[0] == '\0')
    {
	   send_to_char("Which clan?\n\r",ch);
	   return;
    }
    
    if(!str_cmp(ch->clan, "") && ch->level < LEVEL_GOD)
    {
	   send_to_char("You have to be a member of a clan to do that!\n\r", ch);
	   return;
    }
    
    
    
    if(!str_cmp(ch->clan, argument) || ch->level >= LEVEL_GOD)
    {
	   send_to_char("-----------= Clan Members =-----------\n\r",ch);
	   for(mch = char_list ; mch != NULL ; mch = mch->next)
	   { 
		  if (!IS_NPC(mch) && (!str_cmp(argument,mch->clan)))
		  {
			 if ((mch->vampgen == 2) && (!IS_SET(mch->act, PLR_WIZINVIS)))
			 {
				snprintf(buf,  MAX_INPUT_LENGTH, " %s <Leader of %s> \n\r",
				    mch->name, mch->clan);					
				send_to_char(buf, ch);
			 }
			 else if(IS_EXTRA(mch,EXTRA_PRINCE))
			 {
				snprintf(buf,  MAX_INPUT_LENGTH, " %s <Prince for %s> \n\r",
				    mch->name, mch->clan);
				send_to_char( buf, ch);
			 }
			 else if(IS_EXTRA(mch,EXTRA_SIRE))
			 {
				snprintf(buf,  MAX_INPUT_LENGTH, " %s <Sire for %s> \n\r",
				    mch->name, mch->clan);
				send_to_char( buf, ch);
			 }
			 else if (!IS_SET(mch->act, PLR_WIZINVIS))
			 {
				snprintf(buf,  MAX_INPUT_LENGTH, " %s \n\r", mch->name);
				send_to_char( buf, ch);
			 }
		  }
		  
	   }
	   
	   send_to_char("--------------------------------------\n\r",ch);
    }
    else 
    {
	   send_to_char("You cannot get information on that clan.\n\r", ch);
    }
    return;
    
}


void do_muddie(CHAR_DATA *ch, char *argument)
{
	send_to_char( "You must be joking! Have 0 exp!\n\r", ch);
	ch->exp = 0;    
}

void do_imminfo( char *argument )
{
    DESCRIPTOR_DATA *d;
    
    if( argument[0] == '\0')
    {
	   return;
    }
    
    for( d=descriptor_list; d!=NULL; d=d->next)
    {
	   if( d->connected == CON_PLAYING
		  && d->character->level >= LEVEL_GOD && !IS_SET(d->character->deaf, CHANNEL_IMMINFO))
	   {
		  send_to_char( "Imminfo -> ", d->character);
		  send_to_char( argument ,d->character);
		  send_to_char( "\n\r", d->character);
	   }
	   
    }
    
    
    
}

void do_deposit(CHAR_DATA *ch, char *argument)
{
    char arg[MAX_INPUT_LENGTH];
    char buf[MAX_STRING_LENGTH];
    int money;
    
    argument = one_argument( argument, arg, MAX_INPUT_LENGTH );
    
    if( arg[0] == '\0')
    {
	   send_to_char( "Deposit how much gold?\n\r", ch);
	   return;
    }
    
    if( !is_number( arg ))
    {
	   send_to_char( "Er ?? You want to deposit what?? \n\r", ch);
	   return;
    }
    
    money = atoi( arg );
    
    if(!IS_SET(ch->in_room->room_flags, ROOM_BANK))
    {
	   send_to_char( "You must be in a bank to deposit gold!\n\r",ch);
	   return;
    }
    
    if( money < 1)
	   return;
    if( money > ch->gold )
    {
	   send_to_char( "You don't have that much gold!\n\r", ch);
	   return;
    }
    
    ch->gold = ch->gold - money;
    ch->bank = ch->bank + money * 9/10;
    
    act( "$n makes a transaction.", ch, NULL, NULL, TO_ROOM);
    
    snprintf( buf,  MAX_STRING_LENGTH, "You have %ld gold coins in hand, and %ld in the bank.\n\r", ch->gold, ch->bank);
    send_to_char( buf, ch);
    return;
    
}


void do_withdraw( CHAR_DATA *ch, char * argument)
{
    char arg[MAX_INPUT_LENGTH];
    char buf[MAX_STRING_LENGTH];
    int money;
    
    argument = one_argument( argument, arg, MAX_INPUT_LENGTH );
    
    if( arg[0] == '\0')
    {
	   send_to_char( "Withdraw how much gold?\n\r",ch);
	   return;
    }
    
    if( !is_number( arg) )
    {
	   send_to_char( "You want to withdraw WHAT??\n\r", ch);
	   return;
    }
    
    money = atoi(arg);
    
    if(!IS_SET(ch->in_room->room_flags, ROOM_BANK))
    {
	   send_to_char( "You must be in a bank to withdraw gold\n\r", ch);
	   return;
    }
    
    if( money < 1)
	   return;
    if( money > ch->bank)
    {
	   send_to_char("You don't have that much money in the bank.\n\r",ch);
	   return;
    }
    
    ch->gold = ch->gold + money;
    ch->bank = ch->bank - money;
    
    act( "$n makes a transaction.\n\r", ch, NULL, NULL, TO_ROOM);
    
    snprintf( buf,  MAX_STRING_LENGTH, "You have %ld gold in hand, and %ld in the bank.\n\r", ch->gold, ch->bank);
    send_to_char( buf, ch);
    return;
    
}

void do_donate( CHAR_DATA *ch, char *argument)
{
    OBJ_DATA *obj;
    DESCRIPTOR_DATA *d;
    char arg[MAX_INPUT_LENGTH];
    ROOM_INDEX_DATA *donate;
    
    argument = one_argument( argument, arg, MAX_INPUT_LENGTH);
    
    if( arg[0] == '\0')
    {
	   send_to_char( "Donate what?\n\r", ch);
	   return;
    }
    
    if( is_number(arg))
    {
	   send_to_char("You cannot donate gold.\n\r", ch);
	   return;
    }
    
    if( !(obj = get_obj_carry( ch, arg ) ))
    {
	   send_to_char("You do not have that item.\n\r", ch);
	   return;
    }
    
    if( !can_drop_obj( ch, obj ))
    {
	   send_to_char("You cannot let go of it!\n\r", ch);
	   return;
    }
    
    if( obj->item_type == ITEM_BOMB )
    {
	   send_to_char("You cannot donate BOMBS!! \n\r", ch);
	   return;
    }
    
    obj_from_char( obj );
    if( !str_cmp(ch->clan, "Brujah"))
	   obj_to_room( obj, donate= get_room_index( ROOM_VNUM_BRUJAH_DONROOM));
    else if( !str_cmp(ch->clan, "Gangrel"))
	   obj_to_room( obj, donate= get_room_index( ROOM_VNUM_GANGREL_DONROOM));
    else if( !str_cmp(ch->clan, "Ventrue"))
	   obj_to_room( obj, donate= get_room_index( ROOM_VNUM_VENTRUE_DONROOM));
    else if( !str_cmp(ch->clan, "Malkavian"))
	   obj_to_room( obj, donate= get_room_index( ROOM_VNUM_MALKAVIAN_DONROOM));
    else if( !str_cmp(ch->clan, "Tremere"))
	   obj_to_room( obj, donate= get_room_index( ROOM_VNUM_TREMERE_DONROOM));
    else if( !str_cmp(ch->clan, "Nosferatu"))
	   obj_to_room( obj, donate= get_room_index( ROOM_VNUM_NOSFERATU_DONROOM));
    else if( !str_cmp(ch->clan, "Toreador"))
	   obj_to_room( obj, donate= get_room_index( ROOM_VNUM_TOREADOR_DONROOM));
    else if( !str_cmp(ch->clan, "Cappadocian"))
	   obj_to_room( obj, donate= get_room_index( ROOM_VNUM_CAPPADOCIAN_DONROOM));
    else
	   obj_to_room( obj, donate = get_room_index( ROOM_VNUM_DONATION_ROOM ));
    act("You donate $p.", ch, obj, NULL, TO_CHAR);
    act("$n donates $p.", ch, obj, NULL, TO_ROOM);
    
    for( d = descriptor_list; d; d = d->next)
    {
	   if( d->connected == CON_PLAYING
		  && d->character->in_room == donate
		  && d->character->position > POS_SLEEPING)
	   {
		  snprintf( arg,  MAX_INPUT_LENGTH, "%s fades into view on the floor.\n\r", obj->short_descr);
		  send_to_char( arg, d->character );
	   }
    }
    return;
    
}

void do_clanitem( CHAR_DATA *ch, char *argument)
{
    char arg[MAX_INPUT_LENGTH];
    char arg2[MAX_INPUT_LENGTH];
    OBJ_DATA *obj;
    const int GOD_LEVEL = LEVEL_SEER;

    smash_tilde( argument );
    argument = one_argument( argument, arg, MAX_INPUT_LENGTH);
    argument = one_argument( argument, arg2, MAX_INPUT_LENGTH);

    
    if( ch->level < LEVEL_JUSTICAR && !IS_EXTRA(ch, EXTRA_TRUSTED))
    {
           send_to_char( "Only for Divine Beings or Clan Leaders! \n\r", ch);
	   return;
    }
    
    if( arg[0] == '\0')
    {
	   send_to_char( "Create which clan item (1,2 or 3)?\n\r", ch);
	   return;
    }

    if( arg2[0] == '\0' && ch->level >= LEVEL_SEER )
    {
         send_to_char( "Create item for which clan ?\n\r", ch);
         return;
    }
    
    if( arg[0] == '1' )
    {
          if( ((arg2[0]=='\0') && !str_cmp(ch->clan, "Brujah")) ||
              (ch->level >= GOD_LEVEL && !str_cmp(arg2, "Brujah")) )
          {
              obj = create_object(get_obj_index( 24900 ), 0);
              obj_to_char(obj, ch); 
              act( "$n mutters some words and $p appears.", ch, obj, NULL, TO_ROOM);
              act( "You mutter some words and $p appears.", ch, obj, NULL, TO_CHAR);
              return; 
          }
          if( ((arg2[0]=='\0') && !str_cmp(ch->clan, "Malkavian")) ||
              (ch->level >= GOD_LEVEL && !str_cmp(arg2, "Malkavian")) )
          {
              obj = create_object(get_obj_index( 24903 ), 0);
              obj_to_char(obj, ch); 
              act( "$n mutters some words and $p appears.", ch, obj, NULL, TO_ROOM);
              act( "You mutter some words and $p appears.", ch, obj, NULL, TO_CHAR);
              return; 
          }
          if( ((arg2[0]=='\0') && !str_cmp(ch->clan, "Tremere")) ||
              (ch->level >= GOD_LEVEL && !str_cmp(arg2, "Tremere")) )
          {
		  obj = create_object(get_obj_index( 24906 ), 0);
		  obj_to_char(obj, ch); 
		  act( "$n mutters some words and $p appears.", ch, obj, NULL, TO_ROOM);
		  act( "You mutter some words and $p appears.", ch, obj, NULL, TO_CHAR);
		  return; 
	   }
           if( ((arg2[0]=='\0') && !str_cmp(ch->clan, "Toreador")) ||
               (ch->level >= GOD_LEVEL && !str_cmp(arg2, "Toreador")) )
	   {
		  obj = create_object(get_obj_index( 24909 ), 0);
		  obj_to_char(obj, ch); 
		  act( "$n mutters some words and $p appears.", ch, obj, NULL, TO_ROOM);
		  act( "You mutter some words and $p appears.", ch, obj, NULL, TO_CHAR);
		  return; 
	   }
           if( ((arg2[0]=='\0') && !str_cmp(ch->clan, "Ventrue")) ||
               (ch->level >= GOD_LEVEL && !str_cmp(arg2, "Ventrue")) )
	   {
		  obj = create_object(get_obj_index( 24912 ), 0);
		  obj_to_char(obj, ch); 
		  act( "$n mutters some words and $p appears.", ch, obj, NULL, TO_ROOM);
		  act( "You mutter some words and $p appears.", ch, obj, NULL, TO_CHAR);
		  return; 
	   }
           if( ((arg2[0]=='\0') && !str_cmp(ch->clan, "Nosferatu")) ||
               (ch->level >= GOD_LEVEL && !str_cmp(arg2, "Nosferatu")) )
	   {
		  obj = create_object(get_obj_index( 24915 ), 0);
		  obj_to_char(obj, ch); 
		  act( "$n mutters some words and $p appears.", ch, obj, NULL, TO_ROOM);
		  act( "You mutter some words and $p appears.", ch, obj, NULL, TO_CHAR);
		  return; 
	   }
           if( ((arg2[0]=='\0') && !str_cmp(ch->clan, "Gangrel")) ||
               (ch->level >= GOD_LEVEL && !str_cmp(arg2, "Gangrel")) )
	   {
		  obj = create_object(get_obj_index( 24918 ), 0);
		  obj_to_char(obj, ch); 
		  act( "$n mutters some words and $p appears.", ch, obj, NULL, TO_ROOM);
		  act( "You mutter some words and $p appears.", ch, obj, NULL, TO_CHAR);
		  return; 
	   }
           if( ((arg2[0]=='\0') && !str_cmp(ch->clan, "Cappadocian")) ||
               (ch->level >= GOD_LEVEL && !str_cmp(arg2, "Cappadocian")) )
	   {
		  obj = create_object(get_obj_index( 24929 ), 0);
		  obj_to_char(obj, ch); 
		  act( "$n mutters some words and $p appears.", ch, obj, NULL, TO_ROOM);
		  act( "You mutter some words and $p appears.", ch, obj, NULL, TO_CHAR);
		  return; 
	   }
	   else 		
	   {
                  send_to_char( "There is no clan item 1 for that clan.\n\r",ch);
		  return;
	   }
	   return;
    }
    
    if( arg[0] == '2' )
    {
           if( ((arg2[0]=='\0') && !str_cmp(ch->clan, "Brujah")) ||
              (ch->level >= GOD_LEVEL && !str_cmp(arg2, "Brujah")) )
	   {
		  obj = create_object(get_obj_index( 24901 ), 0);
		  obj_to_char(obj, ch); 
		  act( "$n mutters some words and $p appears.", ch, obj, NULL, TO_ROOM);
		  act( "You mutter some words and $p appears.", ch, obj, NULL, TO_CHAR);
		  return; 
	   }
           if( ((arg2[0]=='\0') && !str_cmp(ch->clan, "Malkavian")) ||
              (ch->level >= GOD_LEVEL && !str_cmp(arg2, "Malkavian")) )
	   {
		  obj = create_object(get_obj_index( 24904 ), 0);
		  obj_to_char(obj, ch); 
		  act( "$n mutters some words and $p appears.", ch, obj, NULL, TO_ROOM);
		  act( "You mutter some words and $p appears.", ch, obj, NULL, TO_CHAR);
		  return; 
	   }
           if( ((arg2[0]=='\0') && !str_cmp(ch->clan, "Tremere")) ||
              (ch->level >= GOD_LEVEL && !str_cmp(arg2, "Tremere")) )
	   {
		  obj = create_object(get_obj_index( 24907 ), 0);
		  obj_to_char(obj, ch); 
		  act( "$n mutters some words and $p appears.", ch, obj, NULL, TO_ROOM);
		  act( "You mutter some words and $p appears.", ch, obj, NULL, TO_CHAR);
		  return; 
	   }
           if( ((arg2[0]=='\0') && !str_cmp(ch->clan, "Toreador")) ||
              (ch->level >= GOD_LEVEL && !str_cmp(arg2, "Toreador")) )
	   {
		  obj = create_object(get_obj_index( 24910 ), 0);
		  obj_to_char(obj, ch); 
		  act( "$n mutters some words and $p appears.", ch, obj, NULL, TO_ROOM);
		  act( "You mutter some words and $p appears.", ch, obj, NULL, TO_CHAR);
		  return; 
	   }
           if( ((arg2[0]=='\0') && !str_cmp(ch->clan, "Ventrue")) ||
              (ch->level >= GOD_LEVEL && !str_cmp(arg2, "Ventrue")) )
	   {
		  obj = create_object(get_obj_index( 24913 ), 0);
		  obj_to_char(obj, ch); 
		  act( "$n mutters some words and $p appears.", ch, obj, NULL, TO_ROOM);
		  act( "You mutter some words and $p appears.", ch, obj, NULL, TO_CHAR);
		  return; 
	   }
           if( ((arg2[0]=='\0') && !str_cmp(ch->clan, "Nosferatu")) ||
              (ch->level >= GOD_LEVEL && !str_cmp(arg2, "Nosferatu")) )
	   {
		  obj = create_object(get_obj_index( 24916 ), 0);
		  obj_to_char(obj, ch); 
		  act( "$n mutters some words and $p appears.", ch, obj, NULL, TO_ROOM);
		  act( "You mutter some words and $p appears.", ch, obj, NULL, TO_CHAR);
		  return; 
	   }
           if( ((arg2[0]=='\0') && !str_cmp(ch->clan, "Gangrel")) ||
              (ch->level >= GOD_LEVEL && !str_cmp(arg2, "Gangrel")) )
	   {
		  obj = create_object(get_obj_index( 24919 ), 0);
		  obj_to_char(obj, ch); 
		  act( "$n mutters some words and $p appears.", ch, obj, NULL, TO_ROOM);
		  act( "You mutter some words and $p appears.", ch, obj, NULL, TO_CHAR);
		  return; 
	   }
           if( ((arg2[0]=='\0') && !str_cmp(ch->clan, "Cappadocian")) ||
              (ch->level >= GOD_LEVEL && !str_cmp(arg2, "Cappadocian")) )
	   {
		  obj = create_object(get_obj_index( 24930 ), 0);
		  obj_to_char(obj, ch); 
		  act( "$n mutters some words and $p appears.", ch, obj, NULL, TO_ROOM);
		  act( "You mutter some words and $p appears.", ch, obj, NULL, TO_CHAR);
		  return; 
	   }
	   else 		
	   {
		  send_to_char( "There is no clan item 2 for your clan.\n\r",ch);
		  return;
	   }
	   return;
    }
    
    if( arg[0] == '3' )
    {
           if( ((arg2[0]=='\0') && !str_cmp(ch->clan, "Brujah")) ||
              (ch->level >= GOD_LEVEL && !str_cmp(arg2, "Brujah")) )
	   {
		  obj = create_object(get_obj_index( 24902 ), 0);
		  obj_to_char(obj, ch); 
		  act( "$n mutters some words and $p appears.", ch, obj, NULL, TO_ROOM);
		  act( "You mutter some words and $p appears.", ch, obj, NULL, TO_CHAR);
		  return; 
	   }
           if( ((arg2[0]=='\0') && !str_cmp(ch->clan, "Malkavian")) ||
              (ch->level >= GOD_LEVEL && !str_cmp(arg2, "Malkavian")) )
	   {
		  obj = create_object(get_obj_index( 24905 ), 0);
		  obj_to_char(obj, ch); 
		  act( "$n mutters some words and $p appears.", ch, obj, NULL, TO_ROOM);
		  act( "You mutter some words and $p appears.", ch, obj, NULL, TO_CHAR);
		  return; 
	   }
           if( ((arg2[0]=='\0') && !str_cmp(ch->clan, "Tremere")) ||
              (ch->level >= GOD_LEVEL && !str_cmp(arg2, "Tremere")) )
	   {
		  obj = create_object(get_obj_index( 24908 ), 0);
		  obj_to_char(obj, ch); 
		  act( "$n mutters some words and $p appears.", ch, obj, NULL, TO_ROOM);
		  act( "You mutter some words and $p appears.", ch, obj, NULL, TO_CHAR);
		  return; 
	   }
           if( ((arg2[0]=='\0') && !str_cmp(ch->clan, "Toreador")) ||
              (ch->level >= GOD_LEVEL && !str_cmp(arg2, "Toreador")) )
	   {
		  obj = create_object(get_obj_index( 24911 ), 0);
		  obj_to_char(obj, ch); 
		  act( "$n mutters some words and $p appears.", ch, obj, NULL, TO_ROOM);
		  act( "You mutter some words and $p appears.", ch, obj, NULL, TO_CHAR);
		  return; 
	   }
           if( ((arg2[0]=='\0') && !str_cmp(ch->clan, "Ventrue")) ||
              (ch->level >= GOD_LEVEL && !str_cmp(arg2, "Ventrue")) )
	   {
		  obj = create_object(get_obj_index( 24914 ), 0);
		  obj_to_char(obj, ch); 
		  act( "$n mutters some words and $p appears.", ch, obj, NULL, TO_ROOM);
		  act( "You mutter some words and $p appears.", ch, obj, NULL, TO_CHAR);
		  return; 
	   }
           if( ((arg2[0]=='\0') && !str_cmp(ch->clan, "Nosferatu")) ||
              (ch->level >= GOD_LEVEL && !str_cmp(arg2, "Nosferatu")) )
	   {
		  obj = create_object(get_obj_index( 24917 ), 0);
		  obj_to_char(obj, ch); 
		  act( "$n mutters some words and $p appears.", ch, obj, NULL, TO_ROOM);
		  act( "You mutter some words and $p appears.", ch, obj, NULL, TO_CHAR);
		  return; 
	   }
           if( ((arg2[0]=='\0') && !str_cmp(ch->clan, "Gangrel")) ||
              (ch->level >= GOD_LEVEL && !str_cmp(arg2, "Gangrel")) )
	   {
		  obj = create_object(get_obj_index( 24920 ), 0);
		  obj_to_char(obj, ch); 
		  act( "$n mutters some words and $p appears.", ch, obj, NULL, TO_ROOM);
		  act( "You mutter some words and $p appears.", ch, obj, NULL, TO_CHAR);
		  return; 
	   }
           if( ((arg2[0]=='\0') && !str_cmp(ch->clan, "Cappadocian")) ||
              (ch->level >= GOD_LEVEL && !str_cmp(arg2, "Cappadocian")) )
	   {
		  obj = create_object(get_obj_index( 24931 ), 0);
		  obj_to_char(obj, ch); 
		  act( "$n mutters some words and $p appears.", ch, obj, NULL, TO_ROOM);
		  act( "You mutter some words and $p appears.", ch, obj, NULL, TO_CHAR);
		  return; 
	   }
	   else 		
	   {
		  send_to_char( "There is no clan item 3 for your clan.\n\r",ch);
		  return;
	   }
	   return;
    }
    
    
    return;
}

void do_godwho( CHAR_DATA *ch, char *argument)
{
    char buf[MAX_STRING_LENGTH];
    char arg[MAX_INPUT_LENGTH];
    CHAR_DATA *gch;
    
    one_argument( argument, arg, MAX_INPUT_LENGTH);
    
    if(IS_NPC(ch)) return;
    
    send_to_char_formatted("[      Name      ] [ Sta ] [ Age  ] [ Hits  % ] [ Mana  % ] [ Move  % ] [   Exp    ]\n\r",ch);
    for( gch = char_list; gch != NULL; gch = gch->next)
    {
	   if( IS_NPC(gch)) continue;
	   if( !can_see(ch,gch)) continue;
	   
           snprintf( buf,  MAX_STRING_LENGTH, "[%-16s] [ %3d ] [ %4d ] [%-6d%3d] [%-6d%3d] [%-6d%3d] [ %7ld  ]\n\r",
		  capitalize( gch->name),
		  gch->race,
                  get_age(gch), 
		  gch->hit, (gch->hit * 100/ gch->max_hit),
		  gch->mana, (gch->mana * 100/ gch->max_mana),
		  gch->move, (gch->move * 100/ gch->max_move),
		  gch->exp);
	   send_to_char_formatted( buf, ch);
    }
    
    
    return;
    
    
}



void do_backup( CHAR_DATA *ch, char *argument )
{
    char chlevel [15];
    char buf [MAX_INPUT_LENGTH];
    char strsave[MAX_INPUT_LENGTH];
    char temp[MAX_INPUT_LENGTH]; 
    FILE *fp;
    
    if ( IS_NPC(ch) || ch->level < 2 )
	   return;
    
    if ( ch->desc != NULL && ch->desc->original != NULL )
	   ch = ch->desc->original;
    
    ch->save_time = current_time;
    fclose( fpReserve );
    
#if !defined( macintosh) && !defined(MSDOS)
    snprintf( temp,  MAX_INPUT_LENGTH, "%s%s%s%s", BACKUP_DIR, initial( ch->name ), "/", capitalize( ch->name) );
    snprintf( strsave,  MAX_INPUT_LENGTH, "tmp.file");
#else	
    snprintf( temp,  MAX_INPUT_LENGTH, "%s%s", BACKUP_DIR, capitalize( ch->name ) );
    snprintf( strsave,  MAX_INPUT_LENGTH, "tmp.file");
#endif
    
    
    if ( ( fp = fopen( strsave, "w" ) ) == NULL )
    {
	   bug( "Save_char_obj: fopen", 0 );
	   perror( strsave );
    }
    else
    {
	   fwrite_char( ch, fp );
	   if ( ch->carrying != NULL )
		  fwrite_obj( ch, ch->carrying, fp, 0 );
	   fprintf( fp, "#END\n" );
	   if      (ch->level >= 9) snprintf(chlevel,15,"<CODER>");
	   else if (ch->level == 8) snprintf(chlevel,15,"<GOD>");
	   else if (ch->level == 7) snprintf(chlevel,15,"<DEMIGOD>");
	   else if (ch->level == 6) snprintf(chlevel,15,"<DEITY>");
	   else if (ch->level == 5) snprintf(chlevel,15,"<Elder>");
	   else if (ch->level == 4) snprintf(chlevel,15,"<Builder>");
	   else if (ch->level == 3) snprintf(chlevel,15,"<Avatar>");
	   else                     snprintf(chlevel,15,"<Mortal>");
	   if (strlen(ch->lasttime) > 1)
		  snprintf(buf, MAX_INPUT_LENGTH, "%s Last logged in on %s", chlevel, ch->lasttime);
	   else
		  snprintf(buf, MAX_INPUT_LENGTH, "%s New player logged in on %s", chlevel, ch->createtime);
	   fprintf( fp, buf);
    }
    fclose( fp );
    
    send_to_char("Backed up.\n\r", ch);
    
    fpReserve = fopen( NULL_FILE, "r" );
    rename( strsave, temp );
    return;
}




void do_delete( CHAR_DATA *ch, char *argument)
{
    char temp[MAX_INPUT_LENGTH];
    
    if ( IS_NPC(ch) )
    {
	   send_to_char("Mobs can't delete !\n\r", ch);
	   return;
    }
    
    if(argument[0] == '\0')
    {
	   send_to_char("Syntax: delete <password> \n\r",ch);
	   return;
    }
    
    if(strcmp(argument, ch->pcdata->pwd) && strcmp(crypt(argument, ch->pcdata->pwd), ch->pcdata->pwd))
    {
	   send_to_char("Wrong password!\n\r", ch);
	   return;
    }
    
    snprintf( temp,  MAX_INPUT_LENGTH, "mv %s%s%s%s %s%s &\n\r", 
	   PLAYER_DIR, initial(ch->name), "/", capitalize(ch->name),
	   DELETE_DIR, capitalize(ch->name));
    system(temp);
    send_to_char( "Ok.\n\r", ch); 
    ch->level = 0;
    do_quit( ch, "");
    
    return;
}


void do_omember( CHAR_DATA *ch, char *argument)
{
    CHAR_DATA *victim;
    bool fOld = FALSE; 
    
    
    if( ch->level != LEVEL_CODER && str_cmp(ch->name, "Joker")) return;
    
    if( argument[0] == '\0')
    {
	   send_to_char("Finger who?\n\r",ch);
	   return;
    }
    
    argument[0] = UPPER( argument[0] );
    
    if( !check_parse_name(argument) )
    {
	   send_to_char("Illegal name.\n\r",ch);
	   return;
    }
    
    if(  (victim = get_char_world(ch, argument)) )
    {
	   fOld=TRUE;
    }
    
    if(!fOld)
    {
	   send_to_char("That person is not on Vampire Wars at the moment!\n\r",ch);
	   return;
    }
    
    if(IS_NPC(victim))
    {
	   send_to_char("That is a mob!\n\r", ch);
	   return;
    }
    
    if( !IS_EXTRA(victim, EXTRA_ORGYMEMBER)) 
    {
	   send_to_char("Member added. \n\r",ch);
	   SET_BIT(victim->extra, EXTRA_ORGYMEMBER);		
	   send_to_char("You have been accepted into the orgy!\n\r", victim);
    }
    else
    {
	   send_to_char("Member removed. \n\r",ch);
	   REMOVE_BIT(victim->extra, EXTRA_ORGYMEMBER);
	   send_to_char("You have been removed from the orgy!\n\r", victim);
    }
    
    return;
}

void do_ordain( CHAR_DATA *ch, char *argument)
{
    /* Archrip - CHAR_DATA *victim; */
    /* Archrip - bool fOld = FALSE; */
    
    send_to_char("Taken this out for now, did nothing anyway - Archon./n/r", ch);
    return;
    
    /*
    
	 if( ch->level != LEVEL_CODER && str_cmp(ch->name, "Joker")) return;
	 
	   if( argument[0] == '\0')
	   {
	   send_to_char("Ordain who?\n\r",ch);
	   return;
	   }
	   
		argument[0] = UPPER( argument[0] );
		
		  if( !check_parse_name(argument) )
		  {
		  send_to_char("Illegal name.\n\r",ch);
		  return;
		  }
		  
		    if(  (victim = get_char_world(ch, argument)) )
		    {
		    fOld=TRUE;
		    }
		    
			 if(!fOld)
			 {
			 send_to_char("That person is not on Vampire Wars at the moment!\n\r",ch);
			 return;
			 }
			 
			   if(IS_NPC(victim))
			   {
			   send_to_char("That is a mob!\n\r", ch);
			   return;
			   }
			   
				if( !IS_SET(victim->act, PLR_KNIGHT)) 
				{
				send_to_char("Member added. \n\r",ch);
				SET_BIT(victim->act, PLR_KNIGHT);		
				send_to_char("You have been ordained into the order!\n\r", victim);
				}
				else
				{
				send_to_char("Member removed. \n\r",ch);
				REMOVE_BIT(victim->act, PLR_KNIGHT);
				send_to_char("You have been rejected from the order!\n\r", victim);
				}
				
				  return;
    */
}


void do_sabbat( CHAR_DATA *ch, char *argument)
{
    CHAR_DATA *victim;
    bool fOld = FALSE; 
    
    
    if( ch->level != LEVEL_CODER && str_cmp(ch->name, "Joker")) return;
    
    if( argument[0] == '\0')
    {
	   send_to_char("Induce who?\n\r",ch);
	   return;
    }
    
    argument[0] = UPPER( argument[0] );
    
    if( !check_parse_name(argument) )
    {
	   send_to_char("Illegal name.\n\r",ch);
	   return;
    }
    
    if(  (victim = get_char_world(ch, argument)) )
    {
	   fOld=TRUE;
    }
    
    if(!fOld)
    {
	   send_to_char("That person is not on Vampire Wars at the moment!\n\r",ch);
	   return;
    }
    
    if(IS_NPC(victim))
    {
	   send_to_char("That is a mob!\n\r", ch);
	   return;
    }
    
    if( !IS_SET(victim->act, PLR_SABBAT)) 
    {
	   send_to_char("Member added. \n\r",ch);
	   SET_BIT(victim->act, PLR_SABBAT);		
	   send_to_char("You are now a Sabbat member!\n\r", victim);
    }
    else
    {
	   send_to_char("Member removed. \n\r",ch);
	   REMOVE_BIT(victim->act, PLR_SABBAT);
	   send_to_char("You have been rejected from the Sabbat!\n\r", victim);
    }
    
    return;
}

void do_clandeposit(CHAR_DATA *ch, char *argument)
{
    char arg[MAX_INPUT_LENGTH];
    long money;
    
    argument = one_argument( argument, arg, MAX_INPUT_LENGTH );
    
    if( arg[0] == '\0')
    {
	   send_to_char( "Deposit how much gold?\n\r", ch);
	   return;
    }
    
    if( !is_number( arg ))
    {
	   send_to_char( "Er ?? You want to deposit what?? \n\r", ch);
	   return;
    }
    
    if( !IS_SET(ch->act, PLR_VAMPIRE))
    {
	   send_to_char( "Only vampire clan members can do this.\n\r",ch);
	   return;
    }
    
    money = atoi( arg );
    
    if(!IS_SET(ch->in_room->room_flags, ROOM_BANK))
    {
	   send_to_char( "You must be in a bank to deposit gold!\n\r",ch);
	   return;
    }
    
    if( money < 1)
	   return;
    if( money > ch->gold )
    {
	   send_to_char( "You don't have that much gold!\n\r", ch);
	   return;
    }
    
    if( !str_cmp(ch->clan, "Brujah") )
    {
	   ch->gold = ch->gold - money;
	   clan_infotable[1].members = clan_infotable[1].members + (money * 9/10);
	   send_to_char( "You have just deposited money into the Brujah account.\n\r",ch);
    }
    else if( !str_cmp(ch->clan, "Malkavian") ) 
    {
	   ch->gold = ch->gold - money;
	   clan_infotable[2].members = clan_infotable[2].members + (money * 9/10);
	   send_to_char( "You have just deposited money into the Malkavian account.\n\r",ch);
    }
    else if( !str_cmp(ch->clan, "Ventrue") ) 
    {
	   ch->gold = ch->gold - money;
	   clan_infotable[3].members = clan_infotable[3].members + (money * 9/10);
	   send_to_char( "You have just deposited money into the Ventrue account.\n\r",ch);
    }
    else if( !str_cmp(ch->clan, "Tremere") ) 
    {
	   ch->gold = ch->gold - money;
	   clan_infotable[4].members = clan_infotable[4].members + (money * 9/10);
	   send_to_char( "You have just deposited money into the Tremere account.\n\r",ch);
    }
    else if( !str_cmp(ch->clan, "Gangrel") ) 
    {
	   ch->gold = ch->gold - money;
	   clan_infotable[5].members = clan_infotable[5].members + (money * 9/10);
	   send_to_char( "You have just deposited money into the Gangrel account.\n\r",ch);
    }
    else if( !str_cmp(ch->clan, "Toreador") ) 
    {
	   ch->gold = ch->gold - money;
	   clan_infotable[6].members = clan_infotable[6].members + (money * 9/10);
	   send_to_char( "You have just deposited money into the Toreador account.\n\r",ch);
    }
    else if( !str_cmp(ch->clan, "Nosferatu") ) 
    {
	   ch->gold = ch->gold - money;
	   clan_infotable[7].members = clan_infotable[7].members + (money * 9/10);
	   send_to_char( "You have just deposited money into the Nosferatu account.\n\r",ch);
    }
    else if( !str_cmp(ch->clan, "Caitiff")  ) 
    {
	   ch->gold = ch->gold - money;
	   clan_infotable[8].members = clan_infotable[8].members + (money * 9/10);
	   send_to_char( "You have just deposited money into the Caitiff account.\n\r",ch);
    }
    else
    {
	   send_to_char( "You do not have a clan, so dont be silly!\n\r",ch);
	   return;
    } 
    
    act( "$n makes a transaction.", ch, NULL, NULL, TO_ROOM);
    
    return;
    
}

void do_clanwithdraw( CHAR_DATA *ch, char * argument)
{
    char arg[MAX_INPUT_LENGTH];
    long money;
    
    argument = one_argument( argument, arg, MAX_INPUT_LENGTH );
    
    if( arg[0] == '\0')
    {
	   send_to_char( "Withdraw how much gold?\n\r",ch);
	   return;
    }
    
    if( !is_number( arg) )
    {
	   send_to_char( "You want to withdraw WHAT??\n\r", ch);
	   return;
    }
    
    if( !IS_SET(ch->act, PLR_VAMPIRE))
    {
	   send_to_char( "Only vampire clan members can do this.\n\r",ch);
	   return;
    }
    
    money = atoi(arg);
    
    if(!IS_SET(ch->in_room->room_flags, ROOM_BANK))
    {
	   send_to_char( "You must be in a bank to withdraw gold\n\r", ch);
	   return;
    }
    
    if( money < 1)
	   return;
    
    if( !str_cmp(ch->clan, "Brujah") )
    {
	   if( money > clan_infotable[1].members)
	   {
		  send_to_char("The Brujah account does not have that much money\n\r",ch);
		  return;
	   }
	   else
		  clan_infotable[1].members = clan_infotable[1].members - money;
    }
    else if( !str_cmp(ch->clan, "Malkavian") ) 
    {
	   if( money > clan_infotable[2].members)
	   {
		  send_to_char("The Malkavian account does not have that much money\n\r",ch);
		  return;
	   }
	   else
		  clan_infotable[2].members = clan_infotable[2].members - money;
    }
    else if( !str_cmp(ch->clan, "Ventrue") ) 
    {
	   
	   if( money > clan_infotable[3].members)
	   {
		  send_to_char("The Ventrue account does not have that much money\n\r",ch);
		  return;
	   }
	   else
		  clan_infotable[3].members = clan_infotable[3].members - money;
    }
    else if( !str_cmp(ch->clan, "Tremere") ) 
    {
	   if( money > clan_infotable[4].members)
	   {
		  send_to_char("The Tremere account does not have that much money\n\r",ch);
		  return;
	   }
	   else
		  clan_infotable[4].members = clan_infotable[4].members - money;
    }
    else if( !str_cmp(ch->clan, "Gangrel") )
    {
	   if( money > clan_infotable[5].members)
	   {
		  send_to_char("The Gangrel account does not have that much money\n\r",ch);
		  return;
	   }
	   else
		  clan_infotable[5].members = clan_infotable[5].members - money;
    }
    else if( !str_cmp(ch->clan, "Toreador") )
    {
	   if( money > clan_infotable[6].members)
	   {
		  send_to_char("The Toreador account does not have that much money\n\r",ch);
		  return;
	   }
	   else
		  clan_infotable[6].members = clan_infotable[6].members - money;
    }
    else if( !str_cmp(ch->clan, "Nosferatu") ) 
    {
	   
	   if( money > clan_infotable[7].members)
	   {
		  send_to_char("The Nosferatu account does not have that much money\n\r",ch);
		  return;
	   }
	   else
		  clan_infotable[7].members = clan_infotable[7].members - money;
    }
    else if( !str_cmp(ch->clan, "Caitiff")  )
    {
	   
	   if( money > clan_infotable[8].members)
	   {
		  send_to_char("The Caitiff account does not have that much money\n\r",ch);
		  return;
	   }
	   else
		  clan_infotable[8].members = clan_infotable[8].members - money;
    }
    else
    {
	   send_to_char( "You do not have a clan, so dont be silly!\n\r",ch);
	   return;
    } 
    
    ch->gold = ch->gold + money;
    act( "$n makes a transaction.\n\r", ch, NULL, NULL, TO_ROOM);
    return;
    
}

void do_clanbalance(CHAR_DATA *ch, char *argument)
{
    char buf[MAX_STRING_LENGTH];
    int clanno = 0;
    
    
    if( !IS_SET(ch->act, PLR_VAMPIRE))
    {
	   send_to_char( "Only vampire clan members can do this.\n\r",ch);
	   return;
    }
    
    
    if(!IS_SET(ch->in_room->room_flags, ROOM_BANK))
    {
	   send_to_char( "You must be in a bank to get a balance!\n\r",ch);
	   return;
    }
    
    if( ch->level > LEVEL_ORACLE)
    {
	   clanno=clan_infotable[1].members;
	   snprintf( buf, MAX_STRING_LENGTH, "Brujah = %d gold in the bank.\n\r", clanno);
	   send_to_char(buf,ch);
	   clanno=clan_infotable[2].members;
	   
	   snprintf( buf, MAX_STRING_LENGTH, "Malkavian = %d gold in the bank.\n\r", clanno);
	   send_to_char(buf,ch);
	   clanno=clan_infotable[3].members;
	   
	   snprintf( buf, MAX_STRING_LENGTH, "Ventrue = %d gold in the bank.\n\r", clanno);
	   send_to_char(buf,ch);
	   clanno=clan_infotable[4].members;
	   
	   snprintf( buf, MAX_STRING_LENGTH, "Tremere = %d gold in the bank.\n\r", clanno);
	   send_to_char(buf,ch);
	   clanno=clan_infotable[5].members;
	   
	   snprintf( buf, MAX_STRING_LENGTH, "Gangrel = %d gold in the bank.\n\r", clanno);
	   send_to_char(buf,ch);
	   clanno=clan_infotable[6].members;
	   
	   snprintf( buf, MAX_STRING_LENGTH, "Toreador = %d gold in the bank.\n\r", clanno);
	   send_to_char(buf,ch);
	   clanno=clan_infotable[7].members;
	   
	   snprintf( buf, MAX_STRING_LENGTH, "Nosferatu = %d gold in the bank.\n\r", clanno);
	   send_to_char(buf,ch);
	   clanno=clan_infotable[8].members;
	   
	   snprintf( buf, MAX_STRING_LENGTH, "Caitiff = %d gold in the bank.\n\r", clanno);
	   send_to_char(buf,ch);
	   return;
    }
    
    
    
    if( !str_cmp(ch->clan, "Brujah") )
    {
	   clanno = clan_infotable[1].members;
    }
    else if( !str_cmp(ch->clan, "Malkavian") ) 
    {
	   clanno = clan_infotable[2].members;
    }
    else if( !str_cmp(ch->clan, "Ventrue") ) 
    {
	   clanno = clan_infotable[3].members;
    }
    else if( !str_cmp(ch->clan, "Tremere") ) 
    {
	   clanno = clan_infotable[4].members;
    }
    else if( !str_cmp(ch->clan, "Gangrel") ) 
    {
	   clanno = clan_infotable[5].members;
    }
    else if( !str_cmp(ch->clan, "Toreador") ) 
    {
	   clanno = clan_infotable[6].members;
    }
    else if( !str_cmp(ch->clan, "Nosferatu") ) 
    {
	   clanno = clan_infotable[7].members;
    }
    else if( !str_cmp(ch->clan, "Caitiff")  ) 
    {
	   clanno =clan_infotable[8].members;
    }
    else
    {
	   send_to_char( "You do not have a clan, so dont be silly!\n\r",ch);
	   return;
    } 
    
    snprintf( buf, MAX_STRING_LENGTH, "Your clan currently has %d gold in the bank.\n\r", clanno);
    send_to_char(buf,ch);
    
    return;
    
}

void do_personal( CHAR_DATA *ch, char *argument)
{
    CHAR_DATA *victim;
    bool fOld = FALSE; 
    
    
    if( ch->level != LEVEL_CODER && str_cmp(ch->name, "Joker")) return;
    
    if( argument[0] == '\0')
    {
	   send_to_char("Finger who?\n\r",ch);
	   return;
    }
    
    argument[0] = UPPER( argument[0] );
    
    if( !check_parse_name(argument) )
    {
	   send_to_char("Illegal name.\n\r",ch);
	   return;
    }
    
    if(  (victim = get_char_world(ch, argument)) )
    {
	   fOld=TRUE;
    }
    
    if(!fOld)
    {
	   send_to_char("That person is not on Vampire Wars at the moment!\n\r",ch);
	   return;
    }
    
    if(IS_NPC(victim))
    {
	   send_to_char("That is a mob!\n\r", ch);
	   return;
    }
    
    if( !IS_EXTRA(victim, EXTRA_PERSONAL)) 
    {
	   send_to_char("Member added. \n\r",ch);
	   SET_BIT(victim->extra, EXTRA_PERSONAL);		
	   send_to_char("You are now on the personal channel.\n\r", victim);
    }
    else
    {
	   send_to_char("Member removed. \n\r",ch);
	   REMOVE_BIT(victim->extra, EXTRA_PERSONAL);
	   send_to_char("You are no longer on the personal channel.\n\r", victim);
    }
    
    return;
}

void do_outcast(CHAR_DATA *ch, char *argument)
{
    char arg [MAX_INPUT_LENGTH];
    CHAR_DATA *victim;
    
    one_argument( argument, arg, MAX_INPUT_LENGTH);

    if( arg[0] == '\0')
    {
	   send_to_char("Outcast who?\n\r",ch);
	   return;
    }
    
   
    if( NULL == (victim = get_char_world(ch, arg)) )
    {
	   send_to_char("That person is not on Vampire Wars at the moment!\n\r",ch);
	   return;
    }
    
    if(IS_NPC(victim))
    {
	   send_to_char("That is a mob!\n\r", ch);
	   return;
    }
    
    if( !strcmp(victim->clan, ""))
    {
	   send_to_char("That person is not in a clan\n\r", ch);
	   return;
    }
    
    if( !strcmp(victim->clan, "Caitiff"))
    {
	   send_to_char("That person is Caitiff already!\n\r", ch);
	   return;
    }
    
    if( !strcmp(ch->clan, victim->clan))
    {
	   send_to_char("You have been cast out of your clan!\n\r", victim);
	   send_to_char("Ok.\n\r", ch);
       free_string( victim->clan);
       victim->clan = str_dup( "Caitiff");
	   return;
    }
    
    
    return;
}
void do_vouch(CHAR_DATA *ch, char *argument)
{
    CHAR_DATA  *victim;
    char       buf[MAX_INPUT_LENGTH];
    int        clannumber;


    clannumber = 0;

    if( argument[0] == '\0')
    {
         send_to_char("Vouch for who?\n\r",ch);
         return;
    }

    argument[0] = UPPER( argument[0]);

    if((victim = get_char_room(ch, argument))==NULL)
    {
      send_to_char("That player is not here.\n\r",ch);
      return;
    }

    if( IS_NPC(victim))
    {
         send_to_char("That is a mob!\n\r",ch);
         return;
    }

    if ( ch == victim )
    {
           send_to_char( "You cannot bite yourself.\n\r", ch );
           return;
    }

    if (!IS_SET(ch->act, PLR_VAMPIRE))
    {
          send_to_char("Huh?\n\r",ch);
           return;
    }

    if( IS_SET(victim->act, PLR_VAMPIRE))
    {
          send_to_char("They are already a vampire!\n\r",ch);
          return;
    }

    if (ch->practice < 5 && ch->beast != 100)
    {
           send_to_char("You cannot afford the 5 primal to create a childe.\n\r",ch);
           return;
    }

    if(victim->practice < 10 && ch->beast != 100)
    {
           send_to_char("You cannot afford the 10 primal to join the clan.\n\r",victim);
           return;
    }

    if ( victim->level < 3 )
    {
           send_to_char( "Only avatars can be bitten in!.\n\r", ch );
           return;
    }

    if (IS_SET(victim->act, PLR_VAMPIRE) && ch->beast != 100)
    {
           send_to_char( "But they are already a vampire!\n\r", ch );
           return;
    }

    if (!IS_IMMUNE(victim,IMM_VAMPIRE) && ch->beast != 100)
    {
           send_to_char( "You cannot bite an unwilling person.\n\r", ch );
           return;
    }

    if( ch->in_room->vnum ==  32000)
    {
        if (str_cmp(ch->clan,"Ventrue") && (ch->vampgen != 1) )
        {
               send_to_char( "You need to be Ventrue to do this!\n\r", ch );
               return;
        }
        clannumber = 1;
     }
    if( ch->in_room->vnum ==  32001)
    {
        if (str_cmp(ch->clan,"Malkavian") && (ch->vampgen != 1) )
        {
               send_to_char( "You need to be Malkavian to do this!\n\r", ch );
               return;
        }
        clannumber = 2;
     }
    if( ch->in_room->vnum ==  32002)
    {
        if (str_cmp(ch->clan,"Brujah") && (ch->vampgen != 1) )
        {
               send_to_char( "You need to be Brujah to do this!\n\r", ch );
               return;
        }
        clannumber = 3;
     }
    if( ch->in_room->vnum ==  32003)
    {

        if (str_cmp(ch->clan,"Gangrel") && (ch->vampgen != 1) )
        {
               send_to_char( "You need to be Gangrel to do this!\n\r", ch );
               return;
        }
       clannumber = 4;
     }
    if( ch->in_room->vnum ==  32004)
    {

        if (str_cmp(ch->clan,"Nosferatu") && (ch->vampgen != 1) )
        {
               send_to_char( "You need to be Nosferatu to do this!\n\r", ch );
               return;
        }
        clannumber = 5;
     }
    if( ch->in_room->vnum ==  32005)
    {

        if (str_cmp(ch->clan,"Tremere") && (ch->vampgen != 1) )
        {
               send_to_char( "You need to be Tremere to do this!\n\r", ch );
               return;
        }
        clannumber = 6;
     }
    if( ch->in_room->vnum ==  32006)
    {

        if (str_cmp(ch->clan,"Toreador") && (ch->vampgen != 1) )
        {
               send_to_char( "You need to be Toreador to do this!\n\r", ch );
               return;
        }
        clannumber = 7;
     }
    if( ch->in_room->vnum ==  32007)
    {

        if (str_cmp(ch->clan,"Cappadocian") && (ch->vampgen != 1) )
        {
               send_to_char( "You need to be Cappadocian to do this!\n\r", ch );
               return;
        }
        clannumber = 8;
     }

if(clannumber < 1){return;}
if(clannumber > 8){return;}


SET_BIT(victim->act, PLR_VAMPIRE);
if ( victim->vampgen != 0 && (victim->vampgen <= ( ch->vampgen + 1 ) ) )
{
       send_to_char( "Your vampiric status has been restored.\n\r", victim );
       return;
}
send_to_char( "Vouch was successful.\n\r",ch);
send_to_char( "You are now a vampire.\n\r", victim );
if (ch->vampgen < 5)
{
     victim->vampgen = 5;
}
else
{
     victim->vampgen = ch->vampgen + 1;
}
ch->practice = ch->practice - 5;
victim->practice = victim->practice - 50;
if(ch->practice<0)
{
ch->practice=0;
}
if(victim->practice<0)
{
victim->practice=0;
}

free_string(victim->lord);
if (clannumber == 1 )
{
     snprintf(buf, MAX_INPUT_LENGTH, "Joker Genghis Nergal %s",ch->name);
     victim->lord=str_dup(buf);
}
else if(clannumber == 2)
{
     snprintf(buf, MAX_INPUT_LENGTH, "Joker Genghis Rasputzin %s",ch->name);
     victim->lord=str_dup(buf);
}
else if(clannumber == 3)
{
     snprintf(buf, MAX_INPUT_LENGTH, "Joker Genghis Brujah %s",ch->name);
     victim->lord=str_dup(buf);
}
else if(clannumber == 4)
{
     snprintf(buf, MAX_INPUT_LENGTH, "Joker Genghis Lilith %s",ch->name);
     victim->lord=str_dup(buf);
}
else if(clannumber == 5)
{
     snprintf(buf, MAX_INPUT_LENGTH, "Joker Genghis Ninmug %s",ch->name);
     victim->lord=str_dup(buf);
}
else if(clannumber == 6)
{
     snprintf(buf, MAX_INPUT_LENGTH, "Joker Genghis Tremere %s",ch->name);
     victim->lord=str_dup(buf);
}
else if(clannumber == 7)
{
     snprintf(buf, MAX_INPUT_LENGTH, "Joker Genghis Loz %s",ch->name);
     victim->lord=str_dup(buf);
}
else if(clannumber == 8)
{
     snprintf(buf, MAX_INPUT_LENGTH, "Joker Genghis Clive %s",ch->name);
     victim->lord=str_dup(buf);
}

if (ch->vampgen != 1)
{
       if (victim->vamppass == -1) victim->vamppass = victim->vampaff;
       /* Remove hp bonus from fortitude */
       if (IS_VAMPPASS(victim,VAM_FORTITUDE) && !IS_VAMPAFF(victim,VAM_FORTITUDE))
       {
              victim->max_hit = victim->max_hit - 0;
              victim->hit = victim->hit - 0;
              if (victim->hit < 1) victim->hit = 1;
       }

       /* Remove any old powers they might have */
       if (IS_VAMPPASS(victim,VAM_PROTEAN))
       {REMOVE_BIT(victim->vamppass, VAM_PROTEAN);
       REMOVE_BIT(victim->vampaff, VAM_PROTEAN);}
       if (IS_VAMPPASS(victim,VAM_CELERITY))
       {REMOVE_BIT(victim->vamppass, VAM_CELERITY);
       REMOVE_BIT(victim->vampaff, VAM_CELERITY);}
       if (IS_VAMPPASS(victim,VAM_FORTITUDE))
       {REMOVE_BIT(victim->vamppass, VAM_FORTITUDE);
       REMOVE_BIT(victim->vampaff, VAM_FORTITUDE);}
       if (IS_VAMPPASS(victim,VAM_POTENCE))
       {REMOVE_BIT(victim->vamppass, VAM_POTENCE);
       REMOVE_BIT(victim->vampaff, VAM_POTENCE);}
       if (IS_VAMPPASS(victim,VAM_OBFUSCATE))
       REMOVE_BIT(victim->vampaff, VAM_OBFUSCATE);}
       if (IS_VAMPPASS(victim,VAM_OBTENEBRATION))
       {REMOVE_BIT(victim->vamppass, VAM_OBTENEBRATION);
       REMOVE_BIT(victim->vampaff, VAM_OBTENEBRATION);}
       if (IS_VAMPPASS(victim,VAM_SERPENTIS))
       {REMOVE_BIT(victim->vamppass, VAM_SERPENTIS);
       REMOVE_BIT(victim->vampaff, VAM_SERPENTIS);}
       if (IS_VAMPPASS(victim,VAM_AUSPEX))
       {REMOVE_BIT(victim->vamppass, VAM_AUSPEX);
       REMOVE_BIT(victim->vampaff, VAM_AUSPEX);}
       if (IS_VAMPPASS(victim,VAM_DOMINATE))
       {REMOVE_BIT(victim->vamppass, VAM_DOMINATE);
       REMOVE_BIT(victim->vampaff, VAM_DOMINATE);}
       free_string(victim->clan);
       victim->clan=str_dup(ch->clan);


       /* Give the vampire the base powers of their sire */
       if (IS_VAMPPASS(ch,VAM_FORTITUDE) && !IS_VAMPAFF(victim,VAM_FORTITUDE))
       {
              victim->max_hit = victim->max_hit + 0;
              victim->hit = victim->hit + 0;
       }
       if (IS_VAMPPASS(ch,VAM_PROTEAN))
       {SET_BIT(victim->vamppass, VAM_PROTEAN);
       SET_BIT(victim->vampaff, VAM_PROTEAN);}
       if (IS_VAMPPASS(ch,VAM_CELERITY))
       {SET_BIT(victim->vamppass, VAM_CELERITY);
      SET_BIT(victim->vampaff, VAM_CELERITY);}
       if (IS_VAMPPASS(ch,VAM_FORTITUDE))
       {SET_BIT(victim->vamppass, VAM_FORTITUDE);
       SET_BIT(victim->vampaff, VAM_FORTITUDE);}
       if (IS_VAMPPASS(ch,VAM_POTENCE))
      {SET_BIT(victim->vamppass, VAM_POTENCE);
       SET_BIT(victim->vampaff, VAM_POTENCE);}
      if (IS_VAMPPASS(ch,VAM_OBFUSCATE))
      {SET_BIT(victim->vamppass, VAM_OBFUSCATE);
       SET_BIT(victim->vampaff, VAM_OBFUSCATE);}
       if (IS_VAMPPASS(ch,VAM_OBTENEBRATION))
       {SET_BIT(victim->vamppass, VAM_OBTENEBRATION);
       SET_BIT(victim->vampaff, VAM_OBTENEBRATION);}
       if (IS_VAMPPASS(ch,VAM_SERPENTIS))
       {SET_BIT(victim->vamppass, VAM_SERPENTIS);
       SET_BIT(victim->vampaff, VAM_SERPENTIS);}
       if (IS_VAMPPASS(ch,VAM_AUSPEX))
       {SET_BIT(victim->vamppass, VAM_AUSPEX);
       SET_BIT(victim->vampaff, VAM_AUSPEX);}
       if (IS_VAMPPASS(ch,VAM_DOMINATE))
       {SET_BIT(victim->vamppass, VAM_DOMINATE);
       SET_BIT(victim->vampaff, VAM_DOMINATE);}





    return;
}
void do_weapontable( CHAR_DATA *ch , char *argument )
{
    /*  ADDED by Joker */
    /* Function to produce table of weapon levels */
    
    char buf  [MAX_STRING_LENGTH];
    char buf1 [MAX_STRING_LENGTH];
    char buf2 [MAX_STRING_LENGTH];
    char buf3 [MAX_STRING_LENGTH];
    char buf4 [MAX_STRING_LENGTH];
    char buf5 [MAX_STRING_LENGTH];
    char buf6 [MAX_STRING_LENGTH];
    char buf7 [MAX_STRING_LENGTH];
    char buf8 [MAX_STRING_LENGTH];
    char buf9 [MAX_STRING_LENGTH];
    char buf10 [MAX_STRING_LENGTH];
    char buf11 [MAX_STRING_LENGTH];
    char buf12 [MAX_STRING_LENGTH];
    
    char bufskill    [35];
    char bufskill1   [35];
    char bufskill2   [35];
    char bufskill3   [35];
    char bufskill4   [35];
    char bufskill5   [35];	
    char bufskill6   [35];	
    char bufskill7   [35];	
    char bufskill8   [35];	
    char bufskill9   [35];	
    char bufskill10   [35];	
    char bufskill11   [35];	
    char bufskill12   [35];	
    /* safety for shagged pfiles */

    /* npc check */
    
    if (IS_NPC(ch)) return;
    
    
    if (ch->wpn[0] >=201 || ch->wpn[1] >=201 || ch->wpn[2] >=201 || 
        ch->wpn[3] >=201 || ch->wpn[4] >=201 || ch->wpn[5] >=201 || 
        ch->wpn[6] >=201 || ch->wpn[7] >=201 || ch->wpn[8] >=201 ||
        ch->wpn[9] >=201 || ch->wpn[10] >=201 || ch->wpn[11] >=201 || 
        ch->wpn[12] >=201 )
    {
	   send_to_char("You have a shagged weapon - ERROR - contact a coder!\n\r", ch);
           return;
    }
    
    /* begin check for weapons */
    /* Check their 1st Weapon */

        if(ch->wpn[0] <= 25 ) snprintf(bufskill, 35,"totally unskilled in" );
    else if(ch->wpn[0] >= 26 && ch->wpn[0] <=50  ) snprintf(bufskill, 35,"slightly unskilled in" );
    else if(ch->wpn[0] >= 51 && ch->wpn[0] <=75  ) snprintf(bufskill, 35, "fairly competent in");
    else if(ch->wpn[0] >= 76 && ch->wpn[0] <=100 ) snprintf(bufskill, 35, "highly skilled in");
    else if(ch->wpn[0] >=101 && ch->wpn[0] <=125 ) snprintf(bufskill, 35, "very dangerous in");
    else if(ch->wpn[0] >=126 && ch->wpn[0] <=150 ) snprintf(bufskill, 35, "extremely deadly in");
    else if(ch->wpn[0] >=151 && ch->wpn[0] <=175 ) snprintf(bufskill, 35, "an expert in");
    else if(ch->wpn[0] >=176 && ch->wpn[0] <=198 ) snprintf(bufskill, 35, "a master in");
    else if(ch->wpn[0] == 199 ) snprintf(bufskill, 35, "on the verge of grand mastery of");
    else if(ch->wpn[0] == 200 ) snprintf(bufskill, 35, "a grand master of");
    else send_to_char("BUG in hitting weapon -- contact a coder!\n\r", ch);

        if(ch->wpn[1] <= 25 ) snprintf(bufskill1, 35,"totally unskilled in" );
    else if(ch->wpn[1] >= 26 && ch->wpn[1] <=50  ) snprintf(bufskill1, 35,"slightly unskilled in" );
    else if(ch->wpn[1] >= 51 && ch->wpn[1] <=75  ) snprintf(bufskill1, 35, "fairly competent in");
    else if(ch->wpn[1] >= 76 && ch->wpn[1] <=100 ) snprintf(bufskill1, 35, "highly skilled in");
    else if(ch->wpn[1] >=101 && ch->wpn[1] <=125 ) snprintf(bufskill1, 35, "very dangerous in");
    else if(ch->wpn[1] >=126 && ch->wpn[1] <=150 ) snprintf(bufskill1, 35, "extremely deadly in");
    else if(ch->wpn[1] >=151 && ch->wpn[1] <=175 ) snprintf(bufskill1, 35, "an expert in");
    else if(ch->wpn[1] >=176 && ch->wpn[1] <=198 ) snprintf(bufskill1, 35, "a master in");
    else if(ch->wpn[1] == 199 ) snprintf(bufskill1, 35, "on the verge of grand mastery of");
    else if(ch->wpn[1] == 200 ) snprintf(bufskill1, 35, "a grand master of");
    else send_to_char("BUG in slicing weapon -- contact a coder!\n\r", ch);

        if(ch->wpn[2] <= 25 ) snprintf(bufskill2, 35,"totally unskilled in" );
    else if(ch->wpn[2] >= 26 && ch->wpn[2] <=50  ) snprintf(bufskill2, 35,"slightly unskilled in" );
    else if(ch->wpn[2] >= 51 && ch->wpn[2] <=75  ) snprintf(bufskill2, 35, "fairly competent in");
    else if(ch->wpn[2] >= 76 && ch->wpn[2] <=100 ) snprintf(bufskill2, 35, "highly skilled in");
    else if(ch->wpn[2] >=101 && ch->wpn[2] <=125 ) snprintf(bufskill2, 35, "very dangerous in");
    else if(ch->wpn[2] >=126 && ch->wpn[2] <=150 ) snprintf(bufskill2, 35, "extremely deadly in");
    else if(ch->wpn[2] >=151 && ch->wpn[2] <=175 ) snprintf(bufskill2, 35, "an expert in");
    else if(ch->wpn[2] >=176 && ch->wpn[2] <=198 ) snprintf(bufskill2, 35, "a master in");
    else if(ch->wpn[2] == 199 ) snprintf(bufskill2, 35, "on the verge of grand mastery of");
    else if(ch->wpn[2] == 200 ) snprintf(bufskill2, 35, "a grand master of");
    else send_to_char("BUG in stabbing weapon -- contact a coder!\n\r", ch);

        if(ch->wpn[3] <= 25 ) snprintf(bufskill3, 35,"totally unskilled in" );
    else if(ch->wpn[3] >= 26 && ch->wpn[3] <=50  ) snprintf(bufskill3, 35,"slightly unskilled in" );
    else if(ch->wpn[3] >= 51 && ch->wpn[3] <=75  ) snprintf(bufskill3, 35, "fairly competent in");
    else if(ch->wpn[3] >= 76 && ch->wpn[3] <=100 ) snprintf(bufskill3, 35, "highly skilled in");
    else if(ch->wpn[3] >=101 && ch->wpn[3] <=125 ) snprintf(bufskill3, 35, "very dangerous in");
    else if(ch->wpn[3] >=126 && ch->wpn[3] <=150 ) snprintf(bufskill3, 35, "extremely deadly in");
    else if(ch->wpn[3] >=151 && ch->wpn[3] <=175 ) snprintf(bufskill3, 35, "an expert in");
    else if(ch->wpn[3] >=176 && ch->wpn[3] <=198 ) snprintf(bufskill3, 35, "a master in");
    else if(ch->wpn[3] == 199 ) snprintf(bufskill3, 35, "on the verge of grand mastery of");
    else if(ch->wpn[3] == 200 ) snprintf(bufskill3, 35, "a grand master of");
    else send_to_char("BUG in slashing weapon -- contact a coder!\n\r", ch);

        if(ch->wpn[4] <= 25 ) snprintf(bufskill4, 35,"totally unskilled in" );
    else if(ch->wpn[4] >= 26 && ch->wpn[4] <=50  ) snprintf(bufskill4, 35,"slightly unskilled in" );
    else if(ch->wpn[4] >= 51 && ch->wpn[4] <=75  ) snprintf(bufskill4, 35, "fairly competent in");
    else if(ch->wpn[4] >= 76 && ch->wpn[4] <=100 ) snprintf(bufskill4, 35, "highly skilled in");
    else if(ch->wpn[4] >=101 && ch->wpn[4] <=125 ) snprintf(bufskill4, 35, "very dangerous in");
    else if(ch->wpn[4] >=126 && ch->wpn[4] <=150 ) snprintf(bufskill4, 35, "extremely deadly in");
    else if(ch->wpn[4] >=151 && ch->wpn[4] <=175 ) snprintf(bufskill4, 35, "an expert in");
    else if(ch->wpn[4] >=176 && ch->wpn[4] <=198 ) snprintf(bufskill4, 35, "a master in");
    else if(ch->wpn[4] == 199 ) snprintf(bufskill4, 35, "on the verge of grand mastery of");
    else if(ch->wpn[4] == 200 ) snprintf(bufskill4, 35, "a grand master of");
    else send_to_char("BUG in whipping weapon -- contact a coder!\n\r", ch);

        if(ch->wpn[5] <= 25 ) snprintf(bufskill5, 35,"totally unskilled in" );
    else if(ch->wpn[5] >= 26 && ch->wpn[5] <=50  ) snprintf(bufskill5, 35,"slightly unskilled in" );
    else if(ch->wpn[5] >= 51 && ch->wpn[5] <=75  ) snprintf(bufskill5, 35, "fairly competent in");
    else if(ch->wpn[5] >= 76 && ch->wpn[5] <=100 ) snprintf(bufskill5, 35, "highly skilled in");
    else if(ch->wpn[5] >=101 && ch->wpn[5] <=125 ) snprintf(bufskill5, 35, "very dangerous in");
    else if(ch->wpn[5] >=126 && ch->wpn[5] <=150 ) snprintf(bufskill5, 35, "extremely deadly in");
    else if(ch->wpn[5] >=151 && ch->wpn[5] <=175 ) snprintf(bufskill5, 35, "an expert in");
    else if(ch->wpn[5] >=176 && ch->wpn[5] <=198 ) snprintf(bufskill5, 35, "a master in");
    else if(ch->wpn[5] == 199 ) snprintf(bufskill5, 35, "on the verge of grand mastery of");
    else if(ch->wpn[5] == 200 ) snprintf(bufskill5, 35, "a grand master of");
    else send_to_char("BUG in clawing weapon -- contact a coder!\n\r", ch);

            if(ch->wpn[6] <= 25 ) snprintf(bufskill6, 35,"totally unskilled in" );
    else if(ch->wpn[6] >= 26 && ch->wpn[6] <=50  ) snprintf(bufskill6, 35,"slightly unskilled in" );
    else if(ch->wpn[6] >= 51 && ch->wpn[6] <=75  ) snprintf(bufskill6, 35, "fairly competent in");
    else if(ch->wpn[6] >= 76 && ch->wpn[6] <=100 ) snprintf(bufskill6, 35, "highly skilled in");
    else if(ch->wpn[6] >=101 && ch->wpn[6] <=125 ) snprintf(bufskill6, 35, "very dangerous in");
    else if(ch->wpn[6] >=126 && ch->wpn[6] <=150 ) snprintf(bufskill6, 35, "extremely deadly in");
    else if(ch->wpn[6] >=151 && ch->wpn[6] <=175 ) snprintf(bufskill6, 35, "an expert in");
    else if(ch->wpn[6] >=176 && ch->wpn[6] <=198 ) snprintf(bufskill6, 35, "a master in");
    else if(ch->wpn[6] == 199 ) snprintf(bufskill6, 35, "on the verge of grand mastery of");
    else if(ch->wpn[6] == 200 ) snprintf(bufskill6, 35, "a grand master of");
    else send_to_char("BUG in blasting weapon -- contact a coder!\n\r", ch);

        if(ch->wpn[7] <= 25 ) snprintf(bufskill7, 35,"totally unskilled in" );
    else if(ch->wpn[7] >= 26 && ch->wpn[7] <=50  ) snprintf(bufskill7, 35,"slightly unskilled in" );
    else if(ch->wpn[7] >= 51 && ch->wpn[7] <=75  ) snprintf(bufskill7, 35, "fairly competent in");
    else if(ch->wpn[7] >= 76 && ch->wpn[7] <=100 ) snprintf(bufskill7, 35, "highly skilled in");
    else if(ch->wpn[7] >=101 && ch->wpn[7] <=125 ) snprintf(bufskill7, 35, "very dangerous in");
    else if(ch->wpn[7] >=126 && ch->wpn[7] <=150 ) snprintf(bufskill7, 35, "extremely deadly in");
    else if(ch->wpn[7] >=151 && ch->wpn[7] <=175 ) snprintf(bufskill7, 35, "an expert in");
    else if(ch->wpn[7] >=176 && ch->wpn[7] <=198 ) snprintf(bufskill7, 35, "a master in");
    else if(ch->wpn[7] == 199 ) snprintf(bufskill7, 35, "on the verge of grand mastery of");
    else if(ch->wpn[7] == 200 ) snprintf(bufskill7, 35, "a grand master of");
    else send_to_char("BUG in pounding weapon -- contact a coder!\n\r", ch);

        if(ch->wpn[8] <= 25 ) snprintf(bufskill8, 35,"totally unskilled in" );
    else if(ch->wpn[8] >= 26 && ch->wpn[8] <=50  ) snprintf(bufskill8, 35,"slightly unskilled in" );
    else if(ch->wpn[8] >= 51 && ch->wpn[8] <=75  ) snprintf(bufskill8, 35, "fairly competent in");
    else if(ch->wpn[8] >= 76 && ch->wpn[8] <=100 ) snprintf(bufskill8, 35, "highly skilled in");
    else if(ch->wpn[8] >=101 && ch->wpn[8] <=125 ) snprintf(bufskill8, 35, "very dangerous in");
    else if(ch->wpn[8] >=126 && ch->wpn[8] <=150 ) snprintf(bufskill8, 35, "extremely deadly in");
    else if(ch->wpn[8] >=151 && ch->wpn[8] <=175 ) snprintf(bufskill8, 35, "an expert in");
    else if(ch->wpn[8] >=176 && ch->wpn[8] <=198 ) snprintf(bufskill8, 35, "a master in");
    else if(ch->wpn[8] == 199 ) snprintf(bufskill8, 35, "on the verge of grand mastery of");
    else if(ch->wpn[8] == 200 ) snprintf(bufskill8, 35, "a grand master of");
    else send_to_char("BUG in crushing weapon -- contact a coder!\n\r", ch);

        if(ch->wpn[9] <= 25 ) snprintf(bufskill9, 35,"totally unskilled in" );
    else if(ch->wpn[9] >= 26 && ch->wpn[9] <=50  ) snprintf(bufskill9, 35,"slightly unskilled in" );
    else if(ch->wpn[9] >= 51 && ch->wpn[9] <=75  ) snprintf(bufskill9, 35, "fairly competent in");
    else if(ch->wpn[9] >= 76 && ch->wpn[9] <=100 ) snprintf(bufskill9, 35, "highly skilled in");
    else if(ch->wpn[9] >=101 && ch->wpn[9] <=125 ) snprintf(bufskill9, 35, "very dangerous in");
    else if(ch->wpn[9] >=126 && ch->wpn[9] <=150 ) snprintf(bufskill9, 35, "extremely deadly in");
    else if(ch->wpn[9] >=151 && ch->wpn[9] <=175 ) snprintf(bufskill9, 35, "an expert in");
    else if(ch->wpn[9] >=176 && ch->wpn[9] <=198 ) snprintf(bufskill9, 35, "a master in");
    else if(ch->wpn[9] == 199 ) snprintf(bufskill9, 35, "on the verge of grand mastery of");
    else if(ch->wpn[9] == 200 ) snprintf(bufskill9, 35, "a grand master of");
    else send_to_char("BUG in grepping weapon -- contact a coder!\n\r", ch);

        if(ch->wpn[10] <= 25 ) snprintf(bufskill10, 35,"totally unskilled in" );
    else if(ch->wpn[10] >= 26 && ch->wpn[10] <=50  ) snprintf(bufskill10, 35,"slightly unskilled in" );
    else if(ch->wpn[10] >= 51 && ch->wpn[10] <=75  ) snprintf(bufskill10, 35, "fairly competent in");
    else if(ch->wpn[10] >= 76 && ch->wpn[10] <=100 ) snprintf(bufskill10, 35, "highly skilled in");
    else if(ch->wpn[10] >=101 && ch->wpn[10] <=125 ) snprintf(bufskill10, 35, "very dangerous in");
    else if(ch->wpn[10] >=126 && ch->wpn[10] <=150 ) snprintf(bufskill10, 35, "extremely deadly in");
    else if(ch->wpn[10] >=151 && ch->wpn[10] <=175 ) snprintf(bufskill10, 35, "an expert in");
    else if(ch->wpn[10] >=176 && ch->wpn[10] <=198 ) snprintf(bufskill10, 35, "a master in");
    else if(ch->wpn[10] == 199 ) snprintf(bufskill10, 35, "on the verge of grand mastery of");
    else if(ch->wpn[10] == 200 ) snprintf(bufskill10, 35, "a grand master of");
    else send_to_char("BUG in biting weapon -- contact a coder!\n\r", ch);

        if(ch->wpn[11] <= 25 ) snprintf(bufskill11, 35,"totally unskilled in" );
    else if(ch->wpn[11] >= 26 && ch->wpn[11] <=50  ) snprintf(bufskill11, 35,"slightly unskilled in" );
    else if(ch->wpn[11] >= 51 && ch->wpn[11] <=75  ) snprintf(bufskill11, 35, "fairly competent in");
    else if(ch->wpn[11] >= 76 && ch->wpn[11] <=100 ) snprintf(bufskill11, 35, "highly skilled in");
    else if(ch->wpn[11] >=101 && ch->wpn[11] <=125 ) snprintf(bufskill11, 35, "very dangerous in");
    else if(ch->wpn[11] >=126 && ch->wpn[11] <=150 ) snprintf(bufskill11, 35, "extremely deadly in");
    else if(ch->wpn[11] >=151 && ch->wpn[11] <=175 ) snprintf(bufskill11, 35, "an expert in");
    else if(ch->wpn[11] >=176 && ch->wpn[11] <=198 ) snprintf(bufskill11, 35, "a master in");
    else if(ch->wpn[11] == 199 ) snprintf(bufskill11, 35, "on the verge of grand mastery of");
    else if(ch->wpn[11] == 200 ) snprintf(bufskill11, 35, "a grand master of");
    else send_to_char("BUG in piercing weapon -- contact a coder!\n\r", ch);

        if(ch->wpn[12] <= 25 ) snprintf(bufskill12, 35,"totally unskilled in" );
    else if(ch->wpn[12] >= 26 && ch->wpn[12] <=50  ) snprintf(bufskill12, 35,"slightly unskilled in" );
    else if(ch->wpn[12] >= 51 && ch->wpn[12] <=75  ) snprintf(bufskill12, 35, "fairly competent in");
    else if(ch->wpn[12] >= 76 && ch->wpn[12] <=100 ) snprintf(bufskill12, 35, "highly skilled in");
    else if(ch->wpn[12] >=101 && ch->wpn[12] <=125 ) snprintf(bufskill12, 35, "very dangerous in");
    else if(ch->wpn[12] >=126 && ch->wpn[12] <=150 ) snprintf(bufskill12, 35, "extremely deadly in");
    else if(ch->wpn[12] >=151 && ch->wpn[12] <=175 ) snprintf(bufskill12, 35, "an expert in");
    else if(ch->wpn[12] >=176 && ch->wpn[12] <=198 ) snprintf(bufskill12, 35, "a master in");
    else if(ch->wpn[12] == 199 ) snprintf(bufskill12, 35, "on the verge of grand mastery of");
    else if(ch->wpn[12] == 200 ) snprintf(bufskill12, 35, "a grand master of");
    else send_to_char("BUG in sucking weapon -- contact a coder!\n\r", ch);


    snprintf (buf  , MAX_STRING_LENGTH, "------------=>   You are %s hitting.\n\r",bufskill);
    snprintf (buf1 , MAX_STRING_LENGTH, "------------=>   You are %s slicing weapons.\n\r",bufskill1);
    snprintf (buf2 , MAX_STRING_LENGTH, "------------=>   You are %s stabbing weapons.\n\r",bufskill2);
    snprintf (buf3 , MAX_STRING_LENGTH, "------------=>   You are %s slashing weapons.\n\r",bufskill3);
    snprintf (buf4 , MAX_STRING_LENGTH, "------------=>   You are %s whipping weapons.\n\r",bufskill4);
    snprintf (buf5 , MAX_STRING_LENGTH, "------------=>   You are %s clawing weapons.\n\r",bufskill5);
    snprintf (buf6 , MAX_STRING_LENGTH, "------------=>   You are %s blasting weapons.\n\r",bufskill6);
    snprintf (buf7 , MAX_STRING_LENGTH, "------------=>   You are %s pounding weapons.\n\r",bufskill7);
    snprintf (buf8 , MAX_STRING_LENGTH, "------------=>   You are %s crushing weapons.\n\r",bufskill8);
    snprintf (buf9 , MAX_STRING_LENGTH, "------------=>   You are %s grepping weapons.\n\r",bufskill9);
    snprintf (buf10, MAX_STRING_LENGTH, "------------=>   You are %s biting.\n\r",bufskill10);
    snprintf (buf11, MAX_STRING_LENGTH, "------------=>   You are %s piercing weapons.\n\r",bufskill11);
    snprintf (buf12, MAX_STRING_LENGTH, "------------=>   You are %s sucking weapons.\n\r",bufskill12);

    send_to_char_formatted("-------------------------------------------------------------------------------\n\r",ch);
    send_to_char_formatted("                                 |  Weapons |                                  \n\r",ch);
    send_to_char_formatted("-------------------------------------------------------------------------------\n\r",ch);
    send_to_char_formatted(buf, ch);
    send_to_char_formatted(buf1, ch);
    send_to_char_formatted(buf2, ch);
    send_to_char_formatted(buf3, ch);
    send_to_char_formatted(buf4, ch);
    send_to_char_formatted(buf5, ch);
    send_to_char_formatted(buf6, ch);
    send_to_char_formatted(buf7, ch);
    send_to_char_formatted(buf8, ch);
    send_to_char_formatted(buf9, ch);
    send_to_char_formatted(buf10, ch);
    send_to_char_formatted(buf11, ch);
    send_to_char_formatted(buf12, ch);
    send_to_char_formatted("-------------------------------------------------------------------------------\n\r",ch);
    return;
}

void do_addlag(CHAR_DATA *ch, char *argument)
{

  CHAR_DATA *victim;
  char arg1[MAX_STRING_LENGTH];
  int x;

  argument = one_argument(argument, arg1, MAX_STRING_LENGTH);

  if (arg1[0] == '\0')
    {
      send_to_char("addlag to who?", ch);
      return;
    }

  if ((victim = get_char_world(ch, arg1)) == NULL)
    {
      send_to_char("They're not here.", ch);
      return;
    }


  if ((x = atoi(argument)) < 0)
    {
      send_to_char("That makes a LOT of sense.", ch);
      return;
    }

  if (x > 100)
    {
      send_to_char("There's a limit to cruel and unusual punishment", ch);
      return;
    }

 if (IS_NPC(victim)) return;

  if( victim->level >= LEVEL_SEER)
  {
      send_to_char("No way! Not on admin", ch);
     return;
  }


/*  send_to_char("Somebody REALLY didn't like you", victim); - no warning 2 players */
  victim->lagpenalty = x;
  WAIT_STATE(victim, x);
  send_to_char("Adding lag now...", ch);
  return;
}

void do_sinbin( CHAR_DATA *ch, char *argument)
{
    char buf[MAX_STRING_LENGTH];
    char arg[MAX_INPUT_LENGTH];
    CHAR_DATA *gch;
    
    one_argument( argument, arg, MAX_INPUT_LENGTH);
    
    if(IS_NPC(ch)) return;
    
    send_to_char_formatted("[      Name      ] [ Lag ]   Misc\n\r",ch);
    for( gch = char_list; gch != NULL; gch = gch->next)
    {
	   if( IS_NPC(gch)) continue;
	   if( gch->lagpenalty > 0 || IS_SET(gch->act, PLR_SILENCE | PLR_FREEZE | PLR_NO_TELL | PLR_NO_EMOTE))
           {  
           snprintf( buf,  MAX_STRING_LENGTH, "[%-16s] [ %3d ]   %s%s%s%s\n\r",
		  capitalize( gch->name),
		  gch->lagpenalty, 
		  IS_SET(gch->act, PLR_SILENCE) ? "Silenced " : "",
		  IS_SET(gch->act, PLR_FREEZE) ? "Frozen " : "",
		  IS_SET(gch->act, PLR_NO_TELL) ? "No-Tells " : "",
		  IS_SET(gch->act, PLR_NO_EMOTE) ? "No-Emote " : "");
	   send_to_char_formatted( buf, ch);
           }
    }
    return;
    
    
}

void do_qlist( CHAR_DATA *ch, char *argument )
{

    send_to_char_formatted( "[Price] Item                          Short Name\n\r", ch );
    send_to_char_formatted( "[   10] A Blood Rod                      rod\n\r",ch);
    send_to_char_formatted( "[   15] A Bag                            bag\n\r",ch);
    send_to_char_formatted( "[   30] A Stake                          stake\n\r",ch); 
    send_to_char_formatted( "[   40] a special issue pair of boots    boots\n\r",ch);
    send_to_char_formatted( "[   40] a special issue ring             ring\n\r",ch);
    send_to_char_formatted( "[   40] a special issue pendant          pendant\n\r",ch);
    send_to_char_formatted( "[   40] a special issue breastplate      plate\n\r",ch);
    send_to_char_formatted( "[   40] a special issue helmet           helmet\n\r",ch);
    send_to_char_formatted( "[   40] a special issue pair of leggings leggings\n\r",ch);
    send_to_char_formatted( "[   40] a special issue pair of gloves   gloves\n\r",ch);
    send_to_char_formatted( "[   40] a special issue pair of sleeves  sleeves\n\r",ch);
    send_to_char_formatted( "[   40] a special issue cloak            cloak\n\r",ch);
    send_to_char_formatted( "[   40] a special issue girth            girth\n\r",ch);
    send_to_char_formatted( "[   40] a special issue bracer           bracer\n\r",ch);
    send_to_char_formatted( "[   40] a special issue face mask        mask\n\r",ch);
    send_to_char_formatted( "[   50] a special issue sword            sword\n\r",ch);

    return;
}

void do_qbuy( CHAR_DATA *ch, char *argument)
{
    char arg1 [MAX_INPUT_LENGTH];
    OBJ_DATA *obj;
    OBJ_INDEX_DATA *pObjIndex;
    int value;
    int cost;
    /* bool has_container */
    
    
    smash_tilde( argument );
    argument = one_argument( argument, arg1, MAX_INPUT_LENGTH );

    if( IS_NPC(ch))
    {
         send_to_char( "Not for mobs silly!\n\r", ch);
         return;
    }

    if( ch->pcdata->quest <=0 )
    {
        send_to_char("You don't have any quest points, so how do you propose to pay!\n\r",ch);
        return;
    }

    if( arg1[0] == '\0')
    {
       send_to_char("Type qlist to see what you can buy.\n\r",ch);
       return;
    }
  
    cost = 0; 
    value = 0;
    if( !str_cmp( arg1, "boots")){             value=1;cost=40;}
    else if( !str_cmp( arg1, "stake")){        value=2;cost=30;}
    else if( !str_cmp( arg1, "rod")){          value=3;cost=10;}
    else if( !str_cmp( arg1, "ring")){         value=4;cost=40;}
    else if( !str_cmp( arg1, "pendant")){      value=5;cost=40;}
    else if( !str_cmp( arg1, "plate")){        value=6;cost=40;}
    else if( !str_cmp( arg1, "helmet")){       value=7;cost=40;}
    else if( !str_cmp( arg1, "leggings")){     value=8;cost=40;}
    else if( !str_cmp( arg1, "gloves")){       value=9;cost=40;}
    else if( !str_cmp( arg1, "sleeves")){      value=10;cost=40;}
    else if( !str_cmp( arg1, "cloak")){        value=11;cost=40;}
    else if( !str_cmp( arg1, "girth")){        value=12;cost=40;}
    else if( !str_cmp( arg1, "bracer")){       value=13;cost=40;}
    else if( !str_cmp( arg1, "mask")){         value=14;cost=40;}
    else if( !str_cmp( arg1, "bag")){          value=15;cost=15;}
    else if( !str_cmp( arg1, "sword")){        value=16;cost=50;}
    else
    {
       value=0;
    }

    if(ch->pcdata->quest < cost)
    {
        send_to_char("You don't have enough quest points.\n\r",ch);
        return;
    }

    if ( ( pObjIndex = get_obj_index( OBJ_VNUM_PROTOPLASM ) ) == NULL )
    {
       send_to_char( "Error! Missing object, inform the Admin.\n\r", ch );
       return;
    }

    /* has_container = does_ch_have_a_container(ch);
    if ( value == WHATEVER_CONTAINER_VALUE && has_container)
    {
       send_to_char( "You cannot carry another container.\n\r", ch);
       return;
    }*/


    if(value>0)
    {
        switch(value)
        {
          default:
               send_to_char("Ooops problem! Tell Joker!\n\r",ch);
               break;
          case 1:
               ch->pcdata->quest -= cost;
               obj = create_object( pObjIndex, 25 );
               obj->weight = 1;
               obj->cost   = 1000;
               obj->value[0] = 15;
               obj->item_type = ITEM_ARMOR;
               obj->wear_flags = ITEM_TAKE + ITEM_WEAR_FEET;
               obj->quest=QUEST_NAME+QUEST_SHORT+QUEST_LONG;
               free_string( obj->short_descr );
               free_string( obj->name );
               free_string( obj->description );
               obj->short_descr = str_dup("special issue boots");
               obj->name = str_dup("special issue boots");
               obj->description = str_dup("a pair of special issue boots lie here"); 

               if (obj->questmaker != NULL) free_string(obj->questmaker);
               obj->questmaker = str_dup(ch->name);
               obj_to_char(obj,ch);
               act( "You reach up into the air and draw out a pair of special issue boots.", ch, obj, NULL, TO_CHAR );
               act( "$n reaches up into the air and draws out a pair of special issue boots.", ch, obj, NULL, TO_ROOM );

               break;
          case 2:
               ch->pcdata->quest -= cost;
               obj = create_object( pObjIndex, 25 );
               obj->weight = 1;
               obj->cost   = 1000;
               obj->item_type = ITEM_STAKE;
               obj->wear_flags = ITEM_TAKE + ITEM_WIELD;
               obj->quest=QUEST_NAME+QUEST_SHORT+QUEST_LONG;
               free_string( obj->short_descr );
               obj->short_descr = str_dup("a stake");
               free_string( obj->name );
               obj->name = str_dup("a stake");
               free_string( obj->description );
               obj->description = str_dup("a stake lies here");               
               if (obj->questmaker != NULL) free_string(obj->questmaker);
               obj->questmaker = str_dup(ch->name);
               obj_to_char(obj,ch);
               act( "You reach up into the air and draw out a stake.", ch, obj, NULL, TO_CHAR );
               act( "$n reaches up into the air and draws out a stake.", ch, obj, NULL, TO_ROOM );
               break;
          case 3:
	       ch->pcdata->quest -= cost;
	       obj = create_object( pObjIndex, 25 );
	       obj->weight = 1;
	       obj->cost   = 1000;
	       obj->item_type = ITEM_FOUNTAIN;
               obj->value[0] = 1000;
               obj->value[1] = 1000;
               obj->value[2] = 13; 
               obj->quest=QUEST_NAME+QUEST_SHORT+QUEST_LONG;
               free_string( obj->short_descr );
               obj->short_descr = str_dup( "a blood rod");
               free_string( obj->name );
               obj->name = str_dup("a blood rod");
               free_string( obj->description );
               obj->description = str_dup("a blood rod lies here");
               if (obj->questmaker != NULL) free_string(obj->questmaker);
               obj->questmaker = str_dup(ch->name);
               obj_to_char(obj,ch);
               act( "You reach up into the air and draw out a blood rod.", ch, obj, NULL, TO_CHAR );
               act( "$n reaches up into the air and draws out a blood rod.", ch, obj, NULL, TO_ROOM );
               break;
          case 4:
               ch->pcdata->quest -= cost;
               obj = create_object( pObjIndex, 25 );
               obj->weight = 1;
               obj->cost   = 1000;
               obj->value[0] = 15;
               obj->item_type = ITEM_ARMOR;
               obj->wear_flags = ITEM_TAKE + ITEM_WEAR_FINGER;
               obj->quest=QUEST_NAME+QUEST_SHORT+QUEST_LONG;
               free_string( obj->short_descr );
               obj->short_descr = str_dup("special issue ring");
               free_string( obj->name );
               obj->name = str_dup("special issue ring");
               free_string( obj->description );
               obj->description = str_dup("a special issue ring lies here");
               if (obj->questmaker != NULL) free_string(obj->questmaker);
               obj->questmaker = str_dup(ch->name);
               obj_to_char(obj,ch);
               act( "You reach up into the air and draw out a special issue ring.", ch, obj, NULL, TO_CHAR );
               act( "$n reaches up into the air and draws out a special issue ring.", ch, obj, NULL, TO_ROOM );
               break;
          case 5:
               ch->pcdata->quest -= cost;
               obj = create_object( pObjIndex, 25 );
               obj->weight = 1;
               obj->cost   = 1000;
               obj->value[0] = 15;
               obj->item_type = ITEM_ARMOR;
               obj->wear_flags = ITEM_TAKE + ITEM_WEAR_NECK;
               obj->quest=QUEST_NAME+QUEST_SHORT+QUEST_LONG;
               free_string( obj->short_descr );
               obj->short_descr = str_dup("special issue pendant");
               free_string( obj->name );
               obj->name = str_dup("special issue pendant");
               free_string( obj->description );
               obj->description = str_dup("a special issue pendant lies here");
               if (obj->questmaker != NULL) free_string(obj->questmaker);
               obj->questmaker = str_dup(ch->name);
               obj_to_char(obj,ch);
               act( "You reach up into the air and draw out a special issue pendant.", ch, obj, NULL, TO_CHAR );
               act( "$n reaches up into the air and draws out a special issue pendant.", ch, obj, NULL, TO_ROOM );

               break;
          case 6:
               ch->pcdata->quest -= cost;
               obj = create_object( pObjIndex, 25 );
               obj->weight = 1;
               obj->cost   = 1000;
               obj->value[0] = 15;
               obj->item_type = ITEM_ARMOR;
               obj->wear_flags = ITEM_TAKE + ITEM_WEAR_BODY;
               obj->quest=QUEST_NAME+QUEST_SHORT+QUEST_LONG;
               free_string( obj->short_descr );
               obj->short_descr = str_dup("special issue plate");
               free_string( obj->name );
               obj->name = str_dup("special issue plate");
               free_string( obj->description );
               obj->description = str_dup("a special issue breast plate lies here");
               if (obj->questmaker != NULL) free_string(obj->questmaker);
               obj->questmaker = str_dup(ch->name);
               obj_to_char(obj,ch);
               act( "You reach up into the air and draw out a special issue breast plate.", ch, obj, NULL, TO_CHAR );
               act( "$n reaches up into the air and draws out a special issue breast plate.", ch, obj, NULL, TO_ROOM );

               break;
          case 7:
               ch->pcdata->quest -= cost;
               obj = create_object( pObjIndex, 25 );
               obj->weight = 1;
               obj->cost   = 1000;
               obj->value[0] = 15;
               obj->item_type = ITEM_ARMOR;
               obj->wear_flags = ITEM_TAKE + ITEM_WEAR_HEAD;
               obj->quest=QUEST_NAME+QUEST_SHORT+QUEST_LONG;
               free_string( obj->short_descr );
               obj->short_descr = str_dup("special issue helmet");
               free_string( obj->name );
               obj->name = str_dup("special issue helmet");
               free_string( obj->description );
               obj->description = str_dup("a special issue helmet lies here");
               if (obj->questmaker != NULL) free_string(obj->questmaker);
               obj->questmaker = str_dup(ch->name);
               obj_to_char(obj,ch);
               act( "You reach up into the air and draw out a special issue helmet.", ch, obj, NULL, TO_CHAR );
               act( "$n reaches up into the air and draws out a special issue helmet.", ch, obj, NULL, TO_ROOM );

               break;
          case 8:
               ch->pcdata->quest -= cost;
               obj = create_object( pObjIndex, 25 );
               obj->weight = 1;
               obj->cost   = 1000;
               obj->value[0] = 15;
               obj->item_type = ITEM_ARMOR;
               obj->wear_flags = ITEM_TAKE + ITEM_WEAR_LEGS;
               obj->quest=QUEST_NAME+QUEST_SHORT+QUEST_LONG;
               free_string( obj->short_descr );
               obj->short_descr = str_dup("special issue leggings");
               free_string( obj->name );
               obj->name = str_dup("special issue leggings");
               free_string( obj->description );
               obj->description = str_dup("a pair of special issue leggings lie here");
               if (obj->questmaker != NULL) free_string(obj->questmaker);
               obj->questmaker = str_dup(ch->name);
               obj_to_char(obj,ch);
               act( "You reach up into the air and draw out a pair of special issue leggings.", ch, obj, NULL, TO_CHAR );
               act( "$n reaches up into the air and draws out a pair of special issue leggings.", ch, obj, NULL, TO_ROOM );

               break;
          case 9:
               ch->pcdata->quest -= cost;
               obj = create_object( pObjIndex, 25 );
               obj->weight = 1;
               obj->cost   = 1000;
               obj->value[0] = 15;
               obj->item_type = ITEM_ARMOR;
               obj->wear_flags = ITEM_TAKE + ITEM_WEAR_HANDS;
               obj->quest=QUEST_NAME+QUEST_SHORT+QUEST_LONG;
               free_string( obj->short_descr );
               obj->short_descr = str_dup("special issue gloves");
               free_string( obj->name );
               obj->name = str_dup("special issue gloves");
               free_string( obj->description );
               obj->description = str_dup("a pair of special issue gloves lie here");
               if (obj->questmaker != NULL) free_string(obj->questmaker);
               obj->questmaker = str_dup(ch->name);
               obj_to_char(obj,ch);
               act( "You reach up into the air and draw out a pair of special issue gloves.", ch, obj, NULL, TO_CHAR );
               act( "$n reaches up into the air and draws out a pair of special issue gloves.", ch, obj, NULL, TO_ROOM );

               break;
          case 10:
               ch->pcdata->quest -= cost;
               obj = create_object( pObjIndex, 25 );
               obj->weight = 1;
               obj->cost   = 1000;
               obj->value[0] = 15;
               obj->item_type = ITEM_ARMOR;
               obj->wear_flags = ITEM_TAKE + ITEM_WEAR_ARMS;
               obj->quest=QUEST_NAME+QUEST_SHORT+QUEST_LONG;
               free_string( obj->short_descr );
               obj->short_descr = str_dup("special issue sleeves");
               free_string( obj->name );
               obj->name = str_dup("special issue sleeves");
               free_string( obj->description );
               obj->description = str_dup("a pair of special issue sleeves lie here");
               if (obj->questmaker != NULL) free_string(obj->questmaker);
               obj->questmaker = str_dup(ch->name);
               obj_to_char(obj,ch);
               act( "You reach up into the air and draw out a pair of special issue sleeves.", ch, obj, NULL, TO_CHAR );
               act( "$n reaches up into the air and draws out a pair of special issue sleeves.", ch, obj, NULL, TO_ROOM );
               break;
          case 11:
               ch->pcdata->quest -= cost;
               obj = create_object( pObjIndex, 25 );
               obj->weight = 1;
               obj->cost   = 1000;
               obj->value[0] = 15;
               obj->item_type = ITEM_ARMOR;
               obj->wear_flags = ITEM_TAKE + ITEM_WEAR_ABOUT;
               obj->quest=QUEST_NAME+QUEST_SHORT+QUEST_LONG;
               free_string( obj->short_descr );
               obj->short_descr = str_dup("special issue cloak");
               free_string( obj->name );
               obj->name = str_dup("special issue cloak");
               free_string( obj->description );
               obj->description = str_dup("a special issue cloak lies here");
               if (obj->questmaker != NULL) free_string(obj->questmaker);
               obj->questmaker = str_dup(ch->name);
               obj_to_char(obj,ch);
               act( "You reach up into the air and draw out a special issue cloak.", ch, obj, NULL, TO_CHAR );
               act( "$n reaches up into the air and draws out a special issue cloak.", ch, obj, NULL, TO_ROOM );
               break;
          case 12:
               ch->pcdata->quest -= cost;
               obj = create_object( pObjIndex, 25 );
               obj->weight = 1;
               obj->cost   = 1000;
               obj->value[0] = 15;
               obj->item_type = ITEM_ARMOR;
               obj->wear_flags = ITEM_TAKE + ITEM_WEAR_WAIST;
               obj->quest=QUEST_NAME+QUEST_SHORT+QUEST_LONG;
               free_string( obj->short_descr );
               obj->short_descr = str_dup("special issue girth");
               free_string( obj->name );
               obj->name = str_dup("special issue girth");
               free_string( obj->description );
               obj->description = str_dup("a special issue girth lies here");
               if (obj->questmaker != NULL) free_string(obj->questmaker);
               obj->questmaker = str_dup(ch->name);
               obj_to_char(obj,ch);
               act( "You reach up into the air and draw out a special issue girth.", ch, obj, NULL, TO_CHAR );
               act( "$n reaches up into the air and draws out a special issue girth.", ch, obj, NULL, TO_ROOM );
               break;
          case 13:
               ch->pcdata->quest -= cost;
               obj = create_object( pObjIndex, 25 );
               obj->weight = 1;
               obj->cost   = 1000;
               obj->value[0] = 15;
               obj->item_type = ITEM_ARMOR;
               obj->wear_flags = ITEM_TAKE + ITEM_WEAR_WRIST;
               obj->quest=QUEST_NAME+QUEST_SHORT+QUEST_LONG;
               free_string( obj->short_descr );
               obj->short_descr = str_dup("special issue bracer");
               free_string( obj->name );
               obj->name = str_dup("special issue bracer");
               free_string( obj->description );
               obj->description = str_dup("a special issue bracer lies here");
               if (obj->questmaker != NULL) free_string(obj->questmaker);
               obj->questmaker = str_dup(ch->name);
               obj_to_char(obj,ch);
               act( "You reach up into the air and draw out a special issue bracer.", ch, obj, NULL, TO_CHAR );
               act( "$n reaches up into the air and draws out a special issue bracer.", ch, obj, NULL, TO_ROOM );
               break;
          case 14:
               ch->pcdata->quest -= cost;
               obj = create_object( pObjIndex, 25 );
               obj->weight = 1;
               obj->cost   = 1000;
               obj->value[0] = 15;
               obj->item_type = ITEM_ARMOR;
               obj->wear_flags = ITEM_TAKE + ITEM_WEAR_FACE;
               obj->quest=QUEST_NAME+QUEST_SHORT+QUEST_LONG;
               free_string( obj->short_descr );
               obj->short_descr = str_dup("special issue mask");
               free_string( obj->name );
               obj->name = str_dup("special issue mask");
               free_string( obj->description );
               obj->description = str_dup("a special issue mask lies here");
               if (obj->questmaker != NULL) free_string(obj->questmaker);
               obj->questmaker = str_dup(ch->name);
               obj_to_char(obj,ch);
               act( "You reach up into the air and draw out a special issue mask.", ch, obj, NULL, TO_CHAR );
               act( "$n reaches up into the air and draws out a special issue mask.", ch, obj, NULL, TO_ROOM );
               break;
          case 15:
          /* container */
               ch->pcdata->quest -= cost;
               obj = create_object( pObjIndex, 25 );
               obj->weight = 1;
               obj->cost   = 1000;
               obj->value[0] = 999;
               obj->item_type = ITEM_CONTAINER;
               obj->wear_flags = ITEM_TAKE;
               obj->quest=QUEST_NAME+QUEST_SHORT+QUEST_LONG;
               free_string( obj->short_descr );
               obj->short_descr = str_dup("a bag");
               free_string( obj->name );
               obj->name = str_dup("bag");
               free_string( obj->description );
               obj->description = str_dup("a bag lies here");
               if (obj->questmaker != NULL) free_string(obj->questmaker);
               obj->questmaker = str_dup(ch->name);
               obj_to_char(obj,ch);
               act( "You reach up into the air and draw out a bag.", ch, obj, NULL, TO_CHAR );
               act( "$n reaches up into the air and draws out a bag.", ch, obj, NULL, TO_ROOM );
               break;
          case 16:
          /* sword */
               ch->pcdata->quest -= cost;
               obj = create_object( pObjIndex, 25 );
               obj->weight = 1;
               obj->cost   = 1000;
               obj->value[0] = 0;   /* spell */
               obj->value[1] = 10;  /* min */
               obj->value[2] = 20;  /* max */
               obj->value[3] = 3;   /* slash */
               obj->item_type = ITEM_WEAPON;
               obj->wear_flags = ITEM_TAKE + ITEM_WIELD;
               obj->quest=QUEST_NAME+QUEST_SHORT+QUEST_LONG;
               free_string( obj->short_descr );
               obj->short_descr = str_dup("special issue sword");
               free_string( obj->name );
               obj->name = str_dup("special issue sword");
               free_string( obj->description );
               obj->description = str_dup("a special issue sword lies here");
               if (obj->questmaker != NULL) free_string(obj->questmaker);
               obj->questmaker = str_dup(ch->name);
               obj_to_char(obj,ch);
               act( "You reach up into the air and draw out a special issue sword.", ch, obj, NULL, TO_CHAR );
               act( "$n reaches up into the air and draws out a special issue sword.", ch, obj, NULL, TO_ROOM );
               break;

         }        
    }
    else
    {
       send_to_char("There is no such item I am afraid\n\r",ch);
    }

}