cotn25/area/
cotn25/src/
 /***************************************************************************
 *  Original Diku Mud copyright (C) 1990, 1991 by Sebastian Hammer,        *
 *  Michael Seifert, Hans Henrik St{rfeldt, Tom Madsen, and Katja Nyboe.   *
 *                                                                         *
 *  Merc Diku Mud improvments copyright (C) 1992, 1993 by Michael          *
 *  Chastain, Michael Quan, and Mitchell Tse.                              *
 *                                                                         *
 *  In order to use any part of this Merc Diku Mud, you must comply with   *
 *  both the original Diku license in 'license.doc' as well the Merc       *
 *  license in 'license.txt'.  In particular, you may not remove either of *
 *  these copyright notices.                                               *
 *                                                                         *
 *  Much time and thought has gone into this software and you are          *
 *  benefitting.  We hope that you share your changes too.  What goes      *
 *  around, comes around.                                                  *
 ***************************************************************************/
/**********************************************
 * Xset by Kline...Use as you will, just      *
 * please give credit                         * 
 *					      *
 * Might need a define for stc (send_to_char) *
 * Originally designed for a WOTK/RoDaM MUD   *
 * So you may need to remove a few fields     *
 * And probably remove the element.h include  *
 *					      *
 * File Contains:			      *
 *  void do_xset (pset + mset)		      *
 *********************************************/


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

#include <unistd.h>

