cotn/notes/
cotn/src/
#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"

/*     void do_kshow(CHAR_DATA *ch, char *argument)
	{
    	char buf[MAX_STRING_LENGTH];
    	CHAR_DATA *gch;

    	if (IS_NPC(ch)) return;
    	if (ch->pcdata->kingdom == 0)
    	{
        send_to_char("You are not in a kingdom.\n\r", ch );
        return;
    	}
    	sprintf(buf, "#7The Kingdom of %s:\n\r",
    	kingdom_table[ch->pcdata->kingdom].whoname);
    	send_to_char( buf, ch );
    	send_to_char("#2[    Name    ] [ Hits ] [ HPmax ] [ Mana ] [ Move ] [ Status ]#n\n\r", ch );
    	for ( gch = char_list; gch != NULL; gch = gch->next )
    	{
        if ( IS_NPC(gch) ) continue;
        if ( gch->pcdata->kingdom != ch->pcdata->kingdom)
        continue;
        sprintf( buf,       "#2[#n%-12s#2] [#n%6d#2] [#n%7d#2] [#n%6d#2] [#n%6d#2] [#n   %-2d   #2]#n\n\r",
        gch->name ,
        gch->hit,gch->max_hit,gch->mana,gch->move,
        gch->pStatus);
        send_to_char( buf, ch );
     	}
     	return;
  	}

     void do_favorclear( CHAR_DATA *ch, char *argument )
	{
	if (IS_SET(ch->act, PLR_RIGHTHAND))
	{
 	REMOVE_BIT(ch->act, PLR_RIGHTHAND);
	}
	if (IS_SET(ch->act, PLR_LEFTHAND))
	{
 	REMOVE_BIT(ch->act, PLR_LEFTHAND);
	}
	if (IS_SET(ch->act, PLR_AMBI))
	{
 	REMOVE_BIT(ch->act, PLR_AMBI);
	}
	send_to_char("You no longer favor any or both hands.\n\r", ch);
	return;
	}

     void do_damn( CHAR_DATA *ch, char *argument )
	{
  	CHAR_DATA *victim;
  	char arg [MAX_INPUT_LENGTH];
  	ROOM_INDEX_DATA *in_room;
  
  	argument = one_argument(argument, arg);

  	if (IS_NPC(ch)) return;
	if ( !IS_CLASS(ch, CLASS_DEMON))
	{
	send_to_char("Huh?\n\r", ch);
	return;
	}
	if ( ( victim = get_char_room( ch, arg ) ) == NULL )
 	{
   	send_to_char( "They aren't here.\n\r", ch );  
    	return;
  	}  
        if ( ch == victim && ch->fighting != NULL)
        {
        send_to_char( "You cannot damn yourself while fighting!\n\r", ch );
        return;
        }
        if ( ch == victim && ch->fighting == NULL)
        {
        send_to_char( "You return to hell!\n\r", ch );
	char_from_room( ch );
	char_to_room( ch, get_room_index(93425));
 	do_look( ch, "auto" );	   
	return;
        }
        in_room = ch->in_room;
	if ( ch->in_room == get_room_index(93425) )
        {
	stc("#RAlready there!!#n\n\r",ch);
	return;
	}
	if (ch->fighting == NULL)
	{
	stc("#rYou're not engaged in combat with them!#n\n\r",ch);
	return;
	}
	stc("#7You attempt to focus your hatred...#n\n\r",ch);
        if ((number_range(1,3) == 1) && (ch->fighting != NULL))
	{
	    if ( ch->fighting )
	{
	stop_fighting( ch, TRUE );
	}
	do_say(ch,"#rM#RuAHahahHAHA #rW#Relcome #rt#Ro #rm#Ry #rD#Romain#r!#R!#n");
	stc("#RYou #rDAMN #Rthem to the pits of hell!#n\n\r",ch);
	char_from_room( victim );
	char_to_room( victim, get_room_index(93425));
        do_look( victim, "auto" );
	char_from_room( ch );
	char_to_room( ch, get_room_index(93425));
	stc("#RWelcome to Hell!#n\n\r",victim);
 	do_look( ch, "auto" );	
	set_fighting(ch, victim);
        }
        WAIT_STATE(ch, 6);
        return;
        } 

     void do_gale(CHAR_DATA *ch, char *argument)
	{
  	CHAR_DATA *victim;

  	if (IS_NPC(ch)) return;
  	if (!IS_CLASS(ch, CLASS_ELEMENTAL)   && !IS_CLASS(ch, CLASS_GAIA_WOLF)
      	&&  !IS_CLASS(ch, CLASS_NECROMANCER) && !IS_CLASS(ch, CLASS_DRUID)
	&&  !IS_CLASS(ch, CLASS_DEVA))
    	{
        send_to_char("Elemental Only?\n\r",ch);
        return;
	}
        if (ch->pcdata->powers[ELEMENTAL_AIR] < 4 )
  	{
    	send_to_char("Your power in the element of air is not strong enough.\n\r",ch);
    	return;
  	}
  	if (ch->move < 2000)
  	{
    	send_to_char("This costs 2000 move.\n\r",ch);
    	return;
  	}
  	if ( ( victim = ch->fighting ) == NULL )
  	{
    	send_to_char( "You aren't fighting anyone.\n\r", ch );
    	return;
  	}
  	WAIT_STATE(ch, 18);
	ch->move -= 2000;
  	if (number_range(1,4)==1)
  	{
    	victim->position = POS_STUNNED;
    	ch->position = POS_STANDING;
    	act("#7You send a #CG#cale #7of #CW#cind #7toward #y$N #7sending #y$M flying into the wall.#n",ch,NULL,victim,TO_CHAR);
    	act("#y$n #7sends a #CG#cale #7of #CW#cind #7toward sending you into the wall.#n ",ch,NULL,victim, TO_VICT);
    	act("#y$n #7sends a #CG#cale #7of #CW#cind #7toward #y$N #7sending #y$M #7flying into the wall.#n",ch,NULL,victim, TO_ROOM);
        return;
  	}
        else
        {
        act("#7Your #CG#cale #7of #CW#cind #LB#llows #7past #y$N#7.#n",ch,NULL,victim,TO_CHAR);
	act("#y$n's #CG#cale #7of #CW#cind #LB#llows #7past you.#n",ch,NULL,victim, TO_VICT);
	act("#y$n's #CG#cale #7of #CW#cind #LB#llows #7past #y$N#7.#n",ch,NULL,victim, TO_ROOM);
  	return;
	}
	}

     void do_smokescreen( CHAR_DATA *ch, char *argument )
	{
  	if (!IS_CLASS(ch, CLASS_ASSASSIN)      && !IS_CLASS(ch, CLASS_UNDEAD_ASSASSIN)
     	&&  !IS_CLASS(ch, CLASS_HELLS_SOLDIER) && !IS_CLASS(ch, CLASS_BLACK_ASSASSIN))
  	{
    	send_to_char("Huh?\n\r",ch);
    	return;
  	}
  	if (ch->pcdata->powers[ASSASSIN_KNOWLEDGE] < 3)
  	{
    	send_to_char("You need level 3 in knowledge before you can create a smokescreeen.\n\r",ch);
    	return;
  	}
       	if(ch->fight_timer > 0)
       	{
        stc("Not with a fighttimer.\n\r",ch);
        return;
        }
        if(!IS_SET(ch->act, AFF_HIDE))
	{
        stc("#7You surround yourself in a #nSc#7re#0e#nn #7of #nS#7m#0ok#ne#7.#n\n\r",ch);
        act("#7$n has become #ye#Yngulfed #7in a #nSc#7re#0e#nn #7of #nS#7m#0ok#ne#7.#n.",ch,NULL,NULL,TO_ROOM);
        SET_BIT(ch->act, AFF_HIDE);
        }
        else
	{
        stc("#7Your #nSc#7re#0e#nn #7of #nS#7m#0ok#ne#7 #7vanishes.#n\n\r",ch);
        act("#7$n has left $M #nSc#7re#0e#nn #7of #nS#7m#0ok#ne#7.#n.",ch,NULL,NULL,TO_ROOM);
        REMOVE_BIT(ch->act, AFF_HIDE);
        }
	}
*/
     void add_affect ( OBJ_DATA * obj, int apply, long value )
	{
  	AFFECT_DATA * paf;

  	if ( affect_free == NULL )
    	paf = alloc_perm( sizeof( * paf ) );
  	else
  	{
    	paf         = affect_free;
    	affect_free = affect_free->next;
  	}
  	paf->type      = 0;
  	paf->duration  = -1;
  	paf->location  = apply;
  	paf->modifier  = value;
  	paf->bitvector = 0;
  	paf->next      = obj->affected;
  	obj->affected  = paf;
	}
