mcloud/
/***************************************************************************
 *  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.                                               *
 *                                                                         *
 *  Dystopia Mud improvements copyright (C) 2000, 2001 by Brian Graversen  *
 *                                                                         *
 *  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.                                                  *
 ***************************************************************************/

#include <sys/types.h>
#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#if !defined(WIN32)
#include <unistd.h> /* unlink() */
#endif
#include "merc.h"
#include "interp.h"
#include "garou.h"
#include "olc.h"

bool  check_social      args (( CHAR_DATA *ch, char *command, char *argument ));
bool  check_xsocial     args (( CHAR_DATA *ch, char *command, char *argument ));
void	make_preg	args( ( CHAR_DATA *mother, CHAR_DATA *father ) );
int can_interpret args( (CHAR_DATA *ch, int cmd) );

int can_interpret (CHAR_DATA *ch, int cmd)
{
    bool cando = FALSE;

  if (IS_NPC(ch)) return 0;

  /* immortals can always */
  if (ch->level == MAX_LEVEL) return 1;

  /* checking trust */
    if (cmd_table[cmd].level > get_trust(ch)) return 0;

  /* common commands */
  if (cmd_table[cmd].race == 0 && cmd_table[cmd].powertype == 0)
	cando = TRUE;

  /* class specific commands */
  if (cmd_table[cmd].race > 0 && cmd_table[cmd].powertype == 0 && ch->class == cmd_table[cmd].race)
  {
    if (cmd_table[cmd].powertype > 0 && ch->pcdata->powers[cmd_table[cmd].powertype] < cmd_table[cmd].powerlevel)
      cando = FALSE;
    else
 	cando = TRUE;
  }

    if (!cando) return 0;
  if (ch->position < cmd_table[cmd].position) return -1; 

    return 1;
}

void do_racecommands( CHAR_DATA *ch, char *argument )
{
    int i, cmd, foundpower = 0;
    char buf[MAX_STRING_LENGTH];
    bool displayed;

    if (ch->class == 0 || IS_NPC(ch))
    {
    send_to_char("You don't have any special powers.\n\r\n\r", ch);
	return;
    }
    send_to_char("#0<>==<>==<>==<>==<>==<>==<>==<>==<>    #GPowers    #0<>==<>==<>==<>==<>==<>==<>==<>==<>#n\n\r", ch);

    for (i = 0 ; i < MAX_DISCIPLINES ; i++)
    {
	displayed = FALSE;
	if (ch->power[i] > 0 && strlen(discipline[i]) > 0
		&& (ch->level < 7 || argument[0] == '\0' 
		|| !str_prefix(argument, discipline[i])))
	{
	    foundpower = 1;

		for ( cmd = 0; cmd_table[cmd].name[0] != '\0'; cmd++ )
		{
		    if (cmd_table[cmd].powertype == i
			&& ch->power[i] >= cmd_table[cmd].powerlevel
			&& IS_CLASS(ch, cmd_table[cmd].race) )
		    {
			if (!displayed)
			{
			    displayed = TRUE;
	    		    sprintf(buf, " %15s : ", discipline[i]);
			    send_to_char(buf, ch);
			}			    
			send_to_char(cmd_table[cmd].name, ch);
			send_to_char(" ", ch);
		    }
	        }
                
		if (displayed) send_to_char("\n\r", ch);
	}
    }
/* OBEAH CRAP HAVE TO ADD MANUAL......ANYONE HAVE ANOTHER WAY.....PLEASE BY ALL MEANS CHANGE IT */

if (IS_CLASS(ch, CLASS_VAMPIRE))
{
if (IS_CLASS(ch, CLASS_VAMPIRE) && ch->power[DISC_VAMP_OBEA] > 1)
                            {
                            sprintf(buf, "           obeah :");
                            send_to_char(buf, ch);
                            }
if (IS_CLASS(ch, CLASS_VAMPIRE) && ch->power[DISC_VAMP_OBEA] > 6)
{
                            sprintf(buf, " (#Gpurify#n)");
                            send_to_char(buf, ch);
}
if (IS_CLASS(ch, CLASS_VAMPIRE) && ch->power[DISC_VAMP_OBEA] > 8)
{
                            sprintf(buf, " (#rBeast control#n)");
                            send_to_char(buf, ch);
}

if (IS_CLASS(ch, CLASS_VAMPIRE) && ch->power[DISC_VAMP_OBEA] > 9)
{
			    sprintf(buf, " (#wMovement of pure magic#n)");
                            send_to_char(buf, ch);
}


send_to_char("\n\r", ch);
}
    if (IS_CLASS(ch, CLASS_SKYBLADE))
{   send_to_char("            Misc  : Bladetalk Abilities\n\r",ch);
  if (ch->pcdata->powers[SKYBLADE_POWER] > 0)
  { send_to_char("            Power :",ch);
    if (ch->pcdata->powers[SKYBLADE_POWER] >= 1)
	send_to_char(" OwlEyes(Leye/Reye)",ch);
    if (ch->pcdata->powers[SKYBLADE_POWER] >= 3)
	send_to_char(" EagleStrength",ch);
    if (ch->pcdata->powers[SKYBLADE_POWER] >= 5)
	send_to_char(" HawkEyes",ch);
    if (ch->pcdata->powers[SKYBLADE_POWER] >= 7)
	send_to_char(" VultureVigor",ch);
    if (ch->pcdata->powers[SKYBLADE_POWER] >= 9)
	send_to_char(" FalconBlade",ch);
    send_to_char("\n\r",ch);
  }
  if (ch->pcdata->powers[SKYBLADE_MAGIC] > 0)
  { send_to_char("            Magic :",ch);
    if (ch->pcdata->powers[SKYBLADE_MAGIC] >= 1)
	send_to_char(" SkyForge",ch);
	//if (ch->pcdata->powers[SKYBLADE_MAGIC] >= 2)
	//send_to_char(" SkyArmor",ch);
    if (ch->pcdata->powers[SKYBLADE_MAGIC] >= 3)
	send_to_char(" HeavenlyRain",ch);
    if (ch->pcdata->powers[SKYBLADE_MAGIC] >= 5)
	send_to_char(" Climax",ch);
    if (ch->pcdata->powers[SKYBLADE_MAGIC] >= 7)
	send_to_char(" DragonAura",ch);
    if (ch->pcdata->powers[SKYBLADE_MAGIC] >= 9)
	send_to_char(" WyrmAura",ch);
    send_to_char("\n\r",ch);
  }
  if (ch->pcdata->powers[SKYBLADE_SKILLS] > 0)
  { send_to_char("            Skills:",ch);
    if (ch->pcdata->powers[SKYBLADE_SKILLS] >= 1) 
	send_to_char(" BladeJump",ch);
    if (ch->pcdata->powers[SKYBLADE_SKILLS] >= 2)
	send_to_char(" Pummel",ch);
    if (ch->pcdata->powers[SKYBLADE_SKILLS] >= 3)
	send_to_char(" CloudsBlessing",ch);
    if (ch->pcdata->powers[SKYBLADE_SKILLS] >= 4)
	send_to_char(" RapierStrike",ch);
    if (ch->pcdata->powers[SKYBLADE_SKILLS] >= 5)
	send_to_char(" Retort",ch);
    if (ch->pcdata->powers[SKYBLADE_SKILLS] >= 6)
	send_to_char(" LeapOfFaith",ch);
    if (ch->pcdata->powers[SKYBLADE_SKILLS] >= 7)
	send_to_char(" DragonCharge",ch);
    if (ch->pcdata->powers[SKYBLADE_SKILLS] >= 8)
	send_to_char("                     DragonX",ch);
    if (ch->pcdata->powers[SKYBLADE_SKILLS] >= 9)
	send_to_char(" WyrmRoar",ch);
    if (ch->pcdata->powers[SKYBLADE_SKILLS] >= 10)
	send_to_char(" DiveStrike",ch);
    send_to_char("\n\r",ch);
  }
}
    i = 0;
    displayed = FALSE;
    for (cmd = 0; cmd_table[cmd].name[0] != '\0'; cmd++)
    {
    /* check for class */
    if (!IS_CLASS(ch, cmd_table[cmd].race))
      continue;

    /* check to see if the player has actually learned the power */
    if (cmd_table[cmd].powertype > 0 && ch->pcdata->powers[cmd_table[cmd].powertype] < cmd_table[cmd].powerlevel)
      continue;

	    strcpy(buf, "");

    /* In the first line we also print the class name */
	    if (i == 0)
	    {
		switch (ch->class)
		{
		    case 1 : sprintf(buf, " %15s : ", "Demon Kind");break;
            case 2 : sprintf(buf, " %15s : ", "Magi");break;
            case 4 : sprintf(buf, " %15s : ", "Werewolf Powers"); break;
            case 8 : sprintf(buf, " %15s : ", "Innate");break;
            case 16: sprintf(buf, " %15s : ", "Weaponsmaster");break;
            case 32: sprintf(buf, " %15s : ", "Drow Abilities");break;
            case 64: sprintf(buf, " %15s : ", "Monk Abilities");break;
            case 128:sprintf(buf, " %15s : ", "Ninja Abilities");break;
		    case 256:sprintf(buf, " %15s : ", "Lich Abilities");break;
            case 512:sprintf(buf, " %15s : ", "Shapeshifter");break;
            case 1024:sprintf(buf, " %15s : ", "Tanar'ri Powers");break;
            case 2048:sprintf(buf, " %15s : ", "Angel Abilities");break;
            case 4096:sprintf(buf, " %15s : ", "Knight Powers");break;
            case 8192:sprintf(buf, " %15s : ", "Cyborg Powers");break;
            case 16384:sprintf(buf, " %15s : ", "Tapped Powers");break;
            case 65536:sprintf(buf, " %15s : ", "Ghoul Powers");break;
            case 131072:sprintf(buf, " %15s : ", "Thief Skills");break;
            case 262144:sprintf(buf, " %15s : ", "Magical Abilities");break;
            case 1048576:sprintf(buf, " %15s : ", "Shadow Skills");break;
            case 2097152:sprintf(buf, " %15s : ", "Priest Abilities");break;
            case 4194304:sprintf(buf, " %15s : ", "Golem Powers");break;
            case 8388608:sprintf(buf, " %15s : ", "Jedi Skills");break;
            case 16777216:sprintf(buf, " %15s : ", "Wizard Powers");break;
            case 33554432:sprintf(buf, " %15s : ", "Garou Skills");break;
		}
	    }
	    else if (i % 4 == 0)
	    {
		sprintf(buf, "\n\r                   ");
	    }
	    i++;

	    send_to_char(buf, ch);
	    send_to_char(cmd_table[cmd].name,ch);
	    send_to_char(" ",ch);
	    displayed = TRUE;
	    foundpower++;
	}

    if (displayed) send_to_char("\n\r",ch);
  
    if (foundpower == 0)
    {
    send_to_char("\n\r You do not yet possess any powers.\n\r\n\r", ch);
    }
  sprintf(buf, "%s\n\r", get_dystopia_banner("", 80));
  send_to_char(buf, ch);
    return;
}
	
/*
 * Command logging types.
 */
#define LOG_NORMAL	0  // Doesn't log unless the player is logged
#define LOG_ALWAYS	1  // Will always log this command (both file and logchannel)
#define LOG_NEVER	2  // Will never log this command, no matter what
#define LOG_SEMI        3  // Will always log this command (file only)

/*
 * Log-all switch.
 */
char *  last_command        = NULL;
bool    arena_open	    = FALSE;
bool    arena_base          = FALSE;
bool	arenaopen	    = FALSE;
bool    ragnarok            = FALSE;
bool	fLogAll		    = FALSE;
bool	global_exp	    = FALSE;
bool 	global_qp	    = FALSE;
bool 	global_dt	    = FALSE;
bool    global_cp       = FALSE;
bool    global_chaos    = FALSE;
bool    extra_log	    = FALSE;
bool    cmd_done        = TRUE;
bool    arena2          = TRUE;
bool    arena2death     = FALSE;
int     exptimer        = 0;
int     qpstimer        = 0;
int     players_logged      = 0;
int     thread_count        = 0;
int     top_playerid    = 0;
int     ragnarok_cost       = 5000;
int     exp_cost       = 25000;
int     dt_cost       = 50000;
int     cp_cost       = 25000;
int     pulse_exp     = -1;
int     pulse_cp      = -1;
int     pulse_dt      = -1;
int     ragnarok_timer  = PULSE_AREA * 60;
int     pulse_arena     = PULSE_AREA * 60;
int     players_decap       = 0;
int     players_gstolen     = 0;
int	iDelete		    = 0;
int     total_output    = 0;
int     mudinfo[MUDINFO_MAX];
int     ccenter[CCENTER_MAX];
bool  check_disabled (const struct cmd_type *command);
DISABLED_DATA *disabled_first;
BAN_DATA *ban_list;
BAN_DATA *newbieban_list;

pthread_mutex_t        memory_mutex = PTHREAD_MUTEX_INITIALIZER;

/*
 * Command table.
 */