void do_xset( CHAR_DATA *ch, char *argument )
{		/* Basic Stuff */
    char arg1 [MAX_INPUT_LENGTH];
    char arg2 [MAX_INPUT_LENGTH];
    char arg3 [MAX_INPUT_LENGTH];
    char buf[MAX_STRING_LENGTH];
    CHAR_DATA *victim;
    unsigned long int value = 0;
	
    sprintf(buf,"%s: Xset %s",ch->name,argument);
    if (ch->level < NO_WATCH) do_watching(ch,buf);
	
    smash_tilde( argument );
    argument = one_argument( argument, arg1 );
    argument = one_argument( argument, arg2 );
    argument = one_argument( argument, arg3 );
		/* Menu System */
	if ( arg1[0] == '\0' )
	{
		stc( "#4............................................#n\n\r", ch );
		stc( "Syntax: xset <pset/mset/all>\n\r", ch );
		stc( "#4............................................#n\n\r", ch );
		return;
	}
		/* Old Pset Menu */
	else if ( !str_cmp( arg1, "pset" ) )
	{
		stc( "#4............................................#n\n\r", ch );
		stc( "Syntax: xset <target> <field> <value>\n\r", ch );
		stc( "#4............................................#n\n\r", ch );
		stc( "\n\r", ch );
		stc( "Integration: pset\n\r", ch );
		stc( "\n\r", ch );
		stc( "Field Values:\n\r", ch );
		stc( "  Points:\n\r", ch );
		stc( "    aura quest palpts dempts\n\r", ch );
		stc( "    souls elepts beast status\n\r", ch );
		stc( "  Magic:\n\r", ch );
		stc( "    purple red blue green yellow black white allm\n\r", ch );
		stc( "  Stance:\n\r", ch );
		stc( "    viper crane crab mongoose bull\n\r", ch );
		stc( "    mantis dragon tiger monkey swallow alls\n\r", ch );
		stc( "  Weapon:\n\r", ch );
		stc( "    unarm slice stab slash whip claw blast\n\r", ch );
		stc( "    pound crush grep bite pierce suck allw\n\r", ch );
		stc( "  Immune:\n\r", ch );
		stc( "    slashi stabi smash animal misc charm\n\r", ch );
		stc( "    hurl backstab shielded kick disarm\n\r", ch );
		stc( "    steal sleep drain heat cold acid summon\n\r", ch );
		stc( "    lightning sunlight allis allir\n\r", ch );
		return;
	}
		/* Old Mset Menu */
    else if ( !str_cmp( arg1, "mset" ) )
    {
		stc( "#4............................................#n\n\r", ch );
		stc( "Syntax: xset <target> <field>  <value>\n\r",	ch );
		stc( "#4............................................#n\n\r", ch );
		stc( "\n\r", ch );
		stc( "Integration: mset\n\r", ch );
		stc( "\n\r", ch );
		stc( "Field Values:\n\r", ch );
		stc( "  str int wis dex con sex level exp\n\r", ch );
		stc( "  gold hp mp mv primal align alla\n\r", ch );
		stc( "  thirst drunk full hit dam ac\n\r", ch );
		stc( "  name short long desc title spec\n\r", ch );
		return;
    }
		/* Combined Menu */
	else if ( !str_cmp( arg1, "all" ) )
	{
		stc( "#4............................................#n\n\r", ch );
		stc( "Syntax: xset <target> <field> <value>\n\r", ch );
		stc( "#4............................................#n\n\r", ch );
		stc( "\n\r", ch );
		stc( "Integration: pset\n\r", ch );
		stc( "\n\r", ch );
		stc( "Field Values:\n\r", ch );
		stc( "  Points:\n\r", ch );
		stc( "    aura quest palpts dempts\n\r", ch );
		stc( "    souls elepts beast status\n\r", ch );
		stc( "  Magic:\n\r", ch );
		stc( "    purple red blue green yellow black white allm\n\r", ch );
		stc( "  Stance:\n\r", ch );
		stc( "    viper crane crab mongoose bull\n\r", ch );
		stc( "    mantis dragon tiger monkey swallow alls\n\r", ch );
		stc( "  Weapon:\n\r", ch );
		stc( "    unarm slice stab slash whip claw blast\n\r", ch );
		stc( "    pound crush grep bite pierce suck allw\n\r", ch );
		stc( "  Immune:\n\r", ch );
		stc( "    slashi stabi smash animal misc charm\n\r", ch );
		stc( "    hurl backstab shielded kick disarm\n\r", ch );
		stc( "    steal sleep drain heat cold acid summon\n\r", ch );
		stc( "    lightning sunlight allis allir\n\r", ch );
		stc( "	AntiPaladin: aptick\n\r", ch);

		stc( "\n\r", ch );
		stc( "Integration: mset\n\r", ch );
		stc( "#4............................................#n\n\r", ch );
		stc( "Syntax: xset <target> <field>  <value>\n\r", ch );
		stc( "#4............................................#n\n\r", ch );
		stc( "\n\r", ch );
		stc( "Field Values:\n\r", ch );
		stc( "  str int wis dex con sex level exp\n\r", ch );
		stc( "  gold hp mp mv primal align alla\n\r", ch );
		stc( "  thirst drunk full hit dam ac hybrid\n\r", ch );
		stc( "  name short long desc title spec\n\r", ch );
		return;
	}

		/* Idiot Check */
	else if ( arg1[0] == '\0' || arg2[0] == '\0' )
	{
		stc( "#4............................................#n\n\r", ch );
		stc( "Syntax: xset <target> <field> <value>\n\r", ch );
		stc( "#4............................................#n\n\r", ch );
		return;
	}
	
	else if ( ( victim = get_char_world( ch, arg1 ) ) == NULL )
	{
		stc( "They aren't here.\n\r", ch );
		return;
    }

    value = is_number( arg3 ) ? atoi( arg3 ) : -1;
		/* Begin: Pset Integration */
/*    if ( !str_cmp( arg2, "aura" ) )
    {
		if ( IS_NPC(victim) )
		{
			stc( "Not on NPC's.\n\r", ch );
			return;
		}
	 
		if ( value < 0 || value > 200000 )
		{
			stc( "Aura points range is 0 to 200000.\n\r", ch );
			return;
		}
	
		victim->pcdata->stats[PALADIN_AURA] = value;
		stc( "Ok.\n\r", ch );
		return;
	}
*/

	if ( !str_cmp( arg2, "aptick") )	victim->pcdata->powers[APTICK] = 0;
	
	if ( !str_cmp( arg2, "quest" ) )
    {
		if ( IS_NPC(victim) )
		{
			stc( "Not on NPC's.\n\r", ch );
			return;
		}

		if ( value < 0 || value > 2000000 )
		{
			stc( "Quest points range is 0 to 2000000.\n\r", ch );
			return;
		}

		victim->pcdata->quest = value;
		stc( "Ok.\n\r", ch );
		return;
	}

/*	if ( !str_cmp( arg2, "palpts" ) )
    {
		if ( IS_NPC(victim) )
		{
			stc( "Not on NPC's.\n\r", ch );
			return;
		}
	 
		if ( value < 0 || value > 10 )
		{
			stc( "Paladin power points range is 0 to 10.\n\r", ch );
			return;
		}

		victim->pcdata->stats[PALADIN_PTS] = value;
		stc("Ok.\n\r",ch);
		return;
    }
*/

	if ( !str_cmp( arg2, "hybrid" ) )
	{
                if ( IS_NPC(victim) )
                {
                        stc( "Not on NPC's.\n\r", ch );
                        return;
                }
		
		if (!IS_SET(victim->immune, IMM_HYBRID)) 
			SET_BIT(victim->immune, IMM_HYBRID);
		else
			REMOVE_BIT(victim->immune, IMM_HYBRID);
		stc("Hybrid bit set.\n\r",ch);
		return;
	}

    if ( !str_cmp( arg2, "dempts" ) )
    {
		if ( IS_NPC(victim) )
		{
			stc( "Not on NPC's.\n\r", ch );
			return;
		}

		if ( value < 0 || value > 800000 )
		{
			stc( "Demon points range is 0 to 800000.\n\r", ch );
			return;
		}

		victim->pcdata->stats[DEMON_CURRENT] = value;
		victim->pcdata->stats[DEMON_TOTAL] = value;
		stc("Ok.\n\r",ch);
		return;
    }

   if ( !str_cmp( arg2, "tier" ) )
    {
        if ( IS_NPC(victim) )
        {
            send_to_char( "Not on NPC's.\n\r", ch );
            return;
        }

        if ( value < 0 || value > 10 )
        {
            send_to_char( "Tier Level Range is 0 to 10.\n\r", ch );
            return;
        }

        if (IS_JUDGE(ch))
        {
                victim->tier = 0;
                victim->tier = value;
                send_to_char("Ok.\n\r",ch);}
        else
                send_to_char( "Sorry, no can do...\n\r", ch );
        return;
    }
    if ( !str_cmp( arg2, "tks" ) )
    {
        if ( IS_NPC(victim) )
        {
            send_to_char( "Not on NPC's.\n\r", ch );
            return;
        }

        if ( value < 0 || value > 200 )
        {
            send_to_char( "TK Range is 0 to 200.\n\r", ch );
            return;
        }

        if (IS_JUDGE(ch)) {
                victim->tks = value;
                send_to_char("Ok.\n\r",ch);}
        else
                send_to_char( "Sorry, no can do...\n\r", ch );
        return;
    }

/*	if ( !str_cmp( arg2, "souls" ) )
	{
		if ( IS_NPC(victim) )
		{
			stc( "Not on NPC's.\n\r", ch );
			return;
		}
	 
        if ( value < 0 || value > 500 )
		{
			stc( "Soul range is 0 to 500.\n\r", ch );
			return;
		}
        
		victim->pcdata->classbit = value;
		stc("Ok.\n\r",ch);
		return;
    }
*/    
/*	if ( !str_cmp( arg2, "elepts" ) )
	{
		if ( IS_NPC(victim) )
		{
			stc( "Not on NPC's.\n\r", ch );
			return;
		}
	 
        if ( value < 0 || value > 800000 )
		{
            stc( "Elemental points range is 0 to 800000.\n\r", ch );
			return;
		}

		victim->elem[6] = value;
		send_to_char("Ok.\n\r",ch);
		return;
    }
*/
    if ( !str_cmp( arg2, "beast" ) )
    {
		if ( IS_NPC(victim) )
		{
			stc( "Not on NPC's.\n\r", ch );
			return;
		}

		if ( value < 0 || value > 100 )
		{
			stc( "Beast range is 0 to 100.\n\r", ch );
			return;
		}

		victim->beast = value;
		send_to_char("Ok.\n\r",ch);
		return;
    }

	if ( !str_cmp( arg2, "status" ) )
    {
		if ( IS_NPC(victim) )
		{
			stc( "Not on NPC's.\n\r", ch );
			return;
		}

		if ( value < 0 || value > 100 )
		{
			stc( "Status range is 0 to 100.\n\r", ch );
			return;
		}

		victim->pStatus = value;
		send_to_char("Ok.\n\r",ch);
		return;
    }

	if ( !str_cmp( arg2, "purple" ) )
    {
		if ( IS_NPC(victim) )
		{
			stc( "Not on NPC's.\n\r", ch );
			return;
		}

		if ( value < 0 || value > 300 )
		{
			stc( "Spell range is 0 to 300.\n\r", ch );
			return;
		}

		victim->spl[PURPLE_MAGIC] = value;
		stc("Ok.\n\r",ch);
		return;
    }
	if ( !str_cmp( arg2, "upgrade" ) )
    {
		if ( IS_NPC(victim) )
		{
			stc( "Not on NPC's.\n\r", ch );
			return;
		}

		if ( value < 0 || value > 11 )
		{
			stc( "upgrade range is 0 to 11.\n\r", ch );
			return;
		}
            victim->pcdata->upgrade_level = value;
		stc("Ok.\n\r",ch);
		return;
    }


	if ( !str_cmp( arg2, "red" ) )
    {
		if ( IS_NPC(victim) )
		{
			stc( "Not on NPC's.\n\r", ch );
			return;
		}

		if ( value < 0 || value > 300 )
		{
			stc( "Spell range is 0 to 300.\n\r", ch );
			return;
		}

		victim->spl[RED_MAGIC] = value;
		send_to_char("Ok.\n\r",ch);
		return;
    }


    if ( !str_cmp( arg2, "blue" ) )
	{
		if ( IS_NPC(victim) )
		{
			send_to_char( "Not on NPC's.\n\r", ch );
			return;
		}

		if ( value < 0 || value > 300 )
		{
			stc( "Spell range is 0 to 300.\n\r", ch );
			return;
		}

		victim->spl[BLUE_MAGIC] = value;
		stc("Ok.\n\r",ch);
		return;
    }

	if ( !str_cmp( arg2, "green" ) )
	{
		if ( IS_NPC(victim) )
		{
			stc( "Not on NPC's.\n\r", ch );
			return;
		}

		if ( value < 0 || value > 300 )
		{
			stc( "Spell range is 0 to 300.\n\r", ch );
			return;
		}

		victim->spl[GREEN_MAGIC] = value;
		stc("Ok.\n\r",ch);
		return;
    }

    if ( !str_cmp( arg2, "yellow" ) )
    {
		if ( IS_NPC(victim) )
		{
			stc( "Not on NPC's.\n\r", ch );
			return;
		}

		if ( value < 0 || value > 300 )
		{
			stc( "Spell range is 0 to 300.\n\r", ch );
			return;
		}

		victim->spl[YELLOW_MAGIC] = value;
		stc("Ok.\n\r",ch);
		return;
    }

/*    if ( !str_cmp( arg2, "black" ) )
    {
		if ( IS_NPC(victim) )
		{
			stc( "Not on NPC's.\n\r", ch );
			return;
		}

		if ( value < 0 || value > 300 )
		{
			stc( "Spell range is 0 to 300.\n\r", ch );
			return;
		}

		victim->spl[BLACK_MAGIC] = value;
		stc("Ok.\n\r",ch);
		return;
    }

    if ( !str_cmp( arg2, "white" ) )
    {
		if ( IS_NPC(victim) )
		{
			stc( "Not on NPC's.\n\r", ch );
			return;
		}

		if ( value < 0 || value > 300 )
		{
			stc( "Spell range is 0 to 300.\n\r", ch );
			return;
		}

		victim->spl[WHITE_MAGIC] = value;
		stc("Ok.\n\r",ch);
		return;
    }
*/
	if ( !str_cmp( arg2, "allm" ) )
    {
		if ( IS_NPC(victim) )
		{
			stc( "Not on NPC's.\n\r", ch );
			return;
		}

		if ( value < 0 || value > 300 )
		{
			stc( "Spell range is 0 to 300.\n\r", ch );
			return;
		}

		victim->spl[PURPLE_MAGIC] = value;
		victim->spl[RED_MAGIC] = value;
		victim->spl[BLUE_MAGIC] = value;
		victim->spl[GREEN_MAGIC] = value;
		victim->spl[YELLOW_MAGIC] = value;
//		victim->spl[BLACK_MAGIC] = value;
//		victim->spl[WHITE_MAGIC] = value;
		stc("Ok.\n\r",ch);
		return;
    }

    if ( !str_cmp( arg2, "viper" ) )
	{
		if ( IS_NPC(victim) )
		{
			stc( "Not on NPC's.\n\r", ch );
			return;
		}

		if ( value < 0 || value > 200 )
		{
			stc( "Stance range is 0 to 200.\n\r", ch );
			return;
		}

		victim->stance[STANCE_VIPER] = value;
		stc("Ok.\n\r",ch);
		return;
    }

    if ( !str_cmp( arg2, "crane" ) )
    {
		if ( IS_NPC(victim) )
		{
			stc( "Not on NPC's.\n\r", ch );
			return;
		}

		if ( value < 0 || value > 200 )
		{
			stc( "Stance range is 0 to 200.\n\r", ch );
			return;
		}

		victim->stance[STANCE_CRANE] = value;
		stc("Ok.\n\r",ch);
		return;
    }

    if ( !str_cmp( arg2, "crab" ) )
    {
		if ( IS_NPC(victim) )
		{
			stc( "Not on NPC's.\n\r", ch );
			return;
		}

		if ( value < 0 || value > 200 )
		{
			stc( "Stance range is 0 to 200.\n\r", ch );
			return;
		}

		victim->stance[STANCE_CRAB] = value;
		stc("Ok.\n\r",ch);
		return;
    }

    if ( !str_cmp( arg2, "mongoose" ) )
    {
		if ( IS_NPC(victim) )
		{
			stc( "Not on NPC's.\n\r", ch );
			return;
		}

		if ( value < 0 || value > 200 )
		{
			stc( "Stance range is 0 to 200.\n\r", ch );
			return;
		}

		victim->stance[STANCE_MONGOOSE] = value;
		stc("Ok.\n\r",ch);
		return;
    }

    if ( !str_cmp( arg2, "pit" ) )
    {
		if ( IS_NPC(victim) )
		{
			stc( "Not on NPC's.\n\r", ch );
			return;
		}

		if ( value < 0 || value > 200 )
		{
			stc( "Stance range is 0 to 200.\n\r", ch );
			return;
		}

		victim->stance[STANCE_PITBULL] = value;
		stc("Ok.\n\r",ch);
		return;
    }

    if ( !str_cmp( arg2, "hawk" ) )
    {
		if ( IS_NPC(victim) )
		{
			stc( "Not on NPC's.\n\r", ch );
			return;
		}

		if ( value < 0 || value > 200 )
		{
			stc( "Stance range is 0 to 200.\n\r", ch );
			return;
		}

		victim->stance[STANCE_HAWK] = value;
		victim->stance[STANCE_CRANE]  = value;
		victim->stance[STANCE_VIPER]  = value;
		stc("Ok.\n\r",ch);
		return;
    }

    if ( !str_cmp( arg2, "badger" ) )
    {
		if ( IS_NPC(victim) )
		{
			stc( "Not on NPC's.\n\r", ch );
			return;
		}

		if ( value < 0 || value > 200 )
		{
			stc( "Stance range is 0 to 200.\n\r", ch );
			return;
		}

		victim->stance[STANCE_BADGER] = value;
		victim->stance[STANCE_CRAB]   = value;
		victim->stance[STANCE_PITBULL]   = value;
		stc("Ok.\n\r",ch);
		return;
    }

    if ( !str_cmp( arg2, "cougar" ) )
    {
		if ( IS_NPC(victim) )
		{
			stc( "Not on NPC's.\n\r", ch );
			return;
		}

		if ( value < 0 || value > 200 )
		{
			stc( "Stance range is 0 to 200.\n\r", ch );
			return;
		}

		victim->stance[STANCE_COUGAR] = value;
		victim->stance[STANCE_PITBULL]  = value;
		victim->stance[STANCE_VIPER] = value;
		stc("Ok.\n\r",ch);
		return;
    }

    if ( !str_cmp( arg2, "wolverine" ) )
	{
		if ( IS_NPC(victim) )
		{
			stc( "Not on NPC's.\n\r", ch );
			return;
		}

		if ( value < 0 || value > 200 )
		{
			stc( "Stance range is 0 to 200.\n\r", ch );
			return;
		}

		victim->stance[STANCE_WOLVERINE] = value;
		victim->stance[STANCE_MONGOOSE]  = value;
		victim->stance[STANCE_CRANE]  = value;
		stc("Ok.\n\r",ch);
		return;
    }

    if ( !str_cmp( arg2, "allul" ) )
	{
		if ( IS_NPC(victim) )
		{
			stc( "Not on NPC's.\n\r", ch );
			return;
		}

 		if ( !IS_CLASS(victim, CLASS_UNDEAD_LYCAN))
		{
			stc( "only on uls.\n\r", ch );
			return;
		}

		if ( value < 0 || value > 10 )
		{
			stc( "disc range is 0 to 10.\n\r", ch );
			return;
		}
            victim->power[DISC_WERE_BEAR] = value;
            victim->power[DISC_WERE_LYNX] = value;
            victim->power[DISC_WERE_BOAR] = value;
            victim->power[DISC_WERE_OWL] = value;
            victim->power[DISC_WERE_SPID] = value;
            victim->power[DISC_WERE_WOLF] = value;
            victim->power[DISC_WERE_HAWK] = value;
            victim->power[DISC_WERE_MANT] = value;
            victim->power[DISC_WERE_RAPT] = value;
            victim->power[DISC_WERE_LUNA] = value;
            victim->power[DISC_WERE_PAIN] = value;
            victim->power[DISC_WERE_CONG] = value;
            victim->power[DISC_VAMP_QUIE] = value;
            victim->power[DISC_VAMP_OBTE] = value;
            victim->power[DISC_VAMP_AUSP] = value;
            victim->power[DISC_VAMP_DOMI] = value;
            victim->power[DISC_VAMP_OBFU] = value;
            victim->power[DISC_VAMP_SERP] = value;
            victim->power[DISC_VAMP_VICI] = value;
            victim->power[DISC_VAMP_DAIM] = value;
            victim->power[DISC_VAMP_ANIM] = value;
            victim->power[DISC_VAMP_CELE] = value;
            victim->power[DISC_VAMP_FORT] = value;
            victim->power[DISC_VAMP_PRES] = value;
            victim->power[DISC_VAMP_THAU] = value;
            victim->power[DISC_VAMP_POTE] = value;
            victim->power[DISC_VAMP_PROT] = value;
            victim->power[DISC_VAMP_CHIM] = value;
            victim->power[DISC_VAMP_THAN] = value;
            victim->power[DISC_VAMP_OBEA] = value;
            victim->power[DISC_VAMP_NECR] = value;
            victim->power[DISC_VAMP_MELP] = value;
		stc("Ok.\n\r",ch);
		return;
    }



    if ( !str_cmp( arg2, "alldrow" ) )
        {
                if ( IS_NPC(victim) )
                {
                        stc( "Not on NPC's.\n\r", ch );
                        return;
                }
                if ( value < 0 || value > 10 )
                {
                        stc( "disc range is 0 to 10.\n\r", ch );
                        return;
                }

            victim->power[DISC_DROW_ARAC] = value;
            victim->power[DISC_DROW_JELL] = value;
            victim->power[DISC_DROW_RODE] = value;
            victim->power[DISC_DROW_BAT] = value;
            victim->power[DISC_DROW_CAME] = value;
            victim->power[DISC_DROW_RAVE] = value;
            victim->power[DISC_DROW_PIRA] = value;
            victim->power[DISC_DROW_LOBS] = value;
            victim->power[DISC_DROW_HOG] = value;
            victim->power[DISC_DROW_LION] = value;
                stc("Ok.\n\r",ch);
                return;
    }



    if ( !str_cmp( arg2, "allwere" ) )
	{
		if ( IS_NPC(victim) )
		{
			stc( "Not on NPC's.\n\r", ch );
			return;
		}

		if ( value < 0 || value > 10 )
		{
			stc( "disc range is 0 to 10.\n\r", ch );
			return;
		}
            victim->power[DISC_WERE_BEAR] = value;
            victim->power[DISC_WERE_LYNX] = value;
            victim->power[DISC_WERE_BOAR] = value;
            victim->power[DISC_WERE_OWL] = value;
            victim->power[DISC_WERE_SPID] = value;
            victim->power[DISC_WERE_WOLF] = value;
            victim->power[DISC_WERE_HAWK] = value;
            victim->power[DISC_WERE_MANT] = value;
            victim->power[DISC_WERE_RAPT] = value;
            victim->power[DISC_WERE_LUNA] = value;
            victim->power[DISC_WERE_PAIN] = value;
            victim->power[DISC_WERE_CONG] = value;
		stc("Ok.\n\r",ch);
		return;
    }

    if ( !str_cmp( arg2, "allvamp" ) )
	{
		if ( IS_NPC(victim) )
		{
			stc( "Not on NPC's.\n\r", ch );
			return;
		}

// 		if ( !IS_CLASS(victim, CLASS_VAMPIRE) && !IS_CLASS(victim, CLASS_HELL_SPAWN))
//		{
//			stc( "only on vamps.\n\r", ch );
//			return;
//		}

		if ( value < 0 || value > 10 )
		{
			stc( "disc range is 0 to 10.\n\r", ch );
			return;
		}
            victim->power[DISC_VAMP_QUIE] = value;
            victim->power[DISC_VAMP_OBTE] = value;
            victim->power[DISC_VAMP_AUSP] = value;
            victim->power[DISC_VAMP_DOMI] = value;
            victim->power[DISC_VAMP_OBFU] = value;
            victim->power[DISC_VAMP_SERP] = value;
            victim->power[DISC_VAMP_VICI] = value;
            victim->power[DISC_VAMP_DAIM] = value;
            victim->power[DISC_VAMP_ANIM] = value;
            victim->power[DISC_VAMP_CELE] = value;
            victim->power[DISC_VAMP_FORT] = value;
            victim->power[DISC_VAMP_PRES] = value;
            victim->power[DISC_VAMP_THAU] = value;
            victim->power[DISC_VAMP_POTE] = value;
            victim->power[DISC_VAMP_PROT] = value;
            victim->power[DISC_VAMP_CHIM] = value;
            victim->power[DISC_VAMP_THAN] = value;
            victim->power[DISC_VAMP_OBEA] = value;
            victim->power[DISC_VAMP_NECR] = value;
            victim->power[DISC_VAMP_MELP] = value;
		stc("Ok.\n\r",ch);
		return;
    }

    if ( !str_cmp( arg2, "alldemon" ) )
	{
		if ( IS_NPC(victim) )
		{
			stc( "Not on NPC's.\n\r", ch );
			return;
		}

 		if ( !IS_CLASS(victim, CLASS_DEMON) && !IS_CLASS(victim, CLASS_HELLS_SOLDIER)
		&& !IS_CLASS(victim, CLASS_SHADOW_DRAGON) && !IS_CLASS(victim, CLASS_SHADOW_FIEND))
		{
			stc( "only on DEMON.\n\r", ch );
			return;
		}

		if ( value < 0 || value > 10 )
		{
			stc( "disc range is 0 to 10.\n\r", ch );
			return;
		}
            victim->power[DISC_DAEM_HELL] = value;
            victim->power[DISC_DAEM_ATTA] = value;
            victim->power[DISC_DAEM_TEMP] = value;
            victim->power[DISC_DAEM_MORP] = value;
            victim->power[DISC_DAEM_CORR] = value;
            victim->power[DISC_DAEM_GELU] = value;
            victim->power[DISC_DAEM_DISC] = value;
            victim->power[DISC_DAEM_NETH] = value;
            victim->power[DISC_DAEM_IMMU] = value;
		stc("Ok.\n\r",ch);
		return;
    }


    if ( !str_cmp( arg2, "grizzly" ) )
    {
		if ( IS_NPC(victim) )
		{
			stc( "Not on NPC's.\n\r", ch );
			return;
		}

		if ( value < 0 || value > 200 )
		{
			stc( "Stance range is 0 to 200.\n\r", ch );
			return;
		}

		victim->stance[STANCE_GRIZZLY] = value;
		victim->stance[STANCE_CRAB]  = value;
		victim->stance[STANCE_MONGOOSE]  = value;
		stc("Ok.\n\r",ch);
		return;
    }

	if ( !str_cmp( arg2, "alls" ) )
    {
		if ( IS_NPC(victim) )
		{
			stc( "Not on NPC's.\n\r", ch );
			return;
		}

		if ( value < 0 || value > 200 )
		{
			stc( "Stance range is 0 to 200.\n\r", ch );
			return;
		}

		victim->stance[STANCE_VIPER]  = value;
		victim->stance[STANCE_CRANE]  = value;
		victim->stance[STANCE_CRAB]  = value;
		victim->stance[STANCE_MONGOOSE]  = value;
		victim->stance[STANCE_PITBULL]  = value;
		victim->stance[STANCE_HAWK]  = value;
		victim->stance[STANCE_BADGER]  = value;
		victim->stance[STANCE_COUGAR]  = value;
		victim->stance[STANCE_WOLVERINE]  = value;
		victim->stance[STANCE_GRIZZLY]  = value;
		stc("Ok.\n\r",ch);
		return;
    }

	if ( !str_cmp ( arg2, "unarmed" ) )
	{
		if ( IS_NPC(victim) )
		{
			stc( "Not on NPC's.\n\r", ch );
			return;
		}

		if ( value < 0 || value > 1000 )
		{
			stc( "Weapon range is 0 to 1000.\n\r", ch );
			return;
		}
		
		victim->wpn[0] = value;
		stc("Ok.\n\r",ch);
		return;
	}

	if ( !str_cmp ( arg2, "slice" ) )
	{
		if ( IS_NPC(victim) )
		{
			stc( "Not on NPC's.\n\r", ch );
			return;
		}

		if ( value < 0 || value > 1000 )
		{
			stc( "Weapon range is 0 to 1000.\n\r", ch );
			return;
		}
		
		victim->wpn[1] = value;
		stc("Ok.\n\r",ch);
		return;
	}

			if ( !str_cmp ( arg2, "stab" ) )
	{
		if ( IS_NPC(victim) )
		{
			stc( "Not on NPC's.\n\r", ch );
			return;
		}

		if ( value < 0 || value > 1000 )
		{
			stc( "Weapon range is 0 to 1000.\n\r", ch );
			return;
		}
		
		victim->wpn[2] = value;
		stc("Ok.\n\r",ch);
		return;
	}

	if ( !str_cmp ( arg2, "slash" ) )
	{
		if ( IS_NPC(victim) )
		{
			stc( "Not on NPC's.\n\r", ch );
			return;
		}

		if ( value < 0 || value > 1000 )
		{
			stc( "Weapon range is 0 to 1000.\n\r", ch );
			return;
		}
		
		victim->wpn[3] = value;
		stc("Ok.\n\r",ch);
		return;
	}
	
	if ( !str_cmp ( arg2, "whip" ) )
	{
		if ( IS_NPC(victim) )
		{
			stc( "Not on NPC's.\n\r", ch );
			return;
		}

		if ( value < 0 || value > 1000 )
		{
			stc( "Weapon range is 0 to 1000.\n\r", ch );
			return;
		}
		
		victim->wpn[4] = value;
		stc("Ok.\n\r",ch);
		return;
	}

	if ( !str_cmp ( arg2, "claw" ) )
	{
		if ( IS_NPC(victim) )
		{
			stc( "Not on NPC's.\n\r", ch );
			return;
		}

		if ( value < 0 || value > 1000 )
		{
			stc( "Weapon range is 0 to 1000.\n\r", ch );
			return;
		}
		
		victim->wpn[5] = value;
		stc("Ok.\n\r",ch);
		return;
	}

	if ( !str_cmp ( arg2, "blast" ) )
	{
		if ( IS_NPC(victim) )
		{
			stc( "Not on NPC's.\n\r", ch );
			return;
		}

		if ( value < 0 || value > 1000 )
		{
			stc( "Weapon range is 0 to 1000.\n\r", ch );
			return;
		}
		
		victim->wpn[6] = value;
		stc("Ok.\n\r",ch);
		return;
	}

	if ( !str_cmp ( arg2, "pound" ) )
	{
		if ( IS_NPC(victim) )
		{
			stc( "Not on NPC's.\n\r", ch );
			return;
		}

		if ( value < 0 || value > 1000 )
		{
			stc( "Weapon range is 0 to 1000.\n\r", ch );
			return;
		}
		
		victim->wpn[7] = value;
		stc("Ok.\n\r",ch);
		return;
	}

	if ( !str_cmp ( arg2, "crush" ) )
	{
		if ( IS_NPC(victim) )
		{
			stc( "Not on NPC's.\n\r", ch );
			return;
		}

		if ( value < 0 || value > 1000 )
		{
			stc( "Weapon range is 0 to 1000.\n\r", ch );
			return;
		}
		
		victim->wpn[8] = value;
		stc("Ok.\n\r",ch);
		return;
	}

	if ( !str_cmp ( arg2, "grep" ) )
	{
		if ( IS_NPC(victim) )
		{
			stc( "Not on NPC's.\n\r", ch );
			return;
		}

		if ( value < 0 || value > 1000 )
		{
			stc( "Weapon range is 0 to 1000.\n\r", ch );
			return;
		}
		
		victim->wpn[9] = value;
		stc("Ok.\n\r",ch);
		return;
	}

	if ( !str_cmp ( arg2, "bite" ) )
	{
		if ( IS_NPC(victim) )
		{
			stc( "Not on NPC's.\n\r", ch );
			return;
		}

		if ( value < 0 || value > 1000 )
		{
			stc( "Weapon range is 0 to 1000.\n\r", ch );
			return;
		}
		
		victim->wpn[10] = value;
		stc("Ok.\n\r",ch);
		return;
	}

	if ( !str_cmp ( arg2, "pierce" ) )
	{
		if ( IS_NPC(victim) )
		{
			stc( "Not on NPC's.\n\r", ch );
			return;
		}

		if ( value < 0 || value > 1000 )
		{
			stc( "Weapon range is 0 to 1000.\n\r", ch );
			return;
		}
		
		victim->wpn[11] = value;
		stc("Ok.\n\r",ch);
		return;
	}

	if ( !str_cmp ( arg2, "suck" ) )
	{
		if ( IS_NPC(victim) )
		{
			stc( "Not on NPC's.\n\r", ch );
			return;
		}

		if ( value < 0 || value > 1000 )
		{
			stc( "Weapon range is 0 to 1000.\n\r", ch );
			return;
		}
		
		victim->wpn[12] = value;
		stc("Ok.\n\r",ch);
		return;
	}

	if ( !str_cmp ( arg2, "allw" ) )
	{
		if ( IS_NPC(victim) )
		{
			stc( "Not on NPC's.\n\r", ch );
			return;
		}

		if ( value < 0 || value > 1000 )
		{
			stc( "Weapon range is 0 to 1000.\n\r", ch );
			return;
		}
		
		victim->wpn[0] = value;
		victim->wpn[1] = value;
		victim->wpn[2] = value;
		victim->wpn[3] = value;
		victim->wpn[4] = value;
		victim->wpn[5] = value;
		victim->wpn[6] = value;
		victim->wpn[7] = value;
		victim->wpn[8] = value;
		victim->wpn[9] = value;
		victim->wpn[10] = value;
		victim->wpn[11] = value;
		victim->wpn[12] = value;
                victim->wpn[13] = value;
                victim->wpn[14] = value;
                victim->wpn[15] = value;
                victim->wpn[16] = value;
                victim->wpn[17] = value;
                victim->wpn[18] = value;
		stc("Ok.\n\r",ch);
		return;
	}

	if ( !str_cmp ( arg2, "slashi" ) )
	{
		if ( IS_NPC(victim) )
		{
			stc( "Not on NPC's.\n\r", ch );
			return;
		}
		
		if ( IS_SET ( victim->immune, IMM_SLASH ) )
		{
			REMOVE_BIT( victim->immune, IMM_SLASH );
			stc( "Immunity removed.\n\r",ch );
			return;                    
		}
		
		else
		{
			SET_BIT( victim->immune, IMM_SLASH );
			stc( "Immunity added.\n\r",ch );
			return;
		}
	}

	if ( !str_cmp ( arg2, "stabi" ) )
	{
		if ( IS_NPC(victim) )
		{
			stc( "Not on NPC's.\n\r", ch );
			return;
		}
		
		if ( IS_SET ( victim->immune, IMM_STAB ) )
		{
			REMOVE_BIT( victim->immune, IMM_STAB );
			stc( "Immunity removed.\n\r",ch );
			return;                    
		}
		
		else
		{
			SET_BIT( victim->immune, IMM_STAB );
			stc( "Immunity added.\n\r",ch );
			return;
		}
	}

	if ( !str_cmp ( arg2, "smash" ) )
	{
		if ( IS_NPC(victim) )
		{
			stc( "Not on NPC's.\n\r", ch );
			return;
		}
		
		if ( IS_SET ( victim->immune, IMM_SMASH ) )
		{
			REMOVE_BIT( victim->immune, IMM_SMASH );
			stc( "Immunity removed.\n\r",ch );
			return;                    
		}
		
		else
		{
			SET_BIT( victim->immune, IMM_SMASH );
			stc( "Immunity added.\n\r",ch );
			return;
		}
	}

	if ( !str_cmp ( arg2, "animal" ) )
	{
		if ( IS_NPC(victim) )
		{
			stc( "Not on NPC's.\n\r", ch );
			return;
		}
		
		if ( IS_SET ( victim->immune, IMM_ANIMAL ) )
		{
			REMOVE_BIT( victim->immune, IMM_ANIMAL );
			stc( "Immunity removed.\n\r",ch );
			return;                    
		}
		
		else
		{
			SET_BIT( victim->immune, IMM_ANIMAL );
			stc( "Immunity added.\n\r",ch );
			return;
		}
	}

	if ( !str_cmp ( arg2, "misc" ) )
	{
		if ( IS_NPC(victim) )
		{
			stc( "Not on NPC's.\n\r", ch );
			return;
		}
		
		if ( IS_SET ( victim->immune, IMM_MISC ) )
		{
			REMOVE_BIT( victim->immune, IMM_MISC );
			stc( "Immunity removed.\n\r",ch );
			return;                    
		}
		
		else
		{
			SET_BIT( victim->immune, IMM_MISC );
			stc( "Immunity added.\n\r",ch );
			return;
		}
	}

	if ( !str_cmp ( arg2, "charm" ) )
	{
		if ( IS_NPC(victim) )
		{
			stc( "Not on NPC's.\n\r", ch );
			return;
		}
		
		if ( IS_SET ( victim->immune, IMM_CHARM ) )
		{
			REMOVE_BIT( victim->immune, IMM_CHARM );
			stc( "Immunity removed.\n\r",ch );
			return;                    
		}
		
		else
		{
			SET_BIT( victim->immune, IMM_CHARM );
			stc( "Immunity added.\n\r",ch );
			return;
		}
	}

	if ( !str_cmp ( arg2, "hurl" ) )
	{
		if ( IS_NPC(victim) )
		{
			stc( "Not on NPC's.\n\r", ch );
			return;
		}
		
		if ( IS_SET ( victim->immune, IMM_HURL ) )
		{
			REMOVE_BIT( victim->immune, IMM_HURL );
			stc( "Immunity removed.\n\r",ch );
			return;                    
		}
		
		else
		{
			SET_BIT( victim->immune, IMM_HURL );
			stc( "Immunity added.\n\r",ch );
			return;
		}
	}

	if ( !str_cmp ( arg2, "backstab" ) )
	{
		if ( IS_NPC(victim) )
		{
			stc( "Not on NPC's.\n\r", ch );
			return;
		}
		
		if ( IS_SET ( victim->immune, IMM_BACKSTAB ) )
		{
			REMOVE_BIT( victim->immune, IMM_BACKSTAB );
			stc( "Immunity removed.\n\r",ch );
			return;                    
		}
		
		else
		{
			SET_BIT( victim->immune, IMM_BACKSTAB );
			stc( "Immunity added.\n\r",ch );
			return;
		}
	}

	if ( !str_cmp ( arg2, "shielded" ) )
	{
		if ( IS_NPC(victim) )
		{
			stc( "Not on NPC's.\n\r", ch );
			return;
		}
		
		if ( IS_SET ( victim->immune, IMM_SHIELDED ) )
		{
			REMOVE_BIT( victim->immune, IMM_SHIELDED );
			stc( "Immunity removed.\n\r",ch );
			return;                    
		}
		
		else
		{
			SET_BIT( victim->immune, IMM_SHIELDED );
			stc( "Immunity added.\n\r",ch );
			return;
		}
	}

	if ( !str_cmp ( arg2, "kick" ) )
	{
		if ( IS_NPC(victim) )
		{
			stc( "Not on NPC's.\n\r", ch );
			return;
		}
		
		if ( IS_SET ( victim->immune, IMM_KICK ) )
		{
			REMOVE_BIT( victim->immune, IMM_KICK );
			stc( "Immunity removed.\n\r",ch );
			return;                    
		}
		
		else
		{
			SET_BIT( victim->immune, IMM_KICK );
			stc( "Immunity added.\n\r",ch );
			return;
		}
	}

	if ( !str_cmp ( arg2, "disarm" ) )
	{
		if ( IS_NPC(victim) )
		{
			stc( "Not on NPC's.\n\r", ch );
			return;
		}
		
		if ( IS_SET ( victim->immune, IMM_DISARM ) )
		{
			REMOVE_BIT( victim->immune, IMM_DISARM );
			stc( "Immunity removed.\n\r",ch );
			return;                    
		}
		
		else
		{
			SET_BIT( victim->immune, IMM_DISARM );
			stc( "Immunity added.\n\r",ch );
			return;
		}
	}

	if ( !str_cmp ( arg2, "steal" ) )
	{
		if ( IS_NPC(victim) )
		{
			stc( "Not on NPC's.\n\r", ch );
			return;
		}
		
		if ( IS_SET ( victim->immune, IMM_STEAL ) )
		{
			REMOVE_BIT( victim->immune, IMM_STEAL );
			stc( "Immunity removed.\n\r",ch );
			return;                    
		}
		
		else
		{
			SET_BIT( victim->immune, IMM_STEAL );
			stc( "Immunity added.\n\r",ch );
			return;
		}
	}

	if ( !str_cmp ( arg2, "sleep" ) )
	{
		if ( IS_NPC(victim) )
		{
			stc( "Not on NPC's.\n\r", ch );
			return;
		}
		
		if ( IS_SET ( victim->immune, IMM_SLEEP ) )
		{
			REMOVE_BIT( victim->immune, IMM_SLEEP );
			stc( "Immunity removed.\n\r",ch );
			return;                    
		}
		
		else
		{
			SET_BIT( victim->immune, IMM_SLEEP );
			stc( "Immunity added.\n\r",ch );
			return;
		}
	}

	if ( !str_cmp ( arg2, "drain" ) )
	{
		if ( IS_NPC(victim) )
		{
			stc( "Not on NPC's.\n\r", ch );
			return;
		}
		
		if ( IS_SET ( victim->immune, IMM_DRAIN ) )
		{
			REMOVE_BIT( victim->immune, IMM_DRAIN );
			stc( "Immunity removed.\n\r",ch );
			return;                    
		}
		
		else
		{
			SET_BIT( victim->immune, IMM_DRAIN );
			stc( "Immunity added.\n\r",ch );
			return;
		}
	}

	if ( !str_cmp ( arg2, "heat" ) )
	{
		if ( IS_NPC(victim) )
		{
			stc( "Not on NPC's.\n\r", ch );
			return;
		}
		
		if ( IS_SET ( victim->immune, IMM_HEAT ) )
		{
			REMOVE_BIT( victim->immune, IMM_HEAT );
			stc( "Immunity removed.\n\r",ch );
			return;                    
		}
		
		else
		{
			SET_BIT( victim->immune, IMM_HEAT );
			stc( "Immunity added.\n\r",ch );
			return;
		}
	}

	if ( !str_cmp ( arg2, "cold" ) )
	{
		if ( IS_NPC(victim) )
		{
			stc( "Not on NPC's.\n\r", ch );
			return;
		}
		
		if ( IS_SET ( victim->immune, IMM_COLD ) )
		{
			REMOVE_BIT( victim->immune, IMM_COLD );
			stc( "Immunity removed.\n\r",ch );
			return;                    
		}
		
		else
		{
			SET_BIT( victim->immune, IMM_COLD );
			stc( "Immunity added.\n\r",ch );
			return;
		}
	}

	if ( !str_cmp ( arg2, "acid" ) )
	{
		if ( IS_NPC(victim) )
		{
			stc( "Not on NPC's.\n\r", ch );
			return;
		}
		
		if ( IS_SET ( victim->immune, IMM_ACID ) )
		{
			REMOVE_BIT( victim->immune, IMM_ACID );
			stc( "Immunity removed.\n\r",ch );
			return;                    
		}
		
		else
		{
			SET_BIT( victim->immune, IMM_ACID );
			stc( "Immunity added.\n\r",ch );
			return;
		}
	}

	if ( !str_cmp ( arg2, "summon" ) )
	{
		if ( IS_NPC(victim) )
		{
			stc( "Not on NPC's.\n\r", ch );
			return;
		}
		
		if ( IS_SET ( victim->immune, IMM_SUMMON ) )
		{
			REMOVE_BIT( victim->immune, IMM_SUMMON );
			stc( "Immunity removed.\n\r",ch );
			return;                    
		}
		
		else
		{
			SET_BIT( victim->immune, IMM_SUMMON );
			stc( "Immunity added.\n\r",ch );
			return;
		}
	}

	if ( !str_cmp ( arg2, "lightning" ) )
	{
		if ( IS_NPC(victim) )
		{
			stc( "Not on NPC's.\n\r", ch );
			return;
		}
		
		if ( IS_SET ( victim->immune, IMM_LIGHTNING ) )
		{
			REMOVE_BIT( victim->immune, IMM_LIGHTNING );
			stc( "Immunity removed.\n\r",ch );
			return;                    
		}
		
		else
		{
			SET_BIT( victim->immune, IMM_LIGHTNING );
			stc( "Immunity added.\n\r",ch );
			return;
		}
	}

	if ( !str_cmp ( arg2, "sunlight" ) )
	{
		if ( IS_NPC(victim) )
		{
			stc( "Not on NPC's.\n\r", ch );
			return;
		}
		
		if ( IS_SET ( victim->immune, IMM_SUNLIGHT ) )
		{
			REMOVE_BIT( victim->immune, IMM_SUNLIGHT );
			stc( "Immunity removed.\n\r",ch );
			return;                    
		}
		
		else
		{
			SET_BIT( victim->immune, IMM_SUNLIGHT );
			stc( "Immunity added.\n\r",ch );
			return;
		}
	}

	if ( !str_cmp ( arg2, "allis" ) )
	{
		if ( IS_NPC(victim) )
		{
			stc( "Not on NPC's.\n\r", ch );
			return;
		}
		
		SET_BIT( victim->immune, IMM_SLASH );
		SET_BIT( victim->immune, IMM_STAB );
		SET_BIT( victim->immune, IMM_SMASH );
		SET_BIT( victim->immune, IMM_ANIMAL );
		SET_BIT( victim->immune, IMM_MISC );
		SET_BIT( victim->immune, IMM_CHARM );
		SET_BIT( victim->immune, IMM_HURL );
		SET_BIT( victim->immune, IMM_BACKSTAB );
		SET_BIT( victim->immune, IMM_SHIELDED );
		SET_BIT( victim->immune, IMM_KICK );
		SET_BIT( victim->immune, IMM_DISARM );
		SET_BIT( victim->immune, IMM_STEAL );
		SET_BIT( victim->immune, IMM_SLEEP );
		SET_BIT( victim->immune, IMM_DRAIN );
		SET_BIT( victim->immune, IMM_HEAT );
		SET_BIT( victim->immune, IMM_COLD );
		SET_BIT( victim->immune, IMM_ACID );
		SET_BIT( victim->immune, IMM_SUMMON );
		SET_BIT( victim->immune, IMM_LIGHTNING );
		SET_BIT( victim->immune, IMM_SUNLIGHT );
		stc( "All immunities added.\n\r",ch );
		return;                    
	}

	if ( !str_cmp ( arg2, "allir" ) )
	{
		if ( IS_NPC(victim) )
		{
			stc( "Not on NPC's.\n\r", ch );
			return;
		}
		
		REMOVE_BIT( victim->immune, IMM_SLASH );
		REMOVE_BIT( victim->immune, IMM_STAB );
		REMOVE_BIT( victim->immune, IMM_SMASH );
		REMOVE_BIT( victim->immune, IMM_ANIMAL );
		REMOVE_BIT( victim->immune, IMM_MISC );
		REMOVE_BIT( victim->immune, IMM_CHARM );
		REMOVE_BIT( victim->immune, IMM_HURL );
		REMOVE_BIT( victim->immune, IMM_BACKSTAB );
		REMOVE_BIT( victim->immune, IMM_SHIELDED );
		REMOVE_BIT( victim->immune, IMM_KICK );
		REMOVE_BIT( victim->immune, IMM_DISARM );
		REMOVE_BIT( victim->immune, IMM_STEAL );
		REMOVE_BIT( victim->immune, IMM_SLEEP );
		REMOVE_BIT( victim->immune, IMM_DRAIN );
		REMOVE_BIT( victim->immune, IMM_HEAT );
		REMOVE_BIT( victim->immune, IMM_COLD );
		REMOVE_BIT( victim->immune, IMM_ACID );
		REMOVE_BIT( victim->immune, IMM_SUMMON );
		REMOVE_BIT( victim->immune, IMM_LIGHTNING );
		REMOVE_BIT( victim->immune, IMM_SUNLIGHT );
		stc( "All immunities removed.\n\r",ch );
		return;                    
	}
		/* End: Pset Integration
		   Begin: Mset Integration */

	if ( !str_cmp( arg2, "str" ) )
    {
		if ( IS_NPC(victim) )
		{
			stc( "Not on NPC's.\n\r", ch );
			return;
		}
	
		if ( value < 0 || value > 100 )
		{
			stc( "Attribute range is 0 to 100.\n\r", ch );
			return;
		}

		victim->pcdata->perm_str = value;
		send_to_char("Ok.\n\r",ch);
		return;
    }

    if ( !str_cmp( arg2, "int" ) )
    {
		if ( IS_NPC(victim) )
		{
			stc( "Not on NPC's.\n\r", ch );
			return;
		}

		if ( value < 0 || value > 100 )
		{
			stc( "Attribute range is 0 to 100.\n\r", ch );
			return;
		}

		victim->pcdata->perm_int = value;
		stc("Ok.\n\r",ch);
		return;
    }

    if ( !str_cmp( arg2, "wis" ) )
    {
		if ( IS_NPC(victim) )
		{
			stc( "Not on NPC's.\n\r", ch );
			return;
		}

		if ( value < 0 || value > 100 )
		{
			stc( "Attribute range is 0 to 100.\n\r", ch );
			return;
		}

		victim->pcdata->perm_wis = value;
		stc("Ok.\n\r",ch);
		return;
    }

    if ( !str_cmp( arg2, "dex" ) )
    {
		if ( IS_NPC(victim) )
		{
			stc( "Not on NPC's.\n\r", ch );
			return;
		}

	if ( value < 0 || value > 100 )
		{
			stc( "Attribute range is 0 to 100.\n\r", ch );
			return;
		}

		victim->pcdata->perm_dex = value;
		stc("Ok.\n\r",ch);
		return;
    }

    if ( !str_cmp( arg2, "con" ) )
    {
		if ( IS_NPC(victim) )
		{
			stc( "Not on NPC's.\n\r", ch );
			return;
		}

		if ( value < 0 || value > 100 )
		{
			stc( "Attribute range is 0 to 100.\n\r", ch );
			return;
		}

		victim->pcdata->perm_con = value;
		stc("Ok.\n\r",ch);
		return;
    }

	if ( !str_cmp( arg2, "sex" ) )
    {
		if ( value < 0 || value > 2 )
		{
			stc( "Sex range is 0 to 2.\n\r", ch );
			return;
		}
	
		victim->sex = value;
		stc("Ok.\n\r",ch);
		return;
    }

    if ( !str_cmp( arg2, "level" ) )
    {
		if ( IS_NPC(victim) && ( value < 1 || value > 32767 ) )
		{
		    stc( "Level range is 1 to 32767 for mobs.\n\r", ch );
		    return;
		}
		     if ( !str_cmp( arg3, "mortal"     ) ) value = 2;
		else if ( !str_cmp( arg3, "avatar"     ) ) value = 3;
		else if ( !str_cmp( arg3, "apprentice" ) ) value = 4;
		else if ( !str_cmp( arg3, "mage"       ) ) value = 5;
		else if ( !str_cmp( arg3, "archmage"   ) ) value = 6;
		else if ( !str_cmp( arg3, "immortal"   ) ) value = 7;
		else if ( !str_cmp( arg3, "builder"    ) ) value = 8;
		else if ( !str_cmp( arg3, "enforcer"   ) ) value = 9;
		else if ( !str_cmp( arg3, "judge"      ) ) value = 10;
		else if ( !str_cmp( arg3, "deity"      ) ) value = 11;
		else if ( !IS_NPC(victim) )
		{
		    stc( "Level should be one of the following:\n\r", ch );
			stc( "Mortal, Avatar, Apprentice, Mage, Archmage\n\r", ch );
			stc( "Immortal, Builder, Enforcer, Judge, or Deity.\n\r", ch );
		    return;
		}

		if (value >= victim->level && !IS_NPC(victim) ) 
		    stc( "Sorry, no can do...\n\r", ch );
		else
		{
			victim->level = value;  victim->trust = value;
			stc("Ok.\n\r",ch);
			return;
		}
	}

	if ( !str_cmp( arg2, "exp" ) )
    {
		if ( IS_NPC(victim) )
		{
			stc( "Not on NPC's.\n\r", ch );
			return;
		}

		if ( value < 0 )
		{
			stc( "Exp must be at least 0.\n\r", ch );
			return;
		}

		if ( value > 500000000 )
		{
			stc( "No more than 500,000,000 possible.\n\r", ch );
			return;
		}

		victim->exp = value;
		stc("Ok.\n\r",ch);
		return;
	}

    if ( !str_cmp( arg2, "gold" ) )
    {
		if ( value < 0 || value > 100000 );
		{
			stc( "Gold range is 0 to 100,000", ch );
			return;
		}

		victim->gold = value; 
		stc("Ok.\n\r",ch);
		return;
    }

    if ( !str_cmp( arg2, "hp" ) )
    {
		if ( value < 0 || value > 1250000 )
		{
			stc( "Hp range is 0 to 1250000.\n\r", ch );
			return;
		}
	
		victim->max_hit = value;
		victim->hit = value;
		stc("Ok.\n\r",ch);
		return;
	}

    if ( !str_cmp( arg2, "mana" ) )
    {
		if ( value < 0 || value > 1250000 )
		{
			stc( "Mana range is 0 to 1250000.\n\r", ch );
			return;
		}

		victim->max_mana = value;
		victim->mana = value;
		stc("Ok.\n\r",ch);
		return;
    }

    if ( !str_cmp( arg2, "move" ) )
    {
	
		if ( value < 0 || value > 1250000 )
		{
			stc( "Move range is 0 to 1250000.\n\r", ch );
			return;
		}

		victim->max_move = value;
		victim->move = value;
		stc("Ok.\n\r",ch);
		return;
    }

    if ( !str_cmp( arg2, "primal" ) )
    {
	
		if ( value < 0 || value > 10000 )
		{
			stc( "Primal range is 0 to 10000.\n\r", ch );
			return;
		}

		victim->practice = value;
		stc("Ok.\n\r",ch);
		return;
    }

    if ( !str_cmp( arg2, "align" ) )
    {
		if ( !str_cmp( argument, "evil" ) )
			value = -1000;
		if ( !str_cmp( argument, "neutral" ) )
			value = 0;
		if ( !str_cmp( argument, "good" ) )
			value = 1000;

	if ( ( value < -1000) || ( value > 1000 ) )
	{
	    stc( "Alignment range is -1000 to 1000.\n\r", ch );
	    return;
	}
	
	victim->alignment = value;
	stc("Ok.\n\r",ch);
	return;
    }

	if ( !str_cmp( arg2, "alla" ) )
	{
		if ( IS_NPC(victim) )
		{
			stc( "Not on NPC's.\n\r", ch );
			return;
		}

		if ( value < 0 || value > 100 )
		{
			stc( "Attribute range is 0 to 100\n\r", ch );
			return;
		}

		victim->pcdata->perm_str = value;
		victim->pcdata->perm_int = value;
		victim->pcdata->perm_wis = value;
		victim->pcdata->perm_dex = value;
		victim->pcdata->perm_con = value;
		return;
	}

    if ( !str_cmp( arg2, "thirst" ) )
    {
		if ( IS_NPC(victim) )
		{
			stc( "Not on NPC's.\n\r", ch );
			return;
		}

		if ( value < 0 || value > 100 )
		{
			stc( "Thirst range is 0 to 100.\n\r", ch );
			return;
		}

		victim->pcdata->condition[COND_THIRST] = value;
		stc("Ok.\n\r",ch);
		return;
    }

    if ( !str_cmp( arg2, "drunk" ) )
    {
		if ( IS_NPC(victim) )
		{
			stc( "Not on NPC's.\n\r", ch );
			return;
		}

		if ( value < 0 || value > 100 )
		{
			stc( "Drunk range is 0 to 100.\n\r", ch );
			return;
		}

		victim->pcdata->condition[COND_DRUNK] = value;
		stc("Ok.\n\r",ch);
		return;
	}

    if ( !str_cmp( arg2, "full" ) )
    {
		if ( IS_NPC(victim) )
		{
			stc( "Not on NPC's.\n\r", ch );
			return;
		}

		if ( value < 0 || value > 100 )
		{
			stc( "Full range is 0 to 100.\n\r", ch );
			return;
		}

		victim->pcdata->condition[COND_FULL] = value;
		stc("Ok.\n\r",ch);
		return;
    }

	if ( !str_cmp( arg2, "hit" ) )
    {
		if ( ( value < 0 || value > 500 ) )
		{
			stc( "Hitroll range is 0 to 500.\n\r", ch );
			return;
		}

		victim->hitroll = value;
		stc("Ok.\n\r",ch);
		return;
    }

    if (!str_cmp( arg2, "dam" ) )
    {

		if ( ( value < 0 || value > 500 ) )
		{
			stc( "Damroll range is 0 to 500.\n\r", ch );
			return;
		}

		victim->damroll = value;
		stc("Ok.\n\r",ch);
		return;
    }

    if ( !str_cmp( arg2, "ac" ) )
    {
		if ( ( value < -1000 || value > 1000 ) )
		{
			stc( "Armor class range is -1000 to 1000.\n\r", ch );
			return;
		}

		victim->armor = value;
		stc("Ok.\n\r",ch);
		return;
    }

	if ( !str_cmp( arg2, "name" ) )
    {
        if ( !IS_NPC(victim) )
		{
			stc( "Not on PC's.\n\r", ch );
			return;
        }

		free_string( victim->name );
		victim->name = str_dup( arg3 );
		stc("Ok.\n\r",ch);
		return;
    }

    if ( !str_cmp( arg2, "short" ) )
    {
		free_string( victim->short_descr );
		victim->short_descr = str_dup( arg3 );
	
		if ( !IS_NPC(victim) && ( !str_cmp( arg3,"#n" ) ) )
			free_string( victim->short_descr );
			stc("Ok.\n\r",ch);
			return;
    }

    if ( !str_cmp( arg2, "long" ) )
    {
		free_string( victim->long_descr );
		victim->long_descr = str_dup( arg3 );
        
		if ( !IS_NPC(victim) && ( !str_cmp( arg3,"#n" ) ) )
			free_string( victim->long_descr );
			stc("Ok.\n\r",ch);
			return;
    }

	if ( !str_cmp( arg2, "desc" ) )
	{
		free_string( victim->description );
		victim->description = str_dup( arg3 );

		if ( !IS_NPC(victim) && ( !str_cmp( arg3,"#n" ) ) )
			free_string( victim->description );
			stc("Ok.\n\r",ch);
			return;
	}

	if ( !str_cmp( arg2, "title" ) )
    {
		if ( IS_NPC(victim) )
		{
			stc( "Not on NPC's.\n\r", ch );
			return;
		}

		set_title( victim, arg3 );
		stc("Ok.\n\r",ch);
		return;
    }

    if ( !str_cmp( arg2, "spec" ) )
    {
		if ( !IS_NPC(victim) && victim->trust < 12)
		{
			stc( "Not on PC's.\n\r", ch );
			return;
		}

		if ( ( victim->spec_fun = spec_lookup( arg3 ) ) == 0 )
		{
			stc( "No such spec fun.\n\r", ch );
			return;
		}

		stc("Ok.\n\r",ch);
		return;
    }
		/*End: Mset Integration*/
}