/*
     void do_elemshift (CHAR_DATA *ch, char *argument)
	{
  	char arg[MAX_INPUT_LENGTH];
  	char buf[MAX_STRING_LENGTH];
  	one_argument( argument, arg);

  	if (IS_NPC(ch)) return;
  	if (!IS_CLASS(ch, CLASS_ELEMENTAL)   && !IS_CLASS(ch, CLASS_GAIA_WOLF)
      	&&  !IS_CLASS(ch, CLASS_NECROMANCER) && !IS_CLASS(ch, CLASS_DRUID)
      	&&  !IS_CLASS(ch, CLASS_DEVA))
    	{
        send_to_char("Elemental Only?\n\r",ch);
        return;
    	}
  	if (ch->pcdata->powers[ELEMENTAL_FIRE] < 5 )
  	{
    	send_to_char("#7You need level #R5 #7in each element to use #RElemshift#7!#n\n\r",ch);
    	return;
  	}
  	if (ch->pcdata->powers[ELEMENTAL_AIR] < 5 )
  	{
    	send_to_char("#7You need level #R5 #7in each element to use #RElemshift#7!#n\n\r",ch);
    	return;
  	}
  	if (ch->pcdata->powers[ELEMENTAL_WATER] < 5 )
  	{
    	send_to_char("#7You need level #R5 #7in each element to use #RElemshift#7!#n\n\r",ch);
    	return;
  	}
  	if (ch->pcdata->powers[ELEMENTAL_EARTH] < 5 )
  	{
    	send_to_char("#7You need level #R5 #7in each element to use #RElemshift#7!#n\n\r",ch);
    	return;
  	}
  	if (arg[0] == '\0')
  	{
    	send_to_char("#7Which #RElemental #7form? #7[#RFire#7-#CAir#7-#LWater#7-#oEarth#7-#YMortal#7]#n\n\r", ch);
    	return;
  	}
  	if (!str_cmp(arg,"fire"))
  	{
    	if (IS_SET(ch->affected_by, AFF_POLYMORPH))
    	{
      	send_to_char("#7You're already in a #RELEMENTAL #7form#7!#n\n\r",ch);
      	return;
    	}
    	if (ch->mana < 10000)
  	{
    	send_to_char("#7You don't have enough #Rmana#7.#n\n\r",ch);
    	return;
  	}
    	act( "You become ingulfed in #RF#Yl#Ra#Ym#Re#Ys#n.", ch, NULL, NULL, TO_CHAR);
    	act( "$n's Becomes a #7Human #YT#Ro#Yr#Rc#Yh#n.", ch, NULL, NULL, TO_ROOM );
    	ch->pcdata->powers[ELEM_FORMS]=FIRE_FORM;
    	SET_BIT(ch->affected_by, AFF_POLYMORPH);
    	ch->hitroll += 400;
    	ch->damroll += 400;
    	ch->armor   -= 200;
    	ch->mana    -= 10000;
    	sprintf(buf, "%s The #RF#Yi#Rr#Ye#n Elemental", ch->name);
    	free_string(ch->morph);
    	ch->morph = str_dup(buf);
    	return;
  	}
  	else if (!str_cmp(arg,"water"))
  	{
    	if (IS_SET(ch->affected_by, AFF_POLYMORPH))
    	{
      	send_to_char("#7You're already in a #RELEMENTAL #7form#7!#n\n\r",ch);
      	return;
    	}
    	if (ch->mana < 1000)
  	{
    	send_to_char("#7You don't have enough #Rmana#7.#n\n\r",ch);
    	return;
  	}
    	act( "Your skin is covered with #7Ice #lCrystals#n.", ch, NULL, NULL, TO_CHAR);
    	act( "$n's skin becomes covered with #7Ice #lcrystals#n.", ch, NULL, NULL, TO_ROOM );
    	ch->pcdata->powers[ELEM_FORMS]=WATER_FORM;
    	SET_BIT(ch->affected_by, AFF_POLYMORPH);
    	ch->hitroll += 300;
    	ch->damroll += 300;
    	ch->mana    -= 10000;
    	sprintf(buf, "%s The #lWater#n Elemental", ch->name);
    	free_string(ch->morph);
    	ch->morph = str_dup(buf);
    	return;
  	}
  	else if (!str_cmp(arg,"air"))
  	{
    	if (IS_SET(ch->affected_by, AFF_POLYMORPH))
    	{
      	send_to_char("#7You're already in a #RELEMENTAL #7form#7!#n\n\r",ch);
      	return;
    	}
    	if (ch->mana < 10000)
  	{
    	send_to_char("#7You don't have enough #Rmana#7.#n\n\r",ch);
    	return;
  	}
    	act( "You becomes a thin #LM#7i#Ls#7t#n.", ch, NULL, NULL, TO_CHAR);
    	act( "$n's Becomes a thin #LM#7i#Ls#7t#n.", ch, NULL, NULL, TO_ROOM );
    	ch->pcdata->powers[ELEM_FORMS]=AIR_FORM;
    	SET_BIT(ch->affected_by, AFF_POLYMORPH);
    	ch->hitroll += 200;
    	ch->damroll += 200;
    	ch->armor   -= 200;
    	ch->mana    -= 10000;
    	sprintf(buf, "%s The #7Air#n Elemental", ch->name);
    	free_string(ch->morph);
    	ch->morph = str_dup(buf);
    	return;
  	}
  	else if (!str_cmp(arg,"earth"))
  	{
    	if (IS_SET(ch->affected_by, AFF_POLYMORPH))
    	{
      	send_to_char("#7You're already in a #RELEMENTAL #7form#7!#n\n\r",ch);
      	return;
    	}
    	if (ch->mana < 10000)
  	{
    	send_to_char("#7You don't have enough #Rmana#7.#n\n\r",ch);
    	return;
  	}
    	act( "Your Skin turns to Hard #GE#garth#n.", ch, NULL, NULL, TO_CHAR);
    	act( "$n's skin turns to Hard #GE#garth#n.", ch, NULL, NULL, TO_ROOM );
    	ch->pcdata->powers[ELEM_FORMS]=EARTH_FORM;
    	SET_BIT(ch->affected_by, AFF_POLYMORPH);
    	ch->hitroll += 500;
   	ch->damroll += 500;
    	ch->armor   -= 500;
    	ch->mana    -= 10000;
    	sprintf(buf, "%s The #GE#garth#n Elemental", ch->name);
    	free_string(ch->morph);
    	ch->morph = str_dup(buf);
    	return;
  	}
  	else if (!str_cmp(arg,"mortal"))
  	{
    	if (!IS_SET(ch->affected_by, AFF_POLYMORPH))
    	{
      	send_to_char("#7Your already in #RMortal #7form.#n\n\r",ch);
      	return;
   	}
    	if (IS_SET(ch->pcdata->powers[ELEM_FORMS], FIRE_FORM))
    	{
      	ch->hitroll -= 400;
      	ch->damroll -= 400;
      	ch->armor   += 200;
    	}
    	else if (IS_SET(ch->pcdata->powers[ELEM_FORMS], AIR_FORM))
    	{
      	ch->hitroll -= 200;
      	ch->damroll -= 200;
      	ch->armor   += 200;
    	}
    	else if (IS_SET(ch->pcdata->powers[ELEM_FORMS], WATER_FORM))
    	{
      	ch->hitroll -= 300;
      	ch->damroll -= 300;
  	}
    	else if (IS_SET(ch->pcdata->powers[ELEM_FORMS], EARTH_FORM))
    	{
      	ch->hitroll -= 500;
      	ch->damroll -= 500;
      	ch->armor   += 500;
  	}
        ch->pcdata->powers[ELEM_FORMS]=0;
     	REMOVE_BIT(ch->affected_by, AFF_POLYMORPH);
        send_to_char("#7You return to your #RMortal #7form.#n\n\r",ch);
        act("#7$n returns to $s #RMortal #7form.#n\n\r",ch,NULL,NULL,TO_ROOM);
        free_string(ch->morph);
        ch->morph=str_dup("");
        return;
  	}
  	else
  	{
    	send_to_char("#7That is not a valid form.#n\n\r",ch);
    	return;
  	}
	}
*/
     void rare_eq1 ( CHAR_DATA * ch, CHAR_DATA * victim )
        {
        OBJ_INDEX_DATA * pObjIndex;
        OBJ_DATA * obj;
        char name [MSL];
        char ooga [MSL];
        int hitroll = 0;
        int damroll = 0;
        int hp      = 0;
        int mana    = 0;
        int move    = 0;
        int wear    = 0;
        int armor   = 0;
        int rnum    = 30037;

        if ( IS_NPC( ch ) )
        return;
        if ( number_range( 1 , 2000 ) == 1 )
        {
        if ( rnum == 0 || ( pObjIndex = get_obj_index( rnum ) ) == NULL )
        {
        stc( "Missing object, please notify a member of the staff.\n\r", ch );
        return;
        }
        obj     = create_object( pObjIndex, 52 );
        hitroll = number_range( 180, 200   );
        damroll = number_range( 180, 200   );
        hp      = number_range( 300, 500   );
        mana    = number_range( 300, 500   );
        move    = number_range( 300, 500   );
        armor   = number_range( -300, -200 );
        add_affect( obj, APPLY_HITROLL, hitroll );
        add_affect( obj, APPLY_DAMROLL, damroll );
        add_affect( obj, APPLY_HIT, hp );
        add_affect( obj, APPLY_MANA, mana );
        add_affect( obj, APPLY_MOVE, move );
        add_affect( obj, APPLY_AC, armor );
        obj->value[0] = 30;

        SET_BIT( obj->quest, QUEST_RELIC );
        SET_BIT( obj->spectype, SITEM_RARE );
	SET_BIT( obj->spectype, SITEM_UNID );
        SET_BIT( obj->wear_flags, ITEM_TAKE );
        wear = number_range( 1, 12 );
        switch ( wear )
        {
        case 1: wear = ITEM_WEAR_FINGER;
        sprintf( name, "Ring" );
        break;
        case 2: wear = ITEM_WEAR_NECK;
        sprintf( name, "Necklace" );
        break;
        case 3: wear = ITEM_WEAR_BODY;
        sprintf( name, "Armor" );
        break;
        case 4: wear = ITEM_WEAR_HEAD;
        sprintf( name, "Helmet" );
        break;
        case 5: wear = ITEM_WEAR_LEGS;
        sprintf( name, "Leggings" );
        break;
        case 6: wear = ITEM_WEAR_FEET;
        sprintf( name, "Boots" );
        break;
        case 7: wear = ITEM_WEAR_HANDS;
        sprintf( name, "Gauntlets" );
        break;
        case 8: wear = ITEM_WEAR_ARMS;
        sprintf( name, "Sleeves" );
        break;
        case 9: wear = ITEM_WEAR_ABOUT;
        sprintf( name, "Cloak" );
        break;
        case 10: wear = ITEM_WEAR_WAIST;
        sprintf( name, "Belt" );
        break;
        case 11: wear = ITEM_WEAR_WRIST;
        sprintf( name, "Bracelet" );
        break;
        case 12: wear = ITEM_WEAR_FACE;
        sprintf( name, "Mask" );
        break;
        }
        SET_BIT( obj->wear_flags, wear );
        obj->item_type = ITEM_ARMOR;
        sprintf( ooga ,"#GDa#gr#0k #nE#7m#ne#0r#ga#Gld#7 %s#n", name );
        free_string( obj->short_descr );
        obj->short_descr = str_dup( ooga );
        sprintf( ooga ,"#GDa#gr#0k #nE#7m#ne#0r#ga#Gld#n #7%s#n lies on the ground.", name );
        free_string( obj->description );
        obj->description = str_dup( ooga );
        sprintf( ooga, "Rare %s ", name );
        free_string( obj->name );
        obj->name = str_dup( ooga );
        obj_to_char( obj, ch ); obj->questowner = str_dup(ch->pcdata->switchname);
        act( "$p #7appears in your hands in a great #Ye#yxplosion#7.#n", ch, obj, NULL, TO_CHAR );
        act( "$p #7appears in $n's hands in a great #Ye#yxplosion#7.#n", ch, obj, NULL, TO_ROOM );
        stc( "#7You have obtained a piece of Rare armor!#n\n\r", ch );
        }
        }

     void rare_eq2 ( CHAR_DATA * ch, CHAR_DATA * victim )
        {
        OBJ_INDEX_DATA * pObjIndex;
        OBJ_DATA * obj;
        char name [MSL];
        char ooga [MSL];
        int hitroll = 0;
        int damroll = 0;
        int hp      = 0;
        int mana    = 0;
        int move    = 0;
        int wear    = 0;
        int armor   = 0;
        int rnum    = 30037;

        if ( IS_NPC( ch ) )
        return;
        if ( number_range( 1 , 2000 ) == 1 )
        {
        if ( rnum == 0 || ( pObjIndex = get_obj_index( rnum ) ) == NULL )
        {
        stc( "Missing object, please notify a member of the staff.\n\r", ch );
        return;
        }
        obj     = create_object( pObjIndex, 52 );
        hitroll = number_range( 180, 200   );
        damroll = number_range( 180, 200   );
        hp      = number_range( 300, 500   );
        mana    = number_range( 300, 500   );
        move    = number_range( 300, 500   );
        armor   = number_range( -300, -200 );
        add_affect( obj, APPLY_HITROLL, hitroll );
        add_affect( obj, APPLY_DAMROLL, damroll );
        add_affect( obj, APPLY_HIT, hp );
        add_affect( obj, APPLY_MANA, mana );
        add_affect( obj, APPLY_MOVE, move );
        add_affect( obj, APPLY_AC, armor );
        obj->value[0] = 30;

        SET_BIT( obj->quest, QUEST_RELIC );
        SET_BIT( obj->spectype, SITEM_RARE );
        SET_BIT( obj->spectype, SITEM_UNID );
        SET_BIT( obj->wear_flags, ITEM_TAKE );
        wear = number_range( 1, 12 );
        switch ( wear )
        {
        case 1: wear = ITEM_WEAR_FINGER;
        sprintf( name, "Ring" );
        break;
        case 2: wear = ITEM_WEAR_NECK;
        sprintf( name, "Necklace" );
        break;
        case 3: wear = ITEM_WEAR_BODY;
        sprintf( name, "Armor" );
        break;
        case 4: wear = ITEM_WEAR_HEAD;
        sprintf( name, "Helmet" );
        break;
        case 5: wear = ITEM_WEAR_LEGS;
        sprintf( name, "Leggings" );
        break;
        case 6: wear = ITEM_WEAR_FEET;
        sprintf( name, "Boots" );
        break;
        case 7: wear = ITEM_WEAR_HANDS;
        sprintf( name, "Gauntlets" );
        break;
        case 8: wear = ITEM_WEAR_ARMS;
        sprintf( name, "Sleeves" );
        break;
        case 9: wear = ITEM_WEAR_ABOUT;
        sprintf( name, "Cloak" );
        break;
        case 10: wear = ITEM_WEAR_WAIST;
        sprintf( name, "Belt" );
        break;
        case 11: wear = ITEM_WEAR_WRIST;
        sprintf( name, "Bracelet" );
        break;
        case 12: wear = ITEM_WEAR_FACE;
        sprintf( name, "Mask" );
        break;
        }
        SET_BIT( obj->wear_flags, wear );
        obj->item_type = ITEM_ARMOR;
        sprintf( ooga ,"#pCra#Pck#7e#nd #0A#nm#7e#Pth#pyst#n #7%s#n", name );
        free_string( obj->short_descr );
        obj->short_descr = str_dup( ooga );
        sprintf( ooga ,"#pCra#Pck#7e#nd #0A#nm#7e#Pth#pyst#n #7%s#n lies on the ground.", name );
        free_string( obj->description );
        obj->description = str_dup( ooga );
        sprintf( ooga, "Rare %s ", name );
        free_string( obj->name );
        obj->name = str_dup( ooga );
        obj_to_char( obj, ch ); obj->questowner = str_dup(ch->pcdata->switchname);
        act( "$p #7appears in your hands in a great #Ye#yxplosion#7.#n", ch, obj, NULL, TO_CHAR );
        act( "$p #7appears in $n's hands in a great #Ye#yxplosion#7.#n", ch, obj, NULL, TO_ROOM );
        stc( "#7You have obtained a piece of Rare armor!#n\n\r", ch );
        }
        }

     void rare_eq3 ( CHAR_DATA * ch, CHAR_DATA * victim )
        {
        OBJ_INDEX_DATA * pObjIndex;
        OBJ_DATA * obj;
        char name [MSL];
        char ooga [MSL];
        int hitroll = 0;
        int damroll = 0;
        int hp      = 0;
        int mana    = 0;
        int move    = 0;
        int wear    = 0;
        int armor   = 0;
        int rnum    = 30037;

        if ( IS_NPC( ch ) )
        return;
        if ( number_range( 1 , 2000 ) == 1 )
        {
        if ( rnum == 0 || ( pObjIndex = get_obj_index( rnum ) ) == NULL )
        {
        stc( "Missing object, please notify a member of the staff.\n\r", ch );
        return;
        }
        obj     = create_object( pObjIndex, 52 );
        hitroll = number_range( 180, 200   );
        damroll = number_range( 180, 200   );
        hp      = number_range( 300, 500   );
        mana    = number_range( 300, 500   );
        move    = number_range( 300, 500   );
        armor   = number_range( -300, -200 );
        add_affect( obj, APPLY_HITROLL, hitroll );
        add_affect( obj, APPLY_DAMROLL, damroll );
        add_affect( obj, APPLY_HIT, hp );
        add_affect( obj, APPLY_MANA, mana );
        add_affect( obj, APPLY_MOVE, move );
        add_affect( obj, APPLY_AC, armor );
        obj->value[0] = 30;

        SET_BIT( obj->quest, QUEST_RELIC );
        SET_BIT( obj->spectype, SITEM_RARE );
        SET_BIT( obj->spectype, SITEM_UNID );
        SET_BIT( obj->wear_flags, ITEM_TAKE );
        wear = number_range( 1, 12 );
        switch ( wear )
        {
        case 1: wear = ITEM_WEAR_FINGER;
        sprintf( name, "Ring" );
        break;
        case 2: wear = ITEM_WEAR_NECK;
        sprintf( name, "Necklace" );
        break;
        case 3: wear = ITEM_WEAR_BODY;
        sprintf( name, "Armor" );
        break;
        case 4: wear = ITEM_WEAR_HEAD;
        sprintf( name, "Helmet" );
        break;
        case 5: wear = ITEM_WEAR_LEGS;
        sprintf( name, "Leggings" );
        break;
        case 6: wear = ITEM_WEAR_FEET;
        sprintf( name, "Boots" );
        break;
        case 7: wear = ITEM_WEAR_HANDS;
        sprintf( name, "Gauntlets" );
        break;
        case 8: wear = ITEM_WEAR_ARMS;
        sprintf( name, "Sleeves" );
        break;
        case 9: wear = ITEM_WEAR_ABOUT;
        sprintf( name, "Cloak" );
        break;
        case 10: wear = ITEM_WEAR_WAIST;
        sprintf( name, "Belt" );
        break;
        case 11: wear = ITEM_WEAR_WRIST;
        sprintf( name, "Bracelet" );
        break;
        case 12: wear = ITEM_WEAR_FACE;
        sprintf( name, "Mask" );
        break;
        }
        SET_BIT( obj->wear_flags, wear );
        obj->item_type = ITEM_ARMOR;
        sprintf( ooga ,"#sPe#sr#sf#se#sct #sP#sr#si#ssm#n #7%s#n", name );
        free_string( obj->short_descr );
        obj->short_descr = str_dup( ooga );
        sprintf( ooga ,"#sPe#sr#sf#se#sct #sP#sr#si#ssm#n #7%s#n lies on the ground.", name );
        free_string( obj->description );
        obj->description = str_dup( ooga );
        sprintf( ooga, "Rare %s ", name );
        free_string( obj->name );
        obj->name = str_dup( ooga );
        obj_to_char( obj, ch ); obj->questowner = str_dup(ch->pcdata->switchname);
        act( "$p #7appears in your hands in a great #Ye#yxplosion#7.#n", ch, obj, NULL, TO_CHAR );
        act( "$p #7appears in $n's hands in a great #Ye#yxplosion#7.#n", ch, obj, NULL, TO_ROOM );
        stc( "#7You have obtained a piece of Rare armor!#n\n\r", ch );
        }
        }

     void rare_eq4 ( CHAR_DATA * ch, CHAR_DATA * victim )
        {
        OBJ_INDEX_DATA * pObjIndex;
        OBJ_DATA * obj;
        char name [MSL];
        char ooga [MSL];
        int hitroll = 0;
        int damroll = 0;
        int hp      = 0;
        int mana    = 0;
        int move    = 0;
        int wear    = 0;
        int armor   = 0;
        int rnum    = 30037;

        if ( IS_NPC( ch ) )
        return;
        if ( number_range( 1 , 2000 ) == 1 )
        {
        if ( rnum == 0 || ( pObjIndex = get_obj_index( rnum ) ) == NULL )
        {
        stc( "Missing object, please notify a member of the staff.\n\r", ch );
        return;
        }
        obj     = create_object( pObjIndex, 52 );
        hitroll = number_range( 180, 200   );
        damroll = number_range( 180, 200   );
        hp      = number_range( 300, 500   );
        mana    = number_range( 300, 500   );
        move    = number_range( 300, 500   );
        armor   = number_range( -300, -200 );
        add_affect( obj, APPLY_HITROLL, hitroll );
        add_affect( obj, APPLY_DAMROLL, damroll );
        add_affect( obj, APPLY_HIT, hp );
        add_affect( obj, APPLY_MANA, mana );
        add_affect( obj, APPLY_MOVE, move );
        add_affect( obj, APPLY_AC, armor );
        obj->value[0] = 30;

        SET_BIT( obj->quest, QUEST_RELIC );
        SET_BIT( obj->spectype, SITEM_RARE );
        SET_BIT( obj->spectype, SITEM_UNID );
        SET_BIT( obj->wear_flags, ITEM_TAKE );
        wear = number_range( 1, 12 );
        switch ( wear )
        {
        case 1: wear = ITEM_WEAR_FINGER;
        sprintf( name, "Ring" );
        break;
        case 2: wear = ITEM_WEAR_NECK;
        sprintf( name, "Necklace" );
        break;
        case 3: wear = ITEM_WEAR_BODY;
        sprintf( name, "Armor" );
        break;
        case 4: wear = ITEM_WEAR_HEAD;
        sprintf( name, "Helmet" );
        break;
        case 5: wear = ITEM_WEAR_LEGS;
        sprintf( name, "Leggings" );
        break;
        case 6: wear = ITEM_WEAR_FEET;
        sprintf( name, "Boots" );
        break;
        case 7: wear = ITEM_WEAR_HANDS;
        sprintf( name, "Gauntlets" );
        break;
        case 8: wear = ITEM_WEAR_ARMS;
        sprintf( name, "Sleeves" );
        break;
        case 9: wear = ITEM_WEAR_ABOUT;
        sprintf( name, "Cloak" );
        break;
        case 10: wear = ITEM_WEAR_WAIST;
        sprintf( name, "Belt" );
        break;
        case 11: wear = ITEM_WEAR_WRIST;
        sprintf( name, "Bracelet" );
        break;
        case 12: wear = ITEM_WEAR_FACE;
        sprintf( name, "Mask" );
        break;
        }
        SET_BIT( obj->wear_flags, wear );
        obj->item_type = ITEM_ARMOR;
        sprintf( ooga ,"#rBl#Ro#7o#nd S#7t#Ro#rne#n #7%s#n", name );
        free_string( obj->short_descr );
        obj->short_descr = str_dup( ooga );
        sprintf( ooga ,"#rBl#Ro#7o#nd S#7t#Ro#rne#n #7%s#n lies on the ground.", name );
        free_string( obj->description );
        obj->description = str_dup( ooga );
        sprintf( ooga, "Rare %s ", name );
        free_string( obj->name );
        obj->name = str_dup( ooga );
        obj_to_char( obj, ch ); obj->questowner = str_dup(ch->pcdata->switchname);
        act( "$p #7appears in your hands in a great #Ye#yxplosion#7.#n", ch, obj, NULL, TO_CHAR );
        act( "$p #7appears in $n's hands in a great #Ye#yxplosion#7.#n", ch, obj, NULL, TO_ROOM );
        stc( "#7You have obtained a piece of Rare armor!#n\n\r", ch );
        }
        }

     void rare_eq5 ( CHAR_DATA * ch, CHAR_DATA * victim )
        {
        OBJ_INDEX_DATA * pObjIndex;
        OBJ_DATA * obj;
        char name [MSL];
        char ooga [MSL];
        int hitroll = 0;
        int damroll = 0;
        int hp      = 0;
        int mana    = 0;
        int move    = 0;
        int wear    = 0;
        int armor   = 0;
        int rnum    = 30037;

        if ( IS_NPC( ch ) )
        return;
        if ( number_range( 1 , 2000 ) == 1 )
        {
        if ( rnum == 0 || ( pObjIndex = get_obj_index( rnum ) ) == NULL )
        {
        stc( "Missing object, please notify a member of the staff.\n\r", ch );
        return;
        }
        obj     = create_object( pObjIndex, 52 );
        hitroll = number_range( 180, 200   );
        damroll = number_range( 180, 200   );
        hp      = number_range( 300, 500   );
        mana    = number_range( 300, 500   );
        move    = number_range( 300, 500   );
        armor   = number_range( -300, -200 );
        add_affect( obj, APPLY_HITROLL, hitroll );
        add_affect( obj, APPLY_DAMROLL, damroll );
        add_affect( obj, APPLY_HIT, hp );
        add_affect( obj, APPLY_MANA, mana );
        add_affect( obj, APPLY_MOVE, move );
        add_affect( obj, APPLY_AC, armor );
        obj->value[0] = 30;

        SET_BIT( obj->quest, QUEST_RELIC );
        SET_BIT( obj->spectype, SITEM_RARE );
        SET_BIT( obj->spectype, SITEM_UNID );
        SET_BIT( obj->wear_flags, ITEM_TAKE );
        wear = number_range( 1, 12 );
        switch ( wear )
        {
        case 1: wear = ITEM_WEAR_FINGER;
        sprintf( name, "Ring" );
        break;
        case 2: wear = ITEM_WEAR_NECK;
        sprintf( name, "Necklace" );
        break;
        case 3: wear = ITEM_WEAR_BODY;
        sprintf( name, "Armor" );
        break;
        case 4: wear = ITEM_WEAR_HEAD;
        sprintf( name, "Helmet" );
        break;
        case 5: wear = ITEM_WEAR_LEGS;
        sprintf( name, "Leggings" );
        break;
        case 6: wear = ITEM_WEAR_FEET;
        sprintf( name, "Boots" );
        break;
        case 7: wear = ITEM_WEAR_HANDS;
        sprintf( name, "Gauntlets" );
        break;
        case 8: wear = ITEM_WEAR_ARMS;
        sprintf( name, "Sleeves" );
        break;
        case 9: wear = ITEM_WEAR_ABOUT;
        sprintf( name, "Cloak" );
        break;
        case 10: wear = ITEM_WEAR_WAIST;
        sprintf( name, "Belt" );
        break;
        case 11: wear = ITEM_WEAR_WRIST;
        sprintf( name, "Bracelet" );
        break;
        case 12: wear = ITEM_WEAR_FACE;
        sprintf( name, "Mask" );
        break;
        }
        SET_BIT( obj->wear_flags, wear );
        obj->item_type = ITEM_ARMOR;
        sprintf( ooga ,"#0G#no#0t#nh#0i#nc#n #7%s#n", name );
        free_string( obj->short_descr );
        obj->short_descr = str_dup( ooga );
        sprintf( ooga ,"#0G#no#0t#nh#0i#nc#n #7%s#n lies on the ground.", name );
        free_string( obj->description );
        obj->description = str_dup( ooga );
        sprintf( ooga, "Rare %s ", name );
        free_string( obj->name );
        obj->name = str_dup( ooga );
        obj_to_char( obj, ch ); obj->questowner = str_dup(ch->pcdata->switchname);
        act( "$p #7appears in your hands in a great #Ye#yxplosion#7.#n", ch, obj, NULL, TO_CHAR );
        act( "$p #7appears in $n's hands in a great #Ye#yxplosion#7.#n", ch, obj, NULL, TO_ROOM );
        stc( "#7You have obtained a piece of Rare armor!#n\n\r", ch );
        }
        }

     void rare_eq6 ( CHAR_DATA * ch, CHAR_DATA * victim )
        {
        OBJ_INDEX_DATA * pObjIndex;
        OBJ_DATA * obj;
        char name [MSL];
        char ooga [MSL];
        int hitroll = 0;
        int damroll = 0;
        int hp      = 0;
        int mana    = 0;
        int move    = 0;
        int wear    = 0;
        int armor   = 0;
        int rnum    = 30037;

        if ( IS_NPC( ch ) )
        return;
        if ( number_range( 1 , 2000 ) == 1 )
        {
        if ( rnum == 0 || ( pObjIndex = get_obj_index( rnum ) ) == NULL )
        {
        stc( "Missing object, please notify a member of the staff.\n\r", ch );
        return;
        }
        obj     = create_object( pObjIndex, 52 );
        hitroll = number_range( 180, 200   );
        damroll = number_range( 180, 200   );
        hp      = number_range( 300, 500   );
        mana    = number_range( 300, 500   );
        move    = number_range( 300, 500   );
        armor   = number_range( -300, -200 );
        add_affect( obj, APPLY_HITROLL, hitroll );
        add_affect( obj, APPLY_DAMROLL, damroll );
        add_affect( obj, APPLY_HIT, hp );
        add_affect( obj, APPLY_MANA, mana );
        add_affect( obj, APPLY_MOVE, move );
        add_affect( obj, APPLY_AC, armor );
        obj->value[0] = 30;

        SET_BIT( obj->quest, QUEST_RELIC );
        SET_BIT( obj->spectype, SITEM_RARE );
        SET_BIT( obj->spectype, SITEM_UNID );
        SET_BIT( obj->wear_flags, ITEM_TAKE );
        wear = number_range( 1, 12 );
        switch ( wear )
        {
        case 1: wear = ITEM_WEAR_FINGER;
        sprintf( name, "Ring" );
        break;
        case 2: wear = ITEM_WEAR_NECK;
        sprintf( name, "Necklace" );
        break;
        case 3: wear = ITEM_WEAR_BODY;
        sprintf( name, "Armor" );
        break;
        case 4: wear = ITEM_WEAR_HEAD;
        sprintf( name, "Helmet" );
        break;
        case 5: wear = ITEM_WEAR_LEGS;
        sprintf( name, "Leggings" );
        break;
        case 6: wear = ITEM_WEAR_FEET;
        sprintf( name, "Boots" );
        break;
        case 7: wear = ITEM_WEAR_HANDS;
        sprintf( name, "Gauntlets" );
        break;
        case 8: wear = ITEM_WEAR_ARMS;
        sprintf( name, "Sleeves" );
        break;
        case 9: wear = ITEM_WEAR_ABOUT;
        sprintf( name, "Cloak" );
        break;
        case 10: wear = ITEM_WEAR_WAIST;
        sprintf( name, "Belt" );
        break;
        case 11: wear = ITEM_WEAR_WRIST;
        sprintf( name, "Bracelet" );
        break;
        case 12: wear = ITEM_WEAR_FACE;
        sprintf( name, "Mask" );
        break;
        }
        SET_BIT( obj->wear_flags, wear );
        obj->item_type = ITEM_ARMOR;
        sprintf( ooga ,"#ySt#0u#ydd#0e#yd L#0e#yat#0h#yer#n #7%s#n", name );
        free_string( obj->short_descr );
        obj->short_descr = str_dup( ooga );
        sprintf( ooga ,"#ySt#0u#ydd#0e#yd L#0e#yat#0h#yer#n #7%s#n lies on the ground.", name );
        free_string( obj->description );
        obj->description = str_dup( ooga );
        sprintf( ooga, "Rare %s ", name );
        free_string( obj->name );
        obj->name = str_dup( ooga );
        obj_to_char( obj, ch ); obj->questowner = str_dup(ch->pcdata->switchname);
        act( "$p #7appears in your hands in a great #Ye#yxplosion#7.#n", ch, obj, NULL, TO_CHAR );
        act( "$p #7appears in $n's hands in a great #Ye#yxplosion#7.#n", ch, obj, NULL, TO_ROOM );
        stc( "#7You have obtained a piece of Rare armor!#n\n\r", ch );
        }
        }

     void rare_eq7 ( CHAR_DATA * ch, CHAR_DATA * victim )
        {
        OBJ_INDEX_DATA * pObjIndex;
        OBJ_DATA * obj;
        char name [MSL];
        char ooga [MSL];
        int hitroll = 0;
        int damroll = 0;
        int hp      = 0;
        int mana    = 0;
        int move    = 0;
        int wear    = 0;
        int armor   = 0;
        int rnum    = 30037;

        if ( IS_NPC( ch ) )
        return;
        if ( number_range( 1 , 2000 ) == 1 )
        {
        if ( rnum == 0 || ( pObjIndex = get_obj_index( rnum ) ) == NULL )
        {
        stc( "Missing object, please notify a member of the staff.\n\r", ch );
        return;
        }
        obj     = create_object( pObjIndex, 52 );
        hitroll = number_range( 180, 200   );
        damroll = number_range( 180, 200   );
        hp      = number_range( 300, 500   );
        mana    = number_range( 300, 500   );
        move    = number_range( 300, 500   );
        armor   = number_range( -300, -200 );
        add_affect( obj, APPLY_HITROLL, hitroll );
        add_affect( obj, APPLY_DAMROLL, damroll );
        add_affect( obj, APPLY_HIT, hp );
        add_affect( obj, APPLY_MANA, mana );
        add_affect( obj, APPLY_MOVE, move );
        add_affect( obj, APPLY_AC, armor );
        obj->value[0] = 30;

        SET_BIT( obj->quest, QUEST_RELIC );
        SET_BIT( obj->spectype, SITEM_RARE );
        SET_BIT( obj->spectype, SITEM_UNID );
        SET_BIT( obj->wear_flags, ITEM_TAKE );
        wear = number_range( 1, 12 );
        switch ( wear )
        {
        case 1: wear = ITEM_WEAR_FINGER;
        sprintf( name, "Ring" );
        break;
        case 2: wear = ITEM_WEAR_NECK;
        sprintf( name, "Necklace" );
        break;
        case 3: wear = ITEM_WEAR_BODY;
        sprintf( name, "Armor" );
        break;
        case 4: wear = ITEM_WEAR_HEAD;
        sprintf( name, "Helmet" );
        break;
        case 5: wear = ITEM_WEAR_LEGS;
        sprintf( name, "Leggings" );
        break;
        case 6: wear = ITEM_WEAR_FEET;
        sprintf( name, "Boots" );
        break;
        case 7: wear = ITEM_WEAR_HANDS;
        sprintf( name, "Gauntlets" );
        break;
        case 8: wear = ITEM_WEAR_ARMS;
        sprintf( name, "Sleeves" );
        break;
        case 9: wear = ITEM_WEAR_ABOUT;
        sprintf( name, "Cloak" );
        break;
        case 10: wear = ITEM_WEAR_WAIST;
        sprintf( name, "Belt" );
        break;
        case 11: wear = ITEM_WEAR_WRIST;
        sprintf( name, "Bracelet" );
        break;
        case 12: wear = ITEM_WEAR_FACE;
        sprintf( name, "Mask" );
        break;
        }
        SET_BIT( obj->wear_flags, wear );
        obj->item_type = ITEM_ARMOR;
        sprintf( ooga ,"#7Q#nu#0i#7l#nt#0e#7d#n #7%s#n", name );
        free_string( obj->short_descr );
        obj->short_descr = str_dup( ooga );
        sprintf( ooga ,"#7Q#nu#0i#7l#nt#0e#7d#n #7%s#n lies on the ground.", name );
        free_string( obj->description );
        obj->description = str_dup( ooga );
        sprintf( ooga, "Rare %s ", name );
        free_string( obj->name );
        obj->name = str_dup( ooga );
        obj_to_char( obj, ch ); obj->questowner = str_dup(ch->pcdata->switchname);
        act( "$p #7appears in your hands in a great #Ye#yxplosion#7.#n", ch, obj, NULL, TO_CHAR );
        act( "$p #7appears in $n's hands in a great #Ye#yxplosion#7.#n", ch, obj, NULL, TO_ROOM );
        stc( "#7You have obtained a piece of Rare armor!#n\n\r", ch );
        }
        }

     void rare_eq8 ( CHAR_DATA * ch, CHAR_DATA * victim )
        {
        OBJ_INDEX_DATA * pObjIndex;
        OBJ_DATA * obj;
        char name [MSL];
        char ooga [MSL];
        int hitroll = 0;
        int damroll = 0;
        int hp      = 0;
        int mana    = 0;
        int move    = 0;
        int wear    = 0;
        int armor   = 0;
        int rnum    = 30037;

        if ( IS_NPC( ch ) )
        return;
        if ( number_range( 1 , 2000 ) == 1 )
        {
        if ( rnum == 0 || ( pObjIndex = get_obj_index( rnum ) ) == NULL )
        {
        stc( "Missing object, please notify a member of the staff.\n\r", ch );
        return;
        }
        obj     = create_object( pObjIndex, 52 );
        hitroll = number_range( 180, 200   );
        damroll = number_range( 180, 200   );
        hp      = number_range( 300, 500   );
        mana    = number_range( 300, 500   );
        move    = number_range( 300, 500   );
        armor   = number_range( -300, -200 );
        add_affect( obj, APPLY_HITROLL, hitroll );
        add_affect( obj, APPLY_DAMROLL, damroll );
        add_affect( obj, APPLY_HIT, hp );
        add_affect( obj, APPLY_MANA, mana );
        add_affect( obj, APPLY_MOVE, move );
        add_affect( obj, APPLY_AC, armor );
        obj->value[0] = 30;

        SET_BIT( obj->quest, QUEST_RELIC );
        SET_BIT( obj->spectype, SITEM_RARE );
        SET_BIT( obj->spectype, SITEM_UNID );
        SET_BIT( obj->wear_flags, ITEM_TAKE );
        wear = number_range( 1, 12 );
        switch ( wear )
        {
        case 1: wear = ITEM_WEAR_FINGER;
        sprintf( name, "Ring" );
        break;
        case 2: wear = ITEM_WEAR_NECK;
        sprintf( name, "Necklace" );
        break;
        case 3: wear = ITEM_WEAR_BODY;
        sprintf( name, "Armor" );
        break;
        case 4: wear = ITEM_WEAR_HEAD;
        sprintf( name, "Helmet" );
        break;
        case 5: wear = ITEM_WEAR_LEGS;
        sprintf( name, "Leggings" );
        break;
        case 6: wear = ITEM_WEAR_FEET;
        sprintf( name, "Boots" );
        break;
        case 7: wear = ITEM_WEAR_HANDS;
        sprintf( name, "Gauntlets" );
        break;
        case 8: wear = ITEM_WEAR_ARMS;
        sprintf( name, "Sleeves" );
        break;
        case 9: wear = ITEM_WEAR_ABOUT;
        sprintf( name, "Cloak" );
        break;
        case 10: wear = ITEM_WEAR_WAIST;
        sprintf( name, "Belt" );
        break;
        case 11: wear = ITEM_WEAR_WRIST;
        sprintf( name, "Bracelet" );
        break;
        case 12: wear = ITEM_WEAR_FACE;
        sprintf( name, "Mask" );
        break;
        }
        SET_BIT( obj->wear_flags, wear );
        obj->item_type = ITEM_ARMOR;
        sprintf( ooga ,"#RRu#rn#ne #7pl#na#rt#Red#n #7%s#n", name );
        free_string( obj->short_descr );
        obj->short_descr = str_dup( ooga );
        sprintf( ooga ,"#RRu#rn#ne #7pl#na#rt#Red#n #7%s#n lies on the ground.", name );
        free_string( obj->description );
        obj->description = str_dup( ooga );
        sprintf( ooga, "Rare %s ", name );
        free_string( obj->name );
        obj->name = str_dup( ooga );
        obj_to_char( obj, ch ); obj->questowner = str_dup(ch->pcdata->switchname);
        act( "$p #7appears in your hands in a great #Ye#yxplosion#7.#n", ch, obj, NULL, TO_CHAR );
        act( "$p #7appears in $n's hands in a great #Ye#yxplosion#7.#n", ch, obj, NULL, TO_ROOM );
        stc( "#7You have obtained a piece of Rare armor!#n\n\r", ch );
        }
        }

     void rare_eq9 ( CHAR_DATA * ch, CHAR_DATA * victim )
        {
        OBJ_INDEX_DATA * pObjIndex;
        OBJ_DATA * obj;
        char name [MSL];
        char ooga [MSL];
        int hitroll = 0;
        int damroll = 0;
        int hp      = 0;
        int mana    = 0;
        int move    = 0;
        int wear    = 0;
        int armor   = 0;
        int rnum    = 30037;

        if ( IS_NPC( ch ) )
        return;
        if ( number_range( 1 , 2000 ) == 1 )
        {
        if ( rnum == 0 || ( pObjIndex = get_obj_index( rnum ) ) == NULL )
        {
        stc( "Missing object, please notify a member of the staff.\n\r", ch );
        return;
        }
        obj     = create_object( pObjIndex, 52 );
        hitroll = number_range( 180, 200   );
        damroll = number_range( 180, 200   );
        hp      = number_range( 300, 500   );
        mana    = number_range( 300, 500   );
        move    = number_range( 300, 500   );
        armor   = number_range( -300, -200 );
        add_affect( obj, APPLY_HITROLL, hitroll );
        add_affect( obj, APPLY_DAMROLL, damroll );
        add_affect( obj, APPLY_HIT, hp );
        add_affect( obj, APPLY_MANA, mana );
        add_affect( obj, APPLY_MOVE, move );
        add_affect( obj, APPLY_AC, armor );
        obj->value[0] = 30;

        SET_BIT( obj->quest, QUEST_RELIC );
        SET_BIT( obj->spectype, SITEM_RARE );
        SET_BIT( obj->spectype, SITEM_UNID );
        SET_BIT( obj->wear_flags, ITEM_TAKE );
        wear = number_range( 1, 12 );
        switch ( wear )
        {
        case 1: wear = ITEM_WEAR_FINGER;
        sprintf( name, "Ring" );
        break;
        case 2: wear = ITEM_WEAR_NECK;
        sprintf( name, "Necklace" );
        break;
        case 3: wear = ITEM_WEAR_BODY;
        sprintf( name, "Armor" );
        break;
        case 4: wear = ITEM_WEAR_HEAD;
        sprintf( name, "Helmet" );
        break;
        case 5: wear = ITEM_WEAR_LEGS;
        sprintf( name, "Leggings" );
        break;
        case 6: wear = ITEM_WEAR_FEET;
        sprintf( name, "Boots" );
        break;
        case 7: wear = ITEM_WEAR_HANDS;
        sprintf( name, "Gauntlets" );
        break;
        case 8: wear = ITEM_WEAR_ARMS;
        sprintf( name, "Sleeves" );
        break;
        case 9: wear = ITEM_WEAR_ABOUT;
        sprintf( name, "Cloak" );
        break;
        case 10: wear = ITEM_WEAR_WAIST;
        sprintf( name, "Belt" );
        break;
        case 11: wear = ITEM_WEAR_WRIST;
        sprintf( name, "Bracelet" );
        break;
        case 12: wear = ITEM_WEAR_FACE;
        sprintf( name, "Mask" );
        break;
        }
        SET_BIT( obj->wear_flags, wear );
        obj->item_type = ITEM_ARMOR;
        sprintf( ooga ,"#7O#nb#0s#ni#7d#ni#0a#nn #7P#nl#0a#nt#7e#nd #7%s#n", name );
        free_string( obj->short_descr );
        obj->short_descr = str_dup( ooga );
        sprintf( ooga ,"#7O#nb#0s#ni#7d#ni#0a#nn #7P#nl#0a#nt#7e#nd #7%s#n lies on the ground.", name );
        free_string( obj->description );
        obj->description = str_dup( ooga );
        sprintf( ooga, "Rare %s ", name );
        free_string( obj->name );
        obj->name = str_dup( ooga );
        obj_to_char( obj, ch ); obj->questowner = str_dup(ch->pcdata->switchname);
        act( "$p #7appears in your hands in a great #Ye#yxplosion#7.#n", ch, obj, NULL, TO_CHAR );
        act( "$p #7appears in $n's hands in a great #Ye#yxplosion#7.#n", ch, obj, NULL, TO_ROOM );
        stc( "#7You have obtained a piece of Rare armor!#n\n\r", ch );
        }
        }

     void rare_eq10 ( CHAR_DATA * ch, CHAR_DATA * victim )
        {
        OBJ_INDEX_DATA * pObjIndex;
        OBJ_DATA * obj;
        char name [MSL];
        char ooga [MSL];
        int hitroll = 0;
        int damroll = 0;
        int hp      = 0;
        int mana    = 0;
        int move    = 0;
        int wear    = 0;
        int armor   = 0;
        int rnum    = 30037;

        if ( IS_NPC( ch ) )
        return;
        if ( number_range( 1 , 2000 ) == 1 )
        {
        if ( rnum == 0 || ( pObjIndex = get_obj_index( rnum ) ) == NULL )
        {
        stc( "Missing object, please notify a member of the staff.\n\r", ch );
        return;
        }
        obj     = create_object( pObjIndex, 52 );
        hitroll = number_range( 180, 200   );
        damroll = number_range( 180, 200   );
        hp      = number_range( 300, 500   );
        mana    = number_range( 300, 500   );
        move    = number_range( 300, 500   );
        armor   = number_range( -300, -200 );
        add_affect( obj, APPLY_HITROLL, hitroll );
        add_affect( obj, APPLY_DAMROLL, damroll );
        add_affect( obj, APPLY_HIT, hp );
        add_affect( obj, APPLY_MANA, mana );
        add_affect( obj, APPLY_MOVE, move );
        add_affect( obj, APPLY_AC, armor );
        obj->value[0] = 30;

        SET_BIT( obj->quest, QUEST_RELIC );
        SET_BIT( obj->spectype, SITEM_RARE );
        SET_BIT( obj->spectype, SITEM_UNID );
        SET_BIT( obj->wear_flags, ITEM_TAKE );
        wear = number_range( 1, 12 );
        switch ( wear )
        {
        case 1: wear = ITEM_WEAR_FINGER;
        sprintf( name, "Ring" );
        break;
        case 2: wear = ITEM_WEAR_NECK;
        sprintf( name, "Necklace" );
        break;
        case 3: wear = ITEM_WEAR_BODY;
        sprintf( name, "Armor" );
        break;
        case 4: wear = ITEM_WEAR_HEAD;
        sprintf( name, "Helmet" );
        break;
        case 5: wear = ITEM_WEAR_LEGS;
        sprintf( name, "Leggings" );
        break;
        case 6: wear = ITEM_WEAR_FEET;
        sprintf( name, "Boots" );
        break;
        case 7: wear = ITEM_WEAR_HANDS;
        sprintf( name, "Gauntlets" );
        break;
        case 8: wear = ITEM_WEAR_ARMS;
        sprintf( name, "Sleeves" );
        break;
        case 9: wear = ITEM_WEAR_ABOUT;
        sprintf( name, "Cloak" );
        break;
        case 10: wear = ITEM_WEAR_WAIST;
        sprintf( name, "Belt" );
        break;
        case 11: wear = ITEM_WEAR_WRIST;
        sprintf( name, "Bracelet" );
        break;
        case 12: wear = ITEM_WEAR_FACE;
        sprintf( name, "Mask" );
        break;
        }
        SET_BIT( obj->wear_flags, wear );
        obj->item_type = ITEM_ARMOR;
        sprintf( ooga ,"#yW#0o#yo#nd#ye#0n #yP#nl#ya#0t#ye#nd #7%s#n", name );
        free_string( obj->short_descr );
        obj->short_descr = str_dup( ooga );
        sprintf( ooga ,"#yW#0o#yo#nd#ye#0n #yP#nl#ya#0t#ye#nd #7%s#n lies on the ground.", name );
        free_string( obj->description );
        obj->description = str_dup( ooga );
        sprintf( ooga, "Rare %s ", name );
        free_string( obj->name );
        obj->name = str_dup( ooga );
        obj_to_char( obj, ch ); obj->questowner = str_dup(ch->pcdata->switchname);
        act( "$p #7appears in your hands in a great #Ye#yxplosion#7.#n", ch, obj, NULL, TO_CHAR );
        act( "$p #7appears in $n's hands in a great #Ye#yxplosion#7.#n", ch, obj, NULL, TO_ROOM );
        stc( "#7You have obtained a piece of Rare armor!#n\n\r", ch );
        }
        }

     void rare_eq11 ( CHAR_DATA * ch, CHAR_DATA * victim )
        {
        OBJ_INDEX_DATA * pObjIndex;
        OBJ_DATA * obj;
        char name [MSL];
        char ooga [MSL];
        int hitroll = 0;
        int damroll = 0;
        int hp      = 0;
        int mana    = 0;
        int move    = 0;
        int wear    = 0;
        int armor   = 0;
        int rnum    = 30037;

        if ( IS_NPC( ch ) )
        return;
        if ( number_range( 1 , 2000 ) == 1 )
        {
        if ( rnum == 0 || ( pObjIndex = get_obj_index( rnum ) ) == NULL )
        {
        stc( "Missing object, please notify a member of the staff.\n\r", ch );
        return;
        }
        obj     = create_object( pObjIndex, 52 );
        hitroll = number_range( 180, 200   );
        damroll = number_range( 180, 200   );
        hp      = number_range( 300, 500   );
        mana    = number_range( 300, 500   );
        move    = number_range( 300, 500   );
        armor   = number_range( -300, -200 );
        add_affect( obj, APPLY_HITROLL, hitroll );
        add_affect( obj, APPLY_DAMROLL, damroll );
        add_affect( obj, APPLY_HIT, hp );
        add_affect( obj, APPLY_MANA, mana );
        add_affect( obj, APPLY_MOVE, move );
        add_affect( obj, APPLY_AC, armor );
        obj->value[0] = 30;

        SET_BIT( obj->quest, QUEST_RELIC );
        SET_BIT( obj->spectype, SITEM_RARE );
        SET_BIT( obj->spectype, SITEM_UNID );
        SET_BIT( obj->wear_flags, ITEM_TAKE );
        wear = number_range( 1, 12 );
        switch ( wear )
        {
        case 1: wear = ITEM_WEAR_FINGER;
        sprintf( name, "Ring" );
        break;
        case 2: wear = ITEM_WEAR_NECK;
        sprintf( name, "Necklace" );
        break;
        case 3: wear = ITEM_WEAR_BODY;
        sprintf( name, "Armor" );
        break;
        case 4: wear = ITEM_WEAR_HEAD;
        sprintf( name, "Helmet" );
        break;
        case 5: wear = ITEM_WEAR_LEGS;
        sprintf( name, "Leggings" );
        break;
        case 6: wear = ITEM_WEAR_FEET;
        sprintf( name, "Boots" );
        break;
        case 7: wear = ITEM_WEAR_HANDS;
        sprintf( name, "Gauntlets" );
        break;
        case 8: wear = ITEM_WEAR_ARMS;
        sprintf( name, "Sleeves" );
        break;
        case 9: wear = ITEM_WEAR_ABOUT;
        sprintf( name, "Cloak" );
        break;
        case 10: wear = ITEM_WEAR_WAIST;
        sprintf( name, "Belt" );
        break;
        case 11: wear = ITEM_WEAR_WRIST;
        sprintf( name, "Bracelet" );
        break;
        case 12: wear = ITEM_WEAR_FACE;
        sprintf( name, "Mask" );
        break;
        }
        SET_BIT( obj->wear_flags, wear );
        obj->item_type = ITEM_ARMOR;
        sprintf( ooga ,"#7S#nh#7a#nt#7t#ne#7r#ne#7d #CC#cr#7y#Cs#ct#7a#Cl#ci#7n#Ce#n #7%s#n", name );
        free_string( obj->short_descr );
        obj->short_descr = str_dup( ooga );
        sprintf( ooga ,"#7S#nh#7a#nt#7t#ne#7r#ne#7d #CC#cr#7y#Cs#ct#7a#Cl#ci#7n#Ce#n #7%s#n lies on the ground.", name );
        free_string( obj->description );
        obj->description = str_dup( ooga );
        sprintf( ooga, "Rare %s ", name );
        free_string( obj->name );
        obj->name = str_dup( ooga );
        obj_to_char( obj, ch ); obj->questowner = str_dup(ch->pcdata->switchname);
        act( "$p #7appears in your hands in a great #Ye#yxplosion#7.#n", ch, obj, NULL, TO_CHAR );
        act( "$p #7appears in $n's hands in a great #Ye#yxplosion#7.#n", ch, obj, NULL, TO_ROOM );
        stc( "#7You have obtained a piece of Rare armor!#n\n\r", ch );
        }
        }

     void rare_eq12 ( CHAR_DATA * ch, CHAR_DATA * victim )
        {
        OBJ_INDEX_DATA * pObjIndex;
        OBJ_DATA * obj;
        char name [MSL];
        char ooga [MSL];
        int hitroll = 0;
        int damroll = 0;
        int hp      = 0;
        int mana    = 0;
        int move    = 0;
        int wear    = 0;
        int armor   = 0;
        int rnum    = 30037;

        if ( IS_NPC( ch ) )
        return;
        if ( number_range( 1 , 2000 ) == 1 )
        {
        if ( rnum == 0 || ( pObjIndex = get_obj_index( rnum ) ) == NULL )
        {
        stc( "Missing object, please notify a member of the staff.\n\r", ch );
        return;
        }
        obj     = create_object( pObjIndex, 52 );
        hitroll = number_range( 180, 200   );
        damroll = number_range( 180, 200   );
        hp      = number_range( 300, 500   );
        mana    = number_range( 300, 500   );
        move    = number_range( 300, 500   );
        armor   = number_range( -300, -200 );
        add_affect( obj, APPLY_HITROLL, hitroll );
        add_affect( obj, APPLY_DAMROLL, damroll );
        add_affect( obj, APPLY_HIT, hp );
        add_affect( obj, APPLY_MANA, mana );
        add_affect( obj, APPLY_MOVE, move );
        add_affect( obj, APPLY_AC, armor );
        obj->value[0] = 30;

        SET_BIT( obj->quest, QUEST_RELIC );
        SET_BIT( obj->spectype, SITEM_RARE );
        SET_BIT( obj->spectype, SITEM_UNID );
        SET_BIT( obj->wear_flags, ITEM_TAKE );
        wear = number_range( 1, 12 );
        switch ( wear )
        {
        case 1: wear = ITEM_WEAR_FINGER;
        sprintf( name, "Ring" );
        break;
        case 2: wear = ITEM_WEAR_NECK;
        sprintf( name, "Necklace" );
        break;
        case 3: wear = ITEM_WEAR_BODY;
        sprintf( name, "Armor" );
        break;
        case 4: wear = ITEM_WEAR_HEAD;
        sprintf( name, "Helmet" );
        break;
        case 5: wear = ITEM_WEAR_LEGS;
        sprintf( name, "Leggings" );
        break;
        case 6: wear = ITEM_WEAR_FEET;
        sprintf( name, "Boots" );
        break;
        case 7: wear = ITEM_WEAR_HANDS;
        sprintf( name, "Gauntlets" );
        break;
        case 8: wear = ITEM_WEAR_ARMS;
        sprintf( name, "Sleeves" );
        break;
        case 9: wear = ITEM_WEAR_ABOUT;
        sprintf( name, "Cloak" );
        break;
        case 10: wear = ITEM_WEAR_WAIST;
        sprintf( name, "Belt" );
        break;
        case 11: wear = ITEM_WEAR_WRIST;
        sprintf( name, "Bracelet" );
        break;
        case 12: wear = ITEM_WEAR_FACE;
        sprintf( name, "Mask" );
        break;
        }
        SET_BIT( obj->wear_flags, wear );
        obj->item_type = ITEM_ARMOR;
        sprintf( ooga ,"#RCh#ra#no#0t#ri#7c #rI#0m#nb#ru#Red#n #7%s#n", name );
        free_string( obj->short_descr );
        obj->short_descr = str_dup( ooga );
        sprintf( ooga ,"#RCh#ra#no#0t#ri#7c #rI#0m#nb#ru#Red#n #7%s#n lies on the ground.", name );
        free_string( obj->description );
        obj->description = str_dup( ooga );
        sprintf( ooga, "Rare %s ", name );
        free_string( obj->name );
        obj->name = str_dup( ooga );
        obj_to_char( obj, ch ); obj->questowner = str_dup(ch->pcdata->switchname);
        act( "$p #7appears in your hands in a great #Ye#yxplosion#7.#n", ch, obj, NULL, TO_CHAR );
        act( "$p #7appears in $n's hands in a great #Ye#yxplosion#7.#n", ch, obj, NULL, TO_ROOM );
        stc( "#7You have obtained a piece of Rare armor!#n\n\r", ch );
        }
        }

     void rare_eq13 ( CHAR_DATA * ch, CHAR_DATA * victim )
        {
        OBJ_INDEX_DATA * pObjIndex;
        OBJ_DATA * obj;
        char name [MSL];
        char ooga [MSL];
        int hitroll = 0;
        int damroll = 0;
        int hp      = 0;
        int mana    = 0;
        int move    = 0;
        int wear    = 0;
        int armor   = 0;
        int rnum    = 30037;

        if ( IS_NPC( ch ) )
        return;
        if ( number_range( 1 , 2000 ) == 1 )
        {
        if ( rnum == 0 || ( pObjIndex = get_obj_index( rnum ) ) == NULL )
        {
        stc( "Missing object, please notify a member of the staff.\n\r", ch );
        return;
        }
        obj     = create_object( pObjIndex, 52 );
        hitroll = number_range( 180, 200   );
        damroll = number_range( 180, 200   );
        hp      = number_range( 300, 500   );
        mana    = number_range( 300, 500   );
        move    = number_range( 300, 500   );
        armor   = number_range( -300, -200 );
        add_affect( obj, APPLY_HITROLL, hitroll );
        add_affect( obj, APPLY_DAMROLL, damroll );
        add_affect( obj, APPLY_HIT, hp );
        add_affect( obj, APPLY_MANA, mana );
        add_affect( obj, APPLY_MOVE, move );
        add_affect( obj, APPLY_AC, armor );
        obj->value[0] = 30;

        SET_BIT( obj->quest, QUEST_RELIC );
        SET_BIT( obj->spectype, SITEM_RARE );
        SET_BIT( obj->spectype, SITEM_UNID );
        SET_BIT( obj->wear_flags, ITEM_TAKE );
        wear = number_range( 1, 12 );
        switch ( wear )
        {
        case 1: wear = ITEM_WEAR_FINGER;
        sprintf( name, "Ring" );
        break;
        case 2: wear = ITEM_WEAR_NECK;
        sprintf( name, "Necklace" );
        break;
        case 3: wear = ITEM_WEAR_BODY;
        sprintf( name, "Armor" );
        break;
        case 4: wear = ITEM_WEAR_HEAD;
        sprintf( name, "Helmet" );
        break;
        case 5: wear = ITEM_WEAR_LEGS;
        sprintf( name, "Leggings" );
        break;
        case 6: wear = ITEM_WEAR_FEET;
        sprintf( name, "Boots" );
        break;
        case 7: wear = ITEM_WEAR_HANDS;
        sprintf( name, "Gauntlets" );
        break;
        case 8: wear = ITEM_WEAR_ARMS;
        sprintf( name, "Sleeves" );
        break;
        case 9: wear = ITEM_WEAR_ABOUT;
        sprintf( name, "Cloak" );
        break;
        case 10: wear = ITEM_WEAR_WAIST;
        sprintf( name, "Belt" );
        break;
        case 11: wear = ITEM_WEAR_WRIST;
        sprintf( name, "Bracelet" );
        break;
        case 12: wear = ITEM_WEAR_FACE;
        sprintf( name, "Mask" );
        break;
        }
        SET_BIT( obj->wear_flags, wear );
        obj->item_type = ITEM_ARMOR;
        sprintf( ooga ,"#GLi#gm#0e#ns#yt#7o#yn#ne #0O#gp#Gal#n #7%s#n", name );
        free_string( obj->short_descr );
        obj->short_descr = str_dup( ooga );
        sprintf( ooga ,"#GLi#gm#0e#ns#yt#7o#yn#ne #0O#gp#Gal#n #7%s#n lies on the ground.", name );
        free_string( obj->description );
        obj->description = str_dup( ooga );
        sprintf( ooga, "Rare %s ", name );
        free_string( obj->name );
        obj->name = str_dup( ooga );
        obj_to_char( obj, ch ); obj->questowner = str_dup(ch->pcdata->switchname);
        act( "$p #7appears in your hands in a great #Ye#yxplosion#7.#n", ch, obj, NULL, TO_CHAR );
        act( "$p #7appears in $n's hands in a great #Ye#yxplosion#7.#n", ch, obj, NULL, TO_ROOM );
        stc( "#7You have obtained a piece of Rare armor!#n\n\r", ch );
        }
        }

     void rare_eq14 ( CHAR_DATA * ch, CHAR_DATA * victim )
        {
        OBJ_INDEX_DATA * pObjIndex;
        OBJ_DATA * obj;
        char name [MSL];
        char ooga [MSL];
        int hitroll = 0;
        int damroll = 0;
        int hp      = 0;
        int mana    = 0;
        int move    = 0;
        int wear    = 0;
        int armor   = 0;
        int rnum    = 30037;

        if ( IS_NPC( ch ) )
        return;
        if ( number_range( 1 , 2000 ) == 1 )
        {
        if ( rnum == 0 || ( pObjIndex = get_obj_index( rnum ) ) == NULL )
        {
        stc( "Missing object, please notify a member of the staff.\n\r", ch );
        return;
        }
        obj     = create_object( pObjIndex, 52 );
        hitroll = number_range( 180, 200   );
        damroll = number_range( 180, 200   );
        hp      = number_range( 300, 500   );
        mana    = number_range( 300, 500   );
        move    = number_range( 300, 500   );
        armor   = number_range( -300, -200 );
        add_affect( obj, APPLY_HITROLL, hitroll );
        add_affect( obj, APPLY_DAMROLL, damroll );
        add_affect( obj, APPLY_HIT, hp );
        add_affect( obj, APPLY_MANA, mana );
        add_affect( obj, APPLY_MOVE, move );
        add_affect( obj, APPLY_AC, armor );
        obj->value[0] = 30;

        SET_BIT( obj->quest, QUEST_RELIC );
        SET_BIT( obj->spectype, SITEM_RARE );
        SET_BIT( obj->spectype, SITEM_UNID );
        SET_BIT( obj->wear_flags, ITEM_TAKE );
        wear = number_range( 1, 12 );
        switch ( wear )
        {
        case 1: wear = ITEM_WEAR_FINGER;
        sprintf( name, "Ring" );
        break;
        case 2: wear = ITEM_WEAR_NECK;
        sprintf( name, "Necklace" );
        break;
        case 3: wear = ITEM_WEAR_BODY;
        sprintf( name, "Armor" );
        break;
        case 4: wear = ITEM_WEAR_HEAD;
        sprintf( name, "Helmet" );
        break;
        case 5: wear = ITEM_WEAR_LEGS;
        sprintf( name, "Leggings" );
        break;
        case 6: wear = ITEM_WEAR_FEET;
        sprintf( name, "Boots" );
        break;
        case 7: wear = ITEM_WEAR_HANDS;
        sprintf( name, "Gauntlets" );
        break;
        case 8: wear = ITEM_WEAR_ARMS;
        sprintf( name, "Sleeves" );
        break;
        case 9: wear = ITEM_WEAR_ABOUT;
        sprintf( name, "Cloak" );
        break;
        case 10: wear = ITEM_WEAR_WAIST;
        sprintf( name, "Belt" );
        break;
        case 11: wear = ITEM_WEAR_WRIST;
        sprintf( name, "Bracelet" );
        break;
        case 12: wear = ITEM_WEAR_FACE;
        sprintf( name, "Mask" );
        break;
        }
        SET_BIT( obj->wear_flags, wear );
        obj->item_type = ITEM_ARMOR;
        sprintf( ooga ,"#gVe#Gn#7o#nm #0St#na#7i#Gn#ged#n #7%s#n", name );
        free_string( obj->short_descr );
        obj->short_descr = str_dup( ooga );
        sprintf( ooga ,"#gVe#Gn#7o#nm #0St#na#7i#Gn#ged#n #7%s#n lies on the ground.", name );
        free_string( obj->description );
        obj->description = str_dup( ooga );
        sprintf( ooga, "Rare %s ", name );
        free_string( obj->name );
        obj->name = str_dup( ooga );
        obj_to_char( obj, ch ); obj->questowner = str_dup(ch->pcdata->switchname);
        act( "$p #7appears in your hands in a great #Ye#yxplosion#7.#n", ch, obj, NULL, TO_CHAR );
        act( "$p #7appears in $n's hands in a great #Ye#yxplosion#7.#n", ch, obj, NULL, TO_ROOM );
        stc( "#7You have obtained a piece of Rare armor!#n\n\r", ch );
        }
        }

     void rare_eq15 ( CHAR_DATA * ch, CHAR_DATA * victim )
        {
        OBJ_INDEX_DATA * pObjIndex;
        OBJ_DATA * obj;
        char name [MSL];
        char ooga [MSL];
        int hitroll = 0;
        int damroll = 0;
        int hp      = 0;
        int mana    = 0;
        int move    = 0;
        int wear    = 0;
        int armor   = 0;
        int rnum    = 30037;

        if ( IS_NPC( ch ) )
        return;
        if ( number_range( 1 , 2000 ) == 1 )
        {
        if ( rnum == 0 || ( pObjIndex = get_obj_index( rnum ) ) == NULL )
        {
        stc( "Missing object, please notify a member of the staff.\n\r", ch );
        return;
        }
        obj     = create_object( pObjIndex, 52 );
        hitroll = number_range( 180, 200   );
        damroll = number_range( 180, 200   );
        hp      = number_range( 300, 500   );
        mana    = number_range( 300, 500   );
        move    = number_range( 300, 500   );
        armor   = number_range( -300, -200 );
        add_affect( obj, APPLY_HITROLL, hitroll );
        add_affect( obj, APPLY_DAMROLL, damroll );
        add_affect( obj, APPLY_HIT, hp );
        add_affect( obj, APPLY_MANA, mana );
        add_affect( obj, APPLY_MOVE, move );
        add_affect( obj, APPLY_AC, armor );
        obj->value[0] = 30;

        SET_BIT( obj->quest, QUEST_RELIC );
        SET_BIT( obj->spectype, SITEM_RARE );
        SET_BIT( obj->spectype, SITEM_UNID );
        SET_BIT( obj->wear_flags, ITEM_TAKE );
        wear = number_range( 1, 12 );
        switch ( wear )
        {
        case 1: wear = ITEM_WEAR_FINGER;
        sprintf( name, "Ring" );
        break;
        case 2: wear = ITEM_WEAR_NECK;
        sprintf( name, "Necklace" );
        break;
        case 3: wear = ITEM_WEAR_BODY;
        sprintf( name, "Armor" );
        break;
        case 4: wear = ITEM_WEAR_HEAD;
        sprintf( name, "Helmet" );
        break;
        case 5: wear = ITEM_WEAR_LEGS;
        sprintf( name, "Leggings" );
        break;
        case 6: wear = ITEM_WEAR_FEET;
        sprintf( name, "Boots" );
        break;
        case 7: wear = ITEM_WEAR_HANDS;
        sprintf( name, "Gauntlets" );
        break;
        case 8: wear = ITEM_WEAR_ARMS;
        sprintf( name, "Sleeves" );
        break;
        case 9: wear = ITEM_WEAR_ABOUT;
        sprintf( name, "Cloak" );
        break;
        case 10: wear = ITEM_WEAR_WAIST;
        sprintf( name, "Belt" );
        break;
        case 11: wear = ITEM_WEAR_WRIST;
        sprintf( name, "Bracelet" );
        break;
        case 12: wear = ITEM_WEAR_FACE;
        sprintf( name, "Mask" );
        break;
        }
        SET_BIT( obj->wear_flags, wear );
        obj->item_type = ITEM_ARMOR;
        sprintf( ooga ,"#7B#no#0n#ne#7w#ne#0a#nv#7e#nd #0S#ni#7l#nk #7%s#n", name );
        free_string( obj->short_descr );
        obj->short_descr = str_dup( ooga );
        sprintf( ooga ,"#7B#no#0n#ne#7w#ne#0a#nv#7e#nd #0S#ni#7l#n #7%s#n lies on the ground.", name );
        free_string( obj->description );
        obj->description = str_dup( ooga );
        sprintf( ooga, "Rare %s ", name );
        free_string( obj->name );
        obj->name = str_dup( ooga );
        obj_to_char( obj, ch ); obj->questowner = str_dup(ch->pcdata->switchname);
        act( "$p #7appears in your hands in a great #Ye#yxplosion#7.#n", ch, obj, NULL, TO_CHAR );
        act( "$p #7appears in $n's hands in a great #Ye#yxplosion#7.#n", ch, obj, NULL, TO_ROOM );
        stc( "#7You have obtained a piece of Rare armor!#n\n\r", ch );
        }
        }

     void rare_eq16 ( CHAR_DATA * ch, CHAR_DATA * victim )
        {
        OBJ_INDEX_DATA * pObjIndex;
        OBJ_DATA * obj;
        char name [MSL];
        char ooga [MSL];
        int hitroll = 0;
        int damroll = 0;
        int hp      = 0;
        int mana    = 0;
        int move    = 0;
        int wear    = 0;
        int armor   = 0;
        int rnum    = 30037;

        if ( IS_NPC( ch ) )
        return;
        if ( number_range( 1 , 2000 ) == 1 )
        {
        if ( rnum == 0 || ( pObjIndex = get_obj_index( rnum ) ) == NULL )
        {
        stc( "Missing object, please notify a member of the staff.\n\r", ch );
        return;
        }
        obj     = create_object( pObjIndex, 52 );
        hitroll = number_range( 180, 200   );
        damroll = number_range( 180, 200   );
        hp      = number_range( 300, 500   );
        mana    = number_range( 300, 500   );
        move    = number_range( 300, 500   );
        armor   = number_range( -300, -200 );
        add_affect( obj, APPLY_HITROLL, hitroll );
        add_affect( obj, APPLY_DAMROLL, damroll );
        add_affect( obj, APPLY_HIT, hp );
        add_affect( obj, APPLY_MANA, mana );
        add_affect( obj, APPLY_MOVE, move );
        add_affect( obj, APPLY_AC, armor );
        obj->value[0] = 30;

        SET_BIT( obj->quest, QUEST_RELIC );
        SET_BIT( obj->spectype, SITEM_RARE );
        SET_BIT( obj->spectype, SITEM_UNID );
        SET_BIT( obj->wear_flags, ITEM_TAKE );
        wear = number_range( 1, 12 );
        switch ( wear )
        {
        case 1: wear = ITEM_WEAR_FINGER;
        sprintf( name, "Ring" );
        break;
        case 2: wear = ITEM_WEAR_NECK;
        sprintf( name, "Necklace" );
        break;
        case 3: wear = ITEM_WEAR_BODY;
        sprintf( name, "Armor" );
        break;
        case 4: wear = ITEM_WEAR_HEAD;
        sprintf( name, "Helmet" );
        break;
        case 5: wear = ITEM_WEAR_LEGS;
        sprintf( name, "Leggings" );
        break;
        case 6: wear = ITEM_WEAR_FEET;
        sprintf( name, "Boots" );
        break;
        case 7: wear = ITEM_WEAR_HANDS;
        sprintf( name, "Gauntlets" );
        break;
        case 8: wear = ITEM_WEAR_ARMS;
        sprintf( name, "Sleeves" );
        break;
        case 9: wear = ITEM_WEAR_ABOUT;
        sprintf( name, "Cloak" );
        break;
        case 10: wear = ITEM_WEAR_WAIST;
        sprintf( name, "Belt" );
        break;
        case 11: wear = ITEM_WEAR_WRIST;
        sprintf( name, "Bracelet" );
        break;
        case 12: wear = ITEM_WEAR_FACE;
        sprintf( name, "Mask" );
        break;
        }
        SET_BIT( obj->wear_flags, wear );
        obj->item_type = ITEM_ARMOR;
        sprintf( ooga ,"#RP#ru#0r#ne #RH#re#0l#nl#Rf#ri#0r#ne #7%s#n", name );
        free_string( obj->short_descr );
        obj->short_descr = str_dup( ooga );
        sprintf( ooga ,"#RP#ru#0r#ne #RH#re#0l#nl#Rf#ri#0r#ne #7%s#n lies on the ground.", name );
        free_string( obj->description );
        obj->description = str_dup( ooga );
        sprintf( ooga, "Rare %s ", name );
        free_string( obj->name );
        obj->name = str_dup( ooga );
        obj_to_char( obj, ch ); obj->questowner = str_dup(ch->pcdata->switchname);
        act( "$p #7appears in your hands in a great #Ye#yxplosion#7.#n", ch, obj, NULL, TO_CHAR );
        act( "$p #7appears in $n's hands in a great #Ye#yxplosion#7.#n", ch, obj, NULL, TO_ROOM );
        stc( "#7You have obtained a piece of Rare armor!#n\n\r", ch );
        }
        }

     void rare_eq17 ( CHAR_DATA * ch, CHAR_DATA * victim )
        {
        OBJ_INDEX_DATA * pObjIndex;
        OBJ_DATA * obj;
        char name [MSL];
        char ooga [MSL];
        int hitroll = 0;
        int damroll = 0;
        int hp      = 0;
        int mana    = 0;
        int move    = 0;
        int wear    = 0;
        int armor   = 0;
        int rnum    = 30037;

        if ( IS_NPC( ch ) )
        return;
        if ( number_range( 1 , 2000 ) == 1 )
        {
        if ( rnum == 0 || ( pObjIndex = get_obj_index( rnum ) ) == NULL )
        {
        stc( "Missing object, please notify a member of the staff.\n\r", ch );
        return;
        }
        obj     = create_object( pObjIndex, 52 );
        hitroll = number_range( 180, 200   );
        damroll = number_range( 180, 200   );
        hp      = number_range( 300, 500   );
        mana    = number_range( 300, 500   );
        move    = number_range( 300, 500   );
        armor   = number_range( -300, -200 );
        add_affect( obj, APPLY_HITROLL, hitroll );
        add_affect( obj, APPLY_DAMROLL, damroll );
        add_affect( obj, APPLY_HIT, hp );
        add_affect( obj, APPLY_MANA, mana );
        add_affect( obj, APPLY_MOVE, move );
        add_affect( obj, APPLY_AC, armor );
        obj->value[0] = 30;

        SET_BIT( obj->quest, QUEST_RELIC );
        SET_BIT( obj->spectype, SITEM_RARE );
        SET_BIT( obj->spectype, SITEM_UNID );
        SET_BIT( obj->wear_flags, ITEM_TAKE );
        wear = number_range( 1, 12 );
        switch ( wear )
        {
        case 1: wear = ITEM_WEAR_FINGER;
        sprintf( name, "Ring" );
        break;
        case 2: wear = ITEM_WEAR_NECK;
        sprintf( name, "Necklace" );
        break;
        case 3: wear = ITEM_WEAR_BODY;
        sprintf( name, "Armor" );
        break;
        case 4: wear = ITEM_WEAR_HEAD;
        sprintf( name, "Helmet" );
        break;
        case 5: wear = ITEM_WEAR_LEGS;
        sprintf( name, "Leggings" );
        break;
        case 6: wear = ITEM_WEAR_FEET;
        sprintf( name, "Boots" );
        break;
        case 7: wear = ITEM_WEAR_HANDS;
        sprintf( name, "Gauntlets" );
        break;
        case 8: wear = ITEM_WEAR_ARMS;
        sprintf( name, "Sleeves" );
        break;
        case 9: wear = ITEM_WEAR_ABOUT;
        sprintf( name, "Cloak" );
        break;
        case 10: wear = ITEM_WEAR_WAIST;
        sprintf( name, "Belt" );
        break;
        case 11: wear = ITEM_WEAR_WRIST;
        sprintf( name, "Bracelet" );
        break;
        case 12: wear = ITEM_WEAR_FACE;
        sprintf( name, "Mask" );
        break;
        }
        SET_BIT( obj->wear_flags, wear );
        obj->item_type = ITEM_ARMOR;
        sprintf( ooga ,"#0H#7o#0r#nn #0C#no#0v#7e#0r#ne#0d#n #7%s#n", name );
        free_string( obj->short_descr );
        obj->short_descr = str_dup( ooga );
        sprintf( ooga ,"#0H#7o#0r#nn #0C#no#0v#7e#0r#ne#0d#n #7%s#n lies on the ground.", name );
        free_string( obj->description );
        obj->description = str_dup( ooga );
        sprintf( ooga, "Rare %s ", name );
        free_string( obj->name );
        obj->name = str_dup( ooga );
        obj_to_char( obj, ch ); obj->questowner = str_dup(ch->pcdata->switchname);
        act( "$p #7appears in your hands in a great #Ye#yxplosion#7.#n", ch, obj, NULL, TO_CHAR );
        act( "$p #7appears in $n's hands in a great #Ye#yxplosion#7.#n", ch, obj, NULL, TO_ROOM );
        stc( "#7You have obtained a piece of Rare armor!#n\n\r", ch );
        }
        }

     void rare_eq18 ( CHAR_DATA * ch, CHAR_DATA * victim )
        {
        OBJ_INDEX_DATA * pObjIndex;
        OBJ_DATA * obj;
        char name [MSL];
        char ooga [MSL];
        int hitroll = 0;
        int damroll = 0;
        int hp      = 0;
        int mana    = 0;
        int move    = 0;
        int wear    = 0;
        int armor   = 0;
        int rnum    = 30037;

        if ( IS_NPC( ch ) )
        return;
        if ( number_range( 1 , 2000 ) == 1 )
        {
        if ( rnum == 0 || ( pObjIndex = get_obj_index( rnum ) ) == NULL )
        {
        stc( "Missing object, please notify a member of the staff.\n\r", ch );
        return;
        }
        obj     = create_object( pObjIndex, 52 );
        hitroll = number_range( 180, 200   );
        damroll = number_range( 180, 200   );
        hp      = number_range( 300, 500   );
        mana    = number_range( 300, 500   );
        move    = number_range( 300, 500   );
        armor   = number_range( -300, -200 );
        add_affect( obj, APPLY_HITROLL, hitroll );
        add_affect( obj, APPLY_DAMROLL, damroll );
        add_affect( obj, APPLY_HIT, hp );
        add_affect( obj, APPLY_MANA, mana );
        add_affect( obj, APPLY_MOVE, move );
        add_affect( obj, APPLY_AC, armor );
        obj->value[0] = 30;

        SET_BIT( obj->quest, QUEST_RELIC );
        SET_BIT( obj->spectype, SITEM_RARE );
        SET_BIT( obj->spectype, SITEM_UNID );
        SET_BIT( obj->wear_flags, ITEM_TAKE );
        wear = number_range( 1, 12 );
        switch ( wear )
        {
        case 1: wear = ITEM_WEAR_FINGER;
        sprintf( name, "Ring" );
        break;
        case 2: wear = ITEM_WEAR_NECK;
        sprintf( name, "Necklace" );
        break;
        case 3: wear = ITEM_WEAR_BODY;
        sprintf( name, "Armor" );
        break;
        case 4: wear = ITEM_WEAR_HEAD;
        sprintf( name, "Helmet" );
        break;
        case 5: wear = ITEM_WEAR_LEGS;
        sprintf( name, "Leggings" );
        break;
        case 6: wear = ITEM_WEAR_FEET;
        sprintf( name, "Boots" );
        break;
        case 7: wear = ITEM_WEAR_HANDS;
        sprintf( name, "Gauntlets" );
        break;
        case 8: wear = ITEM_WEAR_ARMS;
        sprintf( name, "Sleeves" );
        break;
        case 9: wear = ITEM_WEAR_ABOUT;
        sprintf( name, "Cloak" );
        break;
        case 10: wear = ITEM_WEAR_WAIST;
        sprintf( name, "Belt" );
        break;
        case 11: wear = ITEM_WEAR_WRIST;
        sprintf( name, "Bracelet" );
        break;
        case 12: wear = ITEM_WEAR_FACE;
        sprintf( name, "Mask" );
        break;
        }
        SET_BIT( obj->wear_flags, wear );
        obj->item_type = ITEM_ARMOR;
        sprintf( ooga ,"#YA#yn#nc#7i#ne#yn#Yt #7S#nh#0a#nd#7ow#n #7%s#n", name );
        free_string( obj->short_descr );
        obj->short_descr = str_dup( ooga );
        sprintf( ooga ,"#YA#yn#nc#7i#ne#yn#Yt #7S#nh#0a#nd#7ow#n #7%s#n lies on the ground.", name );
        free_string( obj->description );
        obj->description = str_dup( ooga );
        sprintf( ooga, "Rare %s ", name );
        free_string( obj->name );
        obj->name = str_dup( ooga );
        obj_to_char( obj, ch ); obj->questowner = str_dup(ch->pcdata->switchname);
        act( "$p #7appears in your hands in a great #Ye#yxplosion#7.#n", ch, obj, NULL, TO_CHAR );
        act( "$p #7appears in $n's hands in a great #Ye#yxplosion#7.#n", ch, obj, NULL, TO_ROOM );
        stc( "#7You have obtained a piece of Rare armor!#n\n\r", ch );
        }
        }

     void rare_eq19 ( CHAR_DATA * ch, CHAR_DATA * victim )
        {
        OBJ_INDEX_DATA * pObjIndex;
        OBJ_DATA * obj;
        char name [MSL];
        char ooga [MSL];
        int hitroll = 0;
        int damroll = 0;
        int hp      = 0;
        int mana    = 0;
        int move    = 0;
        int wear    = 0;
        int armor   = 0;
        int rnum    = 30037;

        if ( IS_NPC( ch ) )
        return;
        if ( number_range( 1 , 2000 ) == 1 )
        {
        if ( rnum == 0 || ( pObjIndex = get_obj_index( rnum ) ) == NULL )
        {
        stc( "Missing object, please notify a member of the staff.\n\r", ch );
        return;
        }
        obj     = create_object( pObjIndex, 52 );
        hitroll = number_range( 180, 200   );
        damroll = number_range( 180, 200   );
        hp      = number_range( 300, 500   );
        mana    = number_range( 300, 500   );
        move    = number_range( 300, 500   );
        armor   = number_range( -300, -200 );
        add_affect( obj, APPLY_HITROLL, hitroll );
        add_affect( obj, APPLY_DAMROLL, damroll );
        add_affect( obj, APPLY_HIT, hp );
        add_affect( obj, APPLY_MANA, mana );
        add_affect( obj, APPLY_MOVE, move );
        add_affect( obj, APPLY_AC, armor );
        obj->value[0] = 30;

        SET_BIT( obj->quest, QUEST_RELIC );
        SET_BIT( obj->spectype, SITEM_RARE );
        SET_BIT( obj->spectype, SITEM_UNID );
        SET_BIT( obj->wear_flags, ITEM_TAKE );
        wear = number_range( 1, 12 );
        switch ( wear )
        {
        case 1: wear = ITEM_WEAR_FINGER;
        sprintf( name, "Ring" );
        break;
        case 2: wear = ITEM_WEAR_NECK;
        sprintf( name, "Necklace" );
        break;
        case 3: wear = ITEM_WEAR_BODY;
        sprintf( name, "Armor" );
        break;
        case 4: wear = ITEM_WEAR_HEAD;
        sprintf( name, "Helmet" );
        break;
        case 5: wear = ITEM_WEAR_LEGS;
        sprintf( name, "Leggings" );
        break;
        case 6: wear = ITEM_WEAR_FEET;
        sprintf( name, "Boots" );
        break;
        case 7: wear = ITEM_WEAR_HANDS;
        sprintf( name, "Gauntlets" );
        break;
        case 8: wear = ITEM_WEAR_ARMS;
        sprintf( name, "Sleeves" );
        break;
        case 9: wear = ITEM_WEAR_ABOUT;
        sprintf( name, "Cloak" );
        break;
        case 10: wear = ITEM_WEAR_WAIST;
        sprintf( name, "Belt" );
        break;
        case 11: wear = ITEM_WEAR_WRIST;
        sprintf( name, "Bracelet" );
        break;
        case 12: wear = ITEM_WEAR_FACE;
        sprintf( name, "Mask" );
        break;
        }
        SET_BIT( obj->wear_flags, wear );
        obj->item_type = ITEM_ARMOR;
        sprintf( ooga ,"#LS#lk#ny #7Gu#na#lr#Ld#n #7%s#n", name );
        free_string( obj->short_descr );
        obj->short_descr = str_dup( ooga );
        sprintf( ooga ,"#LS#lk#ny #7Gu#na#lr#Ld#n #7%s#n lies on the ground.", name );
        free_string( obj->description );
        obj->description = str_dup( ooga );
        sprintf( ooga, "Rare %s ", name );
        free_string( obj->name );
        obj->name = str_dup( ooga );
        obj_to_char( obj, ch ); obj->questowner = str_dup(ch->pcdata->switchname);
        act( "$p #7appears in your hands in a great #Ye#yxplosion#7.#n", ch, obj, NULL, TO_CHAR );
        act( "$p #7appears in $n's hands in a great #Ye#yxplosion#7.#n", ch, obj, NULL, TO_ROOM );
        stc( "#7You have obtained a piece of Rare armor!#n\n\r", ch );
        }
        }

     void rare_eq20 ( CHAR_DATA * ch, CHAR_DATA * victim )
        {
        OBJ_INDEX_DATA * pObjIndex;
        OBJ_DATA * obj;
        char name [MSL];
        char ooga [MSL];
        int hitroll = 0;
        int damroll = 0;
        int hp      = 0;
        int mana    = 0;
        int move    = 0;
        int wear    = 0;
        int armor   = 0;
        int rnum    = 30037;

        if ( IS_NPC( ch ) )
        return;
        if ( number_range( 1 , 2000 ) == 1 )
        {
        if ( rnum == 0 || ( pObjIndex = get_obj_index( rnum ) ) == NULL )
        {
        stc( "Missing object, please notify a member of the staff.\n\r", ch );
        return;
        }
        obj     = create_object( pObjIndex, 52 );
        hitroll = number_range( 180, 200   );
        damroll = number_range( 180, 200   );
        hp      = number_range( 300, 500   );
        mana    = number_range( 300, 500   );
        move    = number_range( 300, 500   );
        armor   = number_range( -300, -200 );
        add_affect( obj, APPLY_HITROLL, hitroll );
        add_affect( obj, APPLY_DAMROLL, damroll );
        add_affect( obj, APPLY_HIT, hp );
        add_affect( obj, APPLY_MANA, mana );
        add_affect( obj, APPLY_MOVE, move );
        add_affect( obj, APPLY_AC, armor );
        obj->value[0] = 30;

        SET_BIT( obj->quest, QUEST_RELIC );
        SET_BIT( obj->spectype, SITEM_RARE );
        SET_BIT( obj->spectype, SITEM_UNID );
        SET_BIT( obj->wear_flags, ITEM_TAKE );
        wear = number_range( 1, 12 );
        switch ( wear )
        {
        case 1: wear = ITEM_WEAR_FINGER;
        sprintf( name, "Ring" );
        break;
        case 2: wear = ITEM_WEAR_NECK;
        sprintf( name, "Necklace" );
        break;
        case 3: wear = ITEM_WEAR_BODY;
        sprintf( name, "Armor" );
        break;
        case 4: wear = ITEM_WEAR_HEAD;
        sprintf( name, "Helmet" );
        break;
        case 5: wear = ITEM_WEAR_LEGS;
        sprintf( name, "Leggings" );
        break;
        case 6: wear = ITEM_WEAR_FEET;
        sprintf( name, "Boots" );
        break;
        case 7: wear = ITEM_WEAR_HANDS;
        sprintf( name, "Gauntlets" );
        break;
        case 8: wear = ITEM_WEAR_ARMS;
        sprintf( name, "Sleeves" );
        break;
        case 9: wear = ITEM_WEAR_ABOUT;
        sprintf( name, "Cloak" );
        break;
        case 10: wear = ITEM_WEAR_WAIST;
        sprintf( name, "Belt" );
        break;
        case 11: wear = ITEM_WEAR_WRIST;
        sprintf( name, "Bracelet" );
        break;
        case 12: wear = ITEM_WEAR_FACE;
        sprintf( name, "Mask" );
        break;
        }
        SET_BIT( obj->wear_flags, wear );
        obj->item_type = ITEM_ARMOR;
        sprintf( ooga ,"#CS#ca#ncr#ce#Cd #7M#ni#0d#nn#7i#ng#0h#nt#n #7%s#n", name );
        free_string( obj->short_descr );
        obj->short_descr = str_dup( ooga );
        sprintf( ooga ,"#CS#ca#ncr#ce#Cd #7M#ni#0d#nn#7i#ng#0h#nt#n #7%s#n lies on the ground.", name );
        free_string( obj->description );
        obj->description = str_dup( ooga );
        sprintf( ooga, "Rare %s ", name );
        free_string( obj->name );
        obj->name = str_dup( ooga );
        obj_to_char( obj, ch ); obj->questowner = str_dup(ch->pcdata->switchname);
        act( "$p #7appears in your hands in a great #Ye#yxplosion#7.#n", ch, obj, NULL, TO_CHAR );
        act( "$p #7appears in $n's hands in a great #Ye#yxplosion#7.#n", ch, obj, NULL, TO_ROOM );
        stc( "#7You have obtained a piece of Rare armor!#n\n\r", ch );
        }
        }

     void common_eq1 ( CHAR_DATA * ch, CHAR_DATA * victim )
        {
        OBJ_INDEX_DATA * pObjIndex;
        OBJ_DATA * obj;
        char name [MSL];
        char ooga [MSL];
        int hitroll = 0;
        int damroll = 0;
        int hp      = 0;
        int mana    = 0;
        int move    = 0;
        int wear    = 0;
        int armor   = 0;
        int rnum    = 30037;

        if ( IS_NPC( ch ) )
        return;
        if ( number_range( 1 , 100 ) == 1 )
        {
        if ( rnum == 0 || ( pObjIndex = get_obj_index( rnum ) ) == NULL )
        {
        stc( "Missing object, please notify a member of the staff.\n\r", ch );
        return;
        }
        obj     = create_object( pObjIndex, 52 );
        hitroll = number_range( 50, 100 );
        damroll = number_range( 50, 100 );
        hp      = number_range( 100, 200 );
        mana    = number_range( 100, 200 );
        move    = number_range( 100, 200 );
        armor   = number_range( -50, 150 );
        add_affect( obj, APPLY_HITROLL, hitroll );
        add_affect( obj, APPLY_DAMROLL, damroll );
        add_affect( obj, APPLY_HIT, hp );
        add_affect( obj, APPLY_MANA, mana );
        add_affect( obj, APPLY_MOVE, move );
        add_affect( obj, APPLY_AC, armor );
        obj->value[0] = 30;

        SET_BIT( obj->quest, QUEST_RELIC );
        SET_BIT( obj->spectype, SITEM_COMMON );
        SET_BIT( obj->wear_flags, ITEM_TAKE );
        wear = number_range( 1, 12 );
        switch ( wear )
        {
        case 1: wear = ITEM_WEAR_FINGER;
        sprintf( name, "Ring" );
        break;
        case 2: wear = ITEM_WEAR_NECK;
        sprintf( name, "Necklace" );
        break;
        case 3: wear = ITEM_WEAR_BODY;
        sprintf( name, "Armor" );
        break;
        case 4: wear = ITEM_WEAR_HEAD;
        sprintf( name, "Helmet" );
        break;
        case 5: wear = ITEM_WEAR_LEGS;
        sprintf( name, "Leggings" );
        break;
        case 6: wear = ITEM_WEAR_FEET;
        sprintf( name, "Boots" );
        break;
        case 7: wear = ITEM_WEAR_HANDS;
        sprintf( name, "Gauntlets" );
        break;
        case 8: wear = ITEM_WEAR_ARMS;
        sprintf( name, "Sleeves" );
        break;
        case 9: wear = ITEM_WEAR_ABOUT;
        sprintf( name, "Cloak" );
        break;
        case 10: wear = ITEM_WEAR_WAIST;
        sprintf( name, "Belt" );
        break;
        case 11: wear = ITEM_WEAR_WRIST;
        sprintf( name, "Bracelet" );
        break;
        case 12: wear = ITEM_WEAR_FACE;
        sprintf( name, "Mask" );
        break;
        }
        SET_BIT( obj->wear_flags, wear );
        obj->item_type = ITEM_ARMOR;
        sprintf( ooga , "#LD#la#nm#0a#ng#le#Ld #0S#lt#Le#le#0l#n #7%s#n", name );
        free_string( obj->short_descr );
        obj->short_descr = str_dup( ooga );
        sprintf( ooga ,"#LD#la#nm#0a#ng#le#Ld #0S#lt#Le#le#0l#n #7%s#n lies on the ground.", name );
        free_string( obj->description );
        obj->description = str_dup( ooga );
        sprintf( ooga, "Basic %s ", name );
        free_string( obj->name );
        obj->name = str_dup( ooga );
        obj_to_char( obj, ch ); obj->questowner = str_dup(ch->pcdata->switchname);
        act( "$p #7appears in your hands in a great #Ye#yxplosion#7.#n", ch, obj, NULL, TO_CHAR );
        act( "$p #7appears in $n's hands in a great #Ye#yxplosion#7.#n", ch, obj, NULL, TO_ROOM );
        stc( "#7You have obtained a piece of Basic armor!#n\n\r", ch );
        }
        }

     void common_eq2 ( CHAR_DATA * ch, CHAR_DATA * victim )
        {
        OBJ_INDEX_DATA * pObjIndex;
        OBJ_DATA * obj;
        char name [MSL];
        char ooga [MSL];
        int hitroll = 0;
        int damroll = 0;
        int hp      = 0;
        int mana    = 0;
        int move    = 0;
        int wear    = 0;
        int armor   = 0;
        int rnum    = 30037;

        if ( IS_NPC( ch ) )
        return;
        if ( number_range( 1 , 100 ) == 1 )
        {
        if ( rnum == 0 || ( pObjIndex = get_obj_index( rnum ) ) == NULL )
        {
        stc( "Missing object, please notify a member of the staff.\n\r", ch );
        return;
        }
        obj     = create_object( pObjIndex, 52 );
        hitroll = number_range( 50, 100 );
        damroll = number_range( 50, 100 );
        hp      = number_range( 100, 200 );
        mana    = number_range( 100, 200 );
        move    = number_range( 100, 200 );
        armor   = number_range( -50, 150 );
        add_affect( obj, APPLY_HITROLL, hitroll );
        add_affect( obj, APPLY_DAMROLL, damroll );
        add_affect( obj, APPLY_HIT, hp );
        add_affect( obj, APPLY_MANA, mana );
        add_affect( obj, APPLY_MOVE, move );
        add_affect( obj, APPLY_AC, armor );
        obj->value[0] = 30;

        SET_BIT( obj->quest, QUEST_RELIC );
        SET_BIT( obj->spectype, SITEM_COMMON );
        SET_BIT( obj->wear_flags, ITEM_TAKE );
        wear = number_range( 1, 12 );
        switch ( wear )
        {
        case 1: wear = ITEM_WEAR_FINGER;
        sprintf( name, "Ring" );
        break;
        case 2: wear = ITEM_WEAR_NECK;
        sprintf( name, "Necklace" );
        break;
        case 3: wear = ITEM_WEAR_BODY;
        sprintf( name, "Armor" );
        break;
        case 4: wear = ITEM_WEAR_HEAD;
        sprintf( name, "Helmet" );
        break;
        case 5: wear = ITEM_WEAR_LEGS;
        sprintf( name, "Leggings" );
        break;
        case 6: wear = ITEM_WEAR_FEET;
        sprintf( name, "Boots" );
        break;
        case 7: wear = ITEM_WEAR_HANDS;
        sprintf( name, "Gauntlets" );
        break;
        case 8: wear = ITEM_WEAR_ARMS;
        sprintf( name, "Sleeves" );
        break;
        case 9: wear = ITEM_WEAR_ABOUT;
        sprintf( name, "Cloak" );
        break;
        case 10: wear = ITEM_WEAR_WAIST;
        sprintf( name, "Belt" );
        break;
        case 11: wear = ITEM_WEAR_WRIST;
        sprintf( name, "Bracelet" );
        break;
        case 12: wear = ITEM_WEAR_FACE;
        sprintf( name, "Mask" );
        break;
        }
        SET_BIT( obj->wear_flags, wear );
        obj->item_type = ITEM_ARMOR;
        sprintf( ooga ,"#GG#gu#ni#7l#nd#ge#Gd #YC#yo#7pp#ye#Yr#n #7%s#n", name );
        free_string( obj->short_descr );
        obj->short_descr = str_dup( ooga );
        sprintf( ooga ,"#GG#gu#ni#7l#nd#ge#Gd #YC#yo#7pp#ye#Yr#n #7%s#n lies on the ground.", name );
        free_string( obj->description );
        obj->description = str_dup( ooga );
        sprintf( ooga, "Basic %s ", name );
        free_string( obj->name );
        obj->name = str_dup( ooga );
        obj_to_char( obj, ch ); obj->questowner = str_dup(ch->pcdata->switchname);
        act( "$p #7appears in your hands in a great #Ye#yxplosion#7.#n", ch, obj, NULL, TO_CHAR );
        act( "$p #7appears in $n's hands in a great #Ye#yxplosion#7.#n", ch, obj, NULL, TO_ROOM );
        stc( "#7You have obtained a piece of Basic armor!#n\n\r", ch );
        }
        }

     void common_eq3 ( CHAR_DATA * ch, CHAR_DATA * victim )
        {
        OBJ_INDEX_DATA * pObjIndex;
        OBJ_DATA * obj;
        char name [MSL];
        char ooga [MSL];
        int hitroll = 0;
        int damroll = 0;
        int hp      = 0;
        int mana    = 0;
        int move    = 0;
        int wear    = 0;
        int armor   = 0;
        int rnum    = 30037;

        if ( IS_NPC( ch ) )
        return;
        if ( number_range( 1 , 100 ) == 1 )
        {
        if ( rnum == 0 || ( pObjIndex = get_obj_index( rnum ) ) == NULL )
        {
        stc( "Missing object, please notify a member of the staff.\n\r", ch );
        return;
        }
        obj     = create_object( pObjIndex, 52 );
        hitroll = number_range( 50, 100 );
        damroll = number_range( 50, 100 );
        hp      = number_range( 100, 200 );
        mana    = number_range( 100, 200 );
        move    = number_range( 100, 200 );
        armor   = number_range( -50, 150 );
        add_affect( obj, APPLY_HITROLL, hitroll );
        add_affect( obj, APPLY_DAMROLL, damroll );
        add_affect( obj, APPLY_HIT, hp );
        add_affect( obj, APPLY_MANA, mana );
        add_affect( obj, APPLY_MOVE, move );
        add_affect( obj, APPLY_AC, armor );
        obj->value[0] = 30;

        SET_BIT( obj->quest, QUEST_RELIC );
        SET_BIT( obj->spectype, SITEM_COMMON );
        SET_BIT( obj->wear_flags, ITEM_TAKE );
        wear = number_range( 1, 12 );
        switch ( wear )
        {
        case 1: wear = ITEM_WEAR_FINGER;
        sprintf( name, "Ring" );
        break;
        case 2: wear = ITEM_WEAR_NECK;
        sprintf( name, "Necklace" );
        break;
        case 3: wear = ITEM_WEAR_BODY;
        sprintf( name, "Armor" );
        break;
        case 4: wear = ITEM_WEAR_HEAD;
        sprintf( name, "Helmet" );
        break;
        case 5: wear = ITEM_WEAR_LEGS;
        sprintf( name, "Leggings" );
        break;
        case 6: wear = ITEM_WEAR_FEET;
        sprintf( name, "Boots" );
        break;
        case 7: wear = ITEM_WEAR_HANDS;
        sprintf( name, "Gauntlets" );
        break;
        case 8: wear = ITEM_WEAR_ARMS;
        sprintf( name, "Sleeves" );
        break;
        case 9: wear = ITEM_WEAR_ABOUT;
        sprintf( name, "Cloak" );
        break;
        case 10: wear = ITEM_WEAR_WAIST;
        sprintf( name, "Belt" );
        break;
        case 11: wear = ITEM_WEAR_WRIST;
        sprintf( name, "Bracelet" );
        break;
        case 12: wear = ITEM_WEAR_FACE;
        sprintf( name, "Mask" );
        break;
        }
        SET_BIT( obj->wear_flags, wear );
        obj->item_type = ITEM_ARMOR;
        sprintf( ooga ,"#CM#ci#7rr#co#Cr #7p#nl#7a#nt#7e#nd #7%s#n", name );
        free_string( obj->short_descr );
        obj->short_descr = str_dup( ooga );
        sprintf( ooga ,"#CM#ci#7rr#co#Cr #7p#nl#7a#nt#7e#nd #7%s#n lies on the ground.", name );
        free_string( obj->description );
        obj->description = str_dup( ooga );
        sprintf( ooga, "Basic %s ", name );
        free_string( obj->name );
        obj->name = str_dup( ooga );
        obj_to_char( obj, ch ); obj->questowner = str_dup(ch->pcdata->switchname);
        act( "$p #7appears in your hands in a great #Ye#yxplosion#7.#n", ch, obj, NULL, TO_CHAR );
        act( "$p #7appears in $n's hands in a great #Ye#yxplosion#7.#n", ch, obj, NULL, TO_ROOM );
        stc( "#7You have obtained a piece of Basic armor!#n\n\r", ch );
        }
        }

     void common_eq4 ( CHAR_DATA * ch, CHAR_DATA * victim )
        {
        OBJ_INDEX_DATA * pObjIndex;
        OBJ_DATA * obj;
        char name [MSL];
        char ooga [MSL];
        int hitroll = 0;
        int damroll = 0;
        int hp      = 0;
        int mana    = 0;
        int move    = 0;
        int wear    = 0;
        int armor   = 0;
        int rnum    = 30037;

        if ( IS_NPC( ch ) )
        return;
        if ( number_range( 1 , 100 ) == 1 )
        {
        if ( rnum == 0 || ( pObjIndex = get_obj_index( rnum ) ) == NULL )
        {
        stc( "Missing object, please notify a member of the staff.\n\r", ch );
        return;
        }
        obj     = create_object( pObjIndex, 52 );
        hitroll = number_range( 50, 100 );
        damroll = number_range( 50, 100 );
        hp      = number_range( 100, 200 );
        mana    = number_range( 100, 200 );
        move    = number_range( 100, 200 );
        armor   = number_range( -50, 150 );
        add_affect( obj, APPLY_HITROLL, hitroll );
        add_affect( obj, APPLY_DAMROLL, damroll );
        add_affect( obj, APPLY_HIT, hp );
        add_affect( obj, APPLY_MANA, mana );
        add_affect( obj, APPLY_MOVE, move );
        add_affect( obj, APPLY_AC, armor );
        obj->value[0] = 30;

        SET_BIT( obj->quest, QUEST_RELIC );
        SET_BIT( obj->spectype, SITEM_COMMON );
        SET_BIT( obj->wear_flags, ITEM_TAKE );
        wear = number_range( 1, 12 );
        switch ( wear )
        {
        case 1: wear = ITEM_WEAR_FINGER;
        sprintf( name, "Ring" );
        break;
        case 2: wear = ITEM_WEAR_NECK;
        sprintf( name, "Necklace" );
        break;
        case 3: wear = ITEM_WEAR_BODY;
        sprintf( name, "Armor" );
        break;
        case 4: wear = ITEM_WEAR_HEAD;
        sprintf( name, "Helmet" );
        break;
        case 5: wear = ITEM_WEAR_LEGS;
        sprintf( name, "Leggings" );
        break;
        case 6: wear = ITEM_WEAR_FEET;
        sprintf( name, "Boots" );
        break;
        case 7: wear = ITEM_WEAR_HANDS;
        sprintf( name, "Gauntlets" );
        break;
        case 8: wear = ITEM_WEAR_ARMS;
        sprintf( name, "Sleeves" );
        break;
        case 9: wear = ITEM_WEAR_ABOUT;
        sprintf( name, "Cloak" );
        break;
        case 10: wear = ITEM_WEAR_WAIST;
        sprintf( name, "Belt" );
        break;
        case 11: wear = ITEM_WEAR_WRIST;
        sprintf( name, "Bracelet" );
        break;
        case 12: wear = ITEM_WEAR_FACE;
        sprintf( name, "Mask" );
        break;
        }
        SET_BIT( obj->wear_flags, wear );
        obj->item_type = ITEM_ARMOR;
        sprintf( ooga ,"#RS#rh#7a#rt#Rt#re#7r#re#Rd #rR#7u#rn#Re#n #7%s#n", name );
        free_string( obj->short_descr );
        obj->short_descr = str_dup( ooga );
        sprintf( ooga ,"#RS#rh#7a#rt#Rt#re#7r#re#Rd #rR#7u#rn#Re#n #7%s#n lies on the ground.", name );
        free_string( obj->description );
        obj->description = str_dup( ooga );
        sprintf( ooga, "Basic %s ", name );
        free_string( obj->name );
        obj->name = str_dup( ooga );
        obj_to_char( obj, ch ); obj->questowner = str_dup(ch->pcdata->switchname);
        act( "$p #7appears in your hands in a great #Ye#yxplosion#7.#n", ch, obj, NULL, TO_CHAR );
        act( "$p #7appears in $n's hands in a great #Ye#yxplosion#7.#n", ch, obj, NULL, TO_ROOM );
        stc( "#7You have obtained a piece of Basic armor!#n\n\r", ch );
        }
        }

     void common_eq5 ( CHAR_DATA * ch, CHAR_DATA * victim )
        {
        OBJ_INDEX_DATA * pObjIndex;
        OBJ_DATA * obj;
        char name [MSL];
        char ooga [MSL];
        int hitroll = 0;
        int damroll = 0;
        int hp      = 0;
        int mana    = 0;
        int move    = 0;
        int wear    = 0;
        int armor   = 0;
        int rnum    = 30037;

        if ( IS_NPC( ch ) )
        return;
        if ( number_range( 1 , 100 ) == 1 )
        {
        if ( rnum == 0 || ( pObjIndex = get_obj_index( rnum ) ) == NULL )
        {
        stc( "Missing object, please notify a member of the staff.\n\r", ch );
        return;
        }
        obj     = create_object( pObjIndex, 52 );
        hitroll = number_range( 50, 100 );
        damroll = number_range( 50, 100 );
        hp      = number_range( 100, 200 );
        mana    = number_range( 100, 200 );
        move    = number_range( 100, 200 );
        armor   = number_range( -50, 150 );
        add_affect( obj, APPLY_HITROLL, hitroll );
        add_affect( obj, APPLY_DAMROLL, damroll );
        add_affect( obj, APPLY_HIT, hp );
        add_affect( obj, APPLY_MANA, mana );
        add_affect( obj, APPLY_MOVE, move );
        add_affect( obj, APPLY_AC, armor );
        obj->value[0] = 30;

        SET_BIT( obj->quest, QUEST_RELIC );
        SET_BIT( obj->spectype, SITEM_COMMON );
        SET_BIT( obj->wear_flags, ITEM_TAKE );
        wear = number_range( 1, 12 );
        switch ( wear )
        {
        case 1: wear = ITEM_WEAR_FINGER;
        sprintf( name, "Ring" );
        break;
        case 2: wear = ITEM_WEAR_NECK;
        sprintf( name, "Necklace" );
        break;
        case 3: wear = ITEM_WEAR_BODY;
        sprintf( name, "Armor" );
        break;
        case 4: wear = ITEM_WEAR_HEAD;
        sprintf( name, "Helmet" );
        break;
        case 5: wear = ITEM_WEAR_LEGS;
        sprintf( name, "Leggings" );
        break;
        case 6: wear = ITEM_WEAR_FEET;
        sprintf( name, "Boots" );
        break;
        case 7: wear = ITEM_WEAR_HANDS;
        sprintf( name, "Gauntlets" );
        break;
        case 8: wear = ITEM_WEAR_ARMS;
        sprintf( name, "Sleeves" );
        break;
        case 9: wear = ITEM_WEAR_ABOUT;
        sprintf( name, "Cloak" );
        break;
        case 10: wear = ITEM_WEAR_WAIST;
        sprintf( name, "Belt" );
        break;
        case 11: wear = ITEM_WEAR_WRIST;
        sprintf( name, "Bracelet" );
        break;
        case 12: wear = ITEM_WEAR_FACE;
        sprintf( name, "Mask" );
        break;
        }
        SET_BIT( obj->wear_flags, wear );
        obj->item_type = ITEM_ARMOR;
        sprintf( ooga ,"#gCr#Ga#7c#nk#0ed #nS#7c#Ga#gle#n #7%s#n", name );
        free_string( obj->short_descr );
        obj->short_descr = str_dup( ooga );
        sprintf( ooga ,"#gCr#Ga#7c#nk#0ed #nS#7c#Ga#gle#n #7%s#n lies on the ground.", name );
        free_string( obj->description );
        obj->description = str_dup( ooga );
        sprintf( ooga, "Basic %s ", name );
        free_string( obj->name );
        obj->name = str_dup( ooga );
        obj_to_char( obj, ch ); obj->questowner = str_dup(ch->pcdata->switchname);
        act( "$p #7appears in your hands in a great #Ye#yxplosion#7.#n", ch, obj, NULL, TO_CHAR );
        act( "$p #7appears in $n's hands in a great #Ye#yxplosion#7.#n", ch, obj, NULL, TO_ROOM );
        stc( "#7You have obtained a piece of Basic armor!#n\n\r", ch );
        }
        }

     void common_eq6 ( CHAR_DATA * ch, CHAR_DATA * victim )
        {
        OBJ_INDEX_DATA * pObjIndex;
        OBJ_DATA * obj;
        char name [MSL];
        char ooga [MSL];
        int hitroll = 0;
        int damroll = 0;
        int hp      = 0;
        int mana    = 0;
        int move    = 0;
        int wear    = 0;
        int armor   = 0;
        int rnum    = 30037;

        if ( IS_NPC( ch ) )
        return;
        if ( number_range( 1 , 100 ) == 1 )
        {
        if ( rnum == 0 || ( pObjIndex = get_obj_index( rnum ) ) == NULL )
        {
        stc( "Missing object, please notify a member of the staff.\n\r", ch );
        return;
        }
        obj     = create_object( pObjIndex, 52 );
        hitroll = number_range( 50, 100 );
        damroll = number_range( 50, 100 );
        hp      = number_range( 100, 200 );
        mana    = number_range( 100, 200 );
        move    = number_range( 100, 200 );
        armor   = number_range( -50, 150 );
        add_affect( obj, APPLY_HITROLL, hitroll );
        add_affect( obj, APPLY_DAMROLL, damroll );
        add_affect( obj, APPLY_HIT, hp );
        add_affect( obj, APPLY_MANA, mana );
        add_affect( obj, APPLY_MOVE, move );
        add_affect( obj, APPLY_AC, armor );
        obj->value[0] = 30;

        SET_BIT( obj->quest, QUEST_RELIC );
        SET_BIT( obj->spectype, SITEM_COMMON );
        SET_BIT( obj->wear_flags, ITEM_TAKE );
        wear = number_range( 1, 12 );
        switch ( wear )
        {
        case 1: wear = ITEM_WEAR_FINGER;
        sprintf( name, "Ring" );
        break;
        case 2: wear = ITEM_WEAR_NECK;
        sprintf( name, "Necklace" );
        break;
        case 3: wear = ITEM_WEAR_BODY;
        sprintf( name, "Armor" );
        break;
        case 4: wear = ITEM_WEAR_HEAD;
        sprintf( name, "Helmet" );
        break;
        case 5: wear = ITEM_WEAR_LEGS;
        sprintf( name, "Leggings" );
        break;
        case 6: wear = ITEM_WEAR_FEET;
        sprintf( name, "Boots" );
        break;
        case 7: wear = ITEM_WEAR_HANDS;
        sprintf( name, "Gauntlets" );
        break;
        case 8: wear = ITEM_WEAR_ARMS;
        sprintf( name, "Sleeves" );
        break;
        case 9: wear = ITEM_WEAR_ABOUT;
        sprintf( name, "Cloak" );
        break;
        case 10: wear = ITEM_WEAR_WAIST;
        sprintf( name, "Belt" );
        break;
        case 11: wear = ITEM_WEAR_WRIST;
        sprintf( name, "Bracelet" );
        break;
        case 12: wear = ITEM_WEAR_FACE;
        sprintf( name, "Mask" );
        break;
        }
        SET_BIT( obj->wear_flags, wear );
        obj->item_type = ITEM_ARMOR;
        sprintf( ooga ,"#GE#gl#0v#ne#7n S#nt#0e#ge#Gl#n #7%s#n", name );
        free_string( obj->short_descr );
        obj->short_descr = str_dup( ooga );
        sprintf( ooga ,"#GE#gl#0v#ne#7n S#nt#0e#ge#Gl#n #7%s#n lies on the ground.", name );
        free_string( obj->description );
        obj->description = str_dup( ooga );
        sprintf( ooga, "Basic %s ", name );
        free_string( obj->name );
        obj->name = str_dup( ooga );
        obj_to_char( obj, ch ); obj->questowner = str_dup(ch->pcdata->switchname);
        act( "$p #7appears in your hands in a great #Ye#yxplosion#7.#n", ch, obj, NULL, TO_CHAR );
        act( "$p #7appears in $n's hands in a great #Ye#yxplosion#7.#n", ch, obj, NULL, TO_ROOM );
        stc( "#7You have obtained a piece of Basic armor!#n\n\r", ch );
        }
        }

     void common_eq7 ( CHAR_DATA * ch, CHAR_DATA * victim )
        {
        OBJ_INDEX_DATA * pObjIndex;
        OBJ_DATA * obj;
        char name [MSL];
        char ooga [MSL];
        int hitroll = 0;
        int damroll = 0;
        int hp      = 0;
        int mana    = 0;
        int move    = 0;
        int wear    = 0;
        int armor   = 0;
        int rnum    = 30037;

        if ( IS_NPC( ch ) )
        return;
        if ( number_range( 1 , 100 ) == 1 )
        {
        if ( rnum == 0 || ( pObjIndex = get_obj_index( rnum ) ) == NULL )
        {
        stc( "Missing object, please notify a member of the staff.\n\r", ch );
        return;
        }
        obj     = create_object( pObjIndex, 52 );
        hitroll = number_range( 50, 100 );
        damroll = number_range( 50, 100 );
        hp      = number_range( 100, 200 );
        mana    = number_range( 100, 200 );
        move    = number_range( 100, 200 );
        armor   = number_range( -50, 150 );
        add_affect( obj, APPLY_HITROLL, hitroll );
        add_affect( obj, APPLY_DAMROLL, damroll );
        add_affect( obj, APPLY_HIT, hp );
        add_affect( obj, APPLY_MANA, mana );
        add_affect( obj, APPLY_MOVE, move );
        add_affect( obj, APPLY_AC, armor );
        obj->value[0] = 30;

        SET_BIT( obj->quest, QUEST_RELIC );
        SET_BIT( obj->spectype, SITEM_COMMON );
        SET_BIT( obj->wear_flags, ITEM_TAKE );
        wear = number_range( 1, 12 );
        switch ( wear )
        {
        case 1: wear = ITEM_WEAR_FINGER;
        sprintf( name, "Ring" );
        break;
        case 2: wear = ITEM_WEAR_NECK;
        sprintf( name, "Necklace" );
        break;
        case 3: wear = ITEM_WEAR_BODY;
        sprintf( name, "Armor" );
        break;
        case 4: wear = ITEM_WEAR_HEAD;
        sprintf( name, "Helmet" );
        break;
        case 5: wear = ITEM_WEAR_LEGS;
        sprintf( name, "Leggings" );
        break;
        case 6: wear = ITEM_WEAR_FEET;
        sprintf( name, "Boots" );
        break;
        case 7: wear = ITEM_WEAR_HANDS;
        sprintf( name, "Gauntlets" );
        break;
        case 8: wear = ITEM_WEAR_ARMS;
        sprintf( name, "Sleeves" );
        break;
        case 9: wear = ITEM_WEAR_ABOUT;
        sprintf( name, "Cloak" );
        break;
        case 10: wear = ITEM_WEAR_WAIST;
        sprintf( name, "Belt" );
        break;
        case 11: wear = ITEM_WEAR_WRIST;
        sprintf( name, "Bracelet" );
        break;
        case 12: wear = ITEM_WEAR_FACE;
        sprintf( name, "Mask" );
        break;
        }
        SET_BIT( obj->wear_flags, wear );
        obj->item_type = ITEM_ARMOR;
        sprintf( ooga ,"#YL#yi#0g#nh#7t P#nl#0a#yt#Ye#n #7%s#n", name );
        free_string( obj->short_descr );
        obj->short_descr = str_dup( ooga );
        sprintf( ooga ,"#YL#yi#0g#nh#7t P#nl#0a#yt#Ye#n #7%s#n lies on the ground.", name );
        free_string( obj->description );
        obj->description = str_dup( ooga );
        sprintf( ooga, "Basic %s ", name );
        free_string( obj->name );
        obj->name = str_dup( ooga );
        obj_to_char( obj, ch ); obj->questowner = str_dup(ch->pcdata->switchname);
        act( "$p #7appears in your hands in a great #Ye#yxplosion#7.#n", ch, obj, NULL, TO_CHAR );
        act( "$p #7appears in $n's hands in a great #Ye#yxplosion#7.#n", ch, obj, NULL, TO_ROOM );
        stc( "#7You have obtained a piece of Basic armor!#n\n\r", ch );
        }
        }

     void common_eq8 ( CHAR_DATA * ch, CHAR_DATA * victim )
        {
        OBJ_INDEX_DATA * pObjIndex;
        OBJ_DATA * obj;
        char name [MSL];
        char ooga [MSL];
        int hitroll = 0;
        int damroll = 0;
        int hp      = 0;
        int mana    = 0;
        int move    = 0;
        int wear    = 0;
        int armor   = 0;
        int rnum    = 30037;

        if ( IS_NPC( ch ) )
        return;
        if ( number_range( 1 , 100 ) == 1 )
        {
        if ( rnum == 0 || ( pObjIndex = get_obj_index( rnum ) ) == NULL )
        {
        stc( "Missing object, please notify a member of the staff.\n\r", ch );
        return;
        }
        obj     = create_object( pObjIndex, 52 );
        hitroll = number_range( 50, 100 );
        damroll = number_range( 50, 100 );
        hp      = number_range( 100, 200 );
        mana    = number_range( 100, 200 );
        move    = number_range( 100, 200 );
        armor   = number_range( -50, 150 );
        add_affect( obj, APPLY_HITROLL, hitroll );
        add_affect( obj, APPLY_DAMROLL, damroll );
        add_affect( obj, APPLY_HIT, hp );
        add_affect( obj, APPLY_MANA, mana );
        add_affect( obj, APPLY_MOVE, move );
        add_affect( obj, APPLY_AC, armor );
        obj->value[0] = 30;

        SET_BIT( obj->quest, QUEST_RELIC );
        SET_BIT( obj->spectype, SITEM_COMMON );
        SET_BIT( obj->wear_flags, ITEM_TAKE );
        wear = number_range( 1, 12 );
        switch ( wear )
        {
        case 1: wear = ITEM_WEAR_FINGER;
        sprintf( name, "Ring" );
        break;
        case 2: wear = ITEM_WEAR_NECK;
        sprintf( name, "Necklace" );
        break;
        case 3: wear = ITEM_WEAR_BODY;
        sprintf( name, "Armor" );
        break;
        case 4: wear = ITEM_WEAR_HEAD;
        sprintf( name, "Helmet" );
        break;
        case 5: wear = ITEM_WEAR_LEGS;
        sprintf( name, "Leggings" );
        break;
        case 6: wear = ITEM_WEAR_FEET;
        sprintf( name, "Boots" );
        break;
        case 7: wear = ITEM_WEAR_HANDS;
        sprintf( name, "Gauntlets" );
        break;
        case 8: wear = ITEM_WEAR_ARMS;
        sprintf( name, "Sleeves" );
        break;
        case 9: wear = ITEM_WEAR_ABOUT;
        sprintf( name, "Cloak" );
        break;
        case 10: wear = ITEM_WEAR_WAIST;
        sprintf( name, "Belt" );
        break;
        case 11: wear = ITEM_WEAR_WRIST;
        sprintf( name, "Bracelet" );
        break;
        case 12: wear = ITEM_WEAR_FACE;
        sprintf( name, "Mask" );
        break;
        }
        SET_BIT( obj->wear_flags, wear );
        obj->item_type = ITEM_ARMOR;
        sprintf( ooga ,"#CRu#cs#0t#ne#7d Mi#nt#0h#cr#Cil#n #7%s#n", name );
        free_string( obj->short_descr );
        obj->short_descr = str_dup( ooga );
        sprintf( ooga ,"#CRu#cs#0t#ne#7d Mi#nt#0h#cr#Cil#n #7%s#n lies on the ground.", name );
        free_string( obj->description );
        obj->description = str_dup( ooga );
        sprintf( ooga, "Basic %s ", name );
        free_string( obj->name );
        obj->name = str_dup( ooga );
        obj_to_char( obj, ch ); obj->questowner = str_dup(ch->pcdata->switchname);
        act( "$p #7appears in your hands in a great #Ye#yxplosion#7.#n", ch, obj, NULL, TO_CHAR );
        act( "$p #7appears in $n's hands in a great #Ye#yxplosion#7.#n", ch, obj, NULL, TO_ROOM );
        stc( "#7You have obtained a piece of Basic armor!#n\n\r", ch );
        }
        }

     void common_eq9 ( CHAR_DATA * ch, CHAR_DATA * victim )
        {
        OBJ_INDEX_DATA * pObjIndex;
        OBJ_DATA * obj;
        char name [MSL];
        char ooga [MSL];
        int hitroll = 0;
        int damroll = 0;
        int hp      = 0;
        int mana    = 0;
        int move    = 0;
        int wear    = 0;
        int armor   = 0;
        int rnum    = 30037;

        if ( IS_NPC( ch ) )
        return;
        if ( number_range( 1 , 100 ) == 1 )
        {
        if ( rnum == 0 || ( pObjIndex = get_obj_index( rnum ) ) == NULL )
        {
        stc( "Missing object, please notify a member of the staff.\n\r", ch );
        return;
        }
        obj     = create_object( pObjIndex, 52 );
        hitroll = number_range( 50, 100 );
        damroll = number_range( 50, 100 );
        hp      = number_range( 100, 200 );
        mana    = number_range( 100, 200 );
        move    = number_range( 100, 200 );
        armor   = number_range( -50, 150 );
        add_affect( obj, APPLY_HITROLL, hitroll );
        add_affect( obj, APPLY_DAMROLL, damroll );
        add_affect( obj, APPLY_HIT, hp );
        add_affect( obj, APPLY_MANA, mana );
        add_affect( obj, APPLY_MOVE, move );
        add_affect( obj, APPLY_AC, armor );
        obj->value[0] = 30;

        SET_BIT( obj->quest, QUEST_RELIC );
        SET_BIT( obj->spectype, SITEM_COMMON );
        SET_BIT( obj->wear_flags, ITEM_TAKE );
        wear = number_range( 1, 12 );
        switch ( wear )
        {
        case 1: wear = ITEM_WEAR_FINGER;
        sprintf( name, "Ring" );
        break;
        case 2: wear = ITEM_WEAR_NECK;
        sprintf( name, "Necklace" );
        break;
        case 3: wear = ITEM_WEAR_BODY;
        sprintf( name, "Armor" );
        break;
        case 4: wear = ITEM_WEAR_HEAD;
        sprintf( name, "Helmet" );
        break;
        case 5: wear = ITEM_WEAR_LEGS;
        sprintf( name, "Leggings" );
        break;
        case 6: wear = ITEM_WEAR_FEET;
        sprintf( name, "Boots" );
        break;
        case 7: wear = ITEM_WEAR_HANDS;
        sprintf( name, "Gauntlets" );
        break;
        case 8: wear = ITEM_WEAR_ARMS;
        sprintf( name, "Sleeves" );
        break;
        case 9: wear = ITEM_WEAR_ABOUT;
        sprintf( name, "Cloak" );
        break;
        case 10: wear = ITEM_WEAR_WAIST;
        sprintf( name, "Belt" );
        break;
        case 11: wear = ITEM_WEAR_WRIST;
        sprintf( name, "Bracelet" );
        break;
        case 12: wear = ITEM_WEAR_FACE;
        sprintf( name, "Mask" );
        break;
        }
        SET_BIT( obj->wear_flags, wear );
        obj->item_type = ITEM_ARMOR;
        sprintf( ooga ,"#LSp#ll#0i#nn#7tered #nS#0t#le#Lel#n #7%s#n", name );
        free_string( obj->short_descr );
        obj->short_descr = str_dup( ooga );
        sprintf( ooga ,"#LSp#ll#0i#nn#7tered #nS#0t#le#Lel#n #7%s#n lies on the ground.", name );
        free_string( obj->description );
        obj->description = str_dup( ooga );
        sprintf( ooga, "Basic %s ", name );
        free_string( obj->name );
        obj->name = str_dup( ooga );
        obj_to_char( obj, ch ); obj->questowner = str_dup(ch->pcdata->switchname);
        act( "$p #7appears in your hands in a great #Ye#yxplosion#7.#n", ch, obj, NULL, TO_CHAR );
        act( "$p #7appears in $n's hands in a great #Ye#yxplosion#7.#n", ch, obj, NULL, TO_ROOM );
        stc( "#7You have obtained a piece of Basic armor!#n\n\r", ch );
        }
        }

     void common_eq10 ( CHAR_DATA * ch, CHAR_DATA * victim )
        {
        OBJ_INDEX_DATA * pObjIndex;
        OBJ_DATA * obj;
        char name [MSL];
        char ooga [MSL];
        int hitroll = 0;
        int damroll = 0;
        int hp      = 0;
        int mana    = 0;
        int move    = 0;
        int wear    = 0;
        int armor   = 0;
        int rnum    = 30037;

        if ( IS_NPC( ch ) )
        return;
        if ( number_range( 1 , 100 ) == 1 )
        {
        if ( rnum == 0 || ( pObjIndex = get_obj_index( rnum ) ) == NULL )
        {
        stc( "Missing object, please notify a member of the staff.\n\r", ch );
        return;
        }
        obj     = create_object( pObjIndex, 52 );
        hitroll = number_range( 50, 100 );
        damroll = number_range( 50, 100 );
        hp      = number_range( 100, 200 );
        mana    = number_range( 100, 200 );
        move    = number_range( 100, 200 );
        armor   = number_range( -50, 150 );
        add_affect( obj, APPLY_HITROLL, hitroll );
        add_affect( obj, APPLY_DAMROLL, damroll );
        add_affect( obj, APPLY_HIT, hp );
        add_affect( obj, APPLY_MANA, mana );
        add_affect( obj, APPLY_MOVE, move );
        add_affect( obj, APPLY_AC, armor );
        obj->value[0] = 30;

        SET_BIT( obj->quest, QUEST_RELIC );
        SET_BIT( obj->spectype, SITEM_COMMON );
        SET_BIT( obj->wear_flags, ITEM_TAKE );
        wear = number_range( 1, 12 );
        switch ( wear )
        {
        case 1: wear = ITEM_WEAR_FINGER;
        sprintf( name, "Ring" );
        break;
        case 2: wear = ITEM_WEAR_NECK;
        sprintf( name, "Necklace" );
        break;
        case 3: wear = ITEM_WEAR_BODY;
        sprintf( name, "Armor" );
        break;
        case 4: wear = ITEM_WEAR_HEAD;
        sprintf( name, "Helmet" );
        break;
        case 5: wear = ITEM_WEAR_LEGS;
        sprintf( name, "Leggings" );
        break;
        case 6: wear = ITEM_WEAR_FEET;
        sprintf( name, "Boots" );
        break;
        case 7: wear = ITEM_WEAR_HANDS;
        sprintf( name, "Gauntlets" );
        break;
        case 8: wear = ITEM_WEAR_ARMS;
        sprintf( name, "Sleeves" );
        break;
        case 9: wear = ITEM_WEAR_ABOUT;
        sprintf( name, "Cloak" );
        break;
        case 10: wear = ITEM_WEAR_WAIST;
        sprintf( name, "Belt" );
        break;
        case 11: wear = ITEM_WEAR_WRIST;
        sprintf( name, "Bracelet" );
        break;
        case 12: wear = ITEM_WEAR_FACE;
        sprintf( name, "Mask" );
        break;
        }
        SET_BIT( obj->wear_flags, wear );
        obj->item_type = ITEM_ARMOR;
        sprintf( ooga ,"#0S#nt#7u#nd#0d#ne#7d #nO#0n#ny#7x#n #7%s#n", name );
        free_string( obj->short_descr );
        obj->short_descr = str_dup( ooga );
        sprintf( ooga ,"#0S#nt#7u#nd#0d#ne#7d #nO#0n#ny#7x#n #7%s#n lies on the ground.", name );
        free_string( obj->description );
        obj->description = str_dup( ooga );
        sprintf( ooga, "Basic %s ", name );
        free_string( obj->name );
        obj->name = str_dup( ooga );
        obj_to_char( obj, ch ); obj->questowner = str_dup(ch->pcdata->switchname);
        act( "$p #7appears in your hands in a great #Ye#yxplosion#7.#n", ch, obj, NULL, TO_CHAR );
        act( "$p #7appears in $n's hands in a great #Ye#yxplosion#7.#n", ch, obj, NULL, TO_ROOM );
        stc( "#7You have obtained a piece of Basic armor!#n\n\r", ch );
        }
        }

     void rare_weapon1 ( CHAR_DATA * ch, CHAR_DATA * victim )
        {
        OBJ_INDEX_DATA * pObjIndex;
        OBJ_DATA * obj;
        char name [MSL];
        char ooga [MSL];
        int hitroll = 0;
        int damroll = 0;
        int hp      = 0;
        int mana    = 0;
        int move    = 0;
        int wear    = 0;
        int armor   = 0;
        int rnum    = 30037;

        if ( IS_NPC( ch ) )
        return;
        if ( number_range( 1 , 2000 ) == 1 )
        {
        if ( rnum == 0 || ( pObjIndex = get_obj_index( rnum ) ) == NULL )
        {
        stc( "Missing object, please notify a member of the staff.\n\r", ch );
        return;
        }
        obj     = create_object( pObjIndex, 52 );
        hitroll = number_range( 400, 600 );
        damroll = number_range( 400, 600 );
        hp      = number_range( 1000, 3000 );
        mana    = number_range( 1000, 3000 );
        move    = number_range( 1000, 3000 );
        armor   = number_range( -500, -1 );
        add_affect( obj, APPLY_HITROLL, hitroll );
        add_affect( obj, APPLY_DAMROLL, damroll );
        add_affect( obj, APPLY_HIT, hp );
        add_affect( obj, APPLY_MANA, mana );
        add_affect( obj, APPLY_MOVE, move );
        add_affect( obj, APPLY_AC, armor );
        obj->value[1] = number_range (400,500);
        obj->value[2] = number_range (500,600);

        SET_BIT( obj->quest, QUEST_RELIC );
        SET_BIT( obj->spectype, SITEM_RAREWEAP );
	SET_BIT( obj->spectype, SITEM_UNID );
        SET_BIT( obj->wear_flags, ITEM_TAKE );
        wear = number_range( 1, 13 );
        switch ( wear )
        {
        case 1: wear = ITEM_WIELD;
        sprintf( name, "Whip");
        obj->value[3] = 4;
        obj->value[0] = 18000;
        break;
        case 2: wear = ITEM_WIELD;
        sprintf( name, "Dagger");
        obj->value[3] = 2;
        obj->value[0] = 17000;
        break;
        case 3: wear = ITEM_WIELD;
        sprintf( name, "Rapier");
        obj->value[3] = 11;
        obj->value[0] = 18000;
        break;
        case 4: wear = ITEM_WIELD;
        sprintf( name, "Claw");
        obj->value[3] = 5;
        obj->value[0] = 17000;
        break;
        case 5: wear = ITEM_WIELD;
        sprintf( name, "Mace");
        obj->value[3] = 7;
        obj->value[0] = 18000;
        break;
        case 6: wear = ITEM_WIELD;
        sprintf( name, "Flail");
        obj->value[3] = 8;
        obj->value[0] = 18000;
        break;
        case 7: wear = ITEM_WIELD;
        sprintf( name, "Scythe");
        obj->value[3] = 1;
        obj->value[0] = 18000;
        break;
        case 8: wear = ITEM_WIELD;
        sprintf( name, "Kama");
        obj->value[3] = 3;
        obj->value[0] = 17000;
        break;
        case 9: wear = ITEM_WIELD;
        sprintf( name, "Katana");
        obj->value[3] = 1;
        obj->value[0] = 17000;
        break;
        case 10: wear = ITEM_WIELD;
        sprintf( name, "Talon");
        obj->value[3] = 5;
        obj->value[0] = 17000;
        break;
        case 11: wear = ITEM_WIELD;
        sprintf( name, "Revolver");
        obj->value[3] = 6;
        obj->value[0] = 17000;
        break;
        case 12: wear = ITEM_WIELD;
        sprintf( name, "Longsword");
        obj->value[3] = 3;
        obj->value[0] = 18000;
        break;
        case 13: wear = ITEM_WIELD;
        sprintf( name, "Shortsword");
        obj->value[3] = 1;
        obj->value[0] = 17000;
        break;
        }
        SET_BIT( obj->wear_flags, wear );
        obj->item_type = ITEM_WEAPON;
        sprintf( ooga ,"#RBl#ro#7o#rd#Rly #7O#nn#0y#7x #7%s #n", name );
        free_string( obj->short_descr );
        obj->short_descr = str_dup( ooga );
        sprintf( ooga ,"#RBl#ro#7o#rd#Rly #7O#nn#0y#7x #7%s lies on the ground.#n", name );
        free_string( obj->description );
        obj->description = str_dup( ooga );
        sprintf( ooga, "Rare weapon %s ", name );
        free_string( obj->name );
        obj->name = str_dup( ooga );
        obj_to_char( obj, ch ); obj->questowner = str_dup(ch->pcdata->switchname);
        act( "$p #7appears in your hands in a great #Ye#yxplosion#7.#n", ch, obj, NULL, TO_CHAR );
        act( "$p #7appears in $n's hands in a great #Ye#yxplosion#7.#n", ch, obj, NULL, TO_ROOM );
        stc( "#7You have obtained a Rare Weapon!#n\n\r", ch );
        }
        }

     void rare_weapon2 ( CHAR_DATA * ch, CHAR_DATA * victim )
        {
        OBJ_INDEX_DATA * pObjIndex;
        OBJ_DATA * obj;
        char name [MSL];
        char ooga [MSL];
        int hitroll = 0;
        int damroll = 0;
        int hp      = 0;
        int mana    = 0;
        int move    = 0;
        int wear    = 0;
        int armor   = 0;
        int rnum    = 30037;

        if ( IS_NPC( ch ) )
        return;
        if ( number_range( 1 , 2000 ) == 1 )
        {
        if ( rnum == 0 || ( pObjIndex = get_obj_index( rnum ) ) == NULL )
        {
        stc( "Missing object, please notify a member of the staff.\n\r", ch );
        return;
        }
        obj     = create_object( pObjIndex, 52 );
        hitroll = number_range( 400, 600 );
        damroll = number_range( 400, 600 );
        hp      = number_range( 1000, 3000 );
        mana    = number_range( 1000, 3000 );
        move    = number_range( 1000, 3000 );
        armor   = number_range( -500, -1 );
        add_affect( obj, APPLY_HITROLL, hitroll );
        add_affect( obj, APPLY_DAMROLL, damroll );
        add_affect( obj, APPLY_HIT, hp );
        add_affect( obj, APPLY_MANA, mana );
        add_affect( obj, APPLY_MOVE, move );
        add_affect( obj, APPLY_AC, armor );
        obj->value[1] = number_range (400,500);
        obj->value[2] = number_range (500,600);

        SET_BIT( obj->quest, QUEST_RELIC );
        SET_BIT( obj->spectype, SITEM_RAREWEAP );
	SET_BIT( obj->spectype, SITEM_UNID );
        SET_BIT( obj->wear_flags, ITEM_TAKE );
        wear = number_range( 1, 13 );
        switch ( wear )
        {
        case 1: wear = ITEM_WIELD;
        sprintf( name, "Whip");
        obj->value[3] = 4;
        obj->value[0] = 18000;
        break;
        case 2: wear = ITEM_WIELD;
        sprintf( name, "Dagger");
        obj->value[3] = 2;
        obj->value[0] = 17000;
        break;
        case 3: wear = ITEM_WIELD;
        sprintf( name, "Rapier");
        obj->value[3] = 11;
        obj->value[0] = 18000;
        break;
        case 4: wear = ITEM_WIELD;
        sprintf( name, "Claw");
        obj->value[3] = 5;
        obj->value[0] = 17000;
        break;
        case 5: wear = ITEM_WIELD;
        sprintf( name, "Mace");
        obj->value[3] = 7;
        obj->value[0] = 18000;
        break;
        case 6: wear = ITEM_WIELD;
        sprintf( name, "Flail");
        obj->value[3] = 8;
        obj->value[0] = 18000;
        break;
        case 7: wear = ITEM_WIELD;
        sprintf( name, "Scythe");
        obj->value[3] = 1;
        obj->value[0] = 18000;
        break;
        case 8: wear = ITEM_WIELD;
        sprintf( name, "Kama");
        obj->value[3] = 3;
        obj->value[0] = 17000;
        break;
        case 9: wear = ITEM_WIELD;
        sprintf( name, "Katana");
        obj->value[3] = 1;
        obj->value[0] = 17000;
        break;
        case 10: wear = ITEM_WIELD;
        sprintf( name, "Talon");
        obj->value[3] = 5;
        obj->value[0] = 17000;
        break;
        case 11: wear = ITEM_WIELD;
        sprintf( name, "Revolver");
        obj->value[3] = 6;
        obj->value[0] = 17000;
        break;
        case 12: wear = ITEM_WIELD;
        sprintf( name, "Longsword");
        obj->value[3] = 3;
        obj->value[0] = 18000;
        break;
        case 13: wear = ITEM_WIELD;
        sprintf( name, "Shortsword");
        obj->value[3] = 1;
        obj->value[0] = 17000;
        break;
        }
        SET_BIT( obj->wear_flags, wear );
        obj->item_type = ITEM_WEAPON;
        sprintf( ooga ,"#7D#ni#7m#no#7n#nd#7e#nd #LE#ld#7g#le#Ld #7%s #n", name );
        free_string( obj->short_descr );
        obj->short_descr = str_dup( ooga );
        sprintf( ooga ,"#7D#ni#7m#no#7n#nd#7e#nd #LE#ld#7g#le#Ld #7%s lies on the ground.#n", name );
        free_string( obj->description );
        obj->description = str_dup( ooga );
        sprintf( ooga, "Rare weapon %s ", name );
        free_string( obj->name );
        obj->name = str_dup( ooga );
        obj_to_char( obj, ch ); obj->questowner = str_dup(ch->pcdata->switchname);
        act( "$p #7appears in your hands in a great #Ye#yxplosion#7.#n", ch, obj, NULL, TO_CHAR );
        act( "$p #7appears in $n's hands in a great #Ye#yxplosion#7.#n", ch, obj, NULL, TO_ROOM );
        stc( "#7You have obtained a Rare Weapon!#n\n\r", ch );
        }
        }

     void rare_weapon3 ( CHAR_DATA * ch, CHAR_DATA * victim )
        {
        OBJ_INDEX_DATA * pObjIndex;
        OBJ_DATA * obj;
        char name [MSL];
        char ooga [MSL];
        int hitroll = 0;
        int damroll = 0;
        int hp      = 0;
        int mana    = 0;
        int move    = 0;
        int wear    = 0;
        int armor   = 0;
        int rnum    = 30037;

        if ( IS_NPC( ch ) )
        return;
        if ( number_range( 1 , 2000 ) == 1 )
        {
        if ( rnum == 0 || ( pObjIndex = get_obj_index( rnum ) ) == NULL )
        {
        stc( "Missing object, please notify a member of the staff.\n\r", ch );
        return;
        }
        obj     = create_object( pObjIndex, 52 );
        hitroll = number_range( 400, 600 );
        damroll = number_range( 400, 600 );
        hp      = number_range( 1000, 3000 );
        mana    = number_range( 1000, 3000 );
        move    = number_range( 1000, 3000 );
        armor   = number_range( -500, -1 );
        add_affect( obj, APPLY_HITROLL, hitroll );
        add_affect( obj, APPLY_DAMROLL, damroll );
        add_affect( obj, APPLY_HIT, hp );
        add_affect( obj, APPLY_MANA, mana );
        add_affect( obj, APPLY_MOVE, move );
        add_affect( obj, APPLY_AC, armor );
        obj->value[1] = number_range (400,500);
        obj->value[2] = number_range (500,600);

        SET_BIT( obj->quest, QUEST_RELIC );
        SET_BIT( obj->spectype, SITEM_RAREWEAP );
	SET_BIT( obj->spectype, SITEM_UNID );
        SET_BIT( obj->wear_flags, ITEM_TAKE );
        wear = number_range( 1, 13 );
        switch ( wear )
        {
        case 1: wear = ITEM_WIELD;
        sprintf( name, "Whip");
        obj->value[3] = 4;
        obj->value[0] = 18000;
        break;
        case 2: wear = ITEM_WIELD;
        sprintf( name, "Dagger");
        obj->value[3] = 2;
        obj->value[0] = 17000;
        break;
        case 3: wear = ITEM_WIELD;
        sprintf( name, "Rapier");
        obj->value[3] = 11;
        obj->value[0] = 18000;
        break;
        case 4: wear = ITEM_WIELD;
        sprintf( name, "Claw");
        obj->value[3] = 5;
        obj->value[0] = 17000;
        break;
        case 5: wear = ITEM_WIELD;
        sprintf( name, "Mace");
        obj->value[3] = 7;
        obj->value[0] = 18000;
        break;
        case 6: wear = ITEM_WIELD;
        sprintf( name, "Flail");
        obj->value[3] = 8;
        obj->value[0] = 18000;
        break;
        case 7: wear = ITEM_WIELD;
        sprintf( name, "Scythe");
        obj->value[3] = 1;
        obj->value[0] = 18000;
        break;
        case 8: wear = ITEM_WIELD;
        sprintf( name, "Kama");
        obj->value[3] = 3;
        obj->value[0] = 17000;
        break;
        case 9: wear = ITEM_WIELD;
        sprintf( name, "Katana");
        obj->value[3] = 1;
        obj->value[0] = 17000;
        break;
        case 10: wear = ITEM_WIELD;
        sprintf( name, "Talon");
        obj->value[3] = 5;
        obj->value[0] = 17000;
        break;
        case 11: wear = ITEM_WIELD;
        sprintf( name, "Revolver");
        obj->value[3] = 6;
        obj->value[0] = 17000;
        break;
        case 12: wear = ITEM_WIELD;
        sprintf( name, "Longsword");
        obj->value[3] = 3;
        obj->value[0] = 18000;
        break;
        case 13: wear = ITEM_WIELD;
        sprintf( name, "Shortsword");
        obj->value[3] = 1;
        obj->value[0] = 17000;
        break;
        }
        SET_BIT( obj->wear_flags, wear );
        obj->item_type = ITEM_WEAPON;
        sprintf( ooga ,"#YS#yu#np#7r#ne#ym#Ye #7%s #n", name );
        free_string( obj->short_descr );
        obj->short_descr = str_dup( ooga );
        sprintf( ooga ,"#YS#yu#np#7r#ne#ym#Ye #7%s lies on the ground.#n", name );
        free_string( obj->description );
        obj->description = str_dup( ooga );
        sprintf( ooga, "Rare weapon %s ", name );
        free_string( obj->name );
        obj->name = str_dup( ooga );
        obj_to_char( obj, ch ); obj->questowner = str_dup(ch->pcdata->switchname);
        act( "$p #7appears in your hands in a great #Ye#yxplosion#7.#n", ch, obj, NULL, TO_CHAR );
        act( "$p #7appears in $n's hands in a great #Ye#yxplosion#7.#n", ch, obj, NULL, TO_ROOM );
        stc( "#7You have obtained a Rare Weapon!#n\n\r", ch );
        }
        }

     void rare_weapon4 ( CHAR_DATA * ch, CHAR_DATA * victim )
        {
        OBJ_INDEX_DATA * pObjIndex;
        OBJ_DATA * obj;
        char name [MSL];
        char ooga [MSL];
        int hitroll = 0;
        int damroll = 0;
        int hp      = 0;
        int mana    = 0;
        int move    = 0;
        int wear    = 0;
        int armor   = 0;
        int rnum    = 30037;

        if ( IS_NPC( ch ) )
        return;
        if ( number_range( 1 , 2000 ) == 1 )
        {
        if ( rnum == 0 || ( pObjIndex = get_obj_index( rnum ) ) == NULL )
        {
        stc( "Missing object, please notify a member of the staff.\n\r", ch );
        return;
        }
        obj     = create_object( pObjIndex, 52 );
        hitroll = number_range( 400, 600 );
        damroll = number_range( 400, 600 );
        hp      = number_range( 1000, 3000 );
        mana    = number_range( 1000, 3000 );
        move    = number_range( 1000, 3000 );
        armor   = number_range( -500, -1 );
        add_affect( obj, APPLY_HITROLL, hitroll );
        add_affect( obj, APPLY_DAMROLL, damroll );
        add_affect( obj, APPLY_HIT, hp );
        add_affect( obj, APPLY_MANA, mana );
        add_affect( obj, APPLY_MOVE, move );
        add_affect( obj, APPLY_AC, armor );
        obj->value[1] = number_range (400,500);
        obj->value[2] = number_range (500,600);

        SET_BIT( obj->quest, QUEST_RELIC );
        SET_BIT( obj->spectype, SITEM_RAREWEAP );
	SET_BIT( obj->spectype, SITEM_UNID );
        SET_BIT( obj->wear_flags, ITEM_TAKE );
        wear = number_range( 1, 13 );
        switch ( wear )
        {
        case 1: wear = ITEM_WIELD;
        sprintf( name, "Whip");
        obj->value[3] = 4;
        obj->value[0] = 18000;
        break;
        case 2: wear = ITEM_WIELD;
        sprintf( name, "Dagger");
        obj->value[3] = 2;
        obj->value[0] = 17000;
        break;
        case 3: wear = ITEM_WIELD;
        sprintf( name, "Rapier");
        obj->value[3] = 11;
        obj->value[0] = 18000;
        break;
        case 4: wear = ITEM_WIELD;
        sprintf( name, "Claw");
        obj->value[3] = 5;
        obj->value[0] = 17000;
        break;
        case 5: wear = ITEM_WIELD;
        sprintf( name, "Mace");
        obj->value[3] = 7;
        obj->value[0] = 18000;
        break;
        case 6: wear = ITEM_WIELD;
        sprintf( name, "Flail");
        obj->value[3] = 8;
        obj->value[0] = 18000;
        break;
        case 7: wear = ITEM_WIELD;
        sprintf( name, "Scythe");
        obj->value[3] = 1;
        obj->value[0] = 18000;
        break;
        case 8: wear = ITEM_WIELD;
        sprintf( name, "Kama");
        obj->value[3] = 3;
        obj->value[0] = 17000;
        break;
        case 9: wear = ITEM_WIELD;
        sprintf( name, "Katana");
        obj->value[3] = 1;
        obj->value[0] = 17000;
        break;
        case 10: wear = ITEM_WIELD;
        sprintf( name, "Talon");
        obj->value[3] = 5;
        obj->value[0] = 17000;
        break;
        case 11: wear = ITEM_WIELD;
        sprintf( name, "Revolver");
        obj->value[3] = 6;
        obj->value[0] = 17000;
        break;
        case 12: wear = ITEM_WIELD;
        sprintf( name, "Longsword");
        obj->value[3] = 3;
        obj->value[0] = 18000;
        break;
        case 13: wear = ITEM_WIELD;
        sprintf( name, "Shortsword");
        obj->value[3] = 1;
        obj->value[0] = 17000;
        break;
        }
        SET_BIT( obj->wear_flags, wear );
        obj->item_type = ITEM_WEAPON;
        sprintf( ooga ,"#0E#nb#0o#nn#0y #CC#cr#ne#7sc#ne#cn#Ct #7%s #n", name );
        free_string( obj->short_descr );
        obj->short_descr = str_dup( ooga );
        sprintf( ooga ,"#0E#nb#0o#nn#0y #CC#cr#ne#7sc#ne#cn#Ct #7%s lies on the ground.#n", name );
        free_string( obj->description );
        obj->description = str_dup( ooga );
        sprintf( ooga, "Rare weapon %s ", name );
        free_string( obj->name );
        obj->name = str_dup( ooga );
        obj_to_char( obj, ch ); obj->questowner = str_dup(ch->pcdata->switchname);
        act( "$p #7appears in your hands in a great #Ye#yxplosion#7.#n", ch, obj, NULL, TO_CHAR );
        act( "$p #7appears in $n's hands in a great #Ye#yxplosion#7.#n", ch, obj, NULL, TO_ROOM );
        stc( "#7You have obtained a Rare Weapon!#n\n\r", ch );
        }
        }

     void rare_weapon5 ( CHAR_DATA * ch, CHAR_DATA * victim )
        {
        OBJ_INDEX_DATA * pObjIndex;
        OBJ_DATA * obj;
        char name [MSL];
        char ooga [MSL];
        int hitroll = 0;
        int damroll = 0;
        int hp      = 0;
        int mana    = 0;
        int move    = 0;
        int wear    = 0;
        int armor   = 0;
        int rnum    = 30037;

        if ( IS_NPC( ch ) )
        return;
        if ( number_range( 1 , 2000 ) == 1 )
        {
        if ( rnum == 0 || ( pObjIndex = get_obj_index( rnum ) ) == NULL )
        {
        stc( "Missing object, please notify a member of the staff.\n\r", ch );
        return;
        }
        obj     = create_object( pObjIndex, 52 );
        hitroll = number_range( 400, 600 );
        damroll = number_range( 400, 600 );
        hp      = number_range( 1000, 3000 );
        mana    = number_range( 1000, 3000 );
        move    = number_range( 1000, 3000 );
        armor   = number_range( -500, -1 );
        add_affect( obj, APPLY_HITROLL, hitroll );
        add_affect( obj, APPLY_DAMROLL, damroll );
        add_affect( obj, APPLY_HIT, hp );
        add_affect( obj, APPLY_MANA, mana );
        add_affect( obj, APPLY_MOVE, move );
        add_affect( obj, APPLY_AC, armor );
        obj->value[1] = number_range (400,500);
        obj->value[2] = number_range (500,600);

        SET_BIT( obj->quest, QUEST_RELIC );
        SET_BIT( obj->spectype, SITEM_RAREWEAP );
	SET_BIT( obj->spectype, SITEM_UNID );
        SET_BIT( obj->wear_flags, ITEM_TAKE );
        wear = number_range( 1, 13 );
        switch ( wear )
        {
        case 1: wear = ITEM_WIELD;
        sprintf( name, "Whip");
        obj->value[3] = 4;
        obj->value[0] = 18000;
        break;
        case 2: wear = ITEM_WIELD;
        sprintf( name, "Dagger");
        obj->value[3] = 2;
        obj->value[0] = 17000;
        break;
        case 3: wear = ITEM_WIELD;
        sprintf( name, "Rapier");
        obj->value[3] = 11;
        obj->value[0] = 18000;
        break;
        case 4: wear = ITEM_WIELD;
        sprintf( name, "Claw");
        obj->value[3] = 5;
        obj->value[0] = 17000;
        break;
        case 5: wear = ITEM_WIELD;
        sprintf( name, "Mace");
        obj->value[3] = 7;
        obj->value[0] = 18000;
        break;
        case 6: wear = ITEM_WIELD;
        sprintf( name, "Flail");
        obj->value[3] = 8;
        obj->value[0] = 18000;
        break;
        case 7: wear = ITEM_WIELD;
        sprintf( name, "Scythe");
        obj->value[3] = 1;
        obj->value[0] = 18000;
        break;
        case 8: wear = ITEM_WIELD;
        sprintf( name, "Kama");
        obj->value[3] = 3;
        obj->value[0] = 17000;
        break;
        case 9: wear = ITEM_WIELD;
        sprintf( name, "Katana");
        obj->value[3] = 1;
        obj->value[0] = 17000;
        break;
        case 10: wear = ITEM_WIELD;
        sprintf( name, "Talon");
        obj->value[3] = 5;
        obj->value[0] = 17000;
        break;
        case 11: wear = ITEM_WIELD;
        sprintf( name, "Revolver");
        obj->value[3] = 6;
        obj->value[0] = 17000;
        break;
        case 12: wear = ITEM_WIELD;
        sprintf( name, "Longsword");
        obj->value[3] = 3;
        obj->value[0] = 18000;
        break;
        case 13: wear = ITEM_WIELD;
        sprintf( name, "Shortsword");
        obj->value[3] = 1;
        obj->value[0] = 17000;
        break;
        }
        SET_BIT( obj->wear_flags, wear );
        obj->item_type = ITEM_WEAPON;
        sprintf( ooga ,"#GO#gr#ng#7a#nn#gi#Gc #7%s #n", name );
        free_string( obj->short_descr );
        obj->short_descr = str_dup( ooga );
        sprintf( ooga ,"#GO#gr#ng#7a#nn#gi#Gc #7%s lies on the ground.#n", name );
        free_string( obj->description );
        obj->description = str_dup( ooga );
        sprintf( ooga, "Rare weapon %s ", name );
        free_string( obj->name );
        obj->name = str_dup( ooga );
        obj_to_char( obj, ch ); obj->questowner = str_dup(ch->pcdata->switchname);
        act( "$p #7appears in your hands in a great #Ye#yxplosion#7.#n", ch, obj, NULL, TO_CHAR );
        act( "$p #7appears in $n's hands in a great #Ye#yxplosion#7.#n", ch, obj, NULL, TO_ROOM );
        stc( "#7You have obtained a Rare Weapon!#n\n\r", ch );
        }
        }

     void rare_weapon6 ( CHAR_DATA * ch, CHAR_DATA * victim )
        {
        OBJ_INDEX_DATA * pObjIndex;
        OBJ_DATA * obj;
        char name [MSL];
        char ooga [MSL];
        int hitroll = 0;
        int damroll = 0;
        int hp      = 0;
        int mana    = 0;
        int move    = 0;
        int wear    = 0;
        int armor   = 0;
        int rnum    = 30037;

        if ( IS_NPC( ch ) )
        return;
        if ( number_range( 1 , 2000 ) == 1 )
        {
        if ( rnum == 0 || ( pObjIndex = get_obj_index( rnum ) ) == NULL )
        {
        stc( "Missing object, please notify a member of the staff.\n\r", ch );
        return;
        }
        obj     = create_object( pObjIndex, 52 );
        hitroll = number_range( 400, 600 );
        damroll = number_range( 400, 600 );
        hp      = number_range( 1000, 3000 );
        mana    = number_range( 1000, 3000 );
        move    = number_range( 1000, 3000 );
        armor   = number_range( -500, -1 );
        add_affect( obj, APPLY_HITROLL, hitroll );
        add_affect( obj, APPLY_DAMROLL, damroll );
        add_affect( obj, APPLY_HIT, hp );
        add_affect( obj, APPLY_MANA, mana );
        add_affect( obj, APPLY_MOVE, move );
        add_affect( obj, APPLY_AC, armor );
        obj->value[1] = number_range (400,500);
        obj->value[2] = number_range (500,600);

        SET_BIT( obj->quest, QUEST_RELIC );
        SET_BIT( obj->spectype, SITEM_RAREWEAP );
	SET_BIT( obj->spectype, SITEM_UNID );
        SET_BIT( obj->wear_flags, ITEM_TAKE );
        wear = number_range( 1, 13 );
        switch ( wear )
        {
        case 1: wear = ITEM_WIELD;
        sprintf( name, "Whip");
        obj->value[3] = 4;
        obj->value[0] = 18000;
        break;
        case 2: wear = ITEM_WIELD;
        sprintf( name, "Dagger");
        obj->value[3] = 2;
        obj->value[0] = 17000;
        break;
        case 3: wear = ITEM_WIELD;
        sprintf( name, "Rapier");
        obj->value[3] = 11;
        obj->value[0] = 18000;
        break;
        case 4: wear = ITEM_WIELD;
        sprintf( name, "Claw");
        obj->value[3] = 5;
        obj->value[0] = 17000;
        break;
        case 5: wear = ITEM_WIELD;
        sprintf( name, "Mace");
        obj->value[3] = 7;
        obj->value[0] = 18000;
        break;
        case 6: wear = ITEM_WIELD;
        sprintf( name, "Flail");
        obj->value[3] = 8;
        obj->value[0] = 18000;
        break;
        case 7: wear = ITEM_WIELD;
        sprintf( name, "Scythe");
        obj->value[3] = 1;
        obj->value[0] = 18000;
        break;
        case 8: wear = ITEM_WIELD;
        sprintf( name, "Kama");
        obj->value[3] = 3;
        obj->value[0] = 17000;
        break;
        case 9: wear = ITEM_WIELD;
        sprintf( name, "Katana");
        obj->value[3] = 1;
        obj->value[0] = 17000;
        break;
        case 10: wear = ITEM_WIELD;
        sprintf( name, "Talon");
        obj->value[3] = 5;
        obj->value[0] = 17000;
        break;
        case 11: wear = ITEM_WIELD;
        sprintf( name, "Revolver");
        obj->value[3] = 6;
        obj->value[0] = 17000;
        break;
        case 12: wear = ITEM_WIELD;
        sprintf( name, "Longsword");
        obj->value[3] = 3;
        obj->value[0] = 18000;
        break;
        case 13: wear = ITEM_WIELD;
        sprintf( name, "Shortsword");
        obj->value[3] = 1;
        obj->value[0] = 17000;
        break;
        }
        SET_BIT( obj->wear_flags, wear );
        obj->item_type = ITEM_WEAPON;
        sprintf( ooga ,"#PD#pe#0a#nt#7h#ns#0o#pn#Pg #7%s #n", name );
        free_string( obj->short_descr );
        obj->short_descr = str_dup( ooga );
        sprintf( ooga ,"#PD#pe#0a#nt#7h#ns#0o#pn#Pg #7%s lies on the ground.#n", name );
        free_string( obj->description );
        obj->description = str_dup( ooga );
        sprintf( ooga, "Rare weapon %s ", name );
        free_string( obj->name );
        obj->name = str_dup( ooga );
        obj_to_char( obj, ch ); obj->questowner = str_dup(ch->pcdata->switchname);
        act( "$p #7appears in your hands in a great #Ye#yxplosion#7.#n", ch, obj, NULL, TO_CHAR );
        act( "$p #7appears in $n's hands in a great #Ye#yxplosion#7.#n", ch, obj, NULL, TO_ROOM );
        stc( "#7You have obtained a Rare Weapon!#n\n\r", ch );
        }
        }

     void rare_weapon7 ( CHAR_DATA * ch, CHAR_DATA * victim )
        {
        OBJ_INDEX_DATA * pObjIndex;
        OBJ_DATA * obj;
        char name [MSL];
        char ooga [MSL];
        int hitroll = 0;
        int damroll = 0;
        int hp      = 0;
        int mana    = 0;
        int move    = 0;
        int wear    = 0;
        int armor   = 0;
        int rnum    = 30037;

        if ( IS_NPC( ch ) )
        return;
        if ( number_range( 1 , 2000 ) == 1 )
        {
        if ( rnum == 0 || ( pObjIndex = get_obj_index( rnum ) ) == NULL )
        {
        stc( "Missing object, please notify a member of the staff.\n\r", ch );
        return;
        }
        obj     = create_object( pObjIndex, 52 );
        hitroll = number_range( 400, 600 );
        damroll = number_range( 400, 600 );
        hp      = number_range( 1000, 3000 );
        mana    = number_range( 1000, 3000 );
        move    = number_range( 1000, 3000 );
        armor   = number_range( -500, -1 );
        add_affect( obj, APPLY_HITROLL, hitroll );
        add_affect( obj, APPLY_DAMROLL, damroll );
        add_affect( obj, APPLY_HIT, hp );
        add_affect( obj, APPLY_MANA, mana );
        add_affect( obj, APPLY_MOVE, move );
        add_affect( obj, APPLY_AC, armor );
        obj->value[1] = number_range (400,500);
        obj->value[2] = number_range (500,600);

        SET_BIT( obj->quest, QUEST_RELIC );
        SET_BIT( obj->spectype, SITEM_RAREWEAP );
	SET_BIT( obj->spectype, SITEM_UNID );
        SET_BIT( obj->wear_flags, ITEM_TAKE );
        wear = number_range( 1, 13 );
        switch ( wear )
        {
        case 1: wear = ITEM_WIELD;
        sprintf( name, "Whip");
        obj->value[3] = 4;
        obj->value[0] = 18000;
        break;
        case 2: wear = ITEM_WIELD;
        sprintf( name, "Dagger");
        obj->value[3] = 2;
        obj->value[0] = 17000;
        break;
        case 3: wear = ITEM_WIELD;
        sprintf( name, "Rapier");
        obj->value[3] = 11;
        obj->value[0] = 18000;
        break;
        case 4: wear = ITEM_WIELD;
        sprintf( name, "Claw");
        obj->value[3] = 5;
        obj->value[0] = 17000;
        break;
        case 5: wear = ITEM_WIELD;
        sprintf( name, "Mace");
        obj->value[3] = 7;
        obj->value[0] = 18000;
        break;
        case 6: wear = ITEM_WIELD;
        sprintf( name, "Flail");
        obj->value[3] = 8;
        obj->value[0] = 18000;
        break;
        case 7: wear = ITEM_WIELD;
        sprintf( name, "Scythe");
        obj->value[3] = 1;
        obj->value[0] = 18000;
        break;
        case 8: wear = ITEM_WIELD;
        sprintf( name, "Kama");
        obj->value[3] = 3;
        obj->value[0] = 17000;
        break;
        case 9: wear = ITEM_WIELD;
        sprintf( name, "Katana");
        obj->value[3] = 1;
        obj->value[0] = 17000;
        break;
        case 10: wear = ITEM_WIELD;
        sprintf( name, "Talon");
        obj->value[3] = 5;
        obj->value[0] = 17000;
        break;
        case 11: wear = ITEM_WIELD;
        sprintf( name, "Revolver");
        obj->value[3] = 6;
        obj->value[0] = 17000;
        break;
        case 12: wear = ITEM_WIELD;
        sprintf( name, "Longsword");
        obj->value[3] = 3;
        obj->value[0] = 18000;
        break;
        case 13: wear = ITEM_WIELD;
        sprintf( name, "Shortsword");
        obj->value[3] = 1;
        obj->value[0] = 17000;
        break;
        }
        SET_BIT( obj->wear_flags, wear );
        obj->item_type = ITEM_WEAPON;
        sprintf( ooga ,"#gC#Gr#7y#np#7t#Gi#gc #7%s #n", name );
        free_string( obj->short_descr );
        obj->short_descr = str_dup( ooga );
        sprintf( ooga ,"#gC#Gr#7y#np#7t#Gi#gc #7%s lies on the ground.#n", name );
        free_string( obj->description );
        obj->description = str_dup( ooga );
        sprintf( ooga, "Rare weapon %s ", name );
        free_string( obj->name );
        obj->name = str_dup( ooga );
        obj_to_char( obj, ch ); obj->questowner = str_dup(ch->pcdata->switchname);
        act( "$p #7appears in your hands in a great #Ye#yxplosion#7.#n", ch, obj, NULL, TO_CHAR );
        act( "$p #7appears in $n's hands in a great #Ye#yxplosion#7.#n", ch, obj, NULL, TO_ROOM );
        stc( "#7You have obtained a Rare Weapon!#n\n\r", ch );
        }
        }

     void rare_weapon8 ( CHAR_DATA * ch, CHAR_DATA * victim )
        {
        OBJ_INDEX_DATA * pObjIndex;
        OBJ_DATA * obj;
        char name [MSL];
        char ooga [MSL];
        int hitroll = 0;
        int damroll = 0;
        int hp      = 0;
        int mana    = 0;
        int move    = 0;
        int wear    = 0;
        int armor   = 0;
        int rnum    = 30037;

        if ( IS_NPC( ch ) )
        return;
        if ( number_range( 1 , 2000 ) == 1 )
        {
        if ( rnum == 0 || ( pObjIndex = get_obj_index( rnum ) ) == NULL )
        {
        stc( "Missing object, please notify a member of the staff.\n\r", ch );
        return;
        }
        obj     = create_object( pObjIndex, 52 );
        hitroll = number_range( 400, 600 );
        damroll = number_range( 400, 600 );
        hp      = number_range( 1000, 3000 );
        mana    = number_range( 1000, 3000 );
        move    = number_range( 1000, 3000 );
        armor   = number_range( -500, -1 );
        add_affect( obj, APPLY_HITROLL, hitroll );
        add_affect( obj, APPLY_DAMROLL, damroll );
        add_affect( obj, APPLY_HIT, hp );
        add_affect( obj, APPLY_MANA, mana );
        add_affect( obj, APPLY_MOVE, move );
        add_affect( obj, APPLY_AC, armor );
        obj->value[1] = number_range (400,500);
        obj->value[2] = number_range (500,600);

        SET_BIT( obj->quest, QUEST_RELIC );
        SET_BIT( obj->spectype, SITEM_RAREWEAP );
	SET_BIT( obj->spectype, SITEM_UNID );
        SET_BIT( obj->wear_flags, ITEM_TAKE );
        wear = number_range( 1, 13 );
        switch ( wear )
        {
        case 1: wear = ITEM_WIELD;
        sprintf( name, "Whip");
        obj->value[3] = 4;
        obj->value[0] = 18000;
        break;
        case 2: wear = ITEM_WIELD;
        sprintf( name, "Dagger");
        obj->value[3] = 2;
        obj->value[0] = 17000;
        break;
        case 3: wear = ITEM_WIELD;
        sprintf( name, "Rapier");
        obj->value[3] = 11;
        obj->value[0] = 18000;
        break;
        case 4: wear = ITEM_WIELD;
        sprintf( name, "Claw");
        obj->value[3] = 5;
        obj->value[0] = 17000;
        break;
        case 5: wear = ITEM_WIELD;
        sprintf( name, "Mace");
        obj->value[3] = 7;
        obj->value[0] = 18000;
        break;
        case 6: wear = ITEM_WIELD;
        sprintf( name, "Flail");
        obj->value[3] = 8;
        obj->value[0] = 18000;
        break;
        case 7: wear = ITEM_WIELD;
        sprintf( name, "Scythe");
        obj->value[3] = 1;
        obj->value[0] = 18000;
        break;
        case 8: wear = ITEM_WIELD;
        sprintf( name, "Kama");
        obj->value[3] = 3;
        obj->value[0] = 17000;
        break;
        case 9: wear = ITEM_WIELD;
        sprintf( name, "Katana");
        obj->value[3] = 1;
        obj->value[0] = 17000;
        break;
        case 10: wear = ITEM_WIELD;
        sprintf( name, "Talon");
        obj->value[3] = 5;
        obj->value[0] = 17000;
        break;
        case 11: wear = ITEM_WIELD;
        sprintf( name, "Revolver");
        obj->value[3] = 6;
        obj->value[0] = 17000;
        break;
        case 12: wear = ITEM_WIELD;
        sprintf( name, "Longsword");
        obj->value[3] = 3;
        obj->value[0] = 18000;
        break;
        case 13: wear = ITEM_WIELD;
        sprintf( name, "Shortsword");
        obj->value[3] = 1;
        obj->value[0] = 17000;
        break;
        }
        SET_BIT( obj->wear_flags, wear );
        obj->item_type = ITEM_WEAPON;
        sprintf( ooga ,"#7Mi#nd#0ni#ng#7ht #RH#re#0l#Rl#rf#0i#Rr#re #7%s #n", name );
        free_string( obj->short_descr );
        obj->short_descr = str_dup( ooga );
        sprintf( ooga ,"#7Mi#nd#0ni#ng#7ht #RH#re#0l#Rl#rf#0i#Rr#re #7%s lies on the ground.#n", name );
        free_string( obj->description );
        obj->description = str_dup( ooga );
        sprintf( ooga, "Rare weapon %s ", name );
        free_string( obj->name );
        obj->name = str_dup( ooga );
        obj_to_char( obj, ch ); obj->questowner = str_dup(ch->pcdata->switchname);
        act( "$p #7appears in your hands in a great #Ye#yxplosion#7.#n", ch, obj, NULL, TO_CHAR );
        act( "$p #7appears in $n's hands in a great #Ye#yxplosion#7.#n", ch, obj, NULL, TO_ROOM );
        stc( "#7You have obtained a Rare Weapon!#n\n\r", ch );
        }
        }

     void rare_weapon9 ( CHAR_DATA * ch, CHAR_DATA * victim )
        {
        OBJ_INDEX_DATA * pObjIndex;
        OBJ_DATA * obj;
        char name [MSL];
        char ooga [MSL];
        int hitroll = 0;
        int damroll = 0;
        int hp      = 0;
        int mana    = 0;
        int move    = 0;
        int wear    = 0;
        int armor   = 0;
        int rnum    = 30037;

        if ( IS_NPC( ch ) )
        return;
        if ( number_range( 1 , 2000 ) == 1 )
        {
        if ( rnum == 0 || ( pObjIndex = get_obj_index( rnum ) ) == NULL )
        {
        stc( "Missing object, please notify a member of the staff.\n\r", ch );
        return;
        }
        obj     = create_object( pObjIndex, 52 );
        hitroll = number_range( 400, 600 );
        damroll = number_range( 400, 600 );
        hp      = number_range( 1000, 3000 );
        mana    = number_range( 1000, 3000 );
        move    = number_range( 1000, 3000 );
        armor   = number_range( -500, -1 );
        add_affect( obj, APPLY_HITROLL, hitroll );
        add_affect( obj, APPLY_DAMROLL, damroll );
        add_affect( obj, APPLY_HIT, hp );
        add_affect( obj, APPLY_MANA, mana );
        add_affect( obj, APPLY_MOVE, move );
        add_affect( obj, APPLY_AC, armor );
        obj->value[1] = number_range (400,500);
        obj->value[2] = number_range (500,600);

        SET_BIT( obj->quest, QUEST_RELIC );
        SET_BIT( obj->spectype, SITEM_RAREWEAP );
	SET_BIT( obj->spectype, SITEM_UNID );
        SET_BIT( obj->wear_flags, ITEM_TAKE );
        wear = number_range( 1, 13 );
        switch ( wear )
        {
        case 1: wear = ITEM_WIELD;
        sprintf( name, "Whip");
        obj->value[3] = 4;
        obj->value[0] = 18000;
        break;
        case 2: wear = ITEM_WIELD;
        sprintf( name, "Dagger");
        obj->value[3] = 2;
        obj->value[0] = 17000;
        break;
        case 3: wear = ITEM_WIELD;
        sprintf( name, "Rapier");
        obj->value[3] = 11;
        obj->value[0] = 18000;
        break;
        case 4: wear = ITEM_WIELD;
        sprintf( name, "Claw");
        obj->value[3] = 5;
        obj->value[0] = 17000;
        break;
        case 5: wear = ITEM_WIELD;
        sprintf( name, "Mace");
        obj->value[3] = 7;
        obj->value[0] = 18000;
        break;
        case 6: wear = ITEM_WIELD;
        sprintf( name, "Flail");
        obj->value[3] = 8;
        obj->value[0] = 18000;
        break;
        case 7: wear = ITEM_WIELD;
        sprintf( name, "Scythe");
        obj->value[3] = 1;
        obj->value[0] = 18000;
        break;
        case 8: wear = ITEM_WIELD;
        sprintf( name, "Kama");
        obj->value[3] = 3;
        obj->value[0] = 17000;
        break;
        case 9: wear = ITEM_WIELD;
        sprintf( name, "Katana");
        obj->value[3] = 1;
        obj->value[0] = 17000;
        break;
        case 10: wear = ITEM_WIELD;
        sprintf( name, "Talon");
        obj->value[3] = 5;
        obj->value[0] = 17000;
        break;
        case 11: wear = ITEM_WIELD;
        sprintf( name, "Revolver");
        obj->value[3] = 6;
        obj->value[0] = 17000;
        break;
        case 12: wear = ITEM_WIELD;
        sprintf( name, "Longsword");
        obj->value[3] = 3;
        obj->value[0] = 18000;
        break;
        case 13: wear = ITEM_WIELD;
        sprintf( name, "Shortsword");
        obj->value[3] = 1;
        obj->value[0] = 17000;
        break;
        }
        SET_BIT( obj->wear_flags, wear );
        obj->item_type = ITEM_WEAPON;
        sprintf( ooga ,"#CCr#cy#0s#nt#7a#nl#0l#ci#Cne #0D#re#Rm#ro#0n #7%s #n", name );
        free_string( obj->short_descr );
        obj->short_descr = str_dup( ooga );
        sprintf( ooga ,"#CCr#cy#0s#nt#7a#nl#0l#ci#Cne #0D#re#Rm#ro#0n #7%s lies on the ground.#n", name );
        free_string( obj->description );
        obj->description = str_dup( ooga );
        sprintf( ooga, "Rare weapon %s ", name );
        free_string( obj->name );
        obj->name = str_dup( ooga );
        obj_to_char( obj, ch ); obj->questowner = str_dup(ch->pcdata->switchname);
        act( "$p #7appears in your hands in a great #Ye#yxplosion#7.#n", ch, obj, NULL, TO_CHAR );
        act( "$p #7appears in $n's hands in a great #Ye#yxplosion#7.#n", ch, obj, NULL, TO_ROOM );
        stc( "#7You have obtained a Rare Weapon!#n\n\r", ch );
        }
        }

     void rare_weapon10 ( CHAR_DATA * ch, CHAR_DATA * victim )
        {
        OBJ_INDEX_DATA * pObjIndex;
        OBJ_DATA * obj;
        char name [MSL];
        char ooga [MSL];
        int hitroll = 0;
        int damroll = 0;
        int hp      = 0;
        int mana    = 0;
        int move    = 0;
        int wear    = 0;
        int armor   = 0;
        int rnum    = 30037;

        if ( IS_NPC( ch ) )
        return;
        if ( number_range( 1 , 2000 ) == 1 )
        {
        if ( rnum == 0 || ( pObjIndex = get_obj_index( rnum ) ) == NULL )
        {
        stc( "Missing object, please notify a member of the staff.\n\r", ch );
        return;
        }
        obj     = create_object( pObjIndex, 52 );
        hitroll = number_range( 400, 600 );
        damroll = number_range( 400, 600 );
        hp      = number_range( 1000, 3000 );
        mana    = number_range( 1000, 3000 );
        move    = number_range( 1000, 3000 );
        armor   = number_range( -500, -1 );
        add_affect( obj, APPLY_HITROLL, hitroll );
        add_affect( obj, APPLY_DAMROLL, damroll );
        add_affect( obj, APPLY_HIT, hp );
        add_affect( obj, APPLY_MANA, mana );
        add_affect( obj, APPLY_MOVE, move );
        add_affect( obj, APPLY_AC, armor );
        obj->value[1] = number_range (400,500);
        obj->value[2] = number_range (500,600);

        SET_BIT( obj->quest, QUEST_RELIC );
        SET_BIT( obj->spectype, SITEM_RAREWEAP );
	SET_BIT( obj->spectype, SITEM_UNID );
        SET_BIT( obj->wear_flags, ITEM_TAKE );
        wear = number_range( 1, 13 );
        switch ( wear )
        {
        case 1: wear = ITEM_WIELD;
        sprintf( name, "Whip");
        obj->value[3] = 4;
        obj->value[0] = 18000;
        break;
        case 2: wear = ITEM_WIELD;
        sprintf( name, "Dagger");
        obj->value[3] = 2;
        obj->value[0] = 17000;
        break;
        case 3: wear = ITEM_WIELD;
        sprintf( name, "Rapier");
        obj->value[3] = 11;
        obj->value[0] = 18000;
        break;
        case 4: wear = ITEM_WIELD;
        sprintf( name, "Claw");
        obj->value[3] = 5;
        obj->value[0] = 17000;
        break;
        case 5: wear = ITEM_WIELD;
        sprintf( name, "Mace");
        obj->value[3] = 7;
        obj->value[0] = 18000;
        break;
        case 6: wear = ITEM_WIELD;
        sprintf( name, "Flail");
        obj->value[3] = 8;
        obj->value[0] = 18000;
        break;
        case 7: wear = ITEM_WIELD;
        sprintf( name, "Scythe");
        obj->value[3] = 1;
        obj->value[0] = 18000;
        break;
        case 8: wear = ITEM_WIELD;
        sprintf( name, "Kama");
        obj->value[3] = 3;
        obj->value[0] = 17000;
        break;
        case 9: wear = ITEM_WIELD;
        sprintf( name, "Katana");
        obj->value[3] = 1;
        obj->value[0] = 17000;
        break;
        case 10: wear = ITEM_WIELD;
        sprintf( name, "Talon");
        obj->value[3] = 5;
        obj->value[0] = 17000;
        break;
        case 11: wear = ITEM_WIELD;
        sprintf( name, "Revolver");
        obj->value[3] = 6;
        obj->value[0] = 17000;
        break;
        case 12: wear = ITEM_WIELD;
        sprintf( name, "Longsword");
        obj->value[3] = 3;
        obj->value[0] = 18000;
        break;
        case 13: wear = ITEM_WIELD;
        sprintf( name, "Shortsword");
        obj->value[3] = 1;
        obj->value[0] = 17000;
        break;
        }
        SET_BIT( obj->wear_flags, wear );
        obj->item_type = ITEM_WEAPON;
        sprintf( ooga ,"#LAt#ll#na#7n#nt#le#Lan #7%s #n", name );
        free_string( obj->short_descr );
        obj->short_descr = str_dup( ooga );
        sprintf( ooga ,"#LAt#ll#na#7n#nt#le#Lan #7%s lies on the ground.#n", name );
        free_string( obj->description );
        obj->description = str_dup( ooga );
        sprintf( ooga, "Rare weapon %s ", name );
        free_string( obj->name );
        obj->name = str_dup( ooga );
        obj_to_char( obj, ch ); obj->questowner = str_dup(ch->pcdata->switchname);
        act( "$p #7appears in your hands in a great #Ye#yxplosion#7.#n", ch, obj, NULL, TO_CHAR );
        act( "$p #7appears in $n's hands in a great #Ye#yxplosion#7.#n", ch, obj, NULL, TO_ROOM );
        stc( "#7You have obtained a Rare Weapon!#n\n\r", ch );
        }
        }


     void do_objsell(CHAR_DATA *ch, char *argument)
	{
        char arg [MAX_INPUT_LENGTH];
        ROOM_INDEX_DATA *in_room;
        char buf[MAX_STRING_LENGTH];
	OBJ_DATA * obj;
	int sprice;

        argument = one_argument(argument, arg);       

     	if ( IS_NPC(ch) )
	return;
    	if ( arg[0] == '\0' )
	{
	send_to_char("Sell what?\n\r", ch);
	return;
	}
      	in_room = ch->in_room;
        if ( ch->in_room > get_room_index(3006) )
        {
        stc("You can only sell equipment to Griswold at the Blacksmith's Shop.#n\n\r",ch);
        return;
        }
        in_room = ch->in_room;
        if ( ch->in_room < get_room_index(3006) )
        {
        stc("You can only sell equipment to Griswold at the Blacksmith's Shop.#n\n\r",ch);
        return;
        }
    	if ( (obj = get_obj_carry( ch, arg, ch)) == NULL )
    	{
        send_to_char("You aren't carrying that item.\n\r",ch);
        return;
    	}
        if (obj->questowner != NULL && strlen(obj->questowner) > 1 && str_cmp(ch->pcdata->switchname, obj->questowner))
        {
        stc("YOU CAN NOT SELL WHAT YOU DO NOW OWN... FOOL!\n\r", ch);
        return;
        }
/*        if ( IS_SET( obj->spectype, SITEM_UNID ) )
        {
        send_to_char("That item has not been identified yet.\n\r", ch);
        return;
        }
*/
	if (obj->pIndexData->vnum >= 11059 && obj->pIndexData->vnum <= 11066)        
	{
        sprice = number_range( 10000, 16000 );
        obj_from_char( obj );
        ch->bones += sprice;
        send_to_char("Griswold says '#YWhat can i do for ya?#n'.\n\r", ch);
        do_say(ch, "I found this while fighting through the dungeons");
        sprintf(buf, "You show Griswold %s#n.\n\r", obj->short_descr);
        send_to_char(buf, ch);
        sprintf(buf, "Griswold says '#YOHhHHhHh %s #Ylooks like a dandy#n'.\n\r", obj->short_descr);
        send_to_char(buf, ch);
        do_say(ch, "How much can I get for it?");
        sprintf(buf, "Griswold says '#YI'll take it for the price of %d bones#n'.\n\r", sprice);
        send_to_char(buf, ch);
        do_say(ch, "Hrmm..... Okay.");
        sprintf(buf, "You hand %s #nto Griswold the Blacksmith.\n\r", obj->short_descr);
        send_to_char(buf, ch);
        sprintf(buf, "Griswold hands you %d bones.\n\r", sprice);
        send_to_char(buf, ch);
        do_say(ch, "Thank you Griswold!" );
        sprintf(buf, "Griswold says '#YNo problem %s, come back any time#n'.\n\r", ch->pcdata->switchname);
        send_to_char(buf, ch);
        return;
        }

	if ( IS_SET( obj->spectype, SITEM_COMMON ) ) 
	{	
   	sprice = number_range( 1000, 2000 );
     	obj_from_char( obj );
	ch->bones += sprice;
	send_to_char("Griswold says '#YWhat can i do for ya?#n'.\n\r", ch);
	do_say(ch, "I found this while fighting through the dungeons");
	sprintf(buf, "You show Griswold %s#n.\n\r", obj->short_descr);
	send_to_char(buf, ch);
        sprintf(buf, "Griswold says '#YOHhHHhHh %s #Ylooks like a dandy#n'.\n\r", obj->short_descr);
	send_to_char(buf, ch);
	do_say(ch, "How much can I get for it?");
	sprintf(buf, "Griswold says '#YI'll take it for the price of %d bones#n'.\n\r", sprice);
	send_to_char(buf, ch);
	do_say(ch, "Hrmm..... Okay.");
        sprintf(buf, "You hand %s #nto Griswold the Blacksmith.\n\r", obj->short_descr);
        send_to_char(buf, ch);
	sprintf(buf, "Griswold hands you %d bones.\n\r", sprice);
	send_to_char(buf, ch);
        do_say(ch, "Thank you Griswold!" );     
        sprintf(buf, "Griswold says '#YNo problem %s, come back any time#n'.\n\r", ch->pcdata->switchname);
	send_to_char(buf, ch);
	return;
	}
        if ( IS_SET( obj->spectype, SITEM_RARE ) )
        {
        sprice = number_range( 1000, 2000 );
        obj_from_char( obj );
        ch->bones += sprice;
        send_to_char("Griswold says '#YWhat can i do for ya?#n'.\n\r", ch);
        do_say(ch, "I found this while fighting through the dungeons");
        sprintf(buf, "You show Griswold %s#n.\n\r", obj->short_descr);
        send_to_char(buf, ch);
        sprintf(buf, "Griswold says '#YOHhHHhHh %s #Ylooks like a dandy#n'.\n\r", obj->short_descr);
        send_to_char(buf, ch);
        do_say(ch, "How much can I get for it?");
        sprintf(buf, "Griswold says '#YI'll take it for the price of %d bones#n'.\n\r", sprice);
        send_to_char(buf, ch);
        do_say(ch, "Hrmm..... Okay.");
        sprintf(buf, "You hand %s #nto Griswold the Blacksmith.\n\r", obj->short_descr);
        send_to_char(buf, ch);
        sprintf(buf, "Griswold hands you %d bones.\n\r", sprice);
        send_to_char(buf, ch);
        do_say(ch, "Thank you Griswold!" );
        sprintf(buf, "Griswold says '#YNo problem %s, come back any time#n'.\n\r", ch->pcdata->switchname);
        send_to_char(buf, ch);
        return;
        }
        if ( IS_SET( obj->spectype, SITEM_RAREWEAP ) )
        {
        sprice = number_range( 2500, 3000 );
        obj_from_char( obj );
        ch->bones += sprice;
        send_to_char("Griswold says '#YWhat can i do for ya?#n'.\n\r", ch);
        do_say(ch, "I found this while fighting through the dungeons");
        sprintf(buf, "You show Griswold %s#n.\n\r", obj->short_descr);
        send_to_char(buf, ch);
        sprintf(buf, "Griswold says '#YOHhHHhHh %s #Ylooks like a dandy#n'.\n\r", obj->short_descr);
        send_to_char(buf, ch);
        do_say(ch, "How much can I get for it?");
        sprintf(buf, "Griswold says '#YI'll take it for the price of %d bones#n'.\n\r", sprice);
        send_to_char(buf, ch);
        do_say(ch, "Hrmm..... Okay.");
        sprintf(buf, "You hand %s #nto Griswold the Blacksmith.\n\r", obj->short_descr);
        send_to_char(buf, ch);
        sprintf(buf, "Griswold hands you %d bones.\n\r", sprice);
        send_to_char(buf, ch);
        do_say(ch, "Thank you Griswold!" );
        sprintf(buf, "Griswold says '#YNo problem %s, come back any time#n'.\n\r", ch->pcdata->switchname);
        send_to_char(buf, ch);
        return;
        }

	else
	{
	send_to_char("Griswold says '#YI don't want that piece of junk.#n'.\n\r", ch);
	return;
	}
	}

     void do_identify(CHAR_DATA *ch, char *argument)
        {
        char arg [MAX_INPUT_LENGTH];
        ROOM_INDEX_DATA *in_room;
        char buf[MAX_STRING_LENGTH];
        OBJ_DATA * obj;
        int sprice;

        argument = one_argument(argument, arg);

        if ( IS_NPC(ch) )
        return;
        if ( arg[0] == '\0' )
        {
        send_to_char("Identify what?\n\r", ch);
        return;
        }
        in_room = ch->in_room;
        if ( ch->in_room > get_room_index(3007) )
        {
        stc("Only Caine can identify equipment.#n\n\r",ch);
        return;
        }
        in_room = ch->in_room;
        if ( ch->in_room < get_room_index(3007) )
        {
        stc("Only Caine can identify equipment.#n\n\r",ch);
        return;
	}
        if ( (obj = get_obj_carry( ch, arg, ch)) == NULL )
        {
        send_to_char("You aren't carrying that item.\n\r",ch);
        return;
        }
        if ( !IS_SET( obj->spectype, SITEM_UNID ) )
        {
        send_to_char("That item has already been identified.\n\r", ch);
        return;
        }
        sprice = number_range( 200, 300 );
     	if ( ch->bones < 1000 )
	{
	send_to_char("You need atleast 3000 bones identify a piece of Rare armor.\n\r", ch);
	return;
	}
    	ch->bones -= sprice;
	do_say(ch, "Caine i got something for you to identify for me.");
	send_to_char("Caine says '#YHMmMmm its gonna cost you lad#n'.\n\r", ch);
	sprintf(buf, "You hand %s #nto Caine.\n\r", obj->short_descr);
	send_to_char(buf, ch);
	send_to_char("Caine chants the words '#sA#h#sU#sM#sa #sH#sU#sbb#so#sO #sw#sa#st#sO#sO#sO#so#so#sO#sO#n'.\n\r", ch);
	sprintf(buf, "%s #nbegins to glow a bright #YY#yellow #ncolor\n\r", obj->short_descr); 
	send_to_char(buf, ch);
	send_to_char("Caine says '#YOHhhHHh that be a nice piece of armor#n'.\n\r", ch);
	sprintf(buf, "Caine says '#YThats gonna cost you %d bones#n'.\n\r", sprice);
	send_to_char(buf, ch);
	do_say(ch, "Ok caine lemme get that for you");
	sprintf(buf, "You hand %d bones to Caine#n\n\r", sprice);
	send_to_char(buf, ch);
	send_to_char("Caine says '#YAhhh Thank you lad, Here you go#n'.\n\r", ch);
	sprintf(buf, "Caine hands %s #nto you\n\r", obj->short_descr);
	send_to_char(buf, ch);
        REMOVE_BIT(obj->spectype, SITEM_UNID);
     	return;
        }

     void do_weapsell(CHAR_DATA *ch, char *argument)
        {
        char arg [MAX_INPUT_LENGTH];
        ROOM_INDEX_DATA *in_room;
        char buf[MAX_STRING_LENGTH];
        OBJ_DATA * obj;
        int sprice;

        argument = one_argument(argument, arg);

        if ( IS_NPC(ch) )
        return;
        if ( arg[0] == '\0' )
        {
        send_to_char("Sell what?\n\r", ch);
        return;
        }
        in_room = ch->in_room;
        if ( ch->in_room > get_room_index(20) )
        {
        stc("You can only sell weapons to Wirt by the cave entrance.#n\n\r",ch);
        return;
        }
        in_room = ch->in_room;
        if ( ch->in_room < get_room_index(20) )
        {
        stc("You can only sell weapons to Wirt by the cave entrance.#n\n\r",ch);
        return;
        }
        if ( (obj = get_obj_carry( ch, arg, ch)) == NULL )
        {
        send_to_char("You aren't carrying that item.\n\r",ch);
        return;
        }
        if ( IS_SET( obj->spectype, SITEM_UNID ) )
        {
        send_to_char("That item has not been identified yet.\n\r", ch);
        return;
        }
        if ( !IS_SET( obj->spectype, SITEM_RAREWEAP ) )
        {
        send_to_char("You can only sell Rare Weapons.\n\r", ch);
        return;
        }
        sprice = number_range( 2500, 3000 );
        obj_from_char( obj );
        ch->bones += sprice;
        send_to_char("Wirt says '#YHow can I help you?#n'.\n\r", ch);
        do_say(ch, "I'd like to sell some weapons are you interested?");
	send_to_char("Wirt says '#YLook at this leg.. OF COURSE I NEED WEAPONS!#n'.\n\r", ch);
	do_say(ch, "Okay okay.. this is what i want to sell");
	sprintf(buf, "You hand %s #nto Wirt.\n\r", obj->short_descr);
	send_to_char(buf, ch);
	sprintf(buf, "Wirt examines %s#n\n\r", obj->short_descr);
	send_to_char(buf, ch);
	send_to_char("Wirt says '#YHmmm.. nice average.. decent hit/dam.. ARMOR CLASS!!#n'.\n\r", ch);
	sprintf(buf, "Wirt says '#YI'll give you %d for it.#n'.\n\r", sprice);
	send_to_char(buf, ch);
	do_say(ch, "FUCK YEH WIRT! You got a deal!");
	sprintf(buf, "Wirt hands you %d bones.#n\n\r", sprice);
	send_to_char(buf, ch);
	do_say(ch, "Thank you Wirt.");
	sprintf(buf, "Wirt says '#YYeah yeah.. now get the fuck outta here before i cut you with my new %s#n!'.\n\r", obj->short_descr);
	send_to_char(buf, ch);
	send_to_char("Wirt grins evily.#n\n\r", ch);
	do_west( ch, "" );
	return;
	}