const	struct	cmd_type	cmd_table	[] =
{
    /* Name             Function    Min Position     Level  Log      Class,DiscLevel,DiscName*/

    /* common movement commands */
    { "north",  do_north, POS_STANDING,  0,  LOG_NORMAL, 0,0,0 },
    { "east",   do_east,  POS_STANDING,	 0,  LOG_NORMAL, 0,0,0 },
    { "south",  do_south, POS_STANDING,	 0,  LOG_NORMAL, 0,0,0 },
    { "west",   do_west,  POS_STANDING,	 0,  LOG_NORMAL, 0,0,0 },
    { "up",     do_up,    POS_STANDING,	 0,  LOG_NORMAL, 0,0,0 },
    { "down",   do_down,  POS_STANDING,	 0,  LOG_NORMAL, 0,0,0 },

    /*
     * Common other commands.
     * Placed here so one and two letter abbreviations work.
     */
    { "cast",		do_cast,				POS_FIGHTING,	0,  LOG_NORMAL, 0,0,0},
    { "call",		do_call,	POS_SLEEPING,	 0,  LOG_NORMAL, 0,0,0},
    { "consider",		do_consider,POS_SITTING,	 0,  LOG_NORMAL, 0,0,0},
    { "chi",            do_chi,POS_FIGHTING,3, LOG_NORMAL,64,0,0 },
    { "mesmerise",	do_command,	POS_SITTING,	 3,  LOG_ALWAYS, 8, DISC_VAMP_DOMI,2 },
    { "command",	do_command,	POS_SITTING,	 3, LOG_ALWAYS, 8,DISC_VAMP_DOMI,1},
    { "crack",		do_crack,	POS_STANDING,	 0,  LOG_NORMAL, 0,0,0	},
    { "diagnose",	do_diagnose,POS_FIGHTING,	 0,  LOG_NORMAL, 0,0,0	},
    { "dismount",	do_dismount,POS_STANDING,	 0,  LOG_NORMAL, 0,0,0	},
    { "enter",		do_enter,	POS_STANDING,	 0,  LOG_NORMAL, 0,0,0	},
    { "exits",		do_exits,	POS_SITTING,	 0,  LOG_NORMAL, 0,0,0	},
    { "get",		do_get,	POS_SITTING,	 0,  LOG_NORMAL, 0,0,0	},
    { "inventory",	do_inventory,POS_DEAD,	 	 0,  LOG_NORMAL, 0,0,0	},
    { "kill",		do_kill,	POS_FIGHTING,	 0,  LOG_NORMAL, 0,0,0	},
    { "combatswitch",	do_combatswitch,	POS_FIGHTING, 0, LOG_NORMAL, 0,0,0},
    { "look",		do_look,	POS_MEDITATING,	 0,  LOG_NORMAL, 0,0,0	},
    { "ls",			do_look,	POS_MEDITATING,	 0,  LOG_NORMAL, 0,0,0	},

    { "mount",		do_mount,	POS_STANDING,	 0,  LOG_NORMAL, 0,0,0	},
    { "order",		do_order,	POS_SITTING,	 1,  LOG_ALWAYS, 0,0,0	},
    { "rest",		do_rest,	POS_MEDITATING,	 0,  LOG_NORMAL, 0,0,0	},
    { "reimb",           do_reimb,        POS_MEDITATING,  12,  LOG_NORMAL, 0,0,0  },   
    { "sit",		do_sit,	POS_SITTING,	 0,  LOG_NORMAL, 0,0,0	},
    { "stand",		do_stand,	POS_SLEEPING,	 0,  LOG_NORMAL, 0,0,0	},
    { "tell",		do_tell,	POS_MEDITATING,	 0,  LOG_NORMAL, 0,0,0	},
    { "whisper",		do_whisper,	POS_SITTING,	 0,  LOG_NORMAL, 0,0,0	},
    { "wield",		do_wear,	POS_SITTING,	 0,  LOG_NORMAL, 0,0,0	},
    { "wizhelp",		do_wizhelp,	POS_DEAD,	 	 4,  LOG_NORMAL, 0,0,0	},
    { "wizlist",		do_wizlist,	POS_DEAD,	 	 0,  LOG_NORMAL, 0,0,0	},
    { "version",		do_version,	POS_DEAD,	 	 0,  LOG_NORMAL, 0,0,0	},
    { "linkdead",	do_linkdead, POS_DEAD, 7, LOG_NORMAL, 0,0,0},

    /*
     * Informational commands.
     */
    { "affects",          do_affects,       POS_DEAD,                0,  LOG_NORMAL, 0,0,0},
    { "areas",		do_areas,	POS_DEAD,	 	 0,  LOG_NORMAL, 0,0,0},
    { "commands",		do_commands,POS_DEAD,	 	 0,  LOG_NORMAL, 0,0,0},
    { "credits",		do_credits,	POS_DEAD,	 	 0,  LOG_NORMAL, 0,0,0},
    { "equipment",	do_equipment,POS_DEAD,	 	 0,  LOG_NORMAL, 0,0,0},
    { "examine",		do_examine,	POS_SITTING,	 0,  LOG_NORMAL, 0,0,0},
    { "help",		do_help,	POS_DEAD,	 	 0,  LOG_NORMAL, 0,0,0},
    { "idea",		do_idea,	POS_DEAD,	  	 0,  LOG_NORMAL, 0,0,0},
    { "report",		do_report,	POS_DEAD,	 	 0,  LOG_NORMAL, 0,0,0},
    { "reply",          do_reply,       POS_MEDITATING,  0,  LOG_NORMAL, 0,0,0 },
	{ "autoset",	do_autoset,	POS_STANDING,	0, LOG_NORMAL,0,0,0},
    { "autostance",	do_autostance,	POS_STANDING,	0, LOG_NORMAL,0,0,0},
    { "mastery",        do_mastery,     POS_STANDING,   3, LOG_ALWAYS,0,0,0},
    { "expcalc",        do_exp,  POS_FIGHTING,      1,  LOG_NORMAL,0,0,0},
    { "pkpowers",       do_pkpowers, POS_STANDING,    0,  LOG_NORMAL,0,0,0}, 
    { "gensteal",       do_gensteal, POS_STANDING,    3,  LOG_NORMAL,0,0,0},
    { "setstance",      do_setstance, POS_STANDING,   0,  LOG_NORMAL,0,0,0},
    { "mudstat",	do_mudstat,   POS_DEAD,       2,  LOG_NORMAL,0,0,0},
    { "level",            do_level,  POS_FIGHTING,      0, LOG_NORMAL,0,0,0},
    { "oldlevel",       do_oldlevel,  POS_FIGHTING,      0, LOG_NORMAL,0,0,0},
    { "selfdelete",     do_selfdelete,  POS_STANDING,    2,  LOG_NEVER,  0, 0, 0 },
    { "selfclass",     do_classself,  POS_STANDING,      3,  LOG_ALWAYS, 0,0,0},
    { "score",		do_score,	POS_DEAD,	 	 0,LOG_NORMAL, 0,0,0},
    { "spit",           do_spit,    POS_SITTING,       3,  LOG_NORMAL, 8,DISC_VAMP_QUIE,1},
    { "tongue",         do_tongue,  POS_FIGHTING,      3,  LOG_NORMAL, 8,DISC_VAMP_SERP,4},
    { "mindblast",      do_mindblast,POS_STANDING,     3,  LOG_NORMAL, 8,DISC_VAMP_PRES,2},
    { "stat",           do_stat,    POS_DEAD,          3,  LOG_NORMAL, 0,0,0},
    { "skill",		do_skill,	POS_MEDITATING,	 0,  LOG_NORMAL, 0,0,0 },
    { "spells",		do_spell,	POS_MEDITATING,	 0,  LOG_NORMAL, 0,0,0 },
    { "socials",	do_socials,	POS_DEAD,	 	 0,  LOG_NORMAL, 0,0,0 },
    { "time",		do_time,	POS_DEAD,	 	 0,  LOG_NORMAL, 0,0,0 },
    { "typo",		do_typo,	POS_DEAD,	 	 0,  LOG_NORMAL, 0,0,0 },
    { "who",		do_who,		POS_DEAD,	 	 0,  LOG_NORMAL, 0,0,0 },
    { "viewtier",	do_viewtier,	POS_DEAD,	 	 0,  LOG_NORMAL, 0,0,0 },
    { "xemot",		do_huh,		POS_DEAD,	 	 1,  LOG_NORMAL, 0,0,0 },
    { "xemote",		do_xemote,	POS_SITTING,	1,  LOG_NORMAL, 0,0,0 },
    { "xsocial",	do_huh,		POS_DEAD,	1,  LOG_NORMAL, 0,0,0 },
    { "xsocials",	do_xsocials,	POS_DEAD,	1,  LOG_NORMAL, 0,0,0 },
    { "group",          do_group,       POS_DEAD,       0,  LOG_NORMAL, 0,0,0  },
    { "channels",       do_channels,	POS_DEAD,       0,  LOG_NORMAL, 0,0,0  },
/*Ghoul Commands*/
    { "realms",     	do_realms,	POS_STANDING,	3, LOG_NORMAL, 65536,0,0 },
    { "gcreate",    	do_gcreate,	POS_SITTING,	3, LOG_NORMAL, 65536,0,0 },
    { "gore",       	do_gore,	POS_STANDING,	3, LOG_NORMAL, 65536,0,0 },
    { "ravage",     	do_ravage,	POS_FIGHTING,	3, LOG_NORMAL, 65536,0,0 },
    { "sdecay",     	do_sdecay,	POS_STANDING,	3, LOG_NORMAL, 65536,0,0 },
    { "sdeath",     	do_sdeath,	POS_STANDING,	3, LOG_NORMAL, 65536,0,0 },
    //{ "ghouleq",    	do_ghouleq,	POS_STANDING,	3, LOG_NORMAL, 65536,0,0 },
    { "swampwalk",    	do_swampwalk,POS_STANDING,	3, LOG_NORMAL, 65536,0,0 },
    
/*Draconians*/
    { "dragonorb",  do_dragonorb,	POS_STANDING,	 0,  LOG_NORMAL, 16384,0,0	},
    { "fieryeyes",  do_fieryeyes,	POS_FIGHTING,	 0,  LOG_NORMAL, 16384,0,0	},	
    { "spikes", do_spikes,		POS_FIGHTING,	 0,  LOG_NORMAL, 16384,0,0	},
    { "deathstate", do_deathstate,	POS_STANDING,	 0,  LOG_NORMAL, 16384,0,0	},    
    { "dclaws", do_dclaws,		POS_FIGHTING,	 0,  LOG_NORMAL, 16384,0,0	},
    { "headbash",   do_headbash,	POS_FIGHTING,	 0,  LOG_NORMAL, 16384,0,0	},
    { "acidblood",  do_acidblood,	POS_STANDING,	 0,  LOG_NORMAL, 16384,0,0	},
    { "lizardform", do_lizardform,	POS_STANDING,	 0,  LOG_NORMAL, 16384,0,0	},
    { "dtail",	    do_dtail,		POS_FIGHTING,	 0,  LOG_NORMAL, 16384,0,0	},
    { "venomspit",  do_venomspit,	POS_FIGHTING,	 0,  LOG_NORMAL, 16384,0,0	},
    { "dragonrun",  do_dragonrun,   POS_STANDING,    0,  LOG_NORMAL, 16384,0,0  },
    { "gasbreath",  do_gasbreath,	POS_STANDING,	 0,  LOG_NORMAL, 16384,0,0	},
    { "firebreath", do_firebreath,	POS_FIGHTING,	 0,  LOG_NORMAL, 16384,0,0	},
/*Thief Commands*/
    { "thiefskills",    do_thiefskills,	POS_STANDING,	3, LOG_NORMAL, CLASS_THIEF,0,0 },
    { "rolldice",	do_rolldice,	POS_STANDING,	3, LOG_NORMAL, CLASS_THIEF,0,0 },
    { "tconceal",	do_tconceal,	POS_STANDING,	3, LOG_NORMAL, CLASS_THIEF,0,0 },
    { "gleam",		do_gleam,	POS_STANDING,	3, LOG_NORMAL, CLASS_THIEF,0,0 },
    { "bstab",		do_bstab,	POS_STANDING,	3, LOG_NORMAL, CLASS_THIEF,0,0 },
    { "tdagger",	do_tdagger,	POS_FIGHTING,	3, LOG_NORMAL, CLASS_THIEF,0,0 },
    //{ "thiefeq",	do_thiefeq,	POS_STANDING,	3, LOG_NORMAL, CLASS_THIEF,0,0 },	
    { "dtrick",		do_dtrick,	POS_FIGHTING,	3, LOG_NORMAL, CLASS_THIEF,0,0 },
    { "poisonblade",    do_poisonblade,	POS_STANDING,	3, LOG_NORMAL, CLASS_THIEF,0,0 },
    { "shadowmove",    do_shadowmove,	POS_STANDING,	3, LOG_NORMAL, CLASS_THIEF,0,0 },
/*New Mages*/
    { "mageskill",	do_mageskill,	POS_STANDING,	 3,  LOG_NORMAL, CLASS_SORCERER,0,0	},
    { "specialize",	do_specialize,	POS_STANDING,	 3,  LOG_NORMAL, CLASS_SORCERER,0,0	},
    { "sorchant",		do_sorchant,	POS_FIGHTING,	 3,  LOG_NORMAL, CLASS_SORCERER,0,0	},
    { "mindblank",	do_mindblank,	POS_FIGHTING,	 3,  LOG_NORMAL, CLASS_SORCERER,0,0	},
    { "target",		do_target,	POS_FIGHTING,	 3,  LOG_NORMAL, CLASS_SORCERER,0,0	},
    { "sorcspells",	do_sorcspells,	POS_FIGHTING,	 3,  LOG_NORMAL, CLASS_SORCERER,0,0	},

    /* shadows */
    { "moonstrike",     do_moonstrike,     POS_FIGHTING,  3,  LOG_NORMAL,CLASS_SHADOW,    SHADOW_ATTACK,     1      },
    { "shadowthrust",   do_shadowthrust,   POS_FIGHTING,  3,  LOG_NORMAL,CLASS_SHADOW,    SHADOW_ATTACK,     2      },
    { "dirtthrow",      do_dirtthrow,      POS_FIGHTING,  3,  LOG_NORMAL,CLASS_SHADOW,    SHADOW_ATTACK,     4     },
    { "gutcutter",      do_gutcutter,      POS_FIGHTING,  3,  LOG_NORMAL,CLASS_SHADOW,    SHADOW_ATTACK,     8     },
    { "soulreaper",     do_soulreaper,     POS_FIGHTING,  3,  LOG_NORMAL,CLASS_SHADOW,    SHADOW_ATTACK,     16    },
    { "knifespin",      do_knifespin,      POS_FIGHTING,  3,  LOG_NORMAL,CLASS_SHADOW,    SHADOW_ATTACK,     32    },
    { "wakasashislice", do_wakasashislice, POS_FIGHTING,  3,  LOG_NORMAL,CLASS_SHADOW,    SHADOW_ATTACK,     64   },
    { "caltrops",       do_caltrops,       POS_FIGHTING,  3,  LOG_NORMAL,CLASS_SHADOW,    SHADOW_ATTACK,     128   },
    { "shadowlearn",    do_shadowlearn,    POS_STANDING,  3,  LOG_NORMAL,CLASS_SHADOW,    0,                 0      },
    { "soulseek",       do_soulseek,       POS_STANDING,  3,  LOG_NORMAL,CLASS_SHADOW,    SHADOW_POWERS,     512     },
    { "soultarget",     do_soultarget,     POS_FIGHTING,  3,  LOG_NORMAL,CLASS_SHADOW,    SHADOW_POWERS,     512    },
    { "shadowwalk",     do_shadowwalk,     POS_STANDING,  3,  LOG_NORMAL,CLASS_SHADOW,    SHADOW_POWERS,     4    },
    //{ "shadowtalk",     do_shadowtalk,     POS_DEAD,      3,  LOG_NORMAL,CLASS_SHADOW,    0,                 0         },
    { "scry",           do_scry,           POS_STANDING,  3,  LOG_NORMAL,CLASS_SHADOW,    SHADOW_POWERS,     128    },
    { "vanish",         do_vanish,         POS_STANDING,  3,  LOG_NORMAL,CLASS_SHADOW,    SHADOW_POWERS,     2  },
    { "shield",         do_shield,         POS_STANDING,  3,  LOG_NORMAL,CLASS_SHADOW,    SHADOW_POWERS,     256      },
    { "assassinate",    do_assassinate,    POS_STANDING,  3,  LOG_NORMAL,CLASS_SHADOW,    SHADOW_POWERS,     1024     },
    { "truesight",      do_truesight,      POS_STANDING,  3,  LOG_NORMAL,CLASS_SHADOW,    SHADOW_POWERS,     16      },


    /* Priests */
    { "pgain",          do_pgain,          POS_STANDING,  3,  LOG_NORMAL,CLASS_PRIEST, 0,  0    },
    { "priestform",     do_priestform,     POS_STANDING,  3,  LOG_NORMAL,CLASS_PRIEST, 0,  0    },
    { "holyaura",       do_holyaura,       POS_STANDING,  3,  LOG_NORMAL,CLASS_PRIEST, 0,  0    },
    { "godbless",       do_godbless,       POS_STANDING,  3,  LOG_NORMAL,CLASS_PRIEST, 0,  0    },
    { "ascend",         do_ascend,         POS_STANDING,  3,  LOG_NORMAL,CLASS_PRIEST, 0,  0    },
	{ "godheal",        do_godheal,        POS_STANDING,  3,  LOG_NORMAL,CLASS_PRIEST, 0,  0    },
    { "godpeace",       do_godpeace,       POS_STANDING,  3,  LOG_NORMAL,CLASS_PRIEST, 0,  0    },
    { "godstrike",      do_godstrike,      POS_FIGHTING,  3,  LOG_NORMAL,CLASS_PRIEST, 0,  0    },
    { "grheal",         do_grheal,         POS_STANDING,  3,  LOG_NORMAL,CLASS_PRIEST, 0,  0    },
    { "grstorm",        do_grstorm,        POS_STANDING,  3,  LOG_NORMAL,CLASS_PRIEST, 0,  0    },
    { "healstorm",      do_healstorm,      POS_STANDING,  3,  LOG_NORMAL,CLASS_PRIEST, 0,  0    },
    { "majorheal",      do_majorheal,      POS_FIGHTING,  3,  LOG_NORMAL,CLASS_PRIEST, 0,  0    },
    { "minheal",        do_minheal,        POS_FIGHTING,  3,  LOG_NORMAL,CLASS_PRIEST, 0,  0    },
    { "minstorm",       do_minstorm,       POS_FIGHTING,  3,  LOG_NORMAL,CLASS_PRIEST, 0,  0    },
    { "pwho",           do_pwho,           POS_FIGHTING,  3,  LOG_NORMAL,CLASS_PRIEST, 0,  0    },
    { "turn",           do_turnundead,     POS_FIGHTING,  3,  LOG_NORMAL,CLASS_PRIEST, 0,  0    },            
    
    // Golems
    {  "bazmapunch",	do_bazmapunch,	POS_FIGHTING,	3, LOG_NORMAL, CLASS_GOLEM,0,0},
    {  "elbowbash",	do_elbowbash,	POS_FIGHTING,	3, LOG_NORMAL, CLASS_GOLEM,0,0},
    {  "groinkick",	do_groinkick,	POS_FIGHTING,	3, LOG_NORMAL, CLASS_GOLEM,0,0},
    {  "backslash",	do_backslash,	POS_FIGHTING,	3, LOG_NORMAL, CLASS_GOLEM,0,0},
    {  "sumosplash",	do_sumosplash,	POS_FIGHTING,	3, LOG_NORMAL, CLASS_GOLEM,0,0},
    {  "neckcrack",	do_neckcrack,	POS_FIGHTING,	3, LOG_NORMAL, CLASS_GOLEM,0,0},
    //{  "rocktalk",	do_rocktalk,	POS_DEAD,	3, LOG_NORMAL, CLASS_GOLEM,0,0},
    {  "solidify",	do_solidify,	POS_RESTING,	3, LOG_NORMAL, CLASS_GOLEM,0,0},
    {  "harden",	do_harden,	POS_RESTING,	3, LOG_NORMAL, CLASS_GOLEM,0,0},
    {  "hitch",		do_hitch,	POS_STANDING,	3, LOG_NORMAL, CLASS_GOLEM,0,0},
    {  "golbind",	do_golbind,	POS_STANDING,	3, LOG_NORMAL, CLASS_GOLEM,0,0},
    //{  "modify",	do_modify,	POS_STANDING,   3, LOG_NORMAL, CLASS_GOLEM,0,0},
    {  "bend",		do_study,	POS_STANDING,	3, LOG_NORMAL, CLASS_GOLEM,0,0},
    {  "scry",		do_scry,        POS_FIGHTING,   3, LOG_NORMAL, CLASS_GOLEM,0,0 },
    {  "truesight",	do_truesight,   POS_FIGHTING,   3, LOG_NORMAL, CLASS_GOLEM,0,0 },
    {  "shield",	do_shield,      POS_FIGHTING,   3, LOG_NORMAL, CLASS_GOLEM,0,0 },
    {  "golpowers",	do_golpowers,   POS_FIGHTING,   3, LOG_NORMAL, CLASS_GOLEM,0,0 },
 
    /* Jedi */

    { "jfight", do_jfight, POS_FIGHTING, 3, LOG_NORMAL,8388608,0,0},
    { "jstate",		do_jstate,	POS_FIGHTING, 3, LOG_NORMAL,8388608,0,0},
    { "channelforce", 	do_channelforce, POS_STANDING, 3, LOG_NORMAL,8388608,0,0},
    { "jstep",		do_jstep,	POS_STANDING, 3, LOG_NORMAL,8388608,0,0},
    //{ "forcetalk",	do_forcetalk,	POS_DEAD,     3, LOG_NORMAL,8388608,0,0},
    //{ "jediarmor",	do_jediarmor,	POS_STANDING, 3, LOG_NORMAL,8388608,0,0},
    { "jedilearn",	do_jedilearn,	POS_STANDING, 3, LOG_NORMAL,8388608,0,0},
    { "jediskill",	do_jediskill,   POS_STANDING, 3, LOG_NORMAL,8388608,0,0},
    { "fshield",	do_fshield,	POS_STANDING, 3, LOG_NORMAL,8388608,0,0},
    { "jlevitate",	do_jlevitate,	POS_STANDING, 3, LOG_NORMAL,8388608,0,0},
    { "jsight",		do_jsight,	POS_STANDING, 3, LOG_NORMAL,8388608,0,0},
    { "jeyes",		do_jeyes,	POS_STANDING, 3, LOG_NORMAL,8388608,0,0},
    { "jsense",		do_jsense,	POS_STANDING, 3, LOG_NORMAL,8388608,0,0},
    { "jhealing",	do_jhealing,	POS_STANDING, 3, LOG_NORMAL,8388608,0,0},
    { "jsummon",	do_jsummon,	POS_FIGHTING, 3, LOG_NORMAL,8388608,0,0},
    { "jsault",		do_jsault,	POS_FIGHTING, 3, LOG_NORMAL,8388608,0,0},
    { "jreverse",	do_jreverse,	POS_FIGHTING, 3, LOG_NORMAL,8388608,0,0},
    { "jkneel",		do_jkneel,	POS_FIGHTING, 3, LOG_NORMAL,8388608,0,0},
    { "jstab",		do_jstab,	POS_FIGHTING, 3, LOG_NORMAL,8388608,0,0},
    { "jhigh",		do_jhigh,	POS_FIGHTING, 3, LOG_NORMAL,8388608,0,0},
    { "jupper",		do_jupper,	POS_FIGHTING, 3, LOG_NORMAL,8388608,0,0},
    { "jbutterfly",	do_jbutterfly,	POS_FIGHTING, 3, LOG_NORMAL,8388608,0,0},
    { "jcross",		do_jcross,	POS_FIGHTING, 3, LOG_NORMAL,8388608,0,0},
    { "jslash",		do_jslash,	POS_FIGHTING, 3, LOG_NORMAL,8388608,0,0},
    { "jcircle",	do_jcircle,	POS_FIGHTING, 3, LOG_NORMAL,8388608,0,0},
    { "jedishield",	do_jedishield,	POS_STANDING, 3, LOG_NORMAL,8388608,0,0},
    { "jedisleep",	do_jedisleep,	POS_STANDING, 3, LOG_NORMAL,8388608,0,0},
    { "fspeed",		do_fspeed,	POS_STANDING, 3, LOG_NORMAL,8388608,0,0},
    { "jtouch",		do_jtouch,	POS_STANDING, 3, LOG_NORMAL,8388608,0,0},
    /*
     * Configuration commands.
     */
    { "alignment",	do_alignment,POS_DEAD,	 	 0,  LOG_NORMAL, 0,0,0	},
    { "alias",          do_alias,  	POS_STANDING,         2,  LOG_ALWAYS, 0,0,0 },
    { "config",		do_config,	POS_DEAD,	 	 0,  LOG_NORMAL, 0,0,0	},
    { "vt100",          do_vt100,       POS_DEAD,        1,  LOG_NORMAL, 0, 0, 0 },
    { "compres",      	do_compres,    	POS_DEAD,        0,  LOG_NORMAL, 0,0,0 },
    { "compress",      	do_compress,   	POS_DEAD,        0,  LOG_NORMAL, 0,0,0 },
    { "description",	do_description,	POS_DEAD,	 0,  LOG_NORMAL, 0,0,0	},
    { "password",	do_password,	POS_DEAD, 	 0,  LOG_NEVER, 0,0,0	},
    { "title",		do_title,	POS_DEAD, 	 0,  LOG_NORMAL, 0,0,0	},
    { "ansi",		do_ansi,	POS_DEAD, 	 0,  LOG_NORMAL, 0,0,0	},
    { "autoexit",	do_autoexit,	POS_DEAD, 	 0,  LOG_NORMAL, 0,0,0	},
    { "autoloot",	do_autoloot,	POS_DEAD, 	 0,  LOG_NORMAL, 0,0,0	},
    { "autoslab",	do_autoslab,	POS_DEAD, 	 0,  LOG_NORMAL, 0,0,0	},
    { "autohilt",	do_autohilt,	POS_DEAD, 	 0,  LOG_NORMAL, 0,0,0	},
    { "autogem",	do_autogem,	POS_DEAD, 	 0,  LOG_NORMAL, 0,0,0	},
    { "autohead",	do_autohead,	POS_DEAD, 	 0,  LOG_NORMAL, 0,0,0	},   
    { "autosac",	do_autosac,	POS_DEAD, 	 0,  LOG_NORMAL, 0,0,0	},
    { "autobones",		do_autobones,	POS_DEAD, 	 0,  LOG_NORMAL, 0,0,0	},
    { "autostore",		do_autostore,	POS_DEAD, 	 0,  LOG_NORMAL, 0,0,0	},
    { "brief1",		 do_brief,	POS_DEAD, 	 0,  LOG_NORMAL, 0,0,0	},
    { "brief2",          do_brief2,       POS_DEAD,                0,  LOG_NORMAL, 0,0,0  },
    { "brief3",          do_brief3,       POS_DEAD,                0,  LOG_NORMAL, 0,0,0  },
    { "brief4",          do_brief4,       POS_DEAD,                0,  LOG_NORMAL, 0,0,0  },
    { "brief5",          do_brief5,       POS_DEAD,                0,  LOG_NORMAL, 0,0,0  },
    { "cprompt",		do_cprompt,	POS_DEAD,	 	 0,  LOG_NORMAL, 0,0,0	},
    { "prompt",		do_prompt,	POS_DEAD,	 	 0,  LOG_NORMAL, 0,0,0	},
    { "sound",          do_sound,       POS_DEAD,        1,  LOG_NORMAL, 0, 0, 0 },
    { "music",          do_music,       POS_DEAD,        1,  LOG_NORMAL, 0, 0, 0 },
    { "map",            do_map,         POS_DEAD,        1,  LOG_NORMAL, 0, 0, 0 },
    /*
     * Communication commands.
     */
    { "flame",		do_flame,       POS_DEAD,                0,  LOG_NORMAL,0,0,0   },
    { "gsocial",	do_gsocial,     POS_DEAD,                0,  LOG_NORMAL,0,0,0   },
    { "trivia",		do_trivia,      POS_DEAD,                0,  LOG_NORMAL,0,0,0   },
    { "chat",		do_chat,	POS_DEAD,	 	 0,  LOG_NORMAL,0,0,0	},
    { ".",			do_chat,	POS_DEAD,2,LOG_NORMAL, 0,0,0	},
    { "clandisc",		do_clandisc,POS_SITTING,       3,  LOG_NORMAL, 0,0,0 },
    { "intro",		do_introduce,	POS_DEAD,	 3,LOG_NORMAL, 8,0,0, },
    { "intro",          do_introduce,   POS_DEAD,        3,LOG_NORMAL, 4,0,0, },
    { "emote",		do_xemote,	POS_SITTING,	 0,  LOG_NORMAL,0,0,0 },
    { ",",			do_xemote,	POS_SITTING,	 0,  LOG_NORMAL, 0,0,0},
    { "gtell",		do_gtell,	POS_DEAD,	 	 0,  LOG_NORMAL, 0,0,0	},
    { ";",			do_gtell,	POS_DEAD,	 	 0,  LOG_NORMAL, 0,0,0	},
    { "howl",		do_howl,	POS_DEAD,	 	 1,  LOG_NORMAL, 0,0,0	},
    { "telepath",		do_telepath,	POS_DEAD,	 	 1,  LOG_NORMAL, 512,0,0	},
    { "music",		do_music,	POS_SLEEPING,	 2,  LOG_NORMAL,0,0,0 },
    { "sing",           do_sing,        POS_SITTING,     2,  LOG_NORMAL,0,0,0 },
    { "note",		do_note,	POS_DEAD,	 	 0,  LOG_NORMAL, 0,0,0	},
    { "board",		do_board,	POS_DEAD,	0,	LOG_NORMAL,0,0,0},
    { "pose",		do_emote,	POS_SITTING,	 0,  LOG_NORMAL, 0,0,0	},
    { "gemote",		do_gemote,	POS_SITTING,	 0,  LOG_NORMAL, 0,0,0	},
    { "quest",		do_quest,	POS_SITTING,	 0,  LOG_NORMAL, 0,0,0	},
    { "qtalk",		do_qtalk,       POS_DEAD,                0,  LOG_NORMAL,0,0,0   },
    { "say",		do_say,		POS_MEDITATING,	 0,  LOG_NORMAL, 0,0,0	},
    { "'",		do_say,		POS_MEDITATING,	 0,  LOG_NORMAL, 0,0,0	},
    { "yell",		do_yell,	POS_SITTING,	 2,  LOG_NORMAL, 0,0,0 },
    { "powers", do_racecommands, POS_FIGHTING, 3, LOG_NORMAL,0,0,0 },
    { "history",        do_history,     POS_DEAD,        0,  LOG_NORMAL, 0,0,0 },
    { "replay",        do_replay,     POS_DEAD,        0,  LOG_NORMAL, 0,0,0 },

    /*
     * Object manipulation commands.
     */
    { "activate",		do_activate,POS_STANDING,	 0,  LOG_NORMAL, 0,0,0	},
    { "brandish",		do_brandish,POS_SITTING,	 0,  LOG_NORMAL, 0,0,0	},
    { "close",		do_close,	POS_SITTING,	 0,  LOG_NORMAL, 0,0,0	},
    { "draw",		do_draw,	POS_FIGHTING,	 0,  LOG_NORMAL, 0,0,0	},
    { "drink",		do_drink,	POS_SITTING,	 0,  LOG_NORMAL, 0,0,0	},
    { "drop",		do_drop,	POS_SITTING,	 0,  LOG_NORMAL, 0,0,0	},
    { "eat",		do_eat,	POS_SITTING,	 0,  LOG_NORMAL, 0,0,0	},
    { "empty",		do_empty,	POS_SITTING,	 0,  LOG_NORMAL, 0,0,0	},
    { "fill",		do_fill,	POS_SITTING,	 0,  LOG_NORMAL, 0,0,0	},
    { "give",		do_give,	POS_SITTING,	 0,  LOG_ALWAYS, 0,0,0	},
    { "gift",           do_gift,        POS_STANDING,    0,  LOG_NEVER, 0,0,0  },
    { "hold",		do_wear,	POS_SITTING,	 0,  LOG_NORMAL, 0,0,0	},
    { "lock",		do_lock,	POS_SITTING,	 0,  LOG_NORMAL, 0,0,0	},
    { "open",		do_open,	POS_SITTING,	 0,  LOG_NORMAL, 0,0,0	},
    { "pick",		do_pick,	POS_SITTING,	 0,  LOG_NORMAL, 0,0,0	},
    { "press",		do_press,	POS_STANDING,	 0,  LOG_NORMAL, 0,0,0	},
    { "pull",		do_pull,	POS_STANDING,	 0,  LOG_NORMAL, 0,0,0	},
    { "put",		do_put,	POS_SITTING,	 0,  LOG_NORMAL, 0,0,0 },
    { "quaff",		do_quaff,	POS_SITTING,	 0,  LOG_NORMAL, 0,0,0	},
    { "recite",		do_recite,	POS_SITTING,	 0,  LOG_NORMAL, 0,0,0	},
    { "remove",		do_remove,	POS_SITTING,	 0,  LOG_NORMAL, 0,0,0	},
    { "removealias",    do_removealias, POS_STANDING,    2,  LOG_NORMAL, 0,0,0  },
    { "sheath",		do_sheath,	POS_STANDING,	 0,  LOG_NORMAL, 0,0,0	},
    { "take",		do_get,	POS_SITTING,	 0,  LOG_NORMAL, 0,0,0	},
    { "throw",		do_throw,	POS_STANDING,	 0,  LOG_NORMAL, 0,0,0	},
    { "turn",		do_turn,	POS_MEDITATING,	 0,  LOG_NORMAL, 0,0,0	},
    { "twist",		do_twist,	POS_STANDING,	 0,  LOG_NORMAL, 0,0,0	},
    { "sacrifice",	do_sacrifice,	POS_SITTING,	 1,  LOG_NORMAL, 0,0,0	},
    { "unlock",		do_unlock,	POS_SITTING,	 0,  LOG_NORMAL, 0,0,0	},
    { "wear",		do_wear,	POS_SITTING,	 0,  LOG_NORMAL, 0,0,0	},
    { "voodoo",		do_voodoo,	POS_SITTING,	 0,  LOG_NORMAL, 0,0,0	},
    { "zap",		do_zap,	POS_SITTING,	 0,  LOG_NORMAL, 0,0,0	},
    { "junk",           do_sacrifice,POS_STANDING,     3,  LOG_NORMAL, 0,0,0 },

  	{ "stalk"	,do_stalk, POS_STANDING,	0, LOG_NORMAL,128,0,0 },


    { "ancestralpath",  do_hologramtransfer, POS_STANDING, 3, LOG_NORMAL, 16, 0, 0 },
    { "techniques",     do_bladespin,        POS_STANDING, 3, LOG_NORMAL, 16, 0, 0 },
    { "web",            do_web,              POS_FIGHTING, 3, LOG_NORMAL, 16, 0, 0 },
    { "focus",          do_focus,            POS_FIGHTING, 3, LOG_NORMAL, 16, 0 ,0 },
    { "slide",          do_slide,            POS_FIGHTING, 3, LOG_NORMAL, 16, 0, 0 },
    { "sidestep",       do_sidestep,         POS_FIGHTING, 3, LOG_NORMAL, 16, 0, 0 },
    { "block",          do_block,            POS_FIGHTING, 3, LOG_NORMAL, 16, 0, 0 },
    { "countermove",    do_countermove,      POS_FIGHTING, 3, LOG_NORMAL, 16, 0, 0 },
    { "martial",        do_martial,          POS_STANDING, 3, LOG_NORMAL, 16, 0, 0 },

   /*
     * Combat commands.
     */
    { "generation",     do_generation,POS_STANDING,   11,  LOG_ALWAYS,0,0,0 },
    { "class",          do_class,   POS_STANDING,     11, LOG_ALWAYS,0,0,0},
    { "backstab",		do_backstab,POS_STANDING,	 0,  LOG_NORMAL, 0,0,0	},
    { "berserk",		do_berserk,	POS_FIGHTING,	 0,  LOG_NORMAL, 0,0,0	},
    { "bs",			do_backstab,POS_STANDING,	 0,  LOG_NORMAL, 0,0,0	},
    { "disarm",		do_disarm,	POS_FIGHTING,	 0,  LOG_NORMAL, 0,0,0	},
    { "flee",		do_flee,	POS_FIGHTING,	 0,  LOG_NORMAL, 0,0,0	},
    { "fightstyle",	do_fightstyle,POS_FIGHTING,	 0,  LOG_NORMAL, 0,0,0	},
    { "hurl",		do_hurl,	POS_STANDING,	 0,  LOG_NORMAL, 0,0,0	},
    { "kick",		do_kick,	POS_FIGHTING,	 0,  LOG_NORMAL, 0,0,0	},
    { "servant",        do_servant, POS_STANDING,      3,  LOG_NORMAL, 8,DISC_VAMP_DAIM,8 },
    { "punch",		do_punch,	POS_STANDING,	 0,  LOG_NORMAL, 0,0,0	},
    { "rescue",		do_rescue,	POS_FIGHTING,	 0,  LOG_NORMAL, 0,0,0	},
    { "stance",		do_stance,	POS_FIGHTING,	 0,  LOG_NORMAL, 0,0,0	},
    { "surrender",  do_surrender, POS_FIGHTING,  0,  LOG_NORMAL, 0,0,0  },
    { "pray",           do_pray,        POS_MEDITATING,  1,  LOG_NORMAL, 64,0,0 },

    /*
     * Lich commands.
     */
    
    { "lore",         do_lore,          POS_STANDING,   3,  LOG_NORMAL, 256,0,0},
    { "studylore",    do_studylore,     POS_STANDING,   3,  LOG_NORMAL, 256,0,0},
    { "lichtalk",     do_lichtalk,      POS_SLEEPING,   3,  LOG_NORMAL, 256,0,0},
    { "objectgate",   do_objectgate,    POS_STANDING,   3,  LOG_NORMAL, 256,0,0}, 
    { "fireball",     do_infernal,      POS_FIGHTING,   3,  LOG_NORMAL, 256,0,0},
    { "chaosmagic",   do_chaosmagic,    POS_FIGHTING,   3,  LOG_NORMAL, 256,0,0}, 
    { "chaossurge",   do_chaossurge,    POS_FIGHTING,   3,  LOG_NORMAL, 256,0,0},
    { "chaosshield",  do_chaosshield,   POS_STANDING,   3,  LOG_NORMAL, 256,0,0},
    { "golemsummon",  do_summongolem,   POS_FIGHTING,   3,  LOG_NORMAL, 256,0,0},
    { "planartravel", do_planartravel,  POS_STANDING,   3,  LOG_NORMAL, 256,0,0},
    { "truesight",    do_truesight,     POS_STANDING,   3,  LOG_NORMAL, 256,0,0},
    { "planarstorm",  do_planarstorm,   POS_FIGHTING,   3,  LOG_NORMAL, 256,0,0},
    { "readaura",     do_readaura,      POS_FIGHTING,   3,  LOG_NORMAL, 256,0,0},
    { "powertransfer",do_powertransfer, POS_STANDING,   3,  LOG_NORMAL, 256,0,0},
    { "polarity",     do_polarity,      POS_FIGHTING,   3,  LOG_NORMAL, 256,0,0},
    { "chillhand",    do_chillhand,     POS_FIGHTING,   3,  LOG_NORMAL, 256,0,0},
    { "creepingdoom", do_creepingdoom,  POS_FIGHTING,   3,  LOG_NORMAL, 256,0,0},
    { "painwreck",    do_painwreck,     POS_FIGHTING,   3,  LOG_NORMAL, 256,0,0},
    { "manasuck",     do_manasuck,      POS_FIGHTING,   3,  LOG_NORMAL, 256,0,0},
    { "earthswallow", do_earthswallow,  POS_STANDING,   3,  LOG_NORMAL, 256,0,0},
    //{ "licharmor",    do_licharmor,     POS_STANDING,   3,  LOG_NORMAL, 256,0,0},
    { "soulsuck",     do_soulsuck,      POS_FIGHTING,   3,  LOG_NORMAL, 256,0,0},
    { "zombie",       do_zombie,        POS_STANDING,   3,  LOG_NORMAL, 256,0,0},
    { "pentagram",    do_pentagram,     POS_STANDING,   3,  LOG_NORMAL, 256,0,0},
    { "planeshift",   do_planeshift,    POS_STANDING,   3,  LOG_NORMAL, 256,0,0},

    


    /*
     * Tanar'ri commands.
     */

    { "earthquake",	do_earthquake,  POS_FIGHTING, 3, LOG_NORMAL, 1024,0,0},
    { "tornado",	do_tornado,	POS_FIGHTING, 3, LOG_NORMAL, 1024,0,0},
    { "infernal",	do_infernal,    POS_FIGHTING, 3, LOG_NORMAL, 1024,0,0},
    { "bloodsacrifice", do_bloodsac,    POS_STANDING, 3, LOG_NORMAL, 1024,0,0},
    { "enmity",		do_enmity,	POS_FIGHTING, 3, LOG_NORMAL, 1024,0,0},
    { "enrage",		do_enrage,	POS_FIGHTING, 3, LOG_NORMAL, 1024,0,0},
    { "booming",        do_booming,     POS_FIGHTING, 3, LOG_NORMAL, 1024,0,0},
    { "truesight",      do_truesight,   POS_STANDING, 3, LOG_NORMAL, 1024,0,0},
    { "web",		do_web,		POS_FIGHTING, 3, LOG_NORMAL, 1024,0,0},
    { "claws",		do_claws,	POS_STANDING, 3, LOG_NORMAL, 1024,0,0},
    { "chaosgate",	do_chaosgate,	POS_STANDING, 3, LOG_NORMAL, 1024,0,0},
    { "fury",		do_fury,	POS_STANDING, 3, LOG_NORMAL, 1024,0,0},
    { "tantalk",	do_tantalk,	POS_DEAD,     3, LOG_NORMAL, 1024,0,0},
    //{ "taneq",		do_taneq,	POS_STANDING, 3, LOG_NORMAL, 1024,0,0},
    { "bloodrite",      do_unholyrite,  POS_STANDING, 3, LOG_NORMAL, 1024,0,0},
    { "lavablast",	do_lavablast,	POS_FIGHTING, 3, LOG_NORMAL, 1024,0,0},
    { "chaossurge",	do_chaossurge,	POS_FIGHTING, 3, LOG_NORMAL, 1024,0,0},

    /*
     * Undead Knight commands
     */

    { "knighttalk",     do_knighttalk, POS_DEAD,   3,  LOG_NORMAL, 4096,0,0},
    //{ "knightarmor",  do_knightarmor, POS_STANDING, 3,  LOG_NORMAL,4096,0,0},
    { "gain",		do_gain,	POS_STANDING, 3, LOG_NORMAL,4096,0,0},
    { "weaponpractice", do_weaponpractice, POS_STANDING, 3, LOG_NORMAL, 4096,0,0},
    { "powerword",      do_powerword, POS_FIGHTING, 3,	LOG_NORMAL, 4096,0,0},
    { "aura",		do_aura,	POS_STANDING, 3, LOG_NORMAL, 4096,0,0},
    { "command",	do_command,   POS_STANDING,  3, LOG_ALWAYS, 4096,0,0},
    { "unholysight",	do_truesight,  POS_STANDING, 3, LOG_NORMAL, 4096,0,0},
    { "bloodrite",	do_unholyrite, POS_STANDING, 3, LOG_NORMAL, 4096,0,0},
    { "ride",		do_ride,	POS_STANDING, 3, LOG_NORMAL, 4096,0,0},
    { "soulsuck",     do_soulsuck,      POS_FIGHTING,   3,  LOG_NORMAL, 4096,0,0},


    /*
     * Angel Commands.
     */

    { "prayer",        do_angeltalk,     POS_MEDITATING,3, LOG_NORMAL, 2048,0,0 },
    { "gpeace",        do_gpeace,        POS_STANDING,  3, LOG_NORMAL, 2048,0,0 },
    { "innerpeace",    do_innerpeace,    POS_STANDING,  3, LOG_NORMAL, 2048,0,0 },
    { "houseofgod",    do_houseofgod,    POS_STANDING,  3, LOG_NORMAL, 2048,0,0 },
    { "angelicaura",   do_angelicaura,   POS_FIGHTING,  3, LOG_NORMAL, 2048,0,0 },
    { "gbanish",       do_gbanish,       POS_FIGHTING,  3, LOG_NORMAL, 2048,0,0 },
    { "harmony",       do_harmony,       POS_FIGHTING,  3, LOG_NORMAL, 2048,0,0 },
    { "gsenses",       do_gsenses,       POS_STANDING,  3, LOG_NORMAL, 2048,0,0 },
    { "gfavor",        do_gfavor,        POS_STANDING,  3, LOG_NORMAL, 2048,0,0 },
    { "forgiveness",   do_forgivness,    POS_FIGHTING,  3, LOG_NORMAL, 2048,0,0 },
    { "martyr",        do_martyr,        POS_STANDING,  3, LOG_NORMAL, 2048,0,0 },
    { "swoop",         do_swoop,         POS_STANDING,  3, LOG_NORMAL, 2048,0,0 },
    { "awings",        do_awings,        POS_STANDING,  3, LOG_NORMAL, 2048,0,0 },
    { "halo",          do_halo,          POS_STANDING,  3, LOG_NORMAL, 2048,0,0 },
    { "sinsofthepast", do_sinsofthepast, POS_FIGHTING,  3, LOG_NORMAL, 2048,0,0 },
    { "eyeforaneye",   do_eyeforaneye,   POS_FIGHTING,  3, LOG_NORMAL, 2048,0,0 },
    //{ "angelicarmor",  do_angelicarmor,  POS_STANDING,  3, LOG_NORMAL, 2048,0,0 },
    { "touchofgod",    do_touchofgod,    POS_FIGHTING,  3, LOG_NORMAL, 2048,0,0 },
    { "spiritform",    do_spiritform,    POS_STANDING,  3, LOG_NORMAL, 2048,0,0 },

    /*
     * Garou Commands.
     */
    { "aeolus",      do_aeolus,    	  POS_FIGHTING,  3,  LOG_NORMAL, 33554432,0,0 },
    { "avalanche",   do_avalanche,    POS_STANDING,  3,  LOG_NORMAL, 33554432,0,0 },
    { "balorsgaze",  do_balorsgaze,   POS_STANDING,  3,  LOG_NORMAL, 33554432,0,0 },
    
    { "barrage",     do_barrage,      POS_STANDING,  3,  LOG_NORMAL, 33554432,0,0 },
    { "bodywrack",   do_bodywrack,    POS_STANDING,  3,  LOG_NORMAL, 33554432,0,0 },
    { "brew",   	 do_brew,    	  POS_STANDING,  3,  LOG_NORMAL, 33554432,0,0 },
    { "bridgegate",   do_bridgegate,    POS_STANDING,  3,  LOG_NORMAL, 33554432,0,0 },
    { "cannibalspirit",   do_cannibalspirit,    POS_STANDING,  3,  LOG_NORMAL, 33554432,0,0 },
    { "chillfrost",   do_chillfrost,    POS_STANDING,  3,  LOG_NORMAL, 33554432,0,0 },
    { "clapofthunder",   do_clapofthunder,    POS_STANDING,  3,  LOG_NORMAL, 33554432,0,0 },
    { "clenched",    do_clenched,    POS_STANDING,  3,  LOG_NORMAL, 33554432,0,0 },
    { "cuttingwind",   do_cuttingwind,    POS_STANDING,  3,  LOG_NORMAL, 33554432,0,0 },
    { "dazzle",   do_dazzle,    POS_STANDING,  3,  LOG_NORMAL, 33554432,0,0 },
    { "elementalgift",   do_elementalgift,    POS_STANDING,  3,  LOG_NORMAL, 33554432,0,0 },
    { "eyeofcobra",   do_eyeofcobra,    POS_STANDING,  3,  LOG_NORMAL, 33554432,0,0 },
    { "feral",   do_feral,    POS_STANDING,  3,  LOG_NORMAL, 33554432,0,0 },
    { "fetishdoll",   do_fetishdoll,    POS_STANDING,  3,  LOG_NORMAL, 33554432,0,0 },
    { "garouserenity",   do_garouserenity,    POS_STANDING,  3,  LOG_NORMAL, 33554432,0,0 },
    { "gatemoon",   do_gatemoon,    POS_STANDING,  3,  LOG_NORMAL, 33554432,0,0 },
    { "gburrow",   do_gburrow,    POS_STANDING,  3,  LOG_NORMAL, 33554432,0,0 },
    { "gcocoon",   do_gcocoon,    POS_STANDING,  3,  LOG_NORMAL, 33554432,0,0 },
    { "gdisquiet",   do_gdisquiet,    POS_STANDING,  3,  LOG_NORMAL, 33554432,0,0 },
    { "giant",   do_giant,    POS_STANDING,  3,  LOG_NORMAL, 33554432,0,0 },
    { "gifts",   do_gifts,    POS_STANDING,  3,  LOG_NORMAL, 33554432,0,0 },
    { "gnaw",   do_gnaw,    POS_STANDING,  3,  LOG_NORMAL, 33554432,0,0 },
    { "gquills",   do_gquills,    POS_STANDING,  3,  LOG_NORMAL, 33554432,0,0 },
    { "grazorclaws",   do_grazorclaws,    POS_STANDING,  3,  LOG_NORMAL, 33554432,0,0 },
    { "greshape",   do_greshape,    POS_STANDING,  3,  LOG_NORMAL, 33554432,0,0 },
    { "gshift", 	do_gshift,		POS_STANDING,  3,  LOG_NORMAL, 33554432, 0, 0 },
    { "gstaredown",   do_gstaredown,    POS_STANDING,  3,  LOG_NORMAL, 33554432,0,0 },
    { "gwither",   do_gwither,    POS_STANDING,  3,  LOG_NORMAL, 33554432,0,0 },
    { "halosun",   do_halosun,    POS_STANDING,  3,  LOG_NORMAL, 33554432,0,0 },
    { "heartofice",   do_heartofice,    POS_STANDING,  3,  LOG_NORMAL, 33554432,0,0 },
    { "heightened",   do_heightened,    POS_STANDING,  3,  LOG_NORMAL, 33554432,0,0 },
    { "icychill",   do_icychill,    POS_STANDING,  3,  LOG_NORMAL, 33554432,0,0 },
    { "lambent",   do_lambent,    POS_STANDING,  3,  LOG_NORMAL, 33554432,0,0 },
    { "livingwood",   do_livingwood,    POS_STANDING,  3,  LOG_NORMAL, 33554432,0,0 },
    { "lunasavenger",   do_lunasavenger,    POS_STANDING,  3,  LOG_NORMAL, 33554432,0,0 },
    { "lunasblessing",   do_lunasblessing,    POS_STANDING,  3,  LOG_NORMAL, 33554432,0,0 },
    { "madness",   do_madness,    POS_STANDING,  3,  LOG_NORMAL, 33554432,0,0 },
    { "malleable",   do_malleable,    POS_STANDING,  3,  LOG_NORMAL, 33554432,0,0 },
    { "merciful",   do_merciful,    POS_STANDING,  3,  LOG_NORMAL, 33554432,0,0 },
    { "mothers",   do_mothers,    POS_STANDING,  3,  LOG_NORMAL, 33554432,0,0 },
    { "paralyzing",   do_paralyzing,    POS_STANDING,  3,  LOG_NORMAL, 33554432,0,0 },
    { "paws",   do_paws,    POS_STANDING,  3,  LOG_NORMAL, 33554432,0,0 },
    { "quicksand",   do_quicksand,    POS_STANDING,  3,  LOG_NORMAL, 33554432,0,0 },
    { "rage",		do_rage,       POS_FIGHTING,   3, LOG_NORMAL, 33554432, 0 ,3 },
    { "ragesong",   do_ragesong,    POS_STANDING,  3,  LOG_NORMAL, 33554432,0,0 },
    { "sightfrombeyond",   do_sightfrombeyond,    POS_STANDING,  3,  LOG_NORMAL, 33554432,0,0 },
    { "snarl",   do_snarl,    POS_STANDING,  3,  LOG_NORMAL, 33554432,0,0 },
    { "songbeast",   do_songbeast,    POS_STANDING,  3,  LOG_NORMAL, 33554432,0,0 },
    { "spiritdrain",   do_spiritdrain,    POS_STANDING,  3,  LOG_NORMAL, 33554432,0,0 },
    { "vengeance",   do_vengeance,    POS_STANDING,  3,  LOG_NORMAL, 33554432,0,0 },
    { "violation",   do_violation,    POS_STANDING,  3,  LOG_NORMAL, 33554432,0,0 },
    { "visceral",   do_visceral,    POS_STANDING,  3,  LOG_NORMAL, 33554432,0,0 },
    { "wallofgranite",   do_wallofgranite,    POS_STANDING,  3,  LOG_NORMAL, 33554432,0,0 },
    { "waste",   do_waste,    POS_STANDING,  3,  LOG_NORMAL, 33554432,0,0 },
    { "whelp",   do_whelp,    POS_STANDING,  3,  LOG_NORMAL, 33554432,0,0 },
    { "wyld",   do_wyld,    POS_STANDING,  3,  LOG_NORMAL, 33554432,0,0 },
    

    /*
     * Shapeshifter Commands.
     */
    
    { "shift",       do_shift,    POS_FIGHTING,   3,  LOG_NORMAL, 512,0,0 },
    { "formlearn",   do_formlearn, POS_STANDING,  3,  LOG_NORMAL, 512,0,0 },
    { "camouflage",  do_camouflage, POS_STANDING, 3,  LOG_NORMAL, 512,0,0 },
    { "mask",        do_mask,	POS_STANDING,     3,  LOG_NORMAL, 512,0,0 },
    { "truesight",   do_truesight, POS_STANDING,  3,  LOG_NORMAL, 512,0,0 },
    { "shapeshift",  do_shapeshift, POS_STANDING, 3,  LOG_NORMAL, 512,0,0 },
    { "hatform",     do_hatform,   POS_STANDING,  3,  LOG_NORMAL, 512,0,0 },
    { "mistwalk",    do_mistwalk,  POS_STANDING,  3,  LOG_NORMAL, 512,0,0 },
    //{ "shapearmor",  do_shapearmor, POS_STANDING, 3,  LOG_NORMAL, 512,0,0 },
    { "roar",        do_shaperoar, POS_FIGHTING,  3,  LOG_NORMAL, 512,0,0 },
    { "charge",      do_charge,   POS_FIGHTING,   3,  LOG_NORMAL, 512,0,0 },
    { "fblink",      do_faerieblink, POS_FIGHTING,3,  LOG_NORMAL, 512,0,0 },
    { "stomp",       do_stomp,  POS_FIGHTING,     3,  LOG_NORMAL, 512,0,0 },
    { "faeriecurse", do_faeriecurse, POS_FIGHTING,3,  LOG_NORMAL, 512,0,0 },
    { "phase",       do_phase,   POS_FIGHTING,    3,  LOG_NORMAL, 512,0,0 },
    { "breath",      do_breath, POS_FIGHTING,     3,  LOG_NORMAL, 512,0,0 },

    /*
     * Mage Commands.
     */

    { "magics",       do_magics,    POS_STANDING,   3,  LOG_NORMAL, 2,0,0 },
    { "teleport",     do_teleport,  POS_STANDING,   3,  LOG_NORMAL, 2,0,0 },
    { "invoke",       do_invoke,    POS_STANDING,   3,  LOG_NORMAL, 2,0,0 },
    { "chant",        do_chant,     POS_MEDITATING, 3,  LOG_NORMAL, 258,0,0 },
    //{ "magearmor",    do_magearmor, POS_MEDITATING, 3,  LOG_NORMAL, 2,0,0 },
    { "objectgate",   do_objectgate,POS_STANDING,   3,  LOG_NORMAL, 2,0,0 },
    { "discharge",    do_discharge,	POS_FIGHTING,	  3,  LOG_NORMAL, 2,0,0 },
    { "scry",	      do_scry,      POS_FIGHTING,   3,  LOG_NORMAL, 2,0,0 },
    { "reveal",       do_reveal,    POS_STANDING,   3,  LOG_NORMAL, 2,0,0 },
    { "chaosmagic",   do_chaosmagic, POS_FIGHTING,  3,  LOG_NORMAL, 2,0,0 },

                    /* PK POWERS */

    { "eaglesight",       do_pkscry,    POS_STANDING,   3,  LOG_NORMAL,0,0,0},
    { "silverpath",       do_pkportal,  POS_STANDING,   3,  LOG_NORMAL,0,0,0},
    { "lifesense",	  do_pkaura,	POS_STANDING,   3,  LOG_NORMAL,0,0,0},
    { "sanctum",	  do_pkheal,    POS_STANDING,   3,  LOG_NORMAL,0,0,0},
    { "calltoarms",	  do_pkcall,	POS_FIGHTING,   3,  LOG_NORMAL,0,0,0},
    { "ironmind",	  do_pkmind,    POS_STANDING,   3,  LOG_NORMAL,0,0,0},
    { "objectscry",       do_pkobjscry, POS_STANDING,   3,  LOG_NORMAL,0,0,0},
    { "crystalsight",     do_pkvision,  POS_STANDING,   3,  LOG_NORMAL,0,0,0},


/*                      ****|  V-A-M-P-I-R-E-S  |****          */

// Melpominee
    { "scream",		do_scream,    POS_STANDING,  3,  LOG_NORMAL, 8, DISC_VAMP_MELP, 1 },

// Daimoinon
    { "guardian",	do_guardian,  POS_STANDING,  3,  LOG_NORMAL, 8, DISC_VAMP_DAIM, 1 },
    { "fear",		do_fear,      POS_FIGHTING,  3,  LOG_NORMAL, 8, DISC_VAMP_DAIM, 2 },
    { "portal",		do_gate,      POS_STANDING,  3,  LOG_NORMAL, 8, DISC_VAMP_DAIM, 3 },
// Lvl 4 - curse ---
    { "vtwist",		do_vtwist,     POS_STANDING,  3,  LOG_NORMAL, 8, DISC_VAMP_DAIM, 5 },
    { "wither", do_wither, POS_FIGHTING, 3, LOG_NORMAL, 4,DISC_WERE_HAWK,7 },

// Thanatosis
    { "hagswrinkles",	do_hagswrinkles,POS_STANDING, 3, LOG_NORMAL, 8, DISC_VAMP_THAN, 1 },
    { "putrefaction",   do_rot,	      POS_STANDING,  3,  LOG_NORMAL, 8, DISC_VAMP_THAN, 2 },
/*    { "ashes",		do_ashes,     POS_STANDING,  3,
LOG_NORMAL, 8, DISC_VAMP_THAN, 3 }, */
    { "withering",	do_withering, POS_STANDING,  3,  LOG_NORMAL, 8, DISC_VAMP_THAN, 4 },
    { "drainlife",	do_drain,     POS_FIGHTING,  3,  LOG_NORMAL, 8, DISC_VAMP_THAN, 5 },

// Necromancy
   
    { "preserve",	do_preserve,  POS_STANDING,  3,  LOG_NORMAL, 8, DISC_VAMP_NECR, 2 },
    { "spiritgate",	do_spiritgate,POS_STANDING,  3,  LOG_NORMAL, 8, DISC_VAMP_NECR, 3 },
    { "spiritguard",	do_spiritguard,POS_STANDING, 3,  LOG_NORMAL, 8, DISC_VAMP_NECR, 4 },


// Auspex
    { "truesight",      do_truesight, POS_STANDING,  3,  LOG_NORMAL, 4, DISC_WERE_HAWK, 3 },
    { "truesight",	do_truesight, POS_STANDING,  3,  LOG_NORMAL, 8, DISC_VAMP_AUSP, 1 },
    { "readaura",	do_readaura,  POS_FIGHTING,  3,  LOG_NORMAL, 8, DISC_VAMP_AUSP, 2 },
    { "scry",		do_scry,      POS_FIGHTING,  3,  LOG_NORMAL, 8, DISC_VAMP_AUSP, 3 },
    { "astralwalk",	do_astralwalk,POS_STANDING,  3,  LOG_NORMAL, 8, DISC_VAMP_AUSP, 4 },
    { "unveil",		do_unveil,    POS_STANDING,  3,  LOG_NORMAL, 8, DISC_VAMP_AUSP, 5 },

// Obfuscate
    { "vanish",		do_vanish,    POS_STANDING,  3,  LOG_NORMAL, 8, DISC_VAMP_OBFU, 1 },
    { "mask",		do_mask,      POS_STANDING,  3,  LOG_NORMAL, 8, DISC_VAMP_OBFU, 2 },
    { "shield",		do_shield,    POS_STANDING,  3,  LOG_NORMAL, 8, DISC_VAMP_OBFU, 3 },
    { "shield",         do_shield,    POS_STANDING,  3,  LOG_NORMAL, 4, DISC_WERE_OWL, 2 },

// Chimerstry
    { "mirror",		do_mirror,    POS_STANDING,  3, LOG_NORMAL, 8, DISC_VAMP_CHIM, 1 },
    { "formillusion",	do_formillusion,POS_STANDING, 3, LOG_NORMAL,8, DISC_VAMP_CHIM, 2 },
    { "controlclone",	do_control,   POS_STANDING,  3, LOG_NORMAL, 8, DISC_VAMP_CHIM, 4 },

    /*
     * Miscellaneous commands.
     */
    { "accep",		do_huh,		POS_STANDING,	 2,  LOG_NORMAL, 0,0,0	},
    { "accept",		do_accept,	POS_STANDING,	 2,  LOG_NORMAL, 0,0,0	},
    { "artifact",	do_artifact,	POS_STANDING,	 0,  LOG_NORMAL, 0,0,0	},
    { "artisteal",      do_artisteal,   POS_STANDING,    3,  LOG_NORMAL, 0, 0, 0 },
    { "birth",		do_birth,	POS_STANDING,	 1,  LOG_NORMAL, 0,0,0	},
    { "blindfold",	do_blindfold,	POS_STANDING,	 0,  LOG_NORMAL, 0,0,0	},
    { "breaku",		do_huh,		POS_STANDING,	 2,  LOG_NORMAL, 0,0,0	},
    { "breakup",	do_breakup,	POS_STANDING,	 2,  LOG_NORMAL, 0,0,0	},
    { "claim",		do_claim,	POS_STANDING,	 2,  LOG_NORMAL, 0, 0, 0 },
    { "consen",		do_huh,		POS_STANDING,	 1,  LOG_NORMAL, 0,0,0	},
    { "consent",	do_consent,	POS_STANDING,	 1, LOG_NORMAL, 0,0,0	},
    { "finger",		do_finger,	POS_SITTING,	 1,  LOG_NORMAL, 0,0,0	},
    { "follow",		do_follow,	POS_STANDING,	 1,  LOG_NORMAL, 0, 0, 0 },
    { "gag",		do_gag,		POS_STANDING,	 0,  LOG_NORMAL, 0,0,0	},
    { "godsfavor",      do_godsfavor,POS_DEAD,         3,  LOG_NORMAL, 64,0,0 },
    { "hide",		do_hide,	POS_STANDING,	 0,  LOG_NORMAL, 0,0,0	},
    { "home",		do_home,	POS_STANDING,	 0,  LOG_NORMAL, 0,0,0	},
    { "hunt",		do_hunt,	POS_STANDING,	 1,  LOG_NORMAL, 0,0,0	},
    { "locate",		do_locate,	POS_STANDING,	 0,  LOG_NORMAL, 0,0,0	},
    { "practice",		do_practice,POS_SLEEPING,	 0,  LOG_NORMAL, 0,0,0	},
    { "propos",		do_huh,	POS_STANDING,	 2,  LOG_NORMAL, 0,0,0	},
    { "propose",		do_propose,	POS_STANDING,	 2,  LOG_NORMAL, 0,0,0	},
    { "qui",		do_qui,	POS_DEAD,		 0,  LOG_NORMAL, 0,0,0	},
    { "quit",		do_quit,	POS_SLEEPING,	 0,  LOG_NORMAL, 0,0,0	},
    { "recall",		do_recall,	POS_FIGHTING,	 0,  LOG_NORMAL, 0,0,0	},
    { "crecall",	do_crecall,	POS_FIGHTING,	 0,  LOG_NORMAL, 0,0,0	},
    { "escape",		do_escape,	POS_DEAD,	 	 3,  LOG_NORMAL, 0,0,0	},
    { "/",			do_recall,	POS_FIGHTING,	 0,  LOG_NORMAL, 0,0,0	},
    { "rent",		do_rent,	POS_DEAD,	 	 0,  LOG_NORMAL, 0,0,0	},
    { "safe",		do_safe,	POS_STANDING,	 0,  LOG_NORMAL, 0,0,0	},
    { "save",		do_save,	POS_DEAD,	 	 0,  LOG_NORMAL, 0,0,0	},
    { "sleep",		do_sleep,	POS_SLEEPING,	 0,  LOG_NORMAL, 0,0,0	},
    { "smother",		do_smother,	POS_STANDING,	 0,  LOG_NORMAL, 0,0,0	},
    { "sneak",		do_sneak,	POS_STANDING,	 0,  LOG_NORMAL, 0,0,0	},
    { "scan",		do_scan,	POS_SITTING,	 0,  LOG_NORMAL, 0,0,0	},
	{ "scales",	    do_dscales,		POS_STANDING,	 0,  LOG_NORMAL, 16384,0,0	},    
    { "spy",		do_spy,	POS_SITTING,	 0,  LOG_NORMAL, 0,0,0	},
    { "steal",		do_steal,	POS_STANDING,	 0,  LOG_NORMAL, 0,0,0	},
    { "notravel",		do_notravel,POS_DEAD,	 	 1,LOG_NORMAL, 0,0,0 },
    { "nosummon",		do_nosummon,POS_DEAD,	 	 1,  LOG_NORMAL, 0,0,0	},
    { "embrace",        do_embrace, POS_STANDING,      3,  LOG_NORMAL, 8,0,0 },
    { "diablerise",	do_diablerise, POS_STANDING, 3, LOG_NORMAL, 8,0,0 },
    { "assassinate",    do_assassinate,POS_STANDING,   3,  LOG_NORMAL, 8,DISC_VAMP_QUIE,4 },
    { "tendrils",           do_tendrils,POS_FIGHTING,      3,  LOG_NORMAL, 8,DISC_VAMP_SERP,4 },
    { "lamprey",        do_lamprey, POS_FIGHTING,      3,  LOG_NORMAL, 8,DISC_VAMP_OBTE,5 },
    { "entrance",       do_entrance,POS_STANDING,      3,  LOG_NORMAL, 8,DISC_VAMP_PRES,3 },
    { "fleshcraft",     do_fleshcraft,POS_STANDING,    3,  LOG_NORMAL, 8,DISC_VAMP_VICI,2 },
    { "zombie",         do_zombie,  POS_STANDING,      3,  LOG_NORMAL, 8,DISC_VAMP_NECR,5 },
    { "baal",           do_baal,    POS_STANDING,      3,  LOG_NORMAL, 8,DISC_VAMP_DOMI,5 },
    { "dragonform",     do_dragonform,POS_STANDING,    3,  LOG_NORMAL, 8,DISC_VAMP_VICI,4 },
    { "spew",           do_spew,    POS_FIGHTING,      3,  LOG_NORMAL, 8,DISC_VAMP_THAU,6 },
    { "bloodwater",     do_bloodwater,POS_FIGHTING,    3,  LOG_NORMAL, 8,DISC_VAMP_NECR,5 },
    { "gourge",         do_gourge,  POS_STANDING,      3,  LOG_NORMAL, 8,DISC_VAMP_THAU,8 },
    { "roar",		do_roar,    POS_FIGHTING,      3,  LOG_NORMAL, 4,DISC_WERE_BEAR,6 },
    { "jawlock",	do_jawlock, POS_STANDING,      3,  LOG_NORMAL, 4,DISC_WERE_RAPT,8 },
    { "perception",	do_perception,POS_STANDING,    3,  LOG_NORMAL, 4,DISC_WERE_RAPT,3 },
    { "skin",		do_skin,    POS_STANDING,      3,  LOG_NORMAL, 4,DISC_WERE_BEAR,7 },
    { "rend",		do_rend,    POS_STANDING,      3,  LOG_NORMAL, 4,DISC_WERE_BOAR,7 },
    { "slam",		do_slam,    POS_STANDING,      3,  LOG_NORMAL, 4,DISC_WERE_BEAR,8 },
    { "shred",		do_shred,   POS_STANDING,      3,  LOG_NORMAL, 4,DISC_WERE_RAPT,7 },
    { "diablerize",	do_diablerise, POS_STANDING,   3,  LOG_NORMAL, 8,0,0},
    { "taste",          do_taste,   POS_STANDING,      3,  LOG_NORMAL, 8,DISC_VAMP_THAU,1 },
    { "pigeon",         do_pigeon,  POS_STANDING,      3,  LOG_NORMAL, 8,DISC_VAMP_ANIM,3 },
    { "bloodagony",     do_bloodagony,POS_STANDING,    3,  LOG_NORMAL, 8,DISC_VAMP_QUIE,3 },
    { "tie",		do_tie,	POS_STANDING,	 3,  LOG_NORMAL, 0,0,0	},
    { "token",		do_token,	POS_STANDING,	 10,  LOG_NORMAL, 0,0,0	},
    { "track",		do_track,	POS_STANDING,	 1,  LOG_NORMAL, 0,0,0	},
    { "train",		do_train,   POS_STANDING,	 1,  LOG_NORMAL, 0,0,0	},
    { "unpolymorph",	do_unpolymorph,POS_STANDING,	 4,  LOG_NORMAL, 0,0,0 },
    { "untie",		do_untie,	POS_STANDING,	 1,  LOG_NORMAL, 0,0,0	},
    { "visible",		do_visible,	POS_SLEEPING,	 1,  LOG_NORMAL, 0,0,0 },
    { "wake",		do_wake,	POS_SLEEPING,	 0,  LOG_NORMAL, 0,0,0	},
    { "where",		do_where,	POS_SITTING,	 0,  LOG_NORMAL, 0,0,0	},
    { "connect",	do_connect,	POS_SITTING,	 0,  LOG_NORMAL, 0,0,0	},
    { "game",		do_game,	POS_STANDING,	 0,  LOG_NORMAL, 0,0,0	},
/* need it before forge */


     { "contraception", do_contraception, POS_DEAD,  1,      LOG_NORMAL, 0,0,0},


 /*
  * Monk
  */
    { "chaoshands",	do_chands,	POS_STANDING,	 3,  LOG_NORMAL, 64,0,0 },
    //{ "monkarmor",	do_monkarmor,	POS_STANDING,	 3,  LOG_NORMAL, 64,0,0 },
    { "ghold",		do_ghold,	POS_STANDING,    3,  LOG_NORMAL, 64,0,0 },
    { "godsheal",	do_godsheal,	POS_FIGHTING,	 3,  LOG_NORMAL, 64,0,0 },
    { "mantra",		do_mantra,	POS_STANDING,	 3, LOG_NORMAL, 64,0,0 },
    { "guide",		do_guide,	POS_STANDING,	 3,  LOG_NORMAL, 64,0,0 },
    { "wrathofgod",  do_wrathofgod, POS_FIGHTING, 3, LOG_NORMAL, 64,0,0},
    { "cloak",		do_cloak,	POS_STANDING,      3,  LOG_NORMAL, 64,0,0 },
    { "prayofages",	do_prayofages,POS_STANDING,    3,  LOG_NORMAL, 64,0,0 },
    { "sacredinvis",	do_sacredinvis, POS_STANDING,	 3,  LOG_NORMAL, 64,0,0 },
    { "flaminghands",   do_flaminghands,POS_STANDING,  3,  LOG_NORMAL, 64,0,0 },
    { "darkblaze",	do_darkblaze, POS_FIGHTING,	3, LOG_NORMAL, 64,0,0},
    { "adamantium",	do_adamantium,POS_STANDING,    3,  LOG_NORMAL, 64,0,0 },
    { "godseye",		do_godseye,	POS_STANDING,	 3,  LOG_NORMAL, 64,0,0 },
    { "celestial",	do_celestial,POS_STANDING,	 3,  LOG_NORMAL, 64,0,0 },
    { "steelskin",	do_steelskin,POS_STANDING,	 3,  LOG_NORMAL, 64,0,0 },
    { "godsbless",	do_godsbless,POS_FIGHTING,	 3,  LOG_NORMAL, 64,0,0 },
    { "thrustkick",	do_thrustkick,POS_FIGHTING,	3, LOG_NORMAL, 64,0,0 },
    { "spinkick",	do_spinkick,POS_FIGHTING,3,LOG_NORMAL,64,0,0 },
    { "backfist",	do_backfist,POS_FIGHTING,3,LOG_NORMAL,64,0,0 },
    { "elbow",		do_elbow,POS_FIGHTING,3,LOG_NORMAL,64,0,0 },
    { "sweep",		do_sweep,POS_FIGHTING,3,LOG_NORMAL,64,0,0 },
    { "reverse",	do_reverse,POS_FIGHTING,3,LOG_NORMAL,64,0,0 },
    { "knee",		do_knee,POS_FIGHTING,3,LOG_NORMAL,64,0,0 },
    { "shinkick",	do_shinkick,POS_FIGHTING,3,LOG_NORMAL,64,0,0 },
    { "palmstrike",	do_palmstrike,POS_FIGHTING,3,LOG_NORMAL,64,0,0 },
    { "spiritpower",	do_spiritpower,POS_FIGHTING,3,LOG_NORMAL,64,0,0},
    { "deathtouch",	do_deathtouch,POS_STANDING,3,LOG_NORMAL,64,0,0 },
    { "relax",		do_relax,POS_FIGHTING,3,LOG_NORMAL,64,0,0},
    { "monktalk",	do_monktalk,POS_DEAD,3,LOG_NORMAL,64,0,0 },
    { "disciplines",    do_disciplines,POS_STANDING,   3,  LOG_NORMAL, 0,0,0 },
    { "research",		do_research,POS_STANDING,      3,  LOG_NORMAL, 0,0,0 },


/*
 * Garou
 */
// Ahroun
    { "razorclaws",	do_razorclaws, POS_FIGHTING, 3, LOG_NORMAL, 4,DISC_WERE_WOLF,4 },

// Homid
//  Persuasion, automatic
    { "staredown",	do_staredown, POS_FIGHTING, 3, LOG_NORMAL, 4,DISC_WERE_OWL,5 },
    { "disquiet",	do_disquiet, POS_FIGHTING, 3 , LOG_NORMAL, 4,DISC_WERE_OWL,6 }, 
    { "reshape",	do_reshape,  POS_STANDING,  3,  LOG_NORMAL, 4,DISC_WERE_OWL,7 },
    { "cocoon",		do_cocoon,   POS_FIGHTING,  3,  LOG_NORMAL, 4,DISC_WERE_OWL, 8 },

// Metis
    { "quills",	do_quills, POS_FIGHTING, 3, LOG_NORMAL, 4,DISC_WERE_HAWK,5 },
    { "burrow", do_burrow, POS_FIGHTING, 3, LOG_NORMAL, 4,DISC_WERE_HAWK,6 },
    { "nightsight",do_nightsight,POS_FIGHTING,3,LOG_NORMAL,4,DISC_WERE_HAWK,1 },

    { "learn",		do_learn, POS_FIGHTING, 3, LOG_NORMAL, 64,0,0 },

    /*
     * Vampire and werewolf commands.
     */
    //{ "vamparmor",	do_vampirearmor, POS_STANDING, 3, LOG_NORMAL, 8, 0, 0 },
    { "bloodwall",	do_bloodwall,POS_STANDING,	 3,  LOG_NORMAL, 8,DISC_VAMP_DAIM,2 },
    { "conceal",     do_conceal,  POS_STANDING,  3,  LOG_NORMAL, 8,DISC_VAMP_OBFU,5 },
    { "sharpen",	do_sharpen,  POS_STANDING,     3,  LOG_NORMAL, 8,DISC_VAMP_QUIE,7 },
    { "purify",      do_purification, POS_STANDING, 3, LOG_NORMAL, 0, 0, 0 },

     /* Protean */ /* healing has to go after drow heal */
    /* Obtene */
    { "grab",		do_grab,	POS_STANDING,    	 3,  LOG_NORMAL, 8,DISC_VAMP_OBTE,8 },
    { "shadowgaze",	do_shadowgaze,POS_STANDING,    3,  LOG_NORMAL, 8,DISC_VAMP_OBTE,10 },

   /* Luna Powers */
    { "flameclaws",	do_flameclaws,  POS_STANDING,  3,  LOG_NORMAL, 4,DISC_WERE_LUNA,1 },
    { "motherstouch",	do_motherstouch,POS_FIGHTING,  3,  LOG_NORMAL, 4,DISC_WERE_LUNA,3 },
    { "gmotherstouch",  do_gmotherstouch,POS_FIGHTING, 3,  LOG_NORMAL, 4,DISC_WERE_LUNA,4 },
    { "sclaws",		do_sclaws,	POS_STANDING,      3,  LOG_NORMAL, 4,DISC_WERE_LUNA,5 },
    { "moonbeam",	do_moonbeam,POS_FIGHTING,      3,  LOG_NORMAL, 4,DISC_WERE_LUNA,8 },
    //{ "moonarmour",	do_moonarmour,POS_STANDING,    3,  LOG_NORMAL, 4,DISC_WERE_LUNA,2 },
    { "moongate",	do_moongate,POS_STANDING,      3,  LOG_NORMAL, 4,DISC_WERE_LUNA,6 },
   /* No more luna Powers */

    { "tribe",		do_tribe,	POS_STANDING,	3,LOG_NORMAL,4,0,0},
    { "info",		do_info,	POS_DEAD,      11,LOG_NORMAL,0,0,0 },
    { "demongate",	do_dgate,      POS_FIGHTING,   3, LOG_NORMAL, 1,0,0 },
    { "devour",		do_devour,     POS_STANDING,   3, LOG_NORMAL, 4,DISC_WERE_RAPT,5 },
    { "frostbreath",    do_frostbreath,POS_FIGHTING,   3, LOG_NORMAL, CLASS_DEMON,DISC_DAEM_GELU,2 },
    { "tick",		do_tick,       POS_DEAD,      12, LOG_ALWAYS, 0,0,0},
    { "resetarea",	do_resetarea,  POS_DEAD,      10, LOG_ALWAYS, 0,0,0},
    { "graft",		do_graft,      POS_STANDING,   3, LOG_NORMAL, CLASS_DEMON,DISC_DAEM_ATTA,5 },
    { "rage",		do_rage,       POS_FIGHTING,   3, LOG_NORMAL, CLASS_DEMON,DISC_DAEM_ATTA,3 },
    { "calm",		do_calm,       POS_STANDING,   3, LOG_NORMAL, CLASS_DEMON,DISC_DAEM_ATTA,4 },
    { "vamptalk",       do_vamptalk,   POS_DEAD,       1, LOG_NORMAL, 8,0,0 },      
    { "obtain",          do_obtain,  POS_STANDING,   3,  LOG_NORMAL, 0,0,0 },
    { "warps",          do_warps,  POS_STANDING,   3,  LOG_NORMAL, 0,0,0 },   
    { "claws",		do_claws,	POS_FIGHTING,  3,  LOG_NORMAL, CLASS_DEMON,DISC_DAEM_ATTA,1 },
    { "claws",          do_claws,       POS_FIGHTING,  3,  LOG_NORMAL, 4,DISC_WERE_WOLF,1 },
    { "fangs",		do_fangs,	POS_FIGHTING,  3,  LOG_NORMAL, CLASS_DEMON,DISC_DAEM_ATTA,2 },
    { "fangs",          do_fangs,       POS_FIGHTING,  3,  LOG_NORMAL, 4,DISC_WERE_WOLF,2 },
    { "horns",		do_horns,	POS_FIGHTING,  3, LOG_NORMAL, 1,DISC_DAEM_ATTA,4 },
    { "blink",		do_blink,	POS_FIGHTING,  3,  LOG_NORMAL, CLASS_DEMON,DISC_DAEM_ATTA,7 },
    { "inferno",	do_dinferno,	POS_DEAD,      3,  LOG_NORMAL, CLASS_DEMON,DISC_DAEM_HELL, 3 },
    { "tail",		do_tail,	POS_FIGHTING,  3,  LOG_NORMAL, 1,0,0 },

/* Vamp */
    { "binferno",	do_inferno,	POS_STANDING,  3,  LOG_NORMAL, 1,DISC_VAMP_DAIM, 6 },
/* Vamp ^^^^ */

    { "immolate",	do_immolate,    POS_STANDING,  3,  LOG_NORMAL, CLASS_DEMON,DISC_DAEM_HELL, 2 },
    { "daemonseed",	do_seed,	POS_STANDING,  3,  LOG_NORMAL, CLASS_DEMON,DISC_DAEM_HELL, 7 },
    { "hellfire",	do_hellfire,	POS_STANDING,  3,  LOG_NORMAL, CLASS_DEMON,DISC_DAEM_HELL, 8 },
    { "ban",		do_ban,	POS_DEAD,		 12,  LOG_ALWAYS,0,0,0	},
    { "transfer",       do_transfer,    POS_DEAD,      7,  LOG_NORMAL,0,0,0 },
    { "runeeq",		do_runeeq,	POS_STANDING,   12,  LOG_NORMAL,0,0,0 },
    { "afk",      	do_afk,         POS_STANDING,    3,  LOG_NORMAL,0,0,0 },
    { "hedit",		do_hedit,	POS_STANDING, 10, LOG_NORMAL,0,0,0 },
    { "freeze",		do_freeze,      POS_DEAD,     9, LOG_ALWAYS,0,0,0 },  
    { "bitchslap", 	do_freeze,   POS_DEAD,     9, LOG_ALWAYS,0,0,0 },
    { "unnerve",	do_unnerve,     POS_FIGHTING,  3,  LOG_NORMAL, CLASS_DEMON,DISC_DAEM_DISC,1 },
    { "freezeweapon",	do_wfreeze,     POS_STANDING,  3, LOG_NORMAL, CLASS_DEMON,DISC_DAEM_GELU, 1 },
    { "chaosportal",	do_chaosport,   POS_FIGHTING,  3,  LOG_NORMAL, CLASS_DEMON,DISC_DAEM_DISC, 4 },
    { "caust",		do_caust,       POS_STANDING,  3,  LOG_NORMAL, CLASS_DEMON,DISC_DAEM_CORR, 4 },
    { "gust",		do_gust,	POS_STANDING,  3,  LOG_NORMAL, CLASS_DEMON,DISC_DAEM_GELU, 7 },
    { "entomb",		do_entomb,      POS_STANDING,  3,  LOG_NORMAL, CLASS_DEMON,DISC_DAEM_GELU, 6 },
    { "evileye",	do_evileye,     POS_STANDING,  3,  LOG_NORMAL, CLASS_DEMON,DISC_DAEM_DISC, 2 },
    { "leech",		do_leech,	POS_FIGHTING,  3,  LOG_NORMAL, CLASS_DEMON,DISC_DAEM_NETH,4 },
    { "deathsense",	do_deathsense,  POS_FIGHTING,  3,  LOG_NORMAL, CLASS_DEMON,DISC_DAEM_NETH, 2 },
    { "prefix",		do_prefix,	POS_DEAD,      10,  LOG_NORMAL, 0,0,0 },

    /* bugaboo lala Dunkirk Shit Lala mmm POOP Daemon Stuff */


    /* Start of OLC Shit. Hmm */
    { "hset",		do_hset,        POS_DEAD,      12, LOG_ALWAYS, 0,0,0 },
    { "hlist",		do_hlist,	POS_DEAD,      12, LOG_ALWAYS, 0,0,0 },

    { "talons",         do_talons,   POS_FIGHTING,     3,  LOG_NORMAL, 4,DISC_WERE_RAPT,10 },
    { "bonemod",		do_bonemod,	POS_STANDING,      3,  LOG_NORMAL, 8,DISC_VAMP_VICI,3 },
    { "cauldron",		do_cauldron,POS_FIGHTING,      3, LOG_NORMAL, 8,DISC_VAMP_THAU,2 },
    { "flamehands",	do_flamehands,POS_FIGHTING,	 3,  LOG_NORMAL, 8,DISC_VAMP_PROT,5 },
   
    { "summon",		do_summon,	POS_STANDING,      3,  LOG_NORMAL, 8,DISC_VAMP_PRES,4 },
    { "shroud",		do_shroud,	POS_STANDING,      3,  LOG_NORMAL, 8,DISC_VAMP_OBTE,1 },
    { "share",		do_share,	POS_STANDING,      3,  LOG_NORMAL, 8,DISC_VAMP_ANIM,4 },
    { "frenzy",		do_frenzy,	POS_FIGHTING,	 3,  LOG_NORMAL, 8,DISC_VAMP_ANIM,5 },
    { "far",		do_far,	POS_STANDING,	 3,  LOG_NORMAL, 8,DISC_VAMP_PRES,9 },
    { "awe",            do_awe,     POS_STANDING,      3,  LOG_NORMAL, 8,DISC_VAMP_PRES,1 },


    { "forge",		do_forge,	POS_STANDING,  1,LOG_NORMAL,0,0,0 },
    { "forget",         do_forget,  POS_STANDING,      3,  LOG_NORMAL, 8,DISC_VAMP_DOMI,8 },
    { "acid",           do_acid,    POS_STANDING,      3,  LOG_NORMAL, 8,DISC_VAMP_DOMI,4 },
    { "vsilence",       do_death,   POS_STANDING,      3,  LOG_NORMAL, 8,DISC_VAMP_QUIE,5 },
    { "flash",          do_flash,   POS_STANDING,      3,  LOG_NORMAL, 8,DISC_VAMP_QUIE,9 },
    { "tide",   	do_tide,    POS_STANDING,      3,  LOG_NORMAL, 8,DISC_VAMP_THAU,5 },
    { "coil",           do_coil,    POS_STANDING,      3,  LOG_NORMAL, 8,DISC_VAMP_SERP,8 },
    { "infirmity",	do_infirmity,POS_FIGHTING,	 3,  LOG_NORMAL, 8,DISC_VAMP_QUIE,2 },
    { "klaive",         do_klaive,  POS_STANDING,      3,  LOG_NORMAL, 4,0,0 },
    { "gklaive",         do_gklaive,  POS_STANDING,      3,  LOG_NORMAL, 4,DISC_WERE_LUNA,7 },
    { "calm",		do_calm,	POS_STANDING,	 3,  LOG_NORMAL, 4,DISC_WERE_WOLF,3	},
    { "change",		do_change,	POS_STANDING,	 3,  LOG_NORMAL, 8,DISC_VAMP_PROT,3	},
    { "katana",		do_katana,	POS_RESTING, 3, LOG_NORMAL, CLASS_SAMURAI, 0, 0 },
    { "earthshatter",	do_earthshatter,POS_FIGHTING,   3, LOG_NORMAL, 0, 0, 0 },
    //{ "ninjaarmor",          do_ninjaarmor,       POS_STANDING, 3, LOG_NORMAL, CLASS_NINJA, 0, 0 },
    { "shadowstep",	do_shadowstep,	POS_STANDING,    3,  LOG_NORMAL, 8,DISC_VAMP_OBTE,4 },
    { "claws",		do_claws,	POS_SITTING,	 3,  LOG_NORMAL, 8,DISC_VAMP_PROT,2	},
    { "darkheart",	do_darkheart,	POS_STANDING,	 3,  LOG_NORMAL, 8,DISC_VAMP_SERP,1	},
    { "earthmeld",      do_earthmeld,	POS_STANDING,     3,  LOG_NORMAL, 8,DISC_VAMP_PROT,4 },
    { "burrow",         do_burrow, 	POS_STANDING,      3,  LOG_NORMAL, 4,DISC_WERE_BOAR,5 },
    { "fangs",		do_fangs,	POS_SITTING,	 3,  LOG_NORMAL, 8,0,0	},
    { "flex",		do_flex,	POS_SITTING,	 0,  LOG_NORMAL, 0,0,0	},
    { "gcommand",	do_fcommand,	POS_STANDING,	 3,  LOG_NORMAL, 0,0,0	},
    { "possession",     do_possession,	POS_STANDING,    3,  LOG_NORMAL, 8,DISC_VAMP_DOMI,3 },
    { "hum",		do_monktalk,	POS_DEAD,		3, LOG_NORMAL, 0, 0, 0},
    { "humanform",	do_humanform,POS_SITTING,	 2,  LOG_NORMAL, 0,0,0 },
    { "theft",          do_theft,   POS_FIGHTING,      3,  LOG_NORMAL, 8,DISC_VAMP_THAU,4 },   
    { "plasma",         do_plasma,  POS_STANDING,      3,  LOG_NORMAL, 8,DISC_VAMP_VICI,5 },
    { "zuloform",       do_zuloform,POS_FIGHTING,      3,  LOG_NORMAL, 8,DISC_VAMP_VICI,2},
    { "beckon",         do_beckon,  POS_STANDING,      3,  LOG_NORMAL, 8,DISC_VAMP_ANIM,1},

    /* Ninja */

    { "miktalk", do_miktalk, 	POS_SLEEPING, 2, LOG_NORMAL, 128, 0, 0},
    { "principles", do_principles, POS_MEDITATING, 3, LOG_NORMAL, 128, 0, 0 },
    { "michi", do_michi, POS_FIGHTING, 3, LOG_NORMAL, 128, 0, 0 },
    { "harakiri", do_hara_kiri, POS_MEDITATING,3, LOG_NORMAL, 128, 0, 0 },
    { "circle",	do_circle, POS_FIGHTING, 3, LOG_NORMAL, 128, 0, 0},
    { "kakusu", do_kakusu, POS_STANDING, 3, LOG_NORMAL, 128, 0, 0 },
    { "kanzuite", do_kanzuite, POS_MEDITATING, 3, LOG_NORMAL, 128, 0, 0 },
    { "mienaku", do_mienaku, POS_FIGHTING, 3, LOG_NORMAL, 128, 0, 0 },
    { "bomuzite", do_bomuzite, POS_MEDITATING, 3, LOG_NORMAL, 128, 0, 0  },
    { "tsume", do_tsume, POS_FIGHTING, 3, LOG_NORMAL, 128, 0, 0 },
    { "mitsukeru", do_mitsukeru, POS_MEDITATING, 3, LOG_NORMAL, 128, 0, 0 },
    { "koryou", do_koryou, POS_MEDITATING, 3, LOG_NORMAL, 128,0,0},
    { "hakunetsu", do_strangle,  POS_STANDING, 3, LOG_NORMAL, 128,0,0},

    /*start drow section */

    { "newbiepack",     do_newbiepack,  POS_SLEEPING,   1, LOG_NORMAL,0,0,0},
    { "sign",		do_sign,	POS_DEAD,	 1,  LOG_NORMAL, 32,0,0 },
    { "relevel",	do_relevel,	POS_DEAD,   	 0,  LOG_ALWAYS, 0,0,0 },
    { "delevel",	do_delevel,	POS_DEAD,   	 11,  LOG_ALWAYS, 0,0,0 },
    { "grant",		do_grant,	POS_STANDING,	 3,  LOG_NORMAL, 32,0,0 },
    { "drowsight",	do_drowsight,POS_STANDING,     3,  LOG_NORMAL, 32,0,0 },
    { "drowshield",	do_drowshield,POS_STANDING,    3,  LOG_NORMAL, 32,0,0 },
    { "drowfire",		do_drowfire,POS_FIGHTING,      3,  LOG_NORMAL, 32,0,0 },
    { "drowhate",	do_drowhate,	POS_STANDING,    3,  LOG_NORMAL, 32,0,0 },
    { "drowpowers",	do_drowpowers,	POS_STANDING,    3,  LOG_NORMAL, 32,0,0 },
    { "darkness",       do_darkness,	POS_STANDING,    3,  LOG_NORMAL, 32,0,0 },
    { "lloth",		do_lloth,	POS_STANDING,	3,	LOG_NORMAL,32,0,0},
    { "collective",     do_lloth,       POS_STANDING,    3,  LOG_NORMAL, 32, 0, 0 },
    { "shadowwalk",	do_shadowwalk,	POS_STANDING,    3,  LOG_NORMAL, 32,0,0 },
    //{ "drowcreate",    	do_drowcreate,	POS_STANDING,    3,  LOG_NORMAL, 32,0,0 },
    { "heal",		do_heal,	POS_FIGHTING,    3,  LOG_NORMAL, 32,0,0 },
    { "garotte",	do_garotte,	POS_FIGHTING,    3,  LOG_NORMAL, 32,0,0 },
    { "spiderform",	do_spiderform,	POS_STANDING,    3,  LOG_NORMAL, 32,0,0 },
    { "chaosblast",	do_chaosblast,	POS_FIGHTING,    3,  LOG_NORMAL, 32,0,0 },
    { "dgarotte",	do_dark_garotte,POS_STANDING,   3, LOG_NORMAL, 32, 0, 0 },
    { "glamour",	do_glamour	,POS_RESTING,	3, LOG_NORMAL, 32, 0, 0 },
    { "confuse",	do_confuse	,POS_FIGHTING,  3, LOG_NORMAL, 32, 0, 0 },
    { "darktendrils", do_darktendrils, POS_STANDING,  3, LOG_NORMAL, 32, 0, 0 },
  	{ "fightdance", do_fightdance, POS_STANDING,  3, LOG_NORMAL, 32, 0, 0},

/* end drow */



/*demon section*/

    { "eyespy",		do_eyespy,      POS_STANDING,    3,  LOG_NORMAL, 1,0,0 },
    { "champions",	do_champions,	POS_STANDING,	 3,  LOG_NORMAL, 1,0,0 },
    //{ "demonarmour",	do_demonarmour,	POS_STANDING,	 3,  LOG_NORMAL, 1,0,0 },
    { "hooves",		do_hooves,	POS_STANDING,	 3,  LOG_NORMAL, 1,0,0 },
    { "humanform",	do_humanform,	POS_SITTING,	 2,  LOG_NORMAL, 1,0,0 },
    { "inpart",		do_inpart,	POS_STANDING,	 3,  LOG_NORMAL, 1,0,0 },
    { "travel",		do_travel,	POS_STANDING,	 3,  LOG_NORMAL, 1,0,0 },
    { "weaponform",	do_weaponform,	POS_STANDING,	 2,  LOG_NORMAL, 1,0,0 },
    { "leap",		do_leap,	POS_STANDING,	 3,  LOG_NORMAL, 1,0,0 },
    { "wings",		do_wings,	POS_STANDING,	 3,  LOG_NORMAL, 1,0,0 },
    { "demonform",	do_demonform,	POS_STANDING,    3,  LOG_NORMAL, 1,0,0, },

/*end demon section*/

   { "abilities", do_abilities, POS_STANDING, 3, LOG_NORMAL, 0,0,0},
   //{ "bladetalk", do_bladetalk, POS_DEAD, 3, LOG_NORMAL, 0,0,0},
   { "heavenlyrain", do_heavenlyrain, POS_FIGHTING, 3, LOG_NORMAL, 0,0,0},
   { "leye",      do_truesight, POS_STANDING, 3, LOG_NORMAL, 0,0,0},
   { "reye",      do_shadowsight, POS_STANDING, 3, LOG_NORMAL, 0,0,0},
   { "eaglestrength", do_eaglestrength, POS_STANDING, 3, LOG_NORMAL, 0,0,0},
   { "hawkeyes",  do_hawkeyes,  POS_STANDING, 3, LOG_NORMAL, 0,0,0},
   { "vulturevigor", do_vulturevigor, POS_STANDING, 3, LOG_NORMAL, 0,0,0},
   { "skyforge",  do_skyforge,   POS_STANDING, 3, LOG_NORMAL, 0,0,0},
   //{ "skyarmor",  do_skyarmor,   POS_STANDING, 3, LOG_NORMAL, 0,0,0},
   { "bladejump", do_bladejump, POS_STANDING, 3, LOG_NORMAL, 0,0,0},
   { "pummel",   do_pummel,     POS_FIGHTING, 3, LOG_NORMAL, 0,0,0},
   { "cloudsblessing", do_cloudsblessing, POS_STANDING, 3, LOG_NORMAL, 0,0,0},
   { "dragonx", do_dragonx, POS_FIGHTING, 3, LOG_NORMAL, 0,0,0},
   { "wyrmroar", do_wyrmroar, POS_FIGHTING, 3, LOG_NORMAL, 0,0,0},
   { "divestrike", do_divestrike, POS_STANDING, 3, LOG_NORMAL, 0,0,0},
/* Autocommands (doesn't have to be typed but this will send them a note telling them that
   this is an automatic command if they type it.*/
   { "falconblade", do_isauto, POS_DEAD, 3, LOG_NORMAL, 0,0,0},
   { "climax",      do_isauto, POS_DEAD, 3, LOG_NORMAL, 0,0,0},
   { "dragonaura",  do_isauto, POS_DEAD, 3, LOG_NORMAL, 0,0,0},
   { "wyrmaura",    do_isauto, POS_DEAD, 3, LOG_NORMAL, 0,0,0},
   { "rapierstrike", do_isauto, POS_DEAD, 3, LOG_NORMAL, 0,0,0},
   { "retort", do_isauto, POS_DEAD, 3, LOG_NORMAL, 0,0,0},
   { "leapoffaith", do_isauto, POS_DEAD, 3, LOG_NORMAL, 0,0,0},
   { "dragoncharge", do_isauto, POS_DEAD, 3, LOG_NORMAL, 0,0,0},

/* vamp protean healing*/
    { "healing",		do_healing, POS_FIGHTING,      3,   LOG_NORMAL, 8,DISC_VAMP_PROT,8},
    { "healingtouch",   do_healingtouch,POS_STANDING,3,LOG_NORMAL,64,0,0}, /*monks healing power*/
    { "inconnu",		do_inconnu,	POS_STANDING,	 3,  LOG_NORMAL, 8,0,0	},
    { "majesty",		do_majesty,	POS_STANDING,	 3,  LOG_NORMAL, 8,DISC_VAMP_PRES,5	},
    { "nightsight",	do_nightsight,POS_SITTING,	 3,  LOG_NORMAL, 8,DISC_VAMP_PROT,1	},
    { "poison",		do_poison,	POS_STANDING,	 3,  LOG_NORMAL, 8,DISC_VAMP_SERP,3	},
    { "rage",		do_rage,	POS_FIGHTING,	 3,  LOG_NORMAL, 4,0,0	},
    { "regenerate",	do_regenerate,POS_SLEEPING,	 3,  LOG_NORMAL, 8,0,0	},
    { "roll",		do_roll,	POS_RESTING,	 2,  LOG_NORMAL, 1,0,0	},
    { "stake",		do_stake,	POS_STANDING,	 3,  LOG_NORMAL, 0,0,0 },
    { "serpent",		do_serpent,	POS_STANDING,	 3,  LOG_NORMAL, 8,DISC_VAMP_SERP,2	},
    { "shadowplane",	do_shadowplane,POS_STANDING,	 3,  LOG_NORMAL, 8,DISC_VAMP_OBTE,3	},
    { "shadowplane",    do_shadowplane,POS_STANDING,     3,  LOG_NORMAL, 4,DISC_WERE_OWL,3     },
    { "shadowsight",	do_shadowsight,POS_SITTING,	 3,  LOG_NORMAL, 8,DISC_VAMP_OBTE,2	},
    { "shadowsight",    do_shadowsight,POS_SITTING,      3,  LOG_NORMAL, 4,DISC_WERE_HAWK,2 },
    { "serenity",       do_serenity,POS_SITTING,       3,  LOG_NORMAL, 8,DISC_VAMP_ANIM,2 },
    { "totems",		do_totems,	POS_SITTING,	 3,  LOG_NORMAL, 4,0,0  },
    { "upkeep",		do_upkeep,	POS_DEAD,	       3, LOG_NORMAL, 0,0,0	},
    { "vanish",		do_vanish,	POS_STANDING,	 3,  LOG_NORMAL, 4,DISC_WERE_OWL,1	},
    { "web",		do_web,	POS_FIGHTING,	 3,  LOG_NORMAL, 4,DISC_WERE_SPID,2	},


/* Tag commands */
    { "healme",		do_healme,	POS_STANDING,   2,       LOG_NORMAL, 0,0,0},
    { "bounty", 	do_bounty, 	POS_STANDING, 	2,	 LOG_NORMAL, 0, 0, 0 },
    { "bountylist",	do_bountylist, 	POS_FIGHTING, 	2,	 LOG_NORMAL, 0, 0, 0 },
    { "oilspit",	do_stuntubes,	POS_FIGHTING,	3,      LOG_NORMAL, 8192, 0, 0 },
    { "terminator",     do_cubeform,	POS_STANDING,	3,	LOG_NORMAL, 8192,0,0},
    { "implant",do_implant,POS_STANDING,0,LOG_NORMAL,8192,0,0},
    { "scry",		do_scry,	POS_STANDING,   3,	LOG_NORMAL, 8192,0,0},
    { "readaura",	do_readaura,	POS_STANDING,	3,	LOG_NORMAL, 8192,0,0},
    { "lloth",          do_lloth,       POS_STANDING,   3,       LOG_NORMAL, 8192,0,0},
    { "darkness",       do_darkness,    POS_STANDING,   3,       LOG_NORMAL, 8192,0,0},
    { "mechsight",      do_infravision, POS_STANDING,   3,      LOG_NORMAL, 8192,0,0},
    //{ "cyborgeq",       do_cyborgeq,    POS_STANDING,   3,      LOG_NORMAL, 8192,0,0}, 
    { "web",		do_web,		POS_FIGHTING,	3,	LOG_NORMAL, 8192,0,0},
    { "transmit",       do_transmit,    POS_DEAD,       3,      LOG_NORMAL, 8192,0,0},
    { "upload",         do_shadowwalk,  POS_STANDING,   3,      LOG_NORMAL, 8192,0,0 },

     /* quest stuff */
    { "createbase",     do_createbase,  POS_DEAD,       12,  LOG_NORMAL, 0, 0, 0 },
    { "showquest",      do_showquest,   POS_DEAD,        1,  LOG_NORMAL, 0, 0, 0 },
    { "qgain",          do_qgain,       POS_STANDING,    1,  LOG_NORMAL, 0, 0, 0 },
    { "qcomplete",      do_qcomplete,   POS_STANDING,    1,  LOG_NORMAL, 0, 0, 0 },

    { "showalias",    do_showalias,  POS_STANDING, 2, LOG_NORMAL, 0,0,0},
    { "history",      do_history,     POS_DEAD,     1, LOG_NORMAL, 0, 0, 0 },
     /* shopping commands */
    { "shop",         do_shop,        POS_STANDING, 1, LOG_NORMAL, 0, 0, 0 },
    { "buy",          do_buy,         POS_STANDING, 1, LOG_NORMAL, 0, 0, 0 },
    { "list",         do_list,        POS_STANDING, 1, LOG_NORMAL, 0, 0, 0 },
    { "auction",      do_auction,     POS_DEAD,     1, LOG_NORMAL, 0, 0, 0 },
    { "vote",         do_vote,        POS_DEAD,     2, LOG_NORMAL, 0, 0, 0 },
    { "news",         do_news,        POS_DEAD,     1, LOG_NORMAL, 0, 0, 0 },
    { "chsave",	      do_chsave,    POS_DEAD,    12, LOG_NORMAL, 0, 0, 0 },
    { "addchange",    do_addchange, POS_DEAD,    12, LOG_NORMAL, 0, 0, 0 },
    { "changes",      do_news,        POS_DEAD,     1, LOG_NORMAL, 0, 0, 0 }, 
    { "newscore",	  do_newscore,	POS_DEAD,	 	 0,LOG_NORMAL, 0,0,0},
    { "shoot",        do_shoot,        POS_STANDING, 1, LOG_NORMAL, 0, 0, 0 },
    { "reload",       do_reload,        POS_STANDING, 1, LOG_NORMAL, 0, 0, 0 },
    { "unload",       do_unload,        POS_STANDING, 1, LOG_NORMAL, 0, 0, 0 },
    /*
     * Immortal commands.
     */
    { "timer",          do_timer,        POS_FIGHTING,           3,   LOG_NORMAL,0,0,0},
    { "ragnarok",       do_ragnarok,     POS_STANDING,           3,   LOG_NORMAL,0,0,0},
    { "dblbuy",         do_dblbuy,       POS_STANDING,           3,   LOG_NORMAL,0,0,0},
    { "showsilence",    do_showsilence,  POS_DEAD,              11,   LOG_NORMAL,0,0,0},
    { "pathfind",       do_pathfind,     POS_DEAD,        11,  LOG_NORMAL, 0, 0, 0 },
    { "ccenter",        do_ccenter,      POS_DEAD,        12,  LOG_NORMAL, 0, 0, 0 },
    { "project",        do_project,      POS_DEAD,        11,  LOG_NORMAL, 0, 0, 0 },
    { "showcomp",       do_showcompress, POS_DEAD,              12,  LOG_NORMAL, 0,0,0 }, 
    { "implag",		do_implag,	POS_DEAD,		 12,  LOG_NORMAL, 0,0,0 },
    { "toggle",		do_toggle,	POS_DEAD,		 11,  LOG_ALWAYS, 0,0,0 },
    { "trust",		do_trust,	POS_DEAD,		 11,  LOG_ALWAYS, 0,0,0 },
    { "snatch",         do_snatch,      POS_DEAD,                10,  LOG_NORMAL, 0,0,0 },
    { "allow",		do_allow,	POS_DEAD,		 11,  LOG_ALWAYS, 0,0,0	},
    { "bind",		do_bind,	POS_DEAD,		 10,  LOG_ALWAYS, 0,0,0	},
    { "clearstats",	do_clearstats,	POS_STANDING,		  0,  LOG_NORMAL, 0,0,0	},
    { "create",		do_create,	POS_STANDING,		  8,  LOG_NORMAL, 0,0,0	},
    { "deny",		do_deny,	POS_DEAD,		 10,  LOG_ALWAYS, 0,0,0	},
    { "disable",	do_disable,	POS_DEAD,		 11,  LOG_ALWAYS, 0,0,0 },
    { "disconnect",	do_disconnect,	POS_DEAD,		 10,  LOG_NEVER, 0,0,0 },
    { "divorce",		do_divorce,	POS_DEAD,	 	 9,  LOG_ALWAYS, 0,0,0	},
    { "familiar",		do_familiar,POS_STANDING,	12,  LOG_NORMAL, 0,0,0	},
    { "fcommand",		do_fcommand,POS_STANDING,	 4,  LOG_NORMAL, 0,0,0	},
    { "freeze",		do_freeze,	POS_DEAD,		 9,  LOG_ALWAYS, 0,0,0	},
    { "marry",		do_marry,	POS_DEAD,	 	 9,  LOG_ALWAYS, 0,0,0	},
    { "paradox",		do_paradox,	POS_DEAD,		 12, LOG_ALWAYS, 0,0,0 },
    { "bully",          do_bully,       POS_DEAD,                12, LOG_NORMAL, 0,0,0 },
    { "qset",		do_qset,	POS_DEAD,	 	 8,  LOG_ALWAYS, 0,0,0	},
    { "qstat",		do_qstat,	POS_DEAD,	 	 8,  LOG_ALWAYS, 0,0,0	},
    { "qtrust",		do_qtrust,	POS_DEAD,		 10,  LOG_ALWAYS, 0,0,0	},
    { "prename",	do_prename,	POS_DEAD,		 10,  LOG_ALWAYS, 0,0,0	},
    { "wiznet",		do_wiznet,	POS_DEAD,		 10,  LOG_ALWAYS, 0,0,0	},
    { "copyover",		do_copyover,	POS_DEAD,		 11,  LOG_ALWAYS, 0,0,0	},
    { "shutdow",		do_shutdow,	POS_DEAD,		 12,  LOG_NORMAL, 0,0,0	},
    { "shutdown",		do_shutdown,POS_DEAD,		 12, LOG_ALWAYS, 0,0,0	},
    { "users",		do_users,	POS_DEAD,	 	 8,  LOG_NORMAL, 0,0,0	},
    { "omni",		do_omni,	POS_DEAD,		 10, LOG_NORMAL, 0,0,0 },
    { "wizlock",		do_wizlock,	POS_DEAD,		 11,  LOG_ALWAYS, 0,0,0	},
    { "closemud",	do_closemud,	 POS_DEAD,	  12,  LOG_ALWAYS, 0, 0, 0 },
    { "force",		do_force,	POS_DEAD,	 	 9,  LOG_ALWAYS, 0,0,0	},
    { "asperson",       do_asperson,    POS_DEAD,               12,  LOG_ALWAYS, 0,0,0  },
    { "offline",        do_offline,     POS_DEAD,               12,  LOG_ALWAYS, 0,0,0 },
    { "pfile",          do_pfile,        POS_DEAD,         7,  LOG_ALWAYS, 0, 0, 0 },
    { "exlist",		do_exlist,	POS_DEAD,		 8, LOG_NORMAL, 0,0,0 },
    { "mload",		do_mload,	POS_DEAD,	 	 7,  LOG_ALWAYS, 0,0,0	},
    { "undeny",         do_undeny,  POS_DEAD,          11,  LOG_ALWAYS, 0,0,0 },
    { "mset",		do_mset,	POS_DEAD,	 	 8, LOG_ALWAYS, 0,0,0	},
    { "multicheck",	do_multicheck,	POS_DEAD,		7, LOG_NORMAL,0,0,0},
    { "resetpasswd",	do_resetpassword,	POS_DEAD,	 	 12, LOG_ALWAYS, 0,0,0	},
    { "oclone",		do_oclone,	POS_DEAD,	 	 8,  LOG_ALWAYS, 0,0,0	},
    { "oload",		do_oload,	POS_DEAD,	 	 8,  LOG_ALWAYS, 0,0,0	},
    { "randomload",		do_randomload,	POS_DEAD,	 	 8,  LOG_ALWAYS, 0,0,0	},
    { "psycho",		do_psycho,	POS_DEAD,	 	 12,  LOG_ALWAYS, 0,0,0	},
    { "oset",		do_oset,	POS_DEAD,	 	 8,LOG_ALWAYS, 0,0,0	},
    { "otransfer",	do_otransfer,POS_DEAD,	 	 8,  LOG_ALWAYS, 0,0,0	},
    { "pload",		do_pload,	POS_DEAD,		 12,  LOG_ALWAYS, 0,0,0	},
    { "preturn",	do_preturn,	POS_DEAD,	 	 1,  LOG_NORMAL, 0,0,0	},
    { "pset",		do_pset,	POS_DEAD,		 10,  LOG_ALWAYS, 0,0,0	},
    { "pstat",           do_pstat,        POS_DEAD,                10,  LOG_ALWAYS, 0,0,0 },
    { "purge",		do_purge,	POS_DEAD,	 	 7,  LOG_NORMAL, 0,0,0	},
    { "beep",		do_beep,	POS_DEAD,	 	 7,  LOG_NORMAL, 0,0,0	},
    { "unrestore",      do_unrestore,	POS_DEAD,	 	 11,  LOG_NORMAL, 0,0,0	},
    { "checkpk",        do_checkpk,	POS_DEAD,	 	 10,  LOG_NORMAL, 0,0,0	},
    { "freevnums",      do_freevnums,	POS_DEAD,	 	 11,  LOG_NORMAL, 0,0,0	},
    { "daynight",       do_daynight,	POS_DEAD,	 	 10,  LOG_NORMAL, 0,0,0	},
    { "release",		do_release,	POS_DEAD,	 	 9,  LOG_ALWAYS, 0,0,0	},
    { "restore",		do_restore,	POS_DEAD,	 	 8,  LOG_ALWAYS, 0,0,0	},
    { "rset",		do_rset,	POS_DEAD,		 8,  LOG_ALWAYS, 0,0,0	},
    { "silence",		do_silence,	POS_DEAD,	 	 9,  LOG_NORMAL, 0,0,0 },
    { "sla",		do_sla,	POS_DEAD,		 10,  LOG_NORMAL, 0,0,0	},
    { "slay",		do_slay,	POS_DEAD,		 10,  LOG_ALWAYS, 0,0,0	},
    { "slay2",		do_slay2,	POS_FIGHTING,		12, LOG_NORMAL,0,0,0},
    { "decapitate",	do_decapitate,POS_STANDING,	 3,  LOG_NORMAL, 0,0,0	},
    { "sset",		do_sset,	POS_DEAD,		 10,  LOG_ALWAYS, 0,0,0 },
    { "transfer",		do_transfer,POS_DEAD,	 	 7,  LOG_ALWAYS, 0,0,0	},
    { "transport",	do_transport,POS_DEAD,	 	 1,  LOG_NORMAL, 0,0,0	},
    { "at",			do_at,	POS_DEAD,	 	 8,  LOG_NORMAL, 0,0,0	},
    { "bamfin",		do_bamfin,	POS_DEAD,	 	 7,  LOG_NORMAL, 0,0,0	},
    { "bamfout",		do_bamfout,	POS_DEAD,	 	 7,  LOG_NORMAL, 0,0,0	},
    { "echo",		do_echo,	POS_DEAD,	 	 8,  LOG_ALWAYS, 0,0,0	},
    { "goto",		do_goto,	POS_DEAD,	 	 7,  LOG_NORMAL, 0,0,0	},
    { "holylight",	do_holylight,POS_DEAD,	 	 7,  LOG_NORMAL, 0,0,0	},
    { "invis",		do_invis,	POS_DEAD,	 	 7,  LOG_NORMAL, 0,0,0	},
    { "log",		do_log,	POS_DEAD,	 	 12,  LOG_ALWAYS, 0,0,0	},
    { "logstat",        do_logstat,      POS_DEAD,        12,  LOG_NORMAL, 0, 0, 0 },
    { "logstatclear",   do_logstatclear, POS_DEAD,        12,  LOG_NORMAL, 0, 0, 0 },
    { "memusage",	do_memory, 	 POS_DEAD,	   8,  LOG_NORMAL, 0, 0, 0 },
    { "mfind",		do_mfind,	POS_DEAD,	 	 7,  LOG_NORMAL, 0,0,0 },
    { "mstat",		do_mstat,	POS_DEAD,	 	 7,  LOG_NORMAL, 0,0,0	},
    { "mwhere",		do_mwhere,	POS_DEAD,	 	 8,  LOG_NORMAL, 0,0,0 },
    { "ofind",		do_ofind,	POS_DEAD,	 	 7,  LOG_NORMAL, 0,0,0 },
    { "ostat",		do_ostat,	POS_DEAD,	 	 7,  LOG_NORMAL, 0,0,0	},
    { "oswitch",		do_oswitch,	POS_DEAD,	 	 8,  LOG_NORMAL, 0,0,0	},
    { "oreturn",		do_oreturn,	POS_DEAD,	 	 8,  LOG_NORMAL, 0,0,0	},
    { "owhere", 	do_owhere,	POS_DEAD,		 8,  LOG_NORMAL, 0,0,0  },
    { "peace",		do_peace,	POS_DEAD,		 11, LOG_NORMAL, 0,0,0	},
    { "recho",		do_recho,	POS_DEAD,	 	 8,  LOG_ALWAYS, 0,0,0	},
    { "immreturn",	do_return,	POS_DEAD,	 	 8, LOG_NORMAL, 0,0,0	},
    { "rstat",		do_rstat,	POS_DEAD,	 	 7,  LOG_NORMAL, 0,0,0	},
    { "slookup",		do_slookup,	POS_DEAD,	 	 8,  LOG_NORMAL, 0,0,0 },
    { "snoop",		do_snoop,	POS_DEAD,	 	 8,  LOG_NORMAL, 0,0,0	},
    { "switch",		do_switch,	POS_DEAD,	 	 8,  LOG_ALWAYS, 0,0,0	},
    { "samtalk",		do_hightalk,POS_DEAD,	 	 1,  LOG_NORMAL, 16,0,0 },
    { "magetalk",		do_magetalk,POS_DEAD,	 	 2,  LOG_NORMAL, 2,0,0	},
    { "vtalk",		do_vamptalk,POS_DEAD,	 	 1,  LOG_NORMAL, 0,0,0	},
    { ">",			do_vamptalk,POS_DEAD,	 	 1,  LOG_NORMAL, 0,0,0	},
    { "vampire",		do_vampire,	POS_STANDING,	 1,  LOG_NORMAL, 0,0,0	},
    { "immune",		do_immune,	POS_DEAD,	 	 1,  LOG_NORMAL, 0,0,0	},
    { "[",			do_fcommand,POS_SITTING,	 3,  LOG_NORMAL, 0,0,0	},
    { "immtalk",		do_immtalk,	POS_DEAD,	 	 7,  LOG_NORMAL, 0,0,0	},
    { ":",			do_immtalk,	POS_DEAD,	 	 7,  LOG_NORMAL, 0,0,0	},
    { "thirdeye", do_thirdeye,  POS_STANDING, 3, LOG_NORMAL, 0,0,0},
        
    /* New Database shit - JOBO */

    { "leader",  do_leader,  POS_STANDING,  2,  LOG_NORMAL, 0,0,0},
    { "leaderclear", do_leaderclear, POS_DEAD, 7, LOG_NORMAL, 0,0,0},

    { "kingdoms",    do_kingdoms,    POS_DEAD,     1,  LOG_NORMAL, 0, 0, 0 },
    { "ktalk",       do_ktalk,       POS_DEAD,     2,  LOG_NORMAL, 0, 0, 0 },
    { "kstats",      do_kstats,      POS_DEAD,     2,  LOG_NORMAL, 0, 0, 0 },
    { "kingset",     do_kingset,     POS_DEAD,     7,  LOG_NORMAL, 0, 0, 0 },
    { "wantkingdom", do_wantkingdom, POS_DEAD,     2,  LOG_NORMAL, 0, 0, 0 },
    { "kinduct",     do_kinduct,     POS_STANDING, 2,  LOG_NORMAL, 0, 0, 0 },
    { "kset",        do_kset,        POS_STANDING, 2,  LOG_NORMAL, 0, 0, 0 },
    { "koutcast",    do_koutcast,    POS_STANDING, 2,  LOG_NORMAL, 0, 0, 0 },
    { "kdeposit",    do_kdeposit,    POS_STANDING, 2,  LOG_NORMAL, 0, 0, 0 },
    { "decwar",      do_decwar,      POS_STANDING, 2,  LOG_NORMAL, 0, 0, 0 },
    { "warlist",     do_warlist,     POS_STANDING, 2,  LOG_NORMAL, 0, 0, 0 },
    { "warpeace",    do_warpeace,    POS_STANDING, 2,  LOG_NORMAL, 0, 0, 0 },
    { "krecall",     do_krecall,     POS_STANDING, 2,  LOG_NORMAL, 0, 0, 0 },
    /* newbie banning and unbanning */
    { "newban",       do_newban,        POS_DEAD,         11,  LOG_NORMAL, 0, 0, 0 },
    { "newallow",     do_newallow,      POS_DEAD,         11,  LOG_NORMAL, 0, 0, 0 },

    /* Arena stuff - Jobo */

    { "resign",     do_resign,     POS_STANDING, 3, LOG_NORMAL, 0,0,0},
    { "arenastats",   do_arenastats,    POS_STANDING,   2, LOG_NORMAL, 0, 0, 0 },
    { "arenaset",     do_arenaset,      POS_DEAD,       7, LOG_NORMAL, 0, 0, 0 },
    { "arenajoin",   do_arenajoin,  POS_STANDING, 3, LOG_NORMAL, 0,0,0},
    { "arenaopen",    do_openthearena,  POS_DEAD,      12, LOG_NORMAL, 0, 0, 0 },
    { "bet",            do_bet,          POS_DEAD,       2,  LOG_NORMAL, 0, 0, 0 },
    
    { "balance",            do_balance,          POS_STANDING,       2,  LOG_NORMAL, 0, 0, 0 },
    { "deposit",            do_deposit,          POS_STANDING,       2,  LOG_NORMAL, 0, 0, 0 },
    { "withdraw",           do_withdraw,          POS_STANDING,       2,  LOG_NORMAL, 0, 0, 0 },
    
    { "fortressstats", do_fortressstats, POS_STANDING, 2, LOG_NORMAL, 0, 0, 0 },
    { "challenge",     do_challenge,     POS_STANDING, 3, LOG_NORMAL, 0, 0, 0 },
    { "decline",       do_decline,       POS_STANDING, 3, LOG_NORMAL, 0, 0, 0 },
    { "agree",         do_accept2,       POS_STANDING, 3, LOG_NORMAL, 0, 0, 0 },

    { "ignore",  do_ignore,  POS_DEAD,     2, LOG_NORMAL, 0,0,0 },
    { "policy",  do_policy,  POS_STANDING, 1, LOG_NEVER,  0,0,0 },
    { "favor",   do_favor,   POS_STANDING, 2, LOG_NORMAL, 0,0,0},

    { "setavatar",  do_setavatar,  POS_STANDING,   3,  LOG_NORMAL, 0,0,0},
    { "setdecap",   do_setdecap,   POS_STANDING,   3,  LOG_NORMAL, 0,0,0},
    { "setlogout",  do_setlogout,  POS_STANDING,   3,  LOG_NORMAL, 0,0,0},
    { "setlogin",   do_setlogin,   POS_STANDING,   3,  LOG_NORMAL, 0,0,0},
    { "settie",     do_settie,     POS_STANDING,   3,  LOG_NORMAL, 0,0,0},

    /*Warlock Commands*/
	{ "chaos",	do_chaos,	POS_FIGHTING,	3, LOG_NORMAL, 16777216,0,0 },
	{ "arts",	do_arts,	POS_STANDING,	3, LOG_NORMAL, 16777216,0,0 },
	{ "thunderclap",do_thunderclap, POS_FIGHTING,	3, LOG_NORMAL, 16777216, 0, 0},
	{ "hellblades",	do_hellblades,  POS_FIGHTING,   3, LOG_NORMAL, 16777216, 0, 0},
	{ "wrath",	do_wrath,	POS_FIGHTING,	3, LOG_NORMAL, 16777216, 0, 0},
	{ "firebolt",	do_firebolt,	POS_FIGHTING,	3, LOG_NORMAL, 16777216, 0, 0},
	{ "pshift",	do_pshift,	POS_FIGHTING,	3, LOG_NORMAL, 16777216, 0, 0},
	{ "vortex",	do_vortex,	POS_FIGHTING,	3, LOG_NORMAL, 16777216, 0, 0},
	{ "plost",	do_plost,	POS_FIGHTING,	3, LOG_NORMAL, 16777216, 0, 0},
	{ "icelance",	do_icelance,	POS_FIGHTING,	3, LOG_NORMAL, 16777216, 0, 0},
	{ "negativity", do_negativity,	POS_FIGHTING,	3, LOG_NORMAL, 16777216, 0, 0},

    /*
     * OLC 1.1b and Social Edit
     */
    { "allpeace",       do_allpeace,    POS_DEAD,   11,  LOG_NORMAL, 0, 0, 0 },
    { "aedit",          do_aedit,       POS_DEAD,   11,  LOG_NORMAL, 0, 0, 0 },
    { "dismember",      do_dismember,   POS_DEAD,   11,  LOG_NORMAL, 0, 0, 0 },
    { "redit",          do_redit,       POS_DEAD,    8,  LOG_NORMAL, 0, 0,0 },
    { "oedit",          do_oedit,       POS_DEAD,    8,  LOG_NORMAL, 0, 0,0 },
    { "medit",          do_medit,       POS_DEAD,    8,  LOG_NORMAL, 0, 0, 0 },
    { "mpedit",         do_mpedit,      POS_DEAD,   11,  LOG_NORMAL, 0, 0, 0 },
    { "asave",          do_asave,       POS_DEAD,    8,  LOG_NORMAL, 0, 0,0 },
    { "alist",          do_alist,       POS_DEAD,    8,  LOG_NORMAL, 0, 0,0 },
    { "resets",         do_resets,      POS_DEAD,    8,  LOG_NORMAL, 0, 0,0 },
    { "spellset",       do_spellset,      POS_DEAD,    10,  LOG_NORMAL, 0, 0,0 },
    { "stanceset",      do_stanceset,      POS_DEAD,   10,  LOG_NORMAL, 0, 0,0 },
    { "weapset",        do_weapset,      POS_DEAD,   10,  LOG_NORMAL, 0, 0,0 },
    { "sedit",          do_sedit,       POS_DEAD,    8,  LOG_NORMAL, 0, 0, 0 },
    { "wrlist",         do_wrlist,       POS_DEAD,    8,  LOG_NORMAL, 0, 0, 0 },
    { "meditate",		do_meditate,POS_MEDITATING,	 0,  LOG_NORMAL, 0,0,0	},
    { "relearn",         do_relearn,      POS_DEAD,    1,  LOG_NORMAL, 0, 0,0 },
    { "ready",          do_ready,       POS_DEAD,      1,  LOG_NORMAL, 0, 0, 0 },
	{ "mobquest",       do_mobquest,    POS_DEAD,      11,  LOG_NORMAL, 0,0,0 },
	{ "clearflags",       do_clearflags,    POS_DEAD,      11,  LOG_NORMAL, 0,0,0 },
	{ "spinebreak",       do_spinebreak,    POS_DEAD,      12,  LOG_NORMAL, 0,0,0 },
    { "startragbid",       do_startragbid,    POS_DEAD,      11,  LOG_NORMAL, 0,0,0 },
    { "endragnarok",       do_endragnarok,    POS_DEAD,      11,  LOG_NORMAL, 0,0,0 },
    { "loop",       do_loop,    POS_DEAD,      11,  LOG_NORMAL, 0,0,0 },
    { "scatter",       do_scatter,    POS_DEAD,      11,  LOG_NORMAL, 0,0,0 },
    { "banshee",     do_banshee,      POS_STANDING,  3,  LOG_NORMAL, 33554432,0,0 },
    /*
     * End of list.
     */
    { "",		0,		POS_DEAD,	 0,  LOG_NORMAL, 0,0,0	}
};