/*     void do_mercy( CHAR_DATA *ch, char *argument )
	{
	CHAR_DATA *victim;
	char arg[MAX_STRING_LENGTH];
	char buf[MAX_STRING_LENGTH];

	one_argument( argument, arg );

	if ( IS_NPC( ch ) ) return;
 	if ( arg[0] == '\0' )
 	{
 	send_to_char( "Show mercy to whom?\n\r", ch );
 	return;
 	}
  	if (ch->in_room != NULL)
  	{
    	if (IS_SET (ch->in_room->room_flags, ROOM_ARENA))
    	{
      	send_to_char("Your in the arena.\n\r",ch);
      	return;
    	}
  	}
  	if ( ( victim = get_char_room( ch, NULL, arg ) ) == NULL )
  	{
    	send_to_char( "They aren't here.\n\r", ch );
    	return;
  	}
  	if (ch->hitfirst == FALSE)
   	{
    	send_to_char("You attacked them first fool.\n\r", ch);
    	return;
   	}
  	if ( ch == victim )
  	{
    	send_to_char( "That might be a bit tricky...\n\r", ch );
    	return;
  	}
  	if (IS_NPC(victim))
  	{
    	send_to_char( "You can only decapitate other players.\n\r", ch );
    	return;
  	}
  	if ( victim->position > 1 )
  	{
    	send_to_char( "You can only do this to mortally wounded players.\n\r", ch );
    	return;
  	}
  	if((get_age(ch)-17)<2)
  	{
    	send_to_char("You'll have to wait till you have 4 hours.\n\r",ch);
    	return;
  	}
  	if((get_age(victim)-17)<2)
  	{
    	send_to_char("They are a newbie, don't hurt them.\n\r",ch);
    	return;
  	}
 	if (IS_NPC(victim))
 	{
 	send_to_char( "Show mercy to a mob? NEVER!\n\r",ch);
 	return;
 	}
 	if (is_safe(ch,victim)) return;
  	sprintf(buf, "#P%s #0has been left for dead by #C%s#n.",victim->pcdata->switchname,ch->pcdata->switchname);
  	do_info(ch, buf);
  	sprintf(log_buf, "%s shown mercy by %s at %d.",victim->pcdata->switchname,ch->pcdata->switchname);
  	log_string(LOG_COMMAND, log_buf);
  	victim->fight_timer += 10;
  	if (ch->fight_timer > 10)
  	ch->fight_timer = 10;
  	act( "You bring your weapon down upon $N's neck!",  ch, NULL, victim, TO_CHAR);
  	sprintf(buf, "Your life is spared by the mercy of %s!\n\r", ch->pcdata->switchname);
  	stc(buf, victim);
  	act( "$n swings $s weapon down towards $N's neck!",  ch, NULL, victim, TO_NOTVICT);
  	act( "$n's head is spared by $N's mercy!", victim, NULL, ch, TO_ROOM);
  	act( "The gods shine upon the mecrcy you have shown $N.",  ch, NULL, victim, TO_VICT);
  	act( "The gods shine upon $n as $m shows $N mercy.",  ch, NULL, victim, TO_NOTVICT);
  	act( "You fall to the ground in agony as the gods smile on you.",  ch, NULL, NULL, TO_CHAR);
  	act( "$n falls to the ground as the gods smile at $m.",  ch, NULL, NULL, TO_NOTVICT);
  	if ( ch->hit < ch->max_hit ) ch->hit = ch->max_hit;
  	if ( ch->mana < ch->max_mana ) ch->mana = ch->max_mana;
  	if ( ch->move < ch->max_move ) ch->move = ch->max_move;
  	char_from_room(victim);
  	char_to_room(victim,get_room_index(ROOM_VNUM_ALTAR));
  	ch->fighting = NULL;
  	victim->fighting = NULL;
  	ch->hitfirst = FALSE;
  	victim->hitfirst = FALSE;
  	update_pos(victim);
  	WAIT_STATE(ch, 24);
  	WAIT_STATE(victim,96);
  	return;
	}
*/