/*
 * The main entry point for executing commands.
 * Can be recursively called from 'at', 'order', 'force'.
 */
void interpret( CHAR_DATA *ch, char *argument )
{
    CHAR_DATA *unveil;
    char arg[MAX_STRING_LENGTH];
    char argu[MAX_STRING_LENGTH];
    char buf[MAX_INPUT_LENGTH];
    char command[MAX_STRING_LENGTH];
    char logline[MAX_STRING_LENGTH];
    char cmd_copy[MAX_INPUT_LENGTH] ;
    bool found, foundstar = FALSE;
    int cmd, trust, star = 0;
    sh_int col = 0;

  /* due to the way threads has been implanted */
  if (!ch) return;

  /* One of these days I'll have to figure out why
   * a player ends up in a room that doesn't exists
   * every few weeks....
   */
  if (!ch->in_room)
  {
    sprintf(buf, "Interpret: %s not in any room.", ch->name);
    bug(buf, 0);
    return;
  }

    sprintf(argu,"%s %s",arg,one_argument( argument, arg));

    /*
     * Strip leading spaces.
     */
    while ( isspace(*argument) )
	argument++;
    if ( argument[0] == '\0' )
	return;

	strcpy(cmd_copy,argument);


    /*
     * Implement freeze command.
     */
    if ( !IS_NPC(ch) && IS_SET(ch->act, PLR_FREEZE) )
    {
	send_to_char( "You can't do anything while frozen!\n\r", ch );
	return;
    }

  /* check for AFK */
    if ( !IS_NPC(ch) && IS_SET(ch->extra, EXTRA_AFK) && str_cmp(argument, "afk"))
	do_afk(ch,"");

    /*
     * Grab the command word.
     * Special parsing so ' can be a command,
     *   also no spaces needed after punctuation.
     */
    strcpy( logline, argument );
    if ( !isalpha(argument[0]) && !isdigit(argument[0]) )
    {
	command[0] = argument[0];
	command[1] = '\0';
	argument++;
	while ( isspace(*argument) )
	    argument++;
    }
    else
    {
	argument = one_argument( argument, command );
    }


    /*
  * List all valid commands
    */ 
    if (command[strlen(command) - 1] == '*')
    {
	command[strlen(command) - 1] = '\0';

        for ( cmd = 0; cmd_table[cmd].name[0] != '\0'; cmd++ )
        {
      if ((!str_prefix(command, cmd_table[cmd].name) || strlen(command) == 0) && can_interpret(ch, cmd))
	    {
		foundstar = TRUE;
		star++;
	        sprintf( buf, "%-15s", cmd_table[cmd].name );
	        send_to_char( buf, ch );
	        if ( ++col % 5 == 0 )
		    send_to_char( "\n\r", ch );
	    }
	}
	if (col % 5 != 0 && foundstar)
	    send_to_char("\n\r", ch);

	if (foundstar && star != 0)
  	{
      sprintf(buf, "\n%d command%s found.\n\r", star, (star > 1) ? "s" : "");
	    stc(buf, ch);
	}

	if (!foundstar)
	{
	    stc("No commands found.\n\r", ch);
  	}
	return;
    }

    /*
     * Alias system, beta version by Jobo.
     */
    if (!IS_NPC(ch))
    {
      ALIAS_DATA *ali;

      for (ali = ch->pcdata->alias; ali; ali = ali->next)
      {
        if (!str_cmp(command, ali->short_n))
        {
          sprintf(buf, "%s %s", ali->long_n, argument);
          interpret(ch, buf);
          return;
        }
      }
    }

    /*
     * Look for command in command table.
     */
    found = FALSE;
    trust = get_trust( ch );
    for ( cmd = 0; cmd_table[cmd].name[0] != '\0'; cmd++ )
    {
    if (command[0] == cmd_table[cmd].name[0] && !str_prefix(command, cmd_table[cmd].name) && cmd_table[cmd].level <= trust)
	{
	    if (IS_HEAD(ch,LOST_HEAD) || IS_EXTRA(ch,EXTRA_OSWITCH) )
	    {
		if      (!str_cmp( cmd_table[cmd].name, "say"     )) found = TRUE;
		else if (!str_cmp( cmd_table[cmd].name, "'"       )) found = TRUE;
		else if (!str_cmp( cmd_table[cmd].name, "immtalk" )) found = TRUE;
		else if (!str_cmp( cmd_table[cmd].name, ":"       )) found = TRUE;
		else if (!str_cmp( cmd_table[cmd].name, "chat"    )) found = TRUE;
		else if (!str_cmp( cmd_table[cmd].name, "."       )) found = TRUE;
		else if (!str_cmp( cmd_table[cmd].name, "look"    )) found = TRUE;
		else if (!str_cmp( cmd_table[cmd].name, "save"    )) found = TRUE;
		else if (!str_cmp( cmd_table[cmd].name, "exits"   )) found = TRUE;
		else if (!str_cmp( cmd_table[cmd].name, "emote"   )) found = TRUE;
		else if (!str_cmp( cmd_table[cmd].name, "tell"    )) found = TRUE;
		else if (!str_cmp( cmd_table[cmd].name, "order"   )) found = TRUE;
		else if (!str_cmp( cmd_table[cmd].name, "who"     )) found = TRUE;
		else if (!str_cmp( cmd_table[cmd].name, "where"   )) found = TRUE;
		else if (!str_cmp( cmd_table[cmd].name, "relevel" )) found = TRUE;
		else if (!str_cmp( cmd_table[cmd].name, "safe"    )) found = TRUE;
		else if (!str_cmp( cmd_table[cmd].name, "scan"    )) found = TRUE;
		else if (!str_cmp( cmd_table[cmd].name, "spy"     )) found = TRUE;
		else if (!str_cmp( cmd_table[cmd].name, "score"   )) found = TRUE;
		else if (!str_cmp( cmd_table[cmd].name, "save"    )) found = TRUE;
		else if (!str_cmp( cmd_table[cmd].name, "inventory" )) found = TRUE;
		else if (!str_cmp( cmd_table[cmd].name, "oreturn" )) found = TRUE;
		else if (!str_cmp( cmd_table[cmd].name, "roll" )) found = TRUE;
		else if (!str_cmp( cmd_table[cmd].name, "leap" )) found = TRUE;
		else if (!str_cmp( cmd_table[cmd].name, "lifespan" )) found = TRUE;
		else if (!str_cmp( cmd_table[cmd].name, "nightsight" )) found = TRUE;
		else if (!str_cmp( cmd_table[cmd].name, "truesight" )) found = TRUE;
		else if (!str_cmp( cmd_table[cmd].name, "horns" )) found = TRUE;
		else if (!str_cmp( cmd_table[cmd].name, "fangs" )) found = TRUE;
		else if (!str_cmp( cmd_table[cmd].name, "cast" )) found = TRUE;
		else if (!str_cmp( cmd_table[cmd].name, "plasma" )) found = TRUE;
		else if (!str_cmp( cmd_table[cmd].name, "ashes" )) found = TRUE;
                else if (!str_cmp(cmd_table[cmd].name,"obj")&&
                  !IS_NPC(ch) && ch->pcdata->obj_vnum!=0)found=TRUE;
		else if (!str_cmp( cmd_table[cmd].name, "quit" ) &&
			!IS_NPC(ch) && ch->pcdata->obj_vnum != 0) found = TRUE;
		else if (!str_cmp( cmd_table[cmd].name, "humanform" ) &&
			!IS_NPC(ch) && ch->pcdata->obj_vnum != 0) found = TRUE;
		else {
		    send_to_char( "Not without a body!\n\r", ch ); return; }
	    }
            else if (IS_EXTRA(ch,EXTRA_EARTHMELD) )
	    {
                if      (!str_cmp( cmd_table[cmd].name, "earthmeld"  )) found = TRUE;
      else if (!str_cmp(cmd_table[cmd].name,"burrow")) found= TRUE;
		else if (!str_cmp( cmd_table[cmd].name, "look" )) found = TRUE;
		else if (!str_cmp( cmd_table[cmd].name, "save" )) found = TRUE;
		else if (!str_cmp( cmd_table[cmd].name, "exits")) found = TRUE;
                else if (!str_cmp( cmd_table[cmd].name, "wake")) found = TRUE;
		else if (!str_cmp( cmd_table[cmd].name, "inventory" )) found = TRUE;
		else if (!str_cmp( cmd_table[cmd].name, "who" )) found = TRUE;
		else if (!str_cmp( cmd_table[cmd].name, "where" )) found = TRUE;
		else if (!str_cmp( cmd_table[cmd].name, "relevel" )) found = TRUE;
		else if (!str_cmp( cmd_table[cmd].name, "safe" )) found = TRUE;
		else if (!str_cmp( cmd_table[cmd].name, "scan" )) found = TRUE;
		else if (!str_cmp( cmd_table[cmd].name, "spy"  )) found = TRUE;
		else if (!str_cmp( cmd_table[cmd].name, "shadowsight" )) found = TRUE;
		else if (!str_cmp( cmd_table[cmd].name, "vclan" )) found = TRUE;
		else if (!str_cmp( cmd_table[cmd].name, "upkeep" )) found = TRUE;
		else if (!str_cmp( cmd_table[cmd].name, "score" )) found = TRUE;
		else if (!str_cmp( cmd_table[cmd].name, "immune" )) found = TRUE;
                else if (!str_cmp( cmd_table[cmd].name, "clandisc" ))
found = TRUE;
                else {
                    send_to_char( "Not while in the ground.\n\r", ch );
		    return; }
	    }
            else if (ch->embracing!=NULL
                  || ch->embraced!=NULL)
	    {
		if      (!str_cmp( cmd_table[cmd].name, "say"  )) found = TRUE;
		else if (!str_cmp( cmd_table[cmd].name, "'"    )) found = TRUE;
		else if (!str_cmp( cmd_table[cmd].name, "chat" )) found = TRUE;
		else if (!str_cmp( cmd_table[cmd].name, "."    )) found = TRUE;
		else if (!str_cmp( cmd_table[cmd].name, "look" )) found = TRUE;
		else if (!str_cmp( cmd_table[cmd].name, "inventory" )) found = TRUE;
		else if (!str_cmp( cmd_table[cmd].name, "who" )) found = TRUE;
		else if (!str_cmp( cmd_table[cmd].name, "relevel" )) found = TRUE;
		else if (!str_cmp( cmd_table[cmd].name, "score" )) found = TRUE;
		else if (!str_cmp( cmd_table[cmd].name, "report" )) found = TRUE;
		else if (!str_cmp( cmd_table[cmd].name, "goto" )) found = TRUE;
		else if (!str_cmp( cmd_table[cmd].name, "kill" )) found = TRUE;
		else if (!str_cmp( cmd_table[cmd].name, "berserk" )) found = TRUE;
		else if (!str_cmp( cmd_table[cmd].name, "testemb" )) found = TRUE;
		else if (!str_cmp( cmd_table[cmd].name, "reboot" )) found = TRUE;
		else if (!str_cmp( cmd_table[cmd].name, "save" )) found = TRUE;
                else if (!str_cmp(cmd_table[cmd].name,"diablerize") && ch->embracing !=NULL) found=TRUE;
                else if(!str_cmp(cmd_table[cmd].name,"restore"))found=TRUE;
		else {
                    send_to_char( "Not while in an embrace.\n\r", ch );
		    return; }
	    }

            else if (IS_EXTRA(ch,TIED_UP) )
	    {
		if      (!str_cmp( cmd_table[cmd].name, "say"  )) found = TRUE;
		else if (!str_cmp( cmd_table[cmd].name, "'"    )) found = TRUE;
		else if (!str_cmp( cmd_table[cmd].name, "chat" )) found = TRUE;
		else if (!str_cmp( cmd_table[cmd].name, "."    )) found = TRUE;
		else if (!str_cmp( cmd_table[cmd].name, "yell" )) found = TRUE;
		else if (!str_cmp( cmd_table[cmd].name, "shout")) found = TRUE;
		else if (!str_cmp( cmd_table[cmd].name, "look" )) found = TRUE;
                else if (!str_cmp( cmd_table[cmd].name, "call" )) found = TRUE; 
		else if (!str_cmp( cmd_table[cmd].name, "save" )) found = TRUE;
		else if (!str_cmp( cmd_table[cmd].name, "exits")) found = TRUE;
		else if (!str_cmp( cmd_table[cmd].name, "inventory" )) found = TRUE;
		else if (!str_cmp( cmd_table[cmd].name, "tell" )) found = TRUE;
		else if (!str_cmp( cmd_table[cmd].name, "restore" )) found = TRUE;
		else if (!str_cmp( cmd_table[cmd].name, "order" )) found = TRUE;
		else if (!str_cmp( cmd_table[cmd].name, "who" )) found = TRUE;
		else if (!str_cmp( cmd_table[cmd].name, "where" )) found = TRUE;
		else if (!str_cmp( cmd_table[cmd].name, "introduce" )) found = TRUE;
		else if (!str_cmp( cmd_table[cmd].name, "relevel" )) found = TRUE;
		else if (!str_cmp( cmd_table[cmd].name, "safe" )) found = TRUE;
		else if (!str_cmp( cmd_table[cmd].name, "scan" )) found = TRUE;
		else if (!str_cmp( cmd_table[cmd].name, "spy"  )) found = TRUE;
		else if (!str_cmp( cmd_table[cmd].name, "darkness" )) found = TRUE;
		else if (!str_cmp( cmd_table[cmd].name, "sleep" )) found = TRUE;
		else if (!str_cmp( cmd_table[cmd].name, "wake" )) found = TRUE;
		else if (!str_cmp( cmd_table[cmd].name, "fangs" )) found = TRUE;
		else if (!str_cmp( cmd_table[cmd].name, "claws" )) found = TRUE;
		else if (!str_cmp( cmd_table[cmd].name, "nightsight" )) found = TRUE;
		else if (!str_cmp( cmd_table[cmd].name, "shadowsight" )) found = TRUE;
		else if (!str_cmp( cmd_table[cmd].name, "shadowplane" )) found = TRUE;
		else if (!str_cmp( cmd_table[cmd].name, "regenerate" )) found = TRUE;
		else if (!str_cmp( cmd_table[cmd].name, "shield" )) found = TRUE;
		else if (!str_cmp( cmd_table[cmd].name, "vclan" )) found = TRUE;
		else if (!str_cmp( cmd_table[cmd].name, "upkeep" )) found = TRUE;
		else if (!str_cmp( cmd_table[cmd].name, "score" )) found = TRUE;
		else if (!str_cmp( cmd_table[cmd].name, "immune" )) found = TRUE;
		else if (!str_cmp( cmd_table[cmd].name, "consent" )) found = TRUE;
		else if (!str_cmp( cmd_table[cmd].name, "report" )) found = TRUE;
		else if (!str_cmp( cmd_table[cmd].name, "goto" )) found = TRUE;
		else if (!str_cmp( cmd_table[cmd].name, "flex" )) found = TRUE;
		else if (!str_cmp( cmd_table[cmd].name, "change" )) found = TRUE;
		else if (!str_cmp( cmd_table[cmd].name, "drink" )) found = TRUE;
		else {
		    send_to_char( "Not while tied up.\n\r", ch );
		    if (ch->position > POS_STUNNED)
		    	act("$n strains against $s bonds.",ch,NULL,NULL,TO_ROOM);
		    return; }
	    }
	    found = TRUE;
	    break;
	}
    }

    /*
     * Log and snoop.
     */
    if ( cmd_table[cmd].log == LOG_NEVER )
	strcpy( logline, "XXXXXXXX XXXXXXXX XXXXXXXX" );
    if ( ( !IS_NPC(ch) && IS_SET(ch->act, PLR_LOG) )
    ||   fLogAll
    ||   cmd_table[cmd].log == LOG_ALWAYS )
    {
	if (!IS_CREATOR(ch) && !IS_NPC(ch))
	{
	sprintf( log_buf, "Log %s: %s", ch->pcdata->switchname, logline );
	//wiznet( ch, WIZ_COMMANDS, get_trust(ch), log_buf );
	log_string( log_buf );
	}
    }

    if ( ch->desc != NULL && ch->desc->snoop_by != NULL )
    {
	write_to_buffer( ch->desc->snoop_by, "% ",    2 );
	write_to_buffer( ch->desc->snoop_by, logline, 0 );
	write_to_buffer( ch->desc->snoop_by, "\n\r",  2 );
    }

    if ( ch != NULL && ch->unveil != NULL )
    {
	unveil = ch->unveil;
         if ( unveil->in_room != NULL) {
	if ( unveil->in_room->vnum != ch->in_room->vnum )
	{
	  sprintf(buf, "You lose your mental link with %s.\n\r",ch->name);
	  stc(buf,unveil);
	}
	else
	{
	  stc("% ", unveil);
	  stc(logline, unveil);
	  stc("\n\r", unveil);
	}}
	else ch->unveil = NULL;
    }

       if (ch->desc != NULL)
       write_to_buffer(ch->desc,"\n\r",2);	
    if ( !found )
    {
	/*
	 * Look for command in socials table.
	 */
	if ( !check_social( ch, command, argument ) )
	{
	    if ( !check_xsocial( ch, command, argument ) )
		do_rand_typo(ch,"");
	}
	return;
    }
    else /* a normal valid command.. check if it is disabled */
      if (check_disabled (&cmd_table[cmd]))
      {
              send_to_char ("This command has been temporarily disabled.\n\r", ch );
             return;
      }
	 if ( IS_AFF2(ch, PLR_IMPLAG ) )
		 {
		 WAIT_STATE(ch, 20*PULSE_VIOLENCE);
		 }

    /*
     * Character not in position for command?
     */
    if ( ch->position < cmd_table[cmd].position )
    {
	switch( ch->position )
	{

	case POS_DEAD:
	    send_to_char( "Lie still; you are DEAD.\n\r", ch );
	    break;

	case POS_MORTAL:
	case POS_INCAP:
	{
            send_to_char( "You are hurt far too bad for that.\n\r", ch );
	    break;
	}
	case POS_STUNNED:
	{
	    send_to_char( "You are too stunned to do that.\n\r", ch );
	    break;
	}
	case POS_SLEEPING:
	    send_to_char( "In your dreams, or what?\n\r", ch );
	    break;

	case POS_MEDITATING:
	case POS_SITTING:
	case POS_RESTING:
	    send_to_char( "Nah... You feel too relaxed...\n\r", ch);
	    break;

	case POS_FIGHTING:
	    send_to_char( "No way!  You are still fighting!\n\r", ch);
	    break;

	}
	return;
    }

    /*
     * Dispatch the command.
     */

    if (last_command != NULL) free_string(last_command);
    sprintf(log_buf, "%s %s BY %s", cmd_table[cmd].name,argument,ch->name); 
    last_command = str_dup(log_buf);

  cmd_done = FALSE;
    (*cmd_table[cmd].do_fun) ( ch, argument );
  cmd_done = TRUE;

  tail_chain( );
  return;
}



bool check_social( CHAR_DATA *ch, char *command, char *argument )
{
    char arg[MAX_STRING_LENGTH];
    CHAR_DATA *victim;
    int cmd;
    bool found;

    found  = FALSE;
    for ( cmd = 0; social_table[cmd].name[0] != '\0'; cmd++ )
    {
	if ( command[0] == social_table[cmd].name[0]
	&&   !str_prefix( command, social_table[cmd].name ) )
	{
	    found = TRUE;
	    break;
	}
    }


    if ( !found )
	return FALSE;

    switch ( ch->position )
    {

    case POS_DEAD:
	send_to_char( "Lie still; you are DEAD.\n\r", ch );
	return TRUE;

    case POS_INCAP:
    case POS_MORTAL:
	send_to_char( "You are hurt far too bad for that.\n\r", ch );
	return TRUE;

    case POS_STUNNED:
	send_to_char( "You are too stunned to do that.\n\r", ch );
	return TRUE;

    case POS_SLEEPING:
	/*
	 * I just know this is the path to a 12" 'if' statement.  :(
	 * But two players asked for it already!  -- Furey
	 */
	if ( !str_cmp( social_table[cmd].name, "snore" ) )
	    break;
	send_to_char( "In your dreams, or what?\n\r", ch );
	return TRUE;

    }

    one_argument( argument, arg );
    victim = NULL;

    if ( arg[0] == '\0' )
    {
	act( social_table[cmd].others_no_arg, ch, NULL, victim, TO_ROOM    );
	act( social_table[cmd].char_no_arg,   ch, NULL, victim, TO_CHAR    );
    }
    else if ( ( victim = get_char_room( ch, arg ) ) == NULL )
    {
	send_to_char( "They aren't here.\n\r", ch );
    }
    else if ( victim == ch )
    {
	act( social_table[cmd].others_auto,   ch, NULL, victim, TO_ROOM    );
	act( social_table[cmd].char_auto,     ch, NULL, victim, TO_CHAR    );
    }
    else
    {
	act( social_table[cmd].others_found,  ch, NULL, victim, TO_NOTVICT );
	act( social_table[cmd].char_found,    ch, NULL, victim, TO_CHAR    );
	act( social_table[cmd].vict_found,    ch, NULL, victim, TO_VICT    );

	if ( !IS_NPC(ch) && IS_NPC(victim)
	&&   !IS_AFFECTED(victim, AFF_CHARM)
	&&   IS_AWAKE(victim) )
	{
	    switch ( number_bits( 4 ) )
	    {
	    case 0:
		multi_hit( victim, ch, TYPE_UNDEFINED );
		break;

	    case 1: case 2: case 3: case 4:
	    case 5: case 6: case 7: case 8:
		act( social_table[cmd].others_found,
		    victim, NULL, ch, TO_NOTVICT );
		act( social_table[cmd].char_found,
		    victim, NULL, ch, TO_CHAR    );
		act( social_table[cmd].vict_found,
		    victim, NULL, ch, TO_VICT    );
		break;

	    case 9: case 10: case 11: case 12:
		act( "$n slaps $N.",  victim, NULL, ch, TO_NOTVICT );
		act( "You slap $N.",  victim, NULL, ch, TO_CHAR    );
		act( "$n slaps you.", victim, NULL, ch, TO_VICT    );
		break;
	    }
	}
    }
    return TRUE;
}



bool check_xsocial( CHAR_DATA *ch, char *command, char *argument )
{
    char arg[MAX_STRING_LENGTH];
    CHAR_DATA *victim;
    CHAR_DATA *partner = NULL;
    int cmd;
    int stage;
    int amount;
    bool is_ok = FALSE;
    bool found = FALSE;
    bool one = FALSE;
    bool two = FALSE;

    if (IS_NPC(ch)) return FALSE;

    for ( cmd = 0; xsocial_table[cmd].name[0] != '\0'; cmd++ )
    {
	if ( command[0] == xsocial_table[cmd].name[0]
	&&   !str_prefix( command, xsocial_table[cmd].name ) )
	{
	    found = TRUE;
	    break;
	}
    }

    if ( !found )
	return FALSE;

    switch ( ch->position )
    {

    case POS_DEAD:
	send_to_char( "Lie still; you are DEAD.\n\r", ch );
	return TRUE;

    case POS_INCAP:
    case POS_MORTAL:
	send_to_char( "You are hurt far too bad for that.\n\r", ch );
	return TRUE;

    case POS_STUNNED:
	send_to_char( "You are too stunned to do that.\n\r", ch );
	return TRUE;

    case POS_SLEEPING:
	send_to_char( "In your dreams, or what?\n\r", ch );
	return TRUE;

    }

    one_argument( argument, arg );
    victim = NULL;

    if ( ( victim = get_char_room( ch, arg ) ) == NULL )
    {
	send_to_char( "They aren't here.\n\r", ch );
	return TRUE;
    }
    if (IS_NPC(victim))
    {
	send_to_char("You can only perform xsocials on players.\n\r",ch);
	return TRUE;
    }

	if( !str_cmp(ch->pcdata->switchname, "") )
	{
		victim->pcdata->partner = ch;
	}
  else if (IS_SET(victim->extra, TIED_UP))
         { victim->pcdata->partner = ch;
         }

    
	if (IS_EXTRA(ch, TIED_UP))
    {
	send_to_char("You wiggle and strain but the ropes only tighten.\n\r",ch);
        act("$n strains helplessly against $m bonds.",ch,NULL,NULL,TO_ROOM);
	return FALSE;
    }
    else if ( arg[0] == '\0' )
    {
	act( xsocial_table[cmd].others_no_arg, ch, NULL, victim, TO_ROOM    );
	act( xsocial_table[cmd].char_no_arg,   ch, NULL, victim, TO_CHAR    );
    }
    else if ( victim == ch )
    {
	act( xsocial_table[cmd].others_auto,   ch, NULL, victim, TO_ROOM );
	act( xsocial_table[cmd].char_auto,     ch, NULL, victim, TO_CHAR );
    }
    else
    {
	if (xsocial_table[cmd].gender == SEX_MALE && ch->sex != SEX_MALE)
	{
	    send_to_char("Only men can perform this type of social.\n\r",ch);
	}
	else if (xsocial_table[cmd].gender == SEX_FEMALE && ch->sex != SEX_FEMALE)
	{
	    send_to_char("Only women can perform this type of social.\n\r",ch);
	}
	else if (xsocial_table[cmd].gender == SEX_MALE && victim->sex != SEX_FEMALE)
	{
	    send_to_char("You can only perform this social on a woman.\n\r",ch);
	}
	else if (xsocial_table[cmd].gender == SEX_FEMALE && victim->sex != SEX_MALE)
	{
	    send_to_char("You can only perform this social on a man.\n\r",ch);
	}
	else if (xsocial_table[cmd].gender == 3 && ch->sex != SEX_FEMALE)
	{
		stc( "Only females may preform this command.\n\r",ch);
	}
	else if (xsocial_table[cmd].gender == 3 && victim->sex != SEX_FEMALE)
	{
		stc( "You can only preform this command on a female.\n\r",ch);
	}
	else if (((partner = victim->pcdata->partner) == NULL || partner != ch))
  	{
         	stc("You cannot perform an xsocial on someone without their consent.\n\r",ch);
	 }
	else if (xsocial_table[cmd].stage == 0 && ch->pcdata->stage[0] < 1
	    && ch->pcdata->stage[2] > 0 && ch->sex == 5)
	    send_to_char("You have not yet recovered from last time!\n\r",ch);
	else if (xsocial_table[cmd].stage == 0 && victim->pcdata->stage[0] < 1
	    && victim->pcdata->stage[2] > 0 && victim->sex == 5)
	    send_to_char("They have not yet recovered from last time!\n\r",ch);
	else if (xsocial_table[cmd].stage > 0 && ch->pcdata->stage[0] < 100)
	    send_to_char("You are not sufficiently aroused.\n\r",ch);
	else if (xsocial_table[cmd].stage > 0 && victim->pcdata->stage[0] < 100)
	    send_to_char("They are not sufficiently aroused.\n\r",ch);
	else if (xsocial_table[cmd].stage > 1 && ch->pcdata->stage[1] < 1)
	    send_to_char("You are not in the right position.\n\r",ch);
	else if (xsocial_table[cmd].stage > 1 && victim->pcdata->stage[1] < 1)
	    send_to_char("They are not in the right position.\n\r",ch);
	else
	{
	    act(xsocial_table[cmd].others_found,  ch, NULL, victim, TO_NOTVICT);
	    act(xsocial_table[cmd].char_found,    ch, NULL, victim, TO_CHAR   );
	    act(xsocial_table[cmd].vict_found,    ch, NULL, victim, TO_VICT   );
	    if (xsocial_table[cmd].chance)
	    {
		if (ch->sex == SEX_FEMALE && 
		    !IS_EXTRA(ch, EXTRA_PREGNANT) && number_range(1,3) == 1) 
		make_preg(ch,victim);
		else if (victim->sex == SEX_FEMALE && 
		    !IS_EXTRA(victim, EXTRA_PREGNANT) && 
		    number_range(1,3) == 1) 
		make_preg(victim,ch);
	    }
	    if (!str_prefix(xsocial_table[cmd].name,"x-tie"))
	    {
		SET_BIT(victim->extra, TIED_UP);
	    }
	    if (!str_prefix(xsocial_table[cmd].name,"x-gag"))
	    {
		SET_BIT(victim->extra, GAGGED);
	    }
	    if (!str_prefix(xsocial_table[cmd].name,"x-blindfold"))
	    {
		SET_BIT(victim->extra, BLINDFOLDED);
	    }
	    if (xsocial_table[cmd].stage == 1)
	    {
		ch->pcdata->stage[1] = xsocial_table[cmd].position;
		victim->pcdata->stage[1] = xsocial_table[cmd].position;
		if (!IS_SET(ch->extra, EXTRA_DONE))
		{
		    SET_BIT(ch->extra, EXTRA_DONE);
		    if (ch->sex == SEX_FEMALE)
		    {
			act("You feel $n bleed as you enter $m.",ch,NULL,victim,TO_VICT);
			act("You feel yourself bleed as $N enters you.",ch,NULL,victim,TO_CHAR);
			ch->in_room->blood += 1;
		    }
		}
		if (!IS_SET(victim->extra, EXTRA_DONE))
		{
		    SET_BIT(victim->extra, EXTRA_DONE);
		    if (victim->sex == SEX_FEMALE)
		    {
			act("You feel $N bleed as you enter $M.",ch,NULL,victim,TO_CHAR);
			act("You feel yourself bleed as $n enters you.",ch,NULL,victim,TO_VICT);
			ch->in_room->blood += 1;
		    }
		}
		stage = 2;
	    }
	    else stage = xsocial_table[cmd].stage;
	    if (stage == 2) amount = ch->pcdata->stage[1];
		else amount = 100;
	    if (xsocial_table[cmd].self > 0)
	    {
		is_ok = FALSE;
		if (ch->pcdata->stage[stage] >= amount) is_ok = TRUE;
		ch->pcdata->stage[stage] += xsocial_table[cmd].self;
		if (!is_ok && ch->pcdata->stage[stage] >= amount) 
		{
		    stage_update(ch,victim,stage,xsocial_table[cmd].name);
		    one = TRUE;
		}
	    }
	    if (xsocial_table[cmd].other > 0)
	    {
		is_ok = FALSE;
		if (victim->pcdata->stage[stage] >= amount) is_ok = TRUE;
		victim->pcdata->stage[stage] += xsocial_table[cmd].other;
		if (!is_ok && victim->pcdata->stage[stage] >= amount) 
		{
		    stage_update(victim,ch,stage,xsocial_table[cmd].name);
		    two = TRUE;
		}
	    }
	    if ( one && two )
	    {
		    ch->pcdata->stage[0] = 0;
		    victim->pcdata->stage[0] = 0;
		if (!IS_EXTRA(ch, EXTRA_EXP))
		{
		    send_to_char("Congratulations on achieving a simultanious orgasm!  Recieve 100000 exp!\n\r",ch);
		    SET_BIT(ch->extra, EXTRA_EXP);
		    ch->exp += 100000;
		}
		if (!IS_EXTRA(victim, EXTRA_EXP))
		{
		    send_to_char("Congratulations on achieving a simultanious orgasm!  Recieve 100000 exp!\n\r",victim);
		    SET_BIT(victim->extra, EXTRA_EXP);
		    victim->exp += 100000;
		}
	    }
	}
    }
    return TRUE;
}

void stage_update( CHAR_DATA *ch, CHAR_DATA *victim, int stage,char *argument )
{
    if (IS_NPC(ch) || IS_NPC(victim)) return;
    if (stage == 0)
    {
	if (ch->sex == SEX_MALE)
	{
	    send_to_char("You get a boner.\n\r",ch);
	    act("You feel $n get a boner.",ch,NULL,victim,TO_VICT);
	    return;
	}
	else if (ch->sex == SEX_FEMALE)
	{
	    send_to_char("You get wet.\n\r",ch);
	    act("You feel $n get wet.",ch,NULL,victim,TO_VICT);
	    return;
	}
    }
    else if (stage == 2)
    {
	if (ch->sex == SEX_MALE)
	{
	    if( str_cmp(argument,"xm-cum")   && str_cmp(argument,"xm-facial") && str_cmp(argument,"xm-canal") &&
		str_cmp(argument,"xm-canal") && str_cmp(argument,"xm-cbreasts") && str_cmp(argument,"xm-chair") &&
		str_cmp(argument,"xm-chand") && str_cmp(argument,"xm-cstomach") && str_cmp(argument,"xf-chands") &&
		str_cmp(argument,"xf-cbreasts") )
	    {
		act("You grit your teeth as you shoot your creamy load inside of $M.",ch,NULL,victim,TO_CHAR);
		act("$n grits his teeth as he shoots his load inside of you.",ch,NULL,victim,TO_VICT);
		act("$n grits his teeth as he shoots a load of cum inside of $N.",ch,NULL,victim,TO_NOTVICT);
	    }
	    ch->pcdata->genes[8] += 1;
	    victim->pcdata->genes[8] += 1;
	    save_char_obj(ch);
	    save_char_obj(victim);
	    if (victim->pcdata->stage[2] < 1 || victim->pcdata->stage[2] >= 250)
	    {
		ch->pcdata->stage[2] = 0;
		if (ch->pcdata->stage[0] >= 200) ch->pcdata->stage[0] -= 100;
	    }
	    else ch->pcdata->stage[2] = 200;
	    if (victim->sex == SEX_FEMALE && 
		!IS_EXTRA(victim, EXTRA_PREGNANT) && number_percent() <= 8) 
	    make_preg(victim,ch);
	    return;
	}
	else if (ch->sex == SEX_FEMALE)
	{
	    if( str_cmp(argument,"xf-cum") && str_cmp(argument,"xf-cface") )
	    {
		act("You whimper as you cum.",ch,NULL,victim,TO_CHAR);
		act("$n whimpers as $e cums.",ch,NULL,victim,TO_ROOM);
	    }
	    if (victim->pcdata->stage[2] < 1 || victim->pcdata->stage[2] >= 250)
	    {
		ch->pcdata->stage[2] = 0;
		if (ch->pcdata->stage[0] >= 200) ch->pcdata->stage[0] -= 100;
	    }
	    else ch->pcdata->stage[2] = 200;
	    return;
	}
    }
    return;
}

void make_preg( CHAR_DATA *mother, CHAR_DATA *father )
{
    char *strtime;
    char buf [MAX_STRING_LENGTH];

    if (IS_NPC(mother) || IS_NPC(father)) return;

    if (IS_SET(mother->affected_by2, AFF_CONTRACEPTION)) return;

  strtime = ctime( &current_time );
    strtime[strlen(strtime)-1] = '\0';
    free_string(mother->pcdata->conception);
    mother->pcdata->conception = str_dup(strtime);
    sprintf(buf,"%s", father->name);
    free_string(mother->pcdata->cparents);
    mother->pcdata->cparents = str_dup(buf);
    SET_BIT(mother->extra, EXTRA_PREGNANT);
    mother->pcdata->genes[0] = (mother->max_hit + father->max_hit) * 0.5;
    mother->pcdata->genes[1] = (mother->max_mana + father->max_mana) * 0.5;
    mother->pcdata->genes[2] = (mother->max_move + father->max_move) * 0.5;
    if (IS_IMMUNE(mother, IMM_SLASH) && IS_IMMUNE(father, IMM_SLASH))
	SET_BIT(mother->pcdata->genes[3], IMM_SLASH);
    if (IS_IMMUNE(mother, IMM_STAB) && IS_IMMUNE(father, IMM_STAB))
	SET_BIT(mother->pcdata->genes[3], IMM_STAB);
    if (IS_IMMUNE(mother, IMM_SMASH) && IS_IMMUNE(father, IMM_SMASH))
	SET_BIT(mother->pcdata->genes[3], IMM_SMASH);
    if (IS_IMMUNE(mother, IMM_ANIMAL) && IS_IMMUNE(father, IMM_ANIMAL))
	SET_BIT(mother->pcdata->genes[3], IMM_ANIMAL);
    if (IS_IMMUNE(mother, IMM_MISC) && IS_IMMUNE(father, IMM_MISC))
	SET_BIT(mother->pcdata->genes[3], IMM_MISC);
    if (IS_IMMUNE(mother, IMM_CHARM) && IS_IMMUNE(father, IMM_CHARM))
	SET_BIT(mother->pcdata->genes[3], IMM_CHARM);
    if (IS_IMMUNE(mother, IMM_HEAT) && IS_IMMUNE(father, IMM_HEAT))
	SET_BIT(mother->pcdata->genes[3], IMM_HEAT);
    if (IS_IMMUNE(mother, IMM_COLD) && IS_IMMUNE(father, IMM_COLD))
	SET_BIT(mother->pcdata->genes[3], IMM_COLD);
    if (IS_IMMUNE(mother, IMM_LIGHTNING) && IS_IMMUNE(father, IMM_LIGHTNING))
	SET_BIT(mother->pcdata->genes[3], IMM_LIGHTNING);
    if (IS_IMMUNE(mother, IMM_ACID) && IS_IMMUNE(father, IMM_ACID))
	SET_BIT(mother->pcdata->genes[3], IMM_ACID);
    if (IS_IMMUNE(mother, IMM_VOODOO) && IS_IMMUNE(father, IMM_VOODOO))
	SET_BIT(mother->pcdata->genes[3], IMM_VOODOO);
    if (IS_IMMUNE(mother, IMM_HURL) && IS_IMMUNE(father, IMM_HURL))
	SET_BIT(mother->pcdata->genes[3], IMM_HURL);
    if (IS_IMMUNE(mother, IMM_BACKSTAB) && IS_IMMUNE(father, IMM_BACKSTAB))
	SET_BIT(mother->pcdata->genes[3], IMM_BACKSTAB);
    if (IS_IMMUNE(mother, IMM_KICK) && IS_IMMUNE(father, IMM_KICK))
	SET_BIT(mother->pcdata->genes[3], IMM_KICK);
    if (IS_IMMUNE(mother, IMM_DISARM) && IS_IMMUNE(father, IMM_DISARM))
	SET_BIT(mother->pcdata->genes[3], IMM_DISARM);
    if (IS_IMMUNE(mother, IMM_STEAL) && IS_IMMUNE(father, IMM_STEAL))
	SET_BIT(mother->pcdata->genes[3], IMM_STEAL);
    if (IS_IMMUNE(mother, IMM_SLEEP) && IS_IMMUNE(father, IMM_SLEEP))
	SET_BIT(mother->pcdata->genes[3], IMM_SLEEP);
    if (IS_IMMUNE(mother, IMM_DRAIN) && IS_IMMUNE(father, IMM_DRAIN))
	SET_BIT(mother->pcdata->genes[3], IMM_DRAIN);
    mother->pcdata->genes[4] = number_range(1,2);
    return;
}

/*
 * Return true if an argument is completely numeric.
 */
bool is_number( char *arg )
{
    if ( *arg == '\0' )
	return FALSE;

    for ( ; *arg != '\0'; arg++ )
    {
	if ( !isdigit(*arg) )
	    return FALSE;
    }

    return TRUE;
}



/*
 * Given a string like 14.foo, return 14 and 'foo'
 */
int number_argument( char *argument, char *arg )
{
    char *pdot;
    int number;
    
    for ( pdot = argument; *pdot != '\0'; pdot++ )
    {
	if ( *pdot == '.' )
	{
	    *pdot = '\0';
	    number = atoi( argument );
	    *pdot = '.';
	    strcpy( arg, pdot+1 );
	    return number;
	}
    }

    strcpy( arg, argument );
    return 1;
}



/*
 * Pick off one argument from a string and return the rest.
 * Understands quotes.
 */
char *one_argument( char *argument, char *arg_first )
{
    char cEnd;

    while ( isspace(*argument) )
	argument++;

    cEnd = ' ';
    if ( *argument == '\'' || *argument == '"' )
	cEnd = *argument++;

    while ( *argument != '\0' )
    {
	if ( *argument == cEnd )
	{
	    argument++;
	    break;
	}
	*arg_first = LOWER(*argument);
	arg_first++;
	argument++;
    }
    *arg_first = '\0';

    while ( isspace(*argument) )
	argument++;

    return argument;
}

/* Syntax is:
disable - shows disabled commands
disable <command> - toggles disable status of command
*/

void do_disable (CHAR_DATA *ch, char *argument)
{
	int i;
	DISABLED_DATA *p,*q;
	char buf[100];
	
	if (IS_NPC(ch))
	{
		send_to_char ("RETURN first.\n\r",ch);
		return;
	}
	
	if (!argument[0]) /* Nothing specified. Show disabled commands. */
	{
		if (!disabled_first) /* Any disabled at all ? */
		{
			send_to_char ("There are no commands disabled.\n\r",ch);
			return;
		}

		send_to_char ("Disabled commands:\n\r"
		              "Command      Level   Disabled by\n\r",ch);
		                
		for (p = disabled_first; p; p = p->next)
		{
			sprintf (buf, "%-12s %5d   %-12s\n\r",p->command->name, p->level, p->disabled_by);
			send_to_char (buf,ch);
		}
		return;
	}
	
	/* command given */

	/* First check if it is one of the disabled commands */
	for (p = disabled_first; p ; p = p->next)
		if (!str_cmp(argument, p->command->name))
			break;
			
	if (p) /* this command is disabled */
	{
	/* Optional: The level of the imm to enable the command must equal or exceed level
	   of the one that disabled it */
	
		if (get_trust(ch) < p->level)
		{
			send_to_char ("This command was disabled by a higher power.\n\r",ch);
			return;
		}
		
		/* Remove */
		
		if (disabled_first == p) /* node to be removed == head ? */
			disabled_first = p->next;
		else /* Find the node before this one */
		{
			for (q = disabled_first; q->next != p; q = q->next); /* empty for */
			q->next = p->next;
		}
		
		free_string (p->disabled_by); /* free name of disabler */
		free_mem (p,sizeof(DISABLED_DATA)); /* free node */
		
		save_disabled(); /* save to disk */
		send_to_char ("Command enabled.\n\r",ch);
	}
	else /* not a disabled command, check if that command exists */
	{
		/* IQ test */
		if (!str_cmp(argument,"disable"))
		{
			send_to_char ("You cannot disable the disable command.\n\r",ch);
			return;
		}

		/* Search for the command */
		for (i = 0; cmd_table[i].name[0] != '\0'; i++)
			if (!str_cmp(cmd_table[i].name, argument))
				break;

		/* Found? */				
		if (cmd_table[i].name[0] == '\0')
		{
			send_to_char ("No such command.\n\r",ch);
			return;
		}

		/* Can the imm use this command at all ? */				
		if (cmd_table[i].level > get_trust(ch))
		{
			send_to_char ("You dot have access to that command; you cannot disable it.\n\r",ch);
			return;
		}
		
		/* Disable the command */
		
		p = alloc_mem (sizeof(DISABLED_DATA));

		p->command = &cmd_table[i];
		p->disabled_by = str_dup (ch->pcdata->switchname); /* save name of disabler */
		p->level = get_trust(ch); /* save trust */
		p->next = disabled_first;
		disabled_first = p; /* add before the current first element */
		
		send_to_char ("Command disabled.\n\r",ch);
		save_disabled(); /* save to disk */
	}
}

/* Check if that command is disabled 
   Note that we check for equivalence of the do_fun pointers; this means
   that disabling 'chat' will also disable the '.' command
*/   
bool check_disabled (const struct cmd_type *command)
{
	DISABLED_DATA *p;
	
	for (p = disabled_first; p ; p = p->next)
		if (p->command->do_fun == command->do_fun)
			return TRUE;

	return FALSE;
}

/* Load disabled commands */
void load_disabled()
{
	FILE *fp;
	DISABLED_DATA *p;
	char *name;
	int i;
	
	disabled_first = NULL;
	
	fp = fopen (DISABLED_FILE, "r");
	
	if (!fp) /* No disabled file.. no disabled commands : */
		return;
		
	name = fread_word (fp);
	
	while (str_cmp(name, END_MARKER)) /* as long as name is NOT END_MARKER :) */
	{
		/* Find the command in the table */
		for (i = 0; cmd_table[i].name[0] ; i++)
			if (!str_cmp(cmd_table[i].name, name))
				break;
				
		if (!cmd_table[i].name[0]) /* command does not exist? */
		{
			bug ("Skipping uknown command in " DISABLED_FILE " file.",0);
			fread_number(fp); /* level */
			fread_word(fp); /* disabled_by */
		}
		else /* add new disabled command */
		{
			p = alloc_mem(sizeof(DISABLED_DATA));
			p->command = &cmd_table[i];
			p->level = fread_number(fp);
			p->disabled_by = str_dup(fread_word(fp)); 
			p->next = disabled_first;
			
			disabled_first = p;

		}
		
		name = fread_word(fp);
	}

	fclose (fp);		
}

/* Save disabled commands */
void save_disabled()
{
	FILE *fp;
	DISABLED_DATA *p;
	
	if (!disabled_first) /* delete file if no commands are disabled */
	{
		unlink (DISABLED_FILE);
		return;
	}
	
	fp = fopen (DISABLED_FILE, "w");
	
	if (!fp)
	{
		bug ("Could not open " DISABLED_FILE " for writing",0);
		return;
	}
	
	for (p = disabled_first; p ; p = p->next)
		fprintf (fp, "%s %d %s\n", p->command->name, p->level, p->disabled_by);
		
	fprintf (fp, "%s\n",END_MARKER);
		
	fclose (fp);
}

const char *typo_table [25] =                                                   
{                                                                               
        "My tummy feels funny.",                                                
        "Stop POKING ME!",                                                      
        "ARRRRGGHH!!!",                                                         
        "What!",                                                                
        "Yes?",                                                                 
        "I'll do it when I get around to it.",                                  
        "Yes Sire.",                                                            
        "What was that..Jerky?",                                           
        "Use BOTH hands when you type.",                                           
        "I'd rather be sailing!",                                               
        "Aye Aye captain.",                                                     
        "Skipper.",                                                             
        "Negative Sir, Try again.",                                                             
        "Stop rocking the boat...",                                             
        "Your making me seasick...",                                            
        "*bleeauccch*",                                                         
        "Even elder races get tired of waiting.",                               
        "Time is of the essence.",                                              
       "You never touch the other elves that way.",                            
        "Wha?  Wha?",                                                      
        "System Checklist Initiated -",                                         
        "Running Level 1 Diagnostic -",                                         
        "USDA Approved -",                                                      
        "FDIC Insured -",                                                       
        "You want it done when?!?!?",                                           
};                                                                              
                                                                                
void do_rand_typo(CHAR_DATA *ch, char *argument)  
{                             
        char buf[MAX_STRING_LENGTH];                                            
        int number;                                                             
                                                                                
        number = number_range(0,25);                                            
                                                                                
        sprintf(buf, "#g%s#n\n\r", typo_table[number]);                         
        send_to_char(buf, ch);                                                  
        return;                                                                 
}