FlCodebase3.1/
FlCodebase3.1/bounty/
FlCodebase3.1/challenge/
FlCodebase3.1/clans/
FlCodebase3.1/gods/
FlCodebase3.1/mobprogs/
FlCodebase3.1/player/
FlCodebase3.1/savemud/
/***************************************************************************
 *  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 Envy Diku Mud, you must comply with   *
 *  the original Diku license in 'license.doc', the Merc license in        *
 *  'license.txt', as well as the Envy license in 'license.nvy'.           *
 *  In particular, you may not remove either of these copyright notices.   *
 *                                                                         *
 *  Much time and thought has gone into this software and you are          *
 *  benefitting.  We hope that you share your changes too.  What goes      *
 *  around, comes around.                                                  * 
 *                                                                         *
 *      ROM 2.4 is copyright 1993-1998 Russ Taylor                         *
 *      ROM has been brought to you by the ROM consortium                  *
 *          Russ Taylor (rtaylor@hypercube.org)                            *
 *          Gabrielle Taylor (gtaylor@hypercube.org)                       *
 *          Brian Moore (zump@rom.org)                                     *
 *      By using this code, you have agreed to follow the terms of the     *
 *      ROM license, in the file Rom24/doc/rom.license                     *
 *                                                                         *
 * Code Adapted and Improved by Abandoned Realms Mud                       *
 * and Aabahran: The Forsaken Lands Mud by Virigoth                        *
 *                                                                         *
 * Continued Production of this code is available at www.flcodebase.com    *
 ***************************************************************************/
#include <sys/types.h>
#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include "merc.h"
#include "interp.h"
#include "alias.h"

char    last_command[MSL];

extern		int              nAllocString;
extern		int              sAllocString;
extern		int		 top_oprog_index;
extern		int		 top_rprog_index;
extern		bool		sec_check(CHAR_DATA* ch);
extern void dreamprobe_cast( CHAR_DATA* victim, char* msg );
int                     nAllocPerm;
int                     sAllocPerm;

#define LOG_NORMAL	0
#define LOG_ALWAYS	1
#define LOG_NEVER	2

bool				fLogAll		= FALSE;
bool				fLogLoop	= FALSE;

const	struct	cmd_type	cmd_table	[] =
{
/* (log) = when/how the command is logged
   show = is this shown on "commands"
   mob = what mobs can do
   charm = what players can do while charmed
   order = what players can order charmed people to do
   hide = what strips hide
   sneak = what strips sneak
   camo = what strips camoflauge
   shadow = what strips shadowform
   quiet = what strips quiet movement
   switch = things you can do switched
   panther = things mind linked mobs can do
   morph = things a morphed vampire can do
   meditate = things that you can do while meditating
   0 is false (you can't do this..  this doesn't strip affects)
   1 is true (you can do this..  this does strip affects)
   for numbers: (log), (show)      mob, charm, order, hide, sneak, camo, shadow, quiet, switch, panther, morph, meditate*/
    /* Common movement commands. */
    { "north",          do_north,          POS_STANDING,    0,  LOG_NEVER, 0,  1,1,1,0,0,0,0,0,1,1,1 },
    { "east",           do_east,           POS_STANDING,    0,  LOG_NEVER, 0,  1,1,1,0,0,0,0,0,1,1,1 },
    { "south",          do_south,          POS_STANDING,    0,  LOG_NEVER, 0,  1,1,1,0,0,0,0,0,1,1,1 },
    { "west",           do_west,           POS_STANDING,    0,  LOG_NEVER, 0,  1,1,1,0,0,0,0,0,1,1,1 },
    { "up",             do_up,             POS_STANDING,    0,  LOG_NEVER, 0,  1,1,1,0,0,0,0,0,1,1,1 },
    { "down",           do_down,           POS_STANDING,    0,  LOG_NEVER, 0,  1,1,1,0,0,0,0,0,1,1,1 },
    /* Other common commands placed here so abbreviations work. */
    { "at",             do_at,             POS_DEAD,       L6,  LOG_NORMAL, 1, 1,1,1,0,0,0,0,0,0,0,0 },
    { "cast",           do_cast,           POS_FIGHTING,    0,  LOG_NORMAL, 1, 1,0,0,1,0,1,0,0,0,0,1 },
    { "commune",        do_commune,        POS_FIGHTING,    0,  LOG_NORMAL, 1, 1,0,0,1,0,1,0,0,0,0,1 },
    { "cancel",         do_cancel,         POS_FIGHTING,    0,  LOG_NORMAL, 1, 1,0,0,1,0,1,0,0,0,0,1 },

    { "sing",           do_sing,           POS_FIGHTING,    0,  LOG_NORMAL, 1, 1,0,0,1,0,1,0,0,0,0,1 },
    
    { "buy",            do_buy,            POS_RESTING,     0,  LOG_NORMAL, 1, 0,0,0,1,0,1,0,0,0,0,1 },
    { "channels",       do_channels,       POS_DEAD,        0,  LOG_NORMAL, 1, 0,0,0,0,0,0,0,0,0,0,0 },
    { "exits",          do_exits,          POS_RESTING,     0,  LOG_NORMAL, 1, 1,1,1,0,0,0,0,0,1,1,1 },
    { "get",            do_get,            POS_RESTING,     0,  LOG_NORMAL, 1, 1,1,1,1,0,1,0,0,1,1,1 },
    { "goto",           do_goto,           POS_DEAD,       L8,  LOG_NORMAL, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "beckon",         do_beckon,         POS_MEDITATE,    0,  LOG_NORMAL, 1, 1,0,0,1,0,1,0,0,0,0,1 },
    { "group",          do_group,          POS_MEDITATE,    0,  LOG_NORMAL, 1, 1,1,1,0,0,0,0,0,1,1,0 },
    { "look",           do_look,           POS_RESTING,     0,  LOG_NORMAL, 1, 1,1,1,0,0,0,0,0,1,1,1 },
    { "cabal",          do_cabal,          POS_DEAD,        0,  LOG_NORMAL, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "hit",            do_kill,           POS_FIGHTING,    0,  LOG_NORMAL, 1, 1,1,1,0,0,0,0,0,1,1,1 },
    { "inventory",      do_inventory,      POS_DEAD,        0,  LOG_NORMAL, 1, 1,1,1,0,0,0,0,0,1,1,0 },
    { "sheathe",        do_sheath,	   POS_RESTING ,    0,  LOG_NORMAL, 1, 1,1,1,0,0,0,0,0,1,1,0 },
    { "draw",		do_draw,	   POS_FIGHTING,    0,  LOG_NORMAL, 1, 1,1,1,0,0,0,0,0,1,1,0 },
    { "clan",           do_clan,	   POS_DEAD,        0,  LOG_ALWAYS, 1, 1,0,0,0,0,0,0,0,0,0,1 },
    { "kill",           do_kill,           POS_FIGHTING,    0,  LOG_NORMAL, 1, 1,1,1,0,0,0,0,0,1,1,1 },
    { "cb",             do_cabaltalk,      POS_MEDITATE,    0,  LOG_NORMAL, 1, 1,1,1,1,0,1,0,0,0,1,1 },
    { "coup",           do_coup,           POS_SLEEPING,    0,  LOG_NORMAL, 1, 0,1,1,0,0,0,0,0,0,1,0 },
    { "cabal",          do_cabaltalk,      POS_MEDITATE,    0,  LOG_NORMAL, 1, 1,1,1,1,0,1,0,0,0,1,1 },
    { "cc",		do_clantalk,       POS_MEDITATE,    0,  LOG_NORMAL, 1, 0,1,1,1,0,1,0,0,0,1,1 },
    { "newbiechat",     do_newbiechat,     POS_DEAD,        0,  LOG_NORMAL, 1, 0,0,1,1,0,1,0,0,0,1,0 },
    { "order",          do_order,          POS_RESTING,     0,  LOG_NORMAL, 1, 0,0,0,1,0,1,1,0,0,1,1 },
    { "practice",       do_practice,       POS_SLEEPING,    0,  LOG_NORMAL, 1, 0,1,0,0,0,0,0,0,0,1,1 },
    { "psalms",		do_psalm,       POS_SLEEPING,    0,  LOG_NORMAL, 1, 0,1,0,0,0,0,0,0,0,1,1 },
    { "rest",           do_rest,           POS_MEDITATE,    0,  LOG_NORMAL, 1, 1,1,1,0,0,0,0,0,1,1,0 },
    { "rehearse",       do_rehearse,       POS_SLEEPING,    0,  LOG_NORMAL, 1, 0,1,0,0,0,0,0,0,0,1,1 },
    { "sit",            do_sit,            POS_MEDITATE,    0,  LOG_NORMAL, 1, 1,1,1,0,0,0,0,0,1,1,0 },
    { "sockets",        do_sockets,        POS_DEAD,       L5,  LOG_NORMAL, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "matchip",        do_matchip,        POS_DEAD,       L8,  LOG_NORMAL, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "stand",          do_stand,          POS_MEDITATE,    0,  LOG_NORMAL, 1, 1,1,1,0,0,0,0,0,1,1,1 },
    { "tell",           do_tell,           POS_RESTING,     0,  LOG_NORMAL, 1, 1,1,1,1,0,1,0,0,0,1,1 },
    { "telepathy",      do_telepathy,      POS_RESTING,     0,  LOG_NORMAL, 1, 1,1,1,1,0,1,0,0,0,1,1 },
    { "unlock",         do_unlock,         POS_RESTING,     0,  LOG_NORMAL, 1, 1,1,1,1,0,1,0,0,0,1,1 },
    { "wield",          do_wear,           POS_RESTING,     0,  LOG_NORMAL, 1, 1,1,0,1,0,1,0,0,0,0,1 },
    { "wizhelp",        do_wizhelp,        POS_DEAD,       IM,  LOG_NORMAL, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "for",            do_for,            POS_DEAD,       L8,  LOG_ALWAYS, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    /* Informational commands. */
    { "affects",        do_affects,        POS_DEAD,        0,  LOG_NORMAL, 1, 1,1,1,0,0,0,0,0,1,1,0 },
    { "areas",          do_areas,          POS_DEAD,        0,  LOG_NORMAL, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "bug",            do_bug,            POS_DEAD,        0,  LOG_NORMAL, 1, 1,1,0,0,0,0,0,0,0,1,0 },
    { "changes",        do_changes,        POS_DEAD,        0,  LOG_NORMAL, 1, 0,1,0,0,0,0,0,0,0,1,0 },
    { "commands",       do_commands,       POS_DEAD,        0,  LOG_NORMAL, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "compare",        do_compare,        POS_RESTING,     0,  LOG_NORMAL, 1, 1,1,1,0,0,0,0,0,0,1,1 },
    { "consider",       do_consider,       POS_RESTING,     0,  LOG_NORMAL, 1, 1,1,1,1,0,1,1,0,1,1,1 },
    { "conceal",        do_conceal,        POS_STANDING,    0,  LOG_NORMAL, 1, 0, 0,0,0,0,0,0,0,0,0,0 },
    { "abduct",         do_abduction,      POS_STANDING,    0,  LOG_NORMAL, 1, 0, 0,0,0,0,0,0,0,0,0,0 },
    { "unseen",         do_unseen,         POS_STANDING,    0,  LOG_NORMAL, 1, 0, 0,0,0,0,0,0,0,1,1,1 },
    { "analyze",        do_analyze,        POS_RESTING,     0,  LOG_NORMAL, 1, 1,1,1,1,0,1,1,0,1,1,1 },
    { "count",          do_count,          POS_DEAD,	      0,  LOG_NORMAL, 1, 0,1,1,0,0,0,0,0,0,1,0 },
    { "equipment",      do_equipment,      POS_DEAD,        0,  LOG_NORMAL, 1, 1,1,1,0,0,0,0,0,1,1,0 },
    { "examine",        do_examine,        POS_RESTING,     0,  LOG_NORMAL, 1, 1,1,1,1,0,0,0,0,1,1,1 },
    { "help",           do_help,           POS_DEAD,        0,  LOG_NORMAL, 1, 1,1,1,0,0,0,0,0,1,1,0 },
    { "imotd",          do_imotd,          POS_DEAD,        IM, LOG_NORMAL, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "motd",           do_motd,           POS_DEAD,        0,  LOG_NORMAL, 1, 0,1,1,0,0,0,0,0,0,1,0 },
    { "mob",            do_mob,           POS_DEAD,        ML,  LOG_NORMAL, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "obj",            do_obj,           POS_DEAD,        ML,  LOG_NORMAL, 1, 0,1,1,0,0,0,0,0,0,1,0 },
    { "room",           do_room,           POS_DEAD,        ML,  LOG_NORMAL, 1, 0,1,1,0,0,0,0,0,0,1,0 },
    { "news",           do_news,           POS_DEAD,        0,  LOG_NORMAL, 1, 0,1,0,0,0,0,0,0,0,1,0 },
    { "read",           do_look,           POS_RESTING,     0,  LOG_NORMAL, 1, 1,1,1,0,0,0,0,0,1,1,1 },
    { "report",         do_report,         POS_RESTING,     0,  LOG_NORMAL, 1, 1,1,1,1,0,1,0,0,1,1,1 },
    { "score",          do_score,          POS_DEAD,        0,  LOG_NORMAL, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "skills",         do_skills,         POS_DEAD,        0,  LOG_NORMAL, 1, 0,1,1,0,0,0,0,0,0,1,0 },
    { "socials",        do_socials,        POS_DEAD,        0,  LOG_NORMAL, 1, 1,1,1,0,0,0,0,0,1,1,0 },
    { "show",           do_show,           POS_DEAD,        0,  LOG_NORMAL, 1, 0,1,1,0,0,0,0,0,0,1,0 },
    { "spells",         do_spells,         POS_DEAD,        0,  LOG_NORMAL, 1, 0,1,1,0,0,0,0,0,0,1,0 },
    { "memorize",       do_memorize,       POS_DEAD,        0,  LOG_NORMAL, 1, 0,1,1,0,0,0,0,0,0,1,0 },
    { "forget",         do_forget,       POS_DEAD,        0,  LOG_NORMAL, 1, 0,1,1,0,0,0,0,0,0,1,0 },
    { "songs",          do_songs,          POS_DEAD,        0,  LOG_NORMAL, 1, 0,1,1,0,0,0,0,0,0,1,0 },
    { "time",           do_time,           POS_DEAD,        0,  LOG_NORMAL, 1, 1,1,1,0,0,0,0,0,1,1,0 },
    { "typo",           do_typo,           POS_DEAD,        0,  LOG_NORMAL, 1, 0,1,0,0,0,0,0,0,0,1,0 },
    { "weather",        do_weather,        POS_RESTING,     0,  LOG_NORMAL, 1, 1,1,1,0,0,0,0,0,1,1,1 },
    { "who",            do_who,            POS_DEAD,        0,  LOG_NORMAL, 1, 0,1,1,0,0,0,0,0,0,1,0 },
    { "whois",          do_whois,          POS_DEAD,        0,  LOG_NORMAL, 1, 0,1,1,0,0,0,0,0,0,1,0 },
    { "whios",          do_whois,          POS_DEAD,        0,  LOG_NORMAL, 1, 0,1,1,0,0,0,0,0,0,1,0 },
    { "bio",            do_bio,            POS_DEAD,        0,  LOG_NORMAL, 1, 0,1,1,0,0,0,0,0,0,1,0 },
    { "info",           do_bio,            POS_DEAD,        0,  LOG_NORMAL, 1, 0,1,1,0,0,0,0,0,0,1,0 },
    { "wizlist",        do_wizlist,        POS_DEAD,        0,  LOG_NORMAL, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "worth",          do_worth,          POS_DEAD,        0,  LOG_NORMAL, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "reputation",     do_reputation,     POS_DEAD,        0,  LOG_NORMAL, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "religion",       do_deity,          POS_DEAD,        0,  LOG_NORMAL, 1, 0,1,1,0,0,0,0,0,0,1,0 },
    { "accept",         do_accept,          POS_DEAD,        0,  LOG_NORMAL, 1, 0,1,1,0,0,0,0,0,0,1,0 },
    /* Configuration commands. */
    { "autolist",       do_autolist,       POS_DEAD,        0,  LOG_NORMAL, 1, 0,1,0,0,0,0,0,0,0,1,0 },
    { "autoshow",       do_show,           POS_DEAD,        0,  LOG_NORMAL, 1, 0,1,1,0,0,0,0,0,0,1,0 },
    { "autoscore",      do_autoscore,      POS_DEAD,        0,  LOG_NORMAL, 1, 0,1,1,0,0,0,0,0,0,1,0 },
    { "autoassist",     do_autoassist,     POS_DEAD,        0,  LOG_NORMAL, 1, 0,1,0,0,0,0,0,0,0,1,0 },
    { "autoaim",        do_autoaim,        POS_DEAD,        0,  LOG_NORMAL, 1, 0,1,0,0,0,0,0,0,0,1,0 },
    { "autocabal",      do_autocabal,      POS_DEAD,        0,  LOG_NORMAL, 1, 0,1,0,0,0,0,0,0,0,1,0 },
    { "autoequip",      do_autoequip,      POS_DEAD,        0,  LOG_NORMAL, 1, 0,1,0,0,0,0,0,0,0,1,0 },
    { "autoexp",        do_autoexp,        POS_DEAD,        0,  LOG_NORMAL, 1, 0,1,0,0,0,0,0,0,0,1,0 },
    { "autoalias",      do_autoalias,        POS_DEAD,        0,  LOG_NORMAL, 1, 0,1,0,0,0,0,0,0,0,1,0 },
    { "autosex", 	do_autosex,	   POS_DEAD,	    0,  LOG_NORMAL, 1, 0,1,0,0,0,0,0,0,0,1,0 },
    { "autosheath", 	do_autosheath,	   POS_DEAD,	    0,  LOG_NORMAL, 1, 0,1,0,0,0,0,0,0,0,1,0 },
    { "autoexit",       do_autoexit,       POS_DEAD,        0,  LOG_NORMAL, 1, 0,1,0,0,0,0,0,0,0,1,0 },
    { "autogold",       do_autogold,       POS_DEAD,        0,  LOG_NORMAL, 1, 0,1,0,0,0,0,0,0,0,1,0 },
    { "autoloot",       do_autoloot,       POS_DEAD,        0,  LOG_NORMAL, 1, 0,1,0,0,0,0,0,0,0,1,0 },
    { "autosac",        do_autosac,        POS_DEAD,        0,  LOG_NORMAL, 1, 0,1,0,0,0,0,0,0,0,1,0 },
    { "autosplit",      do_autosplit,      POS_DEAD,        0,  LOG_NORMAL, 1, 0,1,0,0,0,0,0,0,0,1,0 },
    { "autofire",       do_autofire,       POS_DEAD,        0,  LOG_NORMAL, 1, 0,1,0,0,0,0,0,0,0,1,0 },
    { "mercy",		do_mercy,	   POS_DEAD,	    0,  LOG_NORMAL, 1, 0,1,0,0,0,0,0,0,0,1,0 },
    { "brief",          do_brief,          POS_DEAD,        0,  LOG_NORMAL, 1, 1,1,0,0,0,0,0,0,0,1,0 },
    { "compact",        do_compact,        POS_DEAD,        0,  LOG_NORMAL, 1, 1,1,0,0,0,0,0,0,0,1,0 },
    { "description",    do_description,    POS_DEAD,        0,  LOG_NORMAL, 1, 0,1,0,0,0,0,0,0,0,0,0 },
    { "delet",          do_delet,          POS_DEAD,        0,  LOG_ALWAYS, 0, 0,1,0,0,0,0,0,0,0,0,0 },
    { "delete",         do_delete,         POS_STANDING,    0,  LOG_ALWAYS, 1, 0,1,0,0,0,0,0,0,0,0,1 },
    { "nofollow",       do_nofollow,       POS_DEAD,        0,  LOG_NORMAL, 1, 1,0,0,0,0,0,0,0,0,1,0 },
    { "nosummon",       do_nosummon,       POS_DEAD,        0,  LOG_NORMAL, 1, 0,1,0,0,0,0,0,0,0,1,0 },
    { "outfit",         do_outfit,         POS_RESTING,     0,  LOG_NORMAL, 1, 0,1,0,0,0,0,0,0,0,0,1 },
    { "password",       do_password,       POS_DEAD,        0,  LOG_NEVER,  1, 0,1,0,0,0,0,0,0,0,1,0 },
    { "delpassword",    do_delpass,    POS_DEAD,        0,  LOG_NEVER,  1, 0,1,0,0,0,0,0,0,0,1,0 },
    { "prompt",         do_prompt,         POS_DEAD,        0,  LOG_NORMAL, 1, 1,1,0,0,0,0,0,0,0,1,0 },
    { "scroll",         do_scroll,         POS_DEAD,        0,  LOG_NORMAL, 1, 1,1,0,0,0,0,0,0,1,1,0 },
    { "wimpy",          do_wimpy,          POS_DEAD,        0,  LOG_NORMAL, 1, 1,1,0,0,0,0,0,0,0,1,0 },
    /* Communication commands. */
    { "afk",            do_afk,            POS_SLEEPING,   L2,  LOG_NORMAL, 1, 0,1,1,0,0,0,0,0,0,1,0 },
    { "deaf",           do_deaf,           POS_DEAD,        0,  LOG_NORMAL, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "act",            do_act,            POS_SLEEPING,     0,  LOG_NORMAL, 1, 1,1,1,1,0,0,0,0,0,1,1 },
    { "emote",          do_emote,          POS_RESTING,     0,  LOG_NORMAL, 1, 1,1,1,1,0,0,0,0,0,1,1 },
    { "pmote",          do_pmote,          POS_RESTING,     0,  LOG_NORMAL, 1, 1,1,1,1,0,0,0,0,0,1,1 },
    { "gtell",          do_gtell,          POS_DEAD,        0,  LOG_NORMAL, 1, 1,1,1,1,0,1,0,0,0,1,0 },
    { ";",              do_gtell,          POS_DEAD,        0,  LOG_NORMAL, 0, 1,1,1,1,0,1,0,0,0,1,0 },
    { "idea",           do_idea,           POS_DEAD,        0,  LOG_NORMAL, 1, 0,1,0,0,0,0,0,0,0,1,0 },
    { "application",    do_application,    POS_DEAD,        0,  LOG_NORMAL, 1, 0,1,0,0,0,0,0,0,0,1,0 },
    { "note",           do_note,           POS_SLEEPING,    0,  LOG_NORMAL, 1, 0,1,0,0,0,0,0,0,0,1,0 },
    { "print",         do_print,     POS_SLEEPING,    0,  LOG_NORMAL, 1, 0,1,0,0,0,0,0,0,0,1,0 },
    { "scribe",         do_write_tome,     POS_SLEEPING,    0,  LOG_NORMAL, 1, 0,1,0,0,0,0,0,0,0,1,0 },
    { "tome",           do_read_tome,      POS_SLEEPING,    0,  LOG_NORMAL, 1, 0,1,0,0,0,0,0,0,0,1,0 },
    { "approve",        do_approve,        POS_SLEEPING,    L8,  LOG_NORMAL, 1, 0,1,0,0,0,0,0,0,0,1,0 },
    { "reject",          do_reject,        POS_SLEEPING,    L8,  LOG_NORMAL, 1, 0,1,0,0,0,0,0,0,0,1,0 },
    { "quest",          do_quest,	   POS_DEAD,        0,  LOG_NORMAL, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "forfeit",        do_forfeit,	   POS_DEAD,        0,  LOG_NORMAL, 1, 0,1,1,1,0,1,0,0,0,1,0 },
    { "quiet",          do_quiet,          POS_DEAD,        0,  LOG_NORMAL, 1, 1,1,0,0,0,0,0,0,0,1,0 },
    { "ignore",         do_ignore,         POS_DEAD,        0,  LOG_NORMAL, 1, 0,1,0,0,0,0,0,0,0,1,0 },
    { "reply",          do_reply,          POS_SLEEPING,    0,  LOG_NORMAL, 1, 1,1,1,1,0,1,0,0,0,1,1 },
    { "replay",         do_replay,         POS_SLEEPING,    0,  LOG_NORMAL, 1, 1,1,1,0,0,0,0,0,0,1,1 },
    { "say",            do_say,            POS_RESTING,     0,  LOG_NORMAL, 1, 1,1,1,1,0,1,0,0,0,1,1 },
    { "'",              do_say,            POS_RESTING,     0,  LOG_NORMAL, 0, 1,1,1,1,0,1,0,0,0,1,1 },
    { "unread",         do_unread,         POS_DEAD,        0,  LOG_NORMAL, 1, 0,1,0,0,0,0,0,0,0,1,0 },
    { "yell",           do_yell,           POS_RESTING,     0,  LOG_NORMAL, 1, 1,1,1,1,0,1,0,0,0,1,1 },
    /* Object manipulation commands. */
    { "brandish",       do_brandish,       POS_FIGHTING,     0,  LOG_NORMAL, 1, 1,1,1,1,0,1,0,0,0,0,1 },
    { "brandweapon",   do_brand_weapon,    POS_RESTING,     0,  LOG_NORMAL, 1, 1,1,1,1,0,1,0,0,0,0,1 },
    { "close",          do_close,          POS_RESTING,     0,  LOG_NORMAL, 1, 1,1,1,1,0,1,0,0,1,1,1 },
    { "drink",          do_drink,          POS_RESTING,     0,  LOG_NORMAL, 1, 1,1,1,1,0,1,0,0,1,1,1 },
    { "drop",           do_drop,           POS_RESTING,     0,  LOG_NORMAL, 1, 1,1,1,1,0,1,0,0,1,1,1 },
    { "eat",            do_eat,            POS_RESTING,     0,  LOG_NORMAL, 1, 1,1,1,1,0,1,0,0,1,1,1 },
    { "smoke",          do_smoke,          POS_RESTING,     0,  LOG_NORMAL, 1, 0,1,1,1,0,1,0,0,1,1,1 },
    { "envenom",        do_envenom,        POS_STANDING,     0,  LOG_NORMAL, 0, 1,1,0,0,0,0,0,0,0,0,1 },
    { "fill",           do_fill,           POS_RESTING,     0,  LOG_NORMAL, 1, 1,1,1,1,0,1,0,0,0,0,1 },
    { "preserve",       do_preserve,	   POS_RESTING,     0,  LOG_NORMAL, 1, 1,1,1,1,0,1,0,0,0,0,1 },
    { "give",           do_give,           POS_RESTING,     0,  LOG_NORMAL, 1, 1,1,1,1,0,1,0,0,1,1,1 },
    { "heal",           do_heal,           POS_RESTING,     0,  LOG_NORMAL, 1, 0,1,0,1,0,1,0,0,0,1,1 },
    { "service",        do_heal,           POS_RESTING,     0,  LOG_NORMAL, 1, 0,1,0,1,0,1,0,0,0,1,1 },
    { "hold",           do_wear,           POS_RESTING,     0,  LOG_NORMAL, 1, 1,1,0,1,0,1,0,0,0,0,1 },
    { "list",           do_list,           POS_RESTING,     0,  LOG_NORMAL, 1, 0,1,1,1,0,1,0,0,0,0,1 },
    { "browse",         do_browse,         POS_RESTING,     0,  LOG_NORMAL, 1, 0,1,1,1,0,1,0,0,0,0,1 },
    { "lock",           do_lock,           POS_RESTING,     0,  LOG_NORMAL, 1, 1,1,1,1,0,1,0,0,0,1,1 },
    { "open",           do_open,           POS_RESTING,     0,  LOG_NORMAL, 1, 1,1,1,1,0,1,0,0,1,1,1 },
    { "pick",           do_pick,           POS_RESTING,     0,  LOG_NORMAL, 1, 1,1,0,1,0,1,0,0,0,0,1 },
    { "defuse",         do_defuse,         POS_RESTING,     0,  LOG_NORMAL, 1, 1,1,0,1,0,1,0,0,0,0,1 },
    { "pour",           do_pour,           POS_RESTING,     0,  LOG_NORMAL, 1, 1,1,1,1,0,1,0,0,0,0,1 },
    { "put",            do_put,            POS_RESTING,     0,  LOG_NORMAL, 1, 1,1,1,1,0,1,0,0,1,1,1 },
    { "quaff",          do_quaff,          POS_RESTING,     0,  LOG_NORMAL, 1, 1,1,0,1,0,1,0,0,0,1,1 },
    { "recite",         do_recite,         POS_RESTING,     0,  LOG_NORMAL, 1, 1,0,0,1,0,1,0,0,0,0,1 },
    { "remove",         do_remove,         POS_RESTING,     0,  LOG_NORMAL, 1, 1,1,1,1,0,1,0,0,1,0,1 },
    { "sell",           do_sell,           POS_RESTING,     0,  LOG_NORMAL, 1, 0,1,1,1,0,1,0,0,0,0,1 },
    { "take",           do_get,            POS_RESTING,     0,  LOG_NORMAL, 1, 1,1,1,1,0,1,0,0,1,1,1 },
    { "sacrifice",      do_sacrifice,      POS_RESTING,     0,  LOG_NORMAL, 1, 1,1,1,1,0,1,0,0,1,1,1 },
    { "value",          do_value,          POS_RESTING,     0,  LOG_NORMAL, 1, 0,1,1,1,0,1,0,0,0,0,1 },
    { "wear",           do_wear,           POS_RESTING,     0,  LOG_NORMAL, 1, 1,1,0,1,0,1,0,0,0,0,1 },
    { "zap",            do_zap,            POS_FIGHTING,     0,  LOG_NORMAL, 1, 1,0,1,1,0,1,0,0,0,0,1 },
    { "use",            do_use,            POS_FIGHTING,     0,  LOG_NORMAL, 1, 1,0,1,1,0,1,0,0,0,0,1 },
    /* Combat commands. */
    { "backstab",       do_backstab,       POS_FIGHTING,    0,  LOG_NORMAL, 0, 1,1,0,1,0,1,0,0,0,0,1 },
    { "bash",           do_bash,           POS_FIGHTING,    0,  LOG_NORMAL, 0, 1,1,0,1,0,1,0,0,0,0,1 },
    { "critical",       do_critical,       POS_FIGHTING,    0,  LOG_NORMAL, 0, 1,1,0,1,0,1,0,0,0,0,1 },
    { "boulder",        do_boulder_throw,  POS_FIGHTING,    0,  LOG_NORMAL, 0, 1,1,0,1,0,1,0,0,0,0,1 },
    { "batter",         do_batter,         POS_FIGHTING,    0,  LOG_NORMAL, 0, 1,1,0,1,0,1,0,0,0,0,1 },
    { "rush",           do_armored_rush,   POS_FIGHTING,    0,  LOG_NORMAL, 0, 1,1,0,1,0,1,0,0,0,0,1 },
    { "execute",        do_forms,	  POS_FIGHTING,    0,  LOG_NORMAL, 0, 1,1,0,1,0,1,0,0,0,0,1 },
    { "bs",             do_backstab,       POS_FIGHTING,    0,  LOG_NORMAL, 0, 1,1,0,1,0,1,0,0,0,0,1 },
    { "berserk",        do_berserk,        POS_FIGHTING,    0,  LOG_NORMAL, 0, 1,1,0,1,0,1,0,0,0,0,1 },
    { "dirt",           do_dirt,           POS_FIGHTING,    0,  LOG_NORMAL, 0, 1,1,0,1,0,1,0,0,0,0,1 },
    { "corrupt",        do_corrupt,        POS_FIGHTING,    0,  LOG_NORMAL, 0, 1,1,0,1,0,1,0,0,0,0,1 },
    { "dreamwalk",      do_dreamwalk,      POS_FIGHTING,    0,  LOG_NORMAL, 0, 1,1,0,1,0,1,0,0,0,0,1 },
    { "lifedrain",      do_lifedrain,      POS_FIGHTING,    0,  LOG_NORMAL, 0, 1,1,0,1,0,1,0,0,0,0,1 },
    { "mold",		do_mold,	   POS_STANDING,    0,  LOG_NORMAL, 0, 1,1,0,1,0,1,0,0,0,0,1 },
    { "feign",          do_feign,          POS_FIGHTING,    0,  LOG_NORMAL, 0, 1,1,0,1,0,1,0,0,0,0,1 },
    { "focusedbash",    do_focused_bash,   POS_FIGHTING,    0,  LOG_NORMAL, 0, 1,1,0,1,0,1,0,0,0,0,1 },
    { "maul",           do_mantis_maul,    POS_FIGHTING,    0,  LOG_NORMAL, 0, 1,1,0,1,0,1,0,0,0,0,1 },
    { "fury",           do_fury,	   POS_FIGHTING,    0,  LOG_NORMAL, 0, 1,1,0,1,0,1,0,0,0,0,1 },
    { "disarm",         do_disarm,         POS_FIGHTING,    0,  LOG_NORMAL, 0, 1,1,0,1,0,1,0,0,0,0,1 },
    { "weaponcleave",   do_weapon_cleave,  POS_FIGHTING,    0,  LOG_NORMAL, 0, 1,1,0,1,0,1,0,0,0,0,1 },
    { "weaponlock",     do_weapon_lock,    POS_FIGHTING,    0,  LOG_NORMAL, 0, 1,1,0,1,0,1,0,0,0,0,1 },
    { "shieldcleave",   do_shield_cleave,  POS_FIGHTING,    0,  LOG_NORMAL, 0, 1,1,0,1,0,1,0,0,0,0,1 },
    { "shieldbash",     do_shield_bash,  POS_FIGHTING,    0,  LOG_NORMAL, 0, 1,1,0,1,0,1,0,0,0,0,1 },
    { "flee",           do_flee,           POS_FIGHTING,    0,  LOG_NORMAL, 1, 1,0,1,1,0,1,0,0,1,1,1 },
    { "kick",           do_kick,           POS_FIGHTING,    0,  LOG_NORMAL, 0, 1,1,0,1,0,1,0,0,0,0,1 },
    { "onslaught",      do_onslaught,      POS_FIGHTING,    0,  LOG_NORMAL, 0, 1,1,0,1,0,1,0,0,0,0,1 },
    { "shoulder",       do_shoulder_smash, POS_FIGHTING,    0,  LOG_NORMAL, 0, 1,1,0,1,0,1,0,0,0,0,1 },
    { "armorpierce",    do_armorpierce,	   POS_FIGHTING,    0,  LOG_NORMAL, 0, 1,1,0,1,0,1,0,0,0,0,1 },
    { "pommelsmash",    do_pommel_smash,   POS_FIGHTING,    0,  LOG_NORMAL, 0, 1,1,0,1,0,1,0,0,0,0,1 },
    { "murde",          do_murde,          POS_FIGHTING,    0,  LOG_NORMAL, 0, 1,1,1,1,0,1,0,0,0,1,1 },
    { "murder",         do_murder,         POS_FIGHTING,    5,  LOG_NORMAL, 1, 1,1,1,1,0,1,0,0,0,1,1 },
    { "rescue",         do_rescue,         POS_FIGHTING,    0,  LOG_NORMAL, 0, 1,1,1,1,0,1,0,0,1,1,1 },
    { "trip",           do_trip,           POS_FIGHTING,    0,  LOG_NORMAL, 0, 1,1,0,1,0,1,0,0,0,0,1 },
    { "cutter",         do_cutter,         POS_FIGHTING,    0,  LOG_NORMAL, 0, 1,1,0,1,0,1,0,0,0,0,1 },
    { "pilfer",         do_pilfer,         POS_FIGHTING,    0,  LOG_NORMAL, 0, 1,1,0,0,0,0,0,0,0,0,1 },
    { "push",           do_push,           POS_FIGHTING,    0,  LOG_NORMAL, 0, 1,1,0,0,0,0,0,0,0,0,1 },
    /* Miscellaneous commands. */
    { "bounty",         do_bounty,         POS_DEAD,        0,  LOG_NORMAL, 0, 1,1,0,0,0,0,0,0,0,0,1 },
    { "bounties",       do_top10,          POS_DEAD,        0,  LOG_NORMAL, 0, 1,1,0,0,0,0,0,0,0,0,1 },
    { "top10",		do_top10,          POS_DEAD,        0,  LOG_NORMAL, 0, 1,1,0,0,0,0,0,0,0,0,1 },
    { "hunt",           do_hunt,           POS_STANDING,    0,  LOG_NORMAL, 1, 1,0,0,0,0,0,0,0,0,1,1 },
    { "track",          do_track,          POS_STANDING,    0,  LOG_NORMAL, 1, 1,0,0,0,0,0,0,0,0,1,1 },
    { "pack",           do_pack_call,      POS_STANDING,    0,  LOG_NORMAL, 1, 1,0,0,0,0,0,0,0,0,1,1 },
    { "rapid",          do_rapid_fire,     POS_STANDING,    0,  LOG_NORMAL, 1, 1,0,0,0,0,0,0,0,0,1,1 },
    { "follow",         do_follow,         POS_RESTING,     0,  LOG_NORMAL, 1, 1,0,0,0,0,0,0,0,0,1,1 },
    { "gain",           do_gain,           POS_STANDING,    0,  LOG_NORMAL, 1, 0,1,0,0,0,0,0,0,0,1,1 },
    { "hide",           do_hide,           POS_STANDING,    0,  LOG_NORMAL, 0, 1,0,0,0,0,1,0,0,0,1,1 },
    { "qui",            do_qui,            POS_DEAD,        0,  LOG_NORMAL, 0, 0,0,0,0,0,0,0,0,0,1,1 },
    { "quit",           do_quit,           POS_DEAD,        0,  LOG_NORMAL, 0, 0,0,0,0,0,0,0,0,0,1,1 },
    { "recall",         do_recall,         POS_FIGHTING,    0,  LOG_NORMAL, 1, 0,1,0,1,0,1,0,0,0,1,1 },
    { "/",              do_recall,         POS_FIGHTING,    0,  LOG_NORMAL, 0, 0,1,0,1,0,1,0,0,0,1,1 },
    { "save",           do_save,           POS_DEAD,        0,  LOG_NORMAL, 1, 0,1,0,0,0,0,0,0,0,1,0 },
    { "meditate",       do_meditate,       POS_RESTING,     0,  LOG_NORMAL, 1, 0,0,0,0,0,0,0,0,0,0,0 },
    { "sleep",          do_sleep,          POS_MEDITATE,    0,  LOG_NORMAL, 1, 1,1,1,0,0,0,1,0,1,1,1 },
    { "sneak",          do_sneak,          POS_STANDING,    0,  LOG_NORMAL, 0, 1,1,0,0,0,0,0,0,0,1,1 },
    { "disguise",       do_disguise,       POS_STANDING,    0,  LOG_NORMAL, 0, 1,1,0,0,0,0,0,0,0,1,1 },
    { "study",          do_study,          POS_STANDING,    0,  LOG_NORMAL, 0, 1,1,0,0,0,0,0,0,0,1,1 },
    { "split",          do_split,          POS_RESTING,     0,  LOG_NORMAL, 1, 1,1,1,0,0,0,0,0,0,1,1 },
    { "approach",       do_approach,       POS_STANDING,    0,  LOG_NORMAL, 0, 1,0,0,1,0,1,0,0,0,0,1 },
    { "traps",          do_traps,          POS_STANDING,    0,  LOG_NORMAL, 0, 1,0,0,0,0,1,0,0,0,0,1 },
    { "steal",          do_steal,          POS_STANDING,    0,  LOG_NORMAL, 0, 1,0,0,0,0,1,0,0,0,0,1 },
    { "plant",          do_plant,          POS_STANDING,    0,  LOG_NORMAL, 0, 1,0,0,1,1,1,0,0,0,0,1 },
    { "pry",            do_pry,            POS_STANDING,    0,  LOG_NORMAL, 0, 1,0,0,1,1,1,0,0,0,0,1 },
    { "train",          do_train,          POS_RESTING,     0,  LOG_NORMAL, 1, 0,1,0,1,0,1,1,0,0,1,1 },
    { "visible",        do_visible,        POS_SLEEPING,    0,  LOG_NORMAL, 1, 1,1,1,0,0,0,0,0,1,1,1 },
    { "revert",         do_revert,         POS_SLEEPING,    0,  LOG_NORMAL, 1, 1,1,1,0,0,0,0,0,0,1,1 },
    { "wake",           do_wake,           POS_SLEEPING,    0,  LOG_NORMAL, 1, 1,1,1,0,0,0,0,0,1,1,1 },
    { "where",          do_where,          POS_RESTING,     0,  LOG_NORMAL, 1, 1,1,1,0,0,0,0,0,1,1,1 },
    { "law",		do_law,		   POS_RESTING,     0,  LOG_NORMAL, 1, 1,1,1,0,0,0,0,0,1,1,1 },
    { "crimes",		do_crimes,	   POS_RESTING,     0,  LOG_NORMAL, 1, 1,1,1,0,0,0,0,0,1,1,1 },
    { "surrender",	do_surrender,	   POS_RESTING,     0,  LOG_NORMAL, 1, 1,1,1,0,0,0,0,0,1,1,1 },
    { "dice",		do_dice,	   POS_RESTING,     0,  LOG_NORMAL, 1, 1,1,1,0,0,0,0,0,1,1,1 },
    { "witchcompass",	do_w_compass,	   POS_FIGHTING,    0,  LOG_NORMAL, 1, 1,1,1,0,0,0,0,0,1,1,1 },
    /* Immortal commands. */
    { "advance",        do_advance,        POS_DEAD,       ML,  LOG_ALWAYS, 1, 1,1,1,0,0,0,0,0,0,1,0 },

    /*  ADVANCE SELF */
/*  { "advself",        do_advself,        POS_DEAD,       0,   LOG_ALWAYS, 1, 1,1,1,0,0,0,0,0,0,1,0 },*/

    { "dump",           do_dump,           POS_DEAD,       ML,  LOG_ALWAYS, 0, 1,1,1,0,0,0,0,0,0,1,0 },
    { "trust",          do_trust,          POS_DEAD,       ML,  LOG_ALWAYS, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "allow",          do_allow,          POS_DEAD,       L2,  LOG_ALWAYS, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "ban",            do_ban,            POS_DEAD,       L5,  LOG_ALWAYS, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "forsake",        do_doof,           POS_DEAD,       L2,  LOG_ALWAYS, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "coding",         do_coding,         POS_DEAD,       L2,  LOG_ALWAYS, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "royal",          do_royal,          POS_DEAD,       0,   LOG_NORMAL, 0, 1,1,1,0,0,0,0,0,0,1,0 },
    { "escort",         do_escort,         POS_DEAD,       0,   LOG_NORMAL, 0, 1,1,1,0,0,0,0,0,0,1,0 },
    //    { "plag",           do_plag,           POS_DEAD,       L2,  LOG_NORMAL, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "deny",           do_deny,           POS_DEAD,       L1,  LOG_ALWAYS, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "disconnect",     do_disconnect,     POS_DEAD,       L3,  LOG_ALWAYS, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "flag",           do_flag,           POS_DEAD,       L5,  LOG_ALWAYS, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "freeze",         do_freeze,         POS_DEAD,       L4,  LOG_ALWAYS, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "brown",          do_brownie,        POS_DEAD,       L8,  LOG_ALWAYS, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "grant",          do_grant,          POS_DEAD,       ML,  LOG_ALWAYS, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "permban",        do_permban,        POS_DEAD,       L2,  LOG_ALWAYS, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "protect",        do_protect,        POS_DEAD,       L1,  LOG_ALWAYS, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "reboo",          do_reboo,          POS_DEAD,       L1,  LOG_NORMAL, 0, 1,1,1,0,0,0,0,0,0,1,0 },
    { "reboot",         do_reboot,         POS_DEAD,       L1,  LOG_ALWAYS, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "set",            do_set,            POS_DEAD,       L5,  LOG_ALWAYS, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "addpsalm",       do_addpsalm,       POS_DEAD,       ML,  LOG_ALWAYS, 0, 1,1,0,0,0,0,0,0,0,0,0 },
    { "rempsalm",       do_rempsalm,       POS_DEAD,       ML,  LOG_ALWAYS, 0, 1,1,0,0,0,0,0,0,0,0,0 },
    { "setquest",       do_setquest,       POS_DEAD,       ML,  LOG_ALWAYS, 0, 1,1,0,0,0,0,0,0,0,0,0 },
    { "tempquest",      do_tempquest,      POS_DEAD,       L8,  LOG_ALWAYS, 0, 1,1,0,0,0,0,0,0,0,0,0 },
    { "permquest",      do_permquest,      POS_DEAD,       L8,  LOG_ALWAYS, 0, 1,1,0,0,0,0,0,0,0,0,0 },
    { "inviquest",      do_inviquest,      POS_DEAD,       L8,  LOG_ALWAYS, 0, 1,1,0,0,0,0,0,0,0,0,0 },
    { "remquest",       do_remquest,      POS_DEAD,        L8,  LOG_ALWAYS, 0, 1,1,0,0,0,0,0,0,0,0,0 },
    { "setquest2",      do_setquest2,      POS_DEAD,     ML+1,  LOG_ALWAYS, 0, 1,1,0,0,0,0,0,0,0,0,0 },
    { "ospell",         do_ospell,         POS_DEAD,       ML,  LOG_ALWAYS, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "shutdow",        do_shutdow,        POS_DEAD,       L1,  LOG_NORMAL, 0, 1,1,1,0,0,0,0,0,0,1,0 },
    { "shutdown",       do_shutdown,       POS_DEAD,       L1,  LOG_ALWAYS, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "wizlock",        do_wizlock,        POS_DEAD,       L2,  LOG_ALWAYS, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "force",          do_force,          POS_DEAD,       L7,  LOG_ALWAYS, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "load",           do_load,           POS_DEAD,       L4,  LOG_ALWAYS, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "newlock",        do_newlock,        POS_DEAD,       L4,  LOG_ALWAYS, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "nochannels",     do_nochannels,     POS_DEAD,       L8,  LOG_ALWAYS, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "noemote",        do_noemote,        POS_DEAD,       L5,  LOG_ALWAYS, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "noyel",          do_noyel,          POS_DEAD,        0,  LOG_NORMAL, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "noyell",         do_noyell,         POS_DEAD,        0,  LOG_ALWAYS, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "notell",         do_notell,         POS_DEAD,       L5,  LOG_ALWAYS, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "pardon",         do_pardon,         POS_DEAD,       L8,  LOG_ALWAYS, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "purge",          do_purge,          POS_DEAD,       L4,  LOG_ALWAYS, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "restore",        do_restore,        POS_DEAD,       L4,  LOG_ALWAYS, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "sla",            do_sla,            POS_DEAD,       L3,  LOG_NORMAL, 0, 1,1,1,0,0,0,0,0,0,1,0 },
    { "slay",           do_slay,           POS_DEAD,       L3,  LOG_ALWAYS, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "rip",            do_sever,          POS_DEAD,       L3,  LOG_ALWAYS, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "teleport",       do_transfer,       POS_DEAD,       L5,  LOG_ALWAYS, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "transfer",       do_transfer,       POS_DEAD,       L8,  LOG_ALWAYS, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "gteleport",      do_gtransfer,      POS_DEAD,       L5,  LOG_ALWAYS, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "gtransfer",      do_gtransfer,      POS_DEAD,       L5,  LOG_ALWAYS, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "untransfer",     do_untransfer,     POS_DEAD,       L8,  LOG_NORMAL, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "gecho",          do_echo,           POS_DEAD,       L5,  LOG_NORMAL, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "holylight",      do_holylight,      POS_DEAD,       L8,  LOG_NORMAL, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "losereply",      do_losereply,      POS_DEAD,       L8,  LOG_NORMAL, 1, 1,1,1,0,0,0,0,0,0,1,0 },    
    { "hearall",        do_hearall,        POS_DEAD,       L8,  LOG_NORMAL, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "incognito",      do_incognito,      POS_DEAD,       L8,  LOG_NORMAL, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "invis",          do_invis,          POS_DEAD,       L8,  LOG_NORMAL, 0, 1,1,1,0,0,0,0,0,0,1,0 },
    { "log",            do_log,            POS_DEAD,       L1,  LOG_ALWAYS, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "memory",         do_memory,         POS_DEAD,       L8,  LOG_NORMAL, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "rwhere",         do_rwhere,         POS_DEAD,       L8,  LOG_NORMAL, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "mwhere",         do_mwhere,         POS_DEAD,       L8,  LOG_NORMAL, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "twhere",         do_twhere,         POS_DEAD,       L8,  LOG_NORMAL, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "owhere",         do_owhere,         POS_DEAD,       L8,  LOG_NORMAL, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "rfind",          do_rfind,          POS_DEAD,       L8,  LOG_NORMAL, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "profind",        do_profind,        POS_DEAD,       L8,  LOG_NORMAL, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "peace",          do_peace,          POS_DEAD,       L5,  LOG_NORMAL, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "penalty",        do_penalty,        POS_DEAD,       L8,  LOG_NORMAL, 1, 0,1,1,0,0,0,0,0,0,1,0 },
    { "echo",           do_recho,          POS_DEAD,       L6,  LOG_NORMAL, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "zecho",          do_zecho,          POS_DEAD,       L6,  LOG_NORMAL, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "return",         do_return,         POS_DEAD,       L6,  LOG_NORMAL, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "snoop",          do_snoop,          POS_DEAD,       L5,  LOG_ALWAYS, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "stat",           do_stat,           POS_DEAD,       L8,  LOG_NORMAL, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "raid",           do_raid,           POS_DEAD,        0,  LOG_NORMAL, 0, 1,1,1,0,0,0,0,0,0,1,0 },
    //    { "build",          do_build,          POS_RESTING,     0,  LOG_NORMAL, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "switch",         do_switch,         POS_DEAD,       L6,  LOG_ALWAYS, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "wizinvis",       do_invis,          POS_DEAD,       L8,  LOG_NORMAL, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "vnum",           do_vnum,           POS_DEAD,       L4,  LOG_NORMAL, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "clone",          do_clone,          POS_DEAD,       L5,  LOG_ALWAYS, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "wiznet",         do_wiznet,         POS_DEAD,       L8,  LOG_NORMAL, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { ":",              do_immtalk,        POS_DEAD,       L8,  LOG_NORMAL, 1, 1,1,1,0,0,0,0,0,0,0,0 },
    { "immtalk",        do_immtalk,        POS_DEAD,       L8,  LOG_NORMAL, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "smote",          do_smote,          POS_DEAD,        0,  LOG_NORMAL, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "prefix",         do_prefix,         POS_DEAD,       L8,  LOG_NORMAL, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "noquit",         do_noaffquit,      POS_DEAD,       L5,  LOG_ALWAYS, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "noaffquit",      do_noaffquit,      POS_DEAD,       L5,  LOG_ALWAYS, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "setalarm",       do_set_alarm,      POS_DEAD,       L8,  LOG_ALWAYS, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "broadcast",      do_broadcast,      POS_DEAD,       IM,  LOG_NORMAL, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "auction",	do_auction,	   POS_DEAD,        0,  LOG_NORMAL, 1, 0,0,1,1,0,1,0,0,0,1,0 },
    /* Mob programs. */
    { "mpasound",       do_mpasound,       POS_DEAD,     ML+1,  LOG_NORMAL, 0, 1,1,1,0,0,0,0,0,0,0,0 },
    { "mpjunk",         do_mpjunk,         POS_DEAD,     ML+1,  LOG_NORMAL, 0, 1,1,1,0,0,0,0,0,0,0,0 },
    { "disappear",      do_disappear,      POS_DEAD,     ML+1,  LOG_NORMAL, 0, 1,1,1,0,0,0,0,0,0,0,0 },
    /* New stuff */
    { "color",          do_color,          POS_DEAD,        0,  LOG_NORMAL, 1, 1,1,0,0,0,0,0,0,0,1,0 },
    { "scan",           do_scan,           POS_RESTING,     0,  LOG_NORMAL, 1, 1,1,1,1,0,1,0,0,1,1,1 },
    { "scout",          do_scout,          POS_RESTING,     0,  LOG_NORMAL, 1, 1,1,1,1,0,1,0,0,0,1,1 },
    { "mlevel",         do_mlevel,         POS_DEAD,       L8,  LOG_NORMAL, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "olevel",         do_olevel,         POS_DEAD,       L8,  LOG_NORMAL, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "[",              do_imptalk,        POS_DEAD,       L1,  LOG_NORMAL, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "imptalk",        do_imptalk,        POS_DEAD,       L1,  LOG_NORMAL, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "pray",           do_pray,           POS_SLEEPING,    0,  LOG_NORMAL, 1, 1,1,0,0,0,0,0,0,0,1,1 },
    { "mpstat",         do_mpstat,         POS_DEAD,       L1,  LOG_NORMAL, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "bringon",        do_bringon,        POS_DEAD,       L4,  LOG_ALWAYS, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "cwhere",         do_cwhere,         POS_DEAD,       L8,  LOG_NORMAL, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "chown",          do_chown,          POS_DEAD,       L4,  LOG_ALWAYS, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "rename",         do_rename,         POS_DEAD,       L8,  LOG_ALWAYS, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "surname",        do_surname,        POS_DEAD,       L8,  LOG_ALWAYS, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "last",           do_last,           POS_DEAD,       L8,  LOG_NORMAL, 1, 1,1,0,0,0,0,0,0,0,1,0 },
    { "lastname",       do_lastname,       POS_DEAD,        0,  LOG_NORMAL, 0, 1,1,0,0,0,0,0,0,0,1,0 },
    { "dual",           do_second,         POS_RESTING,     0,  LOG_NORMAL, 0, 1,1,0,1,0,1,0,0,0,0,1 },
    { "repop",          do_repop,          POS_DEAD,       L8,  LOG_ALWAYS, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "exlist",         do_exlist,         POS_DEAD,       L8,  LOG_NORMAL, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "noxlist",       do_noxlist,         POS_DEAD,       L8,  LOG_NORMAL, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "vlist",          do_vlist,          POS_DEAD,       L8,  LOG_NORMAL, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "tattoo",         do_tattoo,         POS_DEAD,       L5,  LOG_ALWAYS, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "edit",           do_olc,            POS_DEAD,       L8,  LOG_ALWAYS, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "opedit",         do_opedit,      POS_DEAD,	   L6,  LOG_ALWAYS, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "rpedit",         do_rpedit,      POS_DEAD,	   L6,  LOG_ALWAYS, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "opdump",		do_opdump,	POS_DEAD,	   L1,  LOG_NEVER,  1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "opstat",		do_opstat,	POS_DEAD,	   L1,  LOG_NEVER,  1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "rpdump",		do_rpdump,	POS_DEAD,	   L1,  LOG_NEVER,  1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "rpstat",		do_rpstat,	POS_DEAD,	   L1,  LOG_NEVER,  1, 1,1,1,0,0,0,0,0,0,1,0 },

    { "asave",          do_asave,          POS_DEAD,       L8,  LOG_NORMAL, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "alist",          do_alist,          POS_DEAD,       L8,  LOG_NORMAL, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "resets",         do_resets,         POS_DEAD,       L8,  LOG_ALWAYS, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "status",         do_status,         POS_DEAD,        0,  LOG_NORMAL, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "smite",          do_smite,          POS_DEAD,       L3,  LOG_ALWAYS, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "tick",		do_tick,           POS_DEAD,    	  L1,  LOG_ALWAYS, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "anum",           do_anum,           POS_DEAD,       L4,  LOG_NORMAL, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "stash",          do_stash,          POS_STANDING,    0,  LOG_NORMAL, 1, 1,1,1,0,0,0,0,0,0,1,1 },
    { "retrieve",       do_retrieve,       POS_STANDING,    0,  LOG_NORMAL, 1, 1,1,1,0,0,0,0,0,0,1,1 },
    { "withdraw",       do_withdraw,       POS_STANDING,    0,  LOG_NORMAL, 1, 1,1,1,0,0,0,0,0,0,1,1 },
    { "deposit",        do_deposit,        POS_STANDING,    0,  LOG_NORMAL, 1, 1,1,1,0,0,0,0,0,0,1,1 },
    { "balance",        do_balance,        POS_STANDING,    0,  LOG_NORMAL, 1, 1,1,1,0,0,0,0,0,0,1,1 },
    { "request",        do_request,        POS_STANDING,    0,  LOG_NORMAL, 1, 1,1,0,1,0,1,1,0,0,0,1 },
    { "conjure",        do_conjure,        POS_STANDING,    0,  LOG_NORMAL, 1, 1,1,0,1,0,1,1,0,0,0,1 },
    { "chant",		do_chant,	   POS_STANDING,    0,  LOG_NORMAL, 1, 1,1,0,1,0,1,1,0,0,0,1 },
    { "interrupt",	do_interrupt,	   POS_RESTING,     0,  LOG_NORMAL, 1, 1,1,0,1,0,1,1,0,0,0,1 },
    { "crashus",        do_crashus,        POS_DEAD,       ML+1,  LOG_ALWAYS, 1, 1,1,1,0,0,0,0,0,0,0,0 },
    { "interest",       do_interest,       POS_DEAD,       ML,  LOG_NORMAL, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "affstrip",       do_affstrip,       POS_DEAD,       ML,  LOG_NORMAL, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "songstrip",      do_songstrip,      POS_DEAD,       ML,  LOG_NORMAL, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "inrange",        do_in_range,       POS_DEAD,       ML,  LOG_NORMAL, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "identify",       do_identify,       POS_RESTING,    L8,  LOG_NORMAL, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "star_seer",      do_star_seer,      POS_RESTING,    ML+1,  LOG_NORMAL, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "obelisk_seer",   do_obelisk_seer,   POS_RESTING,    ML+1,  LOG_NORMAL, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "random",         do_random,         POS_RESTING,    L8,  LOG_NORMAL, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "home",           do_home,           POS_RESTING,    L8,  LOG_NORMAL, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "permit",         do_permit,         POS_DEAD,       L1,  LOG_ALWAYS, 1, 1,1,1,0,0,0,0,0,0,1,0 },
//    { "pipe",           do_pipe,           POS_DEAD,       ML,  LOG_ALWAYS, 1, 1,1,1,0,0,0,0,0,0,0,0 },
    { "hometown",       do_hometown,       POS_RESTING,     0,  LOG_ALWAYS, 0, 0,0,0,1,1,1,1,1,0,1,1 },
    { "doas",           do_doas,           POS_RESTING,    ML,  LOG_ALWAYS, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "immpass",        do_immpass,        POS_DEAD,       IM,  LOG_NEVER,  0, 1,0,0,0,0,0,0,0,0,1,0 },
    { "release",        do_release,        POS_RESTING,     0,  LOG_NORMAL, 1, 1,1,1,0,0,0,0,0,0,1,1 },
    /* New skills */
    { "lore",           do_lore,           POS_RESTING,     0,  LOG_NORMAL, 0, 1,1,1,1,0,1,0,0,1,1,1 },
    { "mana charge",    do_mana_charge,    POS_STANDING,    0,  LOG_NORMAL, 0, 0,0,1,1,1,1,1,0,0,0,0 },
    { "voodoo",         do_voodoo,         POS_STANDING,    0,  LOG_NORMAL, 0, 0,0,1,1,1,1,1,0,0,0,0 },
    { "shielddisarm",   do_shield_disarm,  POS_FIGHTING,    0,  LOG_NORMAL, 0, 1,1,0,0,0,0,0,0,0,0,1 },
    { "deflect",        do_rake,           POS_FIGHTING,    0,  LOG_NORMAL, 0, 1,1,0,0,0,0,0,0,0,0,1 },
    { "layonhands",     do_lay_on_hands,   POS_STANDING,    0,  LOG_NORMAL, 0, 1,1,0,1,0,1,0,0,0,0,1 },
    { "detect_hidden",  do_detect_hidden,  POS_STANDING,    0,  LOG_NORMAL, 0, 1,1,0,0,0,0,0,0,0,0,1 },
    { "cleave",         do_cleave,         POS_FIGHTING,    0,  LOG_NORMAL, 0, 1,1,0,1,0,1,0,0,0,0,1 },
    { "behead",         do_behead,         POS_STANDING,    0,  LOG_NORMAL, 0, 1,1,0,1,0,1,0,0,0,0,1 },
    { "assassinate",    do_assassinate,    POS_STANDING,    0,  LOG_NORMAL, 0, 1,1,0,0,0,0,0,0,0,0,1 },
    { "blackjack",      do_blackjack,      POS_FIGHTING,    0,  LOG_NORMAL, 0, 1,1,0,0,0,0,0,0,0,0,1 },
    { "gag",            do_gag,            POS_STANDING,    0,  LOG_NORMAL, 0, 1,1,0,1,0,1,0,0,0,0,1 },
    { "strangle",       do_strangle,       POS_FIGHTING,    0,  LOG_NORMAL, 0, 1,1,0,0,0,1,0,0,0,0,1 },
    { "acupuncture",    do_acupuncture,    POS_RESTING,     0,  LOG_NORMAL, 0, 1,1,0,0,0,0,0,0,0,0,1 },
    { "field dressing", do_fdress,	   POS_RESTING,     0,  LOG_NORMAL, 0, 1,1,0,0,0,0,0,0,0,0,1 },
    { "sequencer",	do_sequencer,      POS_STANDING,    0,  LOG_NORMAL, 0, 1,1,0,0,0,0,0,0,0,0,1 },
    { "contingecy",	do_contingency,    POS_STANDING,    0,  LOG_NORMAL, 0, 1,1,0,0,0,0,0,0,0,0,1 },
    { "herb",           do_herb,           POS_RESTING,     0,  LOG_NORMAL, 0, 1,1,0,1,0,1,0,0,0,0,1 },
    { "tame",           do_tame,           POS_FIGHTING,    0,  LOG_NORMAL, 0, 1,1,0,1,0,1,0,0,0,0,1 },
    { "beastcall",      do_beast_call,     POS_FIGHTING,    0,  LOG_NORMAL, 0, 1,1,0,1,0,1,0,0,0,0,1 },
    { "rage",           do_rage,           POS_FIGHTING,    0,  LOG_NORMAL, 0, 1,1,0,0,0,0,0,0,0,0,1 },
    { "cyclone",	do_cyclone,        POS_FIGHTING,    0,  LOG_NORMAL, 0, 1,1,0,0,0,0,0,0,0,0,1 },
    { "maelstrom",	do_maelstrom,        POS_FIGHTING,    0,  LOG_NORMAL, 0, 1,1,0,0,0,0,0,0,0,0,1 },
    { "bodyslam",       do_bodyslam,       POS_FIGHTING,    0,  LOG_NORMAL, 0, 1,1,0,0,0,0,0,0,0,0,1 },
    { "grapple",        do_grapple,        POS_FIGHTING,    0,  LOG_NORMAL, 0, 1,1,0,0,0,0,0,0,0,0,1 },
    { "charge",         do_charge,         POS_FIGHTING,    0,  LOG_NORMAL, 0, 1,1,0,1,0,1,0,0,0,0,1 },
    { "shoot",          do_shoot,          POS_FIGHTING,    0,  LOG_NORMAL, 0, 1,1,0,1,0,1,0,0,0,0,1 }, 
    { "impale",         do_impale,         POS_FIGHTING,    0,  LOG_NORMAL, 0, 1,1,0,1,0,1,0,0,0,0,1 },
    { "ambush",         do_ambush,         POS_FIGHTING,    0,  LOG_NORMAL, 0, 1,1,0,0,0,0,0,0,0,0,1 },
    { "endure",         do_endure,         POS_STANDING,    0,  LOG_NORMAL, 0, 1,1,0,0,0,0,0,0,0,0,1 },
    { "barkskin",       do_barkskin,       POS_STANDING,    0,  LOG_NORMAL, 0, 1,1,0,0,0,0,0,0,0,0,1 },
    { "warcry",         do_warcry,         POS_FIGHTING,    0,  LOG_NORMAL, 0, 1,1,0,1,0,1,0,0,0,0,1 },
    { "circle",         do_circle,         POS_FIGHTING,    0,  LOG_NORMAL, 0, 1,1,0,0,0,0,0,0,0,0,1 },
    { "swing",          do_swing,          POS_FIGHTING,    0,  LOG_NORMAL, 0, 1,1,0,0,0,0,0,0,0,0,1 },
    { "windmill",       do_windmill,       POS_FIGHTING,    0,  LOG_NORMAL, 0, 1,1,0,0,0,0,0,0,0,0,1 },
    { "headbutt",       do_headbutt,       POS_FIGHTING,    0,  LOG_NORMAL, 0, 1,1,0,0,0,0,0,0,0,0,1 },
    { "camouflage",     do_camouflage,     POS_STANDING,    0,  LOG_NORMAL, 0, 1,1,0,0,0,0,0,0,0,0,1 },
    { "chameleon",      do_chameleon,      POS_STANDING,    0,  LOG_NORMAL, 0, 1,1,0,0,0,0,0,0,0,0,1 },
    { "keen_sight",     do_keen_sight,     POS_RESTING,     0,  LOG_NORMAL, 0, 1,1,0,0,0,0,0,0,0,0,1 },
    { "vanish",         do_vanish,         POS_FIGHTING,    0,  LOG_NORMAL, 0, 1,1,0,1,0,1,0,0,0,0,1 },
    { "chii",         	do_chii,           POS_STANDING,    0,  LOG_NORMAL, 0, 1,1,0,0,0,0,0,0,0,0,1 },
    { "blindness_dust", do_blindness_dust, POS_FIGHTING,    0,  LOG_NORMAL, 0, 1,1,0,1,0,1,0,0,0,0,1 },
    { "poison_smoke",   do_poison_smoke,   POS_FIGHTING,    0,  LOG_NORMAL, 0, 1,1,0,1,0,1,0,0,0,0,1 },
    { "butcher",   	do_butcher,        POS_STANDING,    0,  LOG_NORMAL, 0, 1,1,0,1,0,1,0,0,0,0,1 },
    { "caltraps",       do_caltraps,       POS_FIGHTING,    0,  LOG_NORMAL, 0, 1,1,0,0,0,0,0,0,0,0,1 },
    { "bolo",		do_bolo,	   POS_FIGHTING,    0,  LOG_NORMAL, 0, 1,1,0,0,0,0,0,0,0,0,1 },
    { "entangle",	do_entangle,       POS_FIGHTING,    0,  LOG_NORMAL, 0, 1,1,0,0,0,0,0,0,0,0,1 },
    { "call",		do_call,           POS_STANDING,    0,  LOG_NORMAL, 0, 1,1,0,0,0,0,0,0,0,0,1 },
    { "nerve",          do_nerve,          POS_FIGHTING,    0,  LOG_NORMAL, 0, 1,1,0,0,0,0,0,0,0,0,1 },
    { "truesight",      do_truesight,      POS_FIGHTING,    0,  LOG_NORMAL, 0, 1,1,0,0,0,0,0,0,0,0,1 },
    { "trophy",         do_trophy,         POS_STANDING,    0,  LOG_NORMAL, 0, 1,1,0,0,0,0,0,0,0,0,1 },
/*  { "spellbane",      do_spellbane,      POS_FIGHTING,    0,  LOG_NORMAL, 0, 1,1,0,0,0,0,0,0,0,0,1 },
    { "cognizance",     do_cognizance,     POS_FIGHTING,    0,  LOG_NORMAL, 0, 1,1,0,0,0,0,0,0,0,0,1 }, */
    { "stance",         do_stance,         POS_FIGHTING,    0,  LOG_NORMAL, 0, 1,1,0,0,0,0,0,0,0,0,1 },
    { "melee",          do_melee,          POS_FIGHTING,    0,  LOG_NORMAL, 0, 1,1,0,0,0,0,0,0,0,0,1 },
    { "wanted",         do_wanted,         POS_DEAD,        0,  LOG_ALWAYS, 0, 1,1,0,1,0,1,0,0,0,0,1 },
    { "judge",          do_judge,          POS_STANDING,    0,  LOG_NORMAL, 0, 0,1,0,1,0,1,0,0,0,0,1 },
    { "watchtower",     do_watchtower,     POS_STANDING,    0,  LOG_NORMAL, 0, 0,1,1,1,1,1,0,0,0,0,1 },
    { "exile",		do_exile,	   POS_STANDING,    0,  LOG_NORMAL, 0, 0,1,1,1,1,1,0,0,0,0,1 },
    { "nemesis",	do_nemesis,	   POS_STANDING,    0,  LOG_NORMAL, 0, 0,1,1,1,1,1,0,0,0,0,1 },
    { "spawn",		do_spawn_blade,	   POS_STANDING,    0,  LOG_NORMAL, 0, 0,1,1,1,1,1,0,0,0,0,1 },
    { "bribe",		do_bribe,          POS_STANDING,    0,  LOG_NORMAL, 1, 0, 0,0,0,0,0,0,0,1,1,1 },
    { "secretarts",     do_secret_arts,    POS_FIGHTING,    0,  LOG_NORMAL, 0, 1,1,0,1,0,1,0,0,0,0,1 },
    { "throatcut",      do_throatcut,      POS_STANDING,    0,  LOG_NORMAL, 0, 1,1,0,1,0,1,0,0,0,0,1 },
    { "rally",		do_rally_justice,  POS_STANDING,    0,  LOG_NORMAL, 0, 0,1,1,1,1,1,0,0,0,0,1 },
    { "diplomacy",	do_diplomacy,	   POS_STANDING,    0,  LOG_NORMAL, 0, 0,1,1,1,1,1,0,0,0,0,1 },
    { "jail",           do_jail,           POS_STANDING,    0,  LOG_ALWAYS, 0, 0,1,0,1,0,1,0,0,0,0,1 },
    { "bail",           do_bail,           POS_STANDING,    0,  LOG_ALWAYS, 0, 0,1,0,1,0,1,0,0,0,0,1 },

    /*Not used (Viri)
    { "squire",         do_squire,         POS_STANDING,    0,  LOG_NORMAL, 0, 0,1,0,1,0,1,0,0,0,0,1 },
    { "knight",         do_knight,         POS_STANDING,    0,  LOG_ALWAYS, 0, 0,1,0,1,0,1,0,0,0,0,1 },
    */

    { "guard",          do_guard,          POS_STANDING,    0,  LOG_NORMAL, 0, 0,0,0,1,0,1,0,0,0,0,1 },
    { "mount",          do_mount,          POS_STANDING,    0,  LOG_NORMAL, 0, 0,1,0,1,1,1,1,1,0,0,1 },
    { "dismount",       do_dismount,       POS_RESTING,     0,  LOG_NORMAL, 0, 0,1,0,1,1,1,1,1,0,0,1 },
    { "spy",            do_spy,            POS_STANDING,    0,  LOG_ALWAYS, 0, 0,1,0,1,0,1,0,0,0,0,1 },
    { "relax",          do_relax,          POS_FIGHTING,    0,  LOG_NORMAL, 0, 1,1,0,1,0,1,0,0,0,0,1 },
    { "brew",           do_brew,           POS_STANDING,    0,  LOG_NORMAL, 0, 1,1,0,1,0,1,0,0,0,0,1 },
    { "modify",         do_modify,         POS_SLEEPING,    0,  LOG_NORMAL, 0, 0,1,0,1,0,1,0,0,0,0,1 },
    { "challenge",      do_challenge,      POS_STANDING,    0,  LOG_ALWAYS, 0, 0,1,0,1,0,1,0,0,0,0,1 },
    { "dmark",		do_deathmark,      POS_STANDING,    0,  LOG_ALWAYS, 0, 0,1,0,1,0,1,0,0,0,0,1 },
    { "record",         do_record,         POS_RESTING,     0,  LOG_NORMAL, 0, 0,1,0,1,0,1,0,0,0,1,1 },
    { "contract",       do_contract,       POS_STANDING,    0,  LOG_ALWAYS, 0, 0,1,0,1,0,1,0,0,0,1,1 },
    { "camp",           do_camp,           POS_STANDING,    0,  LOG_NORMAL, 0, 1,1,0,0,0,0,0,0,0,0,1 },
    { "collect",        do_bounty_collect, POS_FIGHTING,    0,  LOG_NORMAL, 0, 1,1,0,0,0,0,0,0,0,1,1 },
    { "fletchery",	do_fletchery,	   POS_STANDING,    0,  LOG_NORMAL, 0, 1,1,0,1,0,1,1,0,0,0,1 },
    { "stringbow",	do_bowyer,	   POS_STANDING,    0,  LOG_NORMAL, 0, 1,1,0,1,0,1,1,0,0,0,1 },
    { "ranger staff",   do_ranger_staff,   POS_FIGHTING,    0,  LOG_NORMAL, 0, 1,1,0,1,0,1,1,0,0,0,1 },
    { "healer staff",   do_healer_staff,   POS_FIGHTING,    0,  LOG_NORMAL, 0, 1,1,0,1,0,1,1,0,0,0,1 },
    { "druid staff",    do_druid_staff,    POS_FIGHTING,    0,  LOG_NORMAL, 0, 1,1,0,1,0,1,1,0,0,0,1 },
    { "invoke",         do_invoke,         POS_RESTING,     0,  LOG_NORMAL, 1, 1,0,0,1,0,1,0,0,0,0,1 },
    { "wish",           do_wish,           POS_RESTING,     0,  LOG_NORMAL, 1, 1,0,0,1,0,1,0,0,0,0,1 },
    { "throw",          do_throw,          POS_FIGHTING,    0,  LOG_NORMAL, 0, 1,1,0,0,0,0,0,0,0,0,1 },
    { "roar",           do_roar,           POS_FIGHTING,    0,  LOG_NORMAL, 0, 1,1,0,0,0,0,0,0,0,0,1 },
    { "edge",           do_edge_craft,     POS_STANDING,    0,  LOG_NORMAL, 0, 1,1,0,1,0,1,0,0,0,0,1 },
    { "counterfeit",    do_counterfeit,    POS_STANDING,    0,  LOG_NORMAL, 0, 1,1,0,1,0,1,0,0,0,0,1 },
    { "servant",        do_servant,        POS_STANDING,    0,  LOG_NORMAL, 0, 1,1,0,0,0,0,0,0,0,0,1 },
    { "army",           do_army,           POS_RESTING,     0,  LOG_NORMAL, 0, 1,1,0,0,0,0,0,0,0,0,1 },
    { "hound",          do_hound_obey,     POS_STANDING,    0,  LOG_NORMAL, 0, 1,1,0,0,0,0,0,0,0,0,1 },
    { "defecate",       do_defecate,       POS_RESTING,     0,  LOG_NORMAL, 0, 1,1,0,1,0,1,0,0,0,1,1 },
    { "vomit",          do_vomit,          POS_RESTING,     0,  LOG_NORMAL, 0, 1,1,0,1,0,1,0,0,0,1,1 },
    { "stalk",          do_stalk,          POS_STANDING,    0,  LOG_NORMAL, 0, 0,1,0,1,0,1,0,0,0,0,1 },
    { "control",        do_control,        POS_STANDING,    0,  LOG_NORMAL, 0, 0,1,0,1,0,1,0,0,0,0,1 },
    { "break",          do_break,          POS_DEAD,        0,  LOG_NORMAL, 0, 1,1,0,1,0,1,0,0,1,0,1 },
    { "ensnare",        do_ensnare,        POS_FIGHTING,    0,  LOG_NORMAL, 0, 0,1,0,1,0,1,0,0,0,1,1 },
    { "apprehend",      do_apprehend,      POS_FIGHTING,    0,  LOG_NORMAL, 0, 0,1,0,1,0,1,0,0,0,1,1 },
    { "qslay",          do_qslay,          POS_DEAD,       L3,  LOG_ALWAYS, 1, 1,1,0,0,0,0,0,0,0,1,0 },
    { "qtrans",         do_qtrans,         POS_DEAD,       L5,  LOG_ALWAYS, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "drain",        	do_drain,          POS_STANDING,    0,  LOG_NORMAL, 0, 1,1,0,1,0,1,0,0,0,1,1 },
    { "coffin",         do_coffin,         POS_STANDING,    0,  LOG_NORMAL, 0, 1,1,0,0,0,0,0,0,0,0,1 },
    { "tear",           do_tear,           POS_FIGHTING,    0,  LOG_NORMAL, 0, 1,1,0,0,0,0,0,0,0,1,1 },
    /* VOTE COMMANDS */
    { "vote",		do_vote,         POS_STANDING,    0,  LOG_NORMAL, 1, 0,1,0,0,0,0,0,0,0,1,1 },
    /* CLASS QUESTS */
    { "select",         do_select,         POS_STANDING,    0,  LOG_NORMAL, 1, 0,1,0,0,0,0,0,0,0,1,1 },
    { "convert",        do_convert,        POS_STANDING,    0,  LOG_NORMAL, 1, 0,1,0,0,0,0,0,0,0,1,1 },
    { "guild",          do_guild,	   POS_STANDING,    0,  LOG_NORMAL, 1, 0,1,0,0,0,0,0,0,0,1,1 },
    { "qrace",         do_quest_race,	   POS_DEAD,       L5,  LOG_ALWAYS, 1, 0,0,0,0,0,0,0,0,0,1,0 },
    { "qshaman",        do_quest_shaman,   POS_DEAD,       L5,  LOG_ALWAYS, 1, 0,0,0,0,0,0,0,0,0,1,0 },
    { "qhealer",        do_quest_healer,   POS_DEAD,       L5,  LOG_ALWAYS, 1, 0,0,0,0,0,0,0,0,0,1,0 },
    { "qdruid",         do_quest_druid,    POS_DEAD,       L5,  LOG_ALWAYS, 1, 1,0,0,0,0,0,0,0,0,1,0 },
    { "qdemon",         do_quest_demon,    POS_DEAD,       L5,  LOG_ALWAYS, 1, 0,0,0,0,0,0,0,0,0,1,0 },
    { "qavatar",        do_quest_avatar,   POS_DEAD,       L5,  LOG_ALWAYS, 1, 0,0,0,0,0,0,0,0,0,1,0 },
    { "qvamp",          do_quest_vamp,     POS_DEAD,       L5,  LOG_ALWAYS, 1, 0,0,0,0,0,0,0,0,0,1,0 },
    { "qcrus",          do_quest_crus,     POS_DEAD,       L5,  LOG_ALWAYS, 1, 1,0,0,0,0,0,0,0,0,1,0 },
    { "qelder",         do_quest_elder,    POS_DEAD,       L5,  LOG_ALWAYS, 1, 0,0,0,0,0,0,0,0,0,1,0 },
    { "qundead",        do_quest_undead,   POS_DEAD,       L5,  LOG_ALWAYS, 1, 1,0,0,0,0,0,0,0,0,1,0 },
    { "qpsi",           do_quest_psi,      POS_DEAD,       L5,  LOG_ALWAYS, 1, 1,0,0,0,0,0,0,0,0,1,0 },
    { "qking",          do_quest_king,     POS_DEAD,       L5,  LOG_ALWAYS, 1, 1,0,0,0,0,0,0,0,0,1,0 },
/*  { "qdruid",         do_quest_druid,    POS_DEAD,       L5, LOG_ALWAYS, 1, 0,0,0,0,0,0,0,0,0,1,0 },*/
    { "masquerade",     do_masquerade,     POS_DEAD,        0,  LOG_ALWAYS, 1, 0,0,0,0,0,0,0,0,0,1,0 },
    { "badname",        do_badname,        POS_DEAD,       L5,  LOG_ALWAYS, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "goodname",       do_allowname,      POS_DEAD,       L5,  LOG_ALWAYS, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "appdesc",        do_appdesc,        POS_DEAD,       L8,  LOG_ALWAYS, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "oowner",         do_oowner,          POS_DEAD,       L8,  LOG_ALWAYS, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "stake",          do_stake,          POS_STANDING,    0,  LOG_NORMAL, 0, 1,1,0,1,0,1,0,0,0,0,1 },
    { "proficiency",    do_proficiency,    POS_RESTING,     0,  LOG_NORMAL, 1,0,1,1,0,0,0,0,0,0,1 },
    { "toxify",         do_toxify,         POS_FIGHTING,    0,  LOG_NORMAL, 0, 1,1,0,1,0,1,0,0,0,1,1 },
    { "destroy-undead", do_destroy_undead, POS_FIGHTING,    0,  LOG_NORMAL, 0, 1,1,0,1,0,1,0,0,0,1,1 },
    { "seep",           do_seep,           POS_FIGHTING,    0,  LOG_NORMAL, 0, 1,1,0,1,0,1,0,0,0,1,1 },
    { "tackle",         do_tackle,         POS_FIGHTING,    0,  LOG_NORMAL, 0, 1,1,0,0,0,0,0,0,0,1,1 },
    { "thrust",         do_thrust,         POS_FIGHTING,    0,  LOG_NORMAL, 0, 1,1,0,0,0,0,0,0,0,1,1 },
    { "pixie_dust",     do_pixie_dust,     POS_STANDING,    0,  LOG_NORMAL, 0, 1,1,0,1,0,1,0,0,0,0,1 },
    { "beads",          do_beads,          POS_STANDING,    0,  LOG_NORMAL, 0, 1,1,0,1,0,1,0,0,0,0,1 },
    { "monkey",         do_monkey,         POS_STANDING,    0,  LOG_NORMAL, 0, 1,1,0,1,0,1,0,0,0,0,1 },
    { "tiger",          do_tiger,          POS_STANDING,    0,  LOG_NORMAL, 0, 1,1,0,0,0,0,0,0,0,0,1 },
    { "crane",          do_crane,          POS_STANDING,    0,  LOG_NORMAL, 0, 1,1,0,0,0,0,0,0,0,0,1 },
    { "mantis",         do_mantis,         POS_STANDING,    0,  LOG_NORMAL, 0, 1,1,0,0,0,0,0,0,0,0,1 },
    { "drunken",        do_drunken,        POS_STANDING,    0,  LOG_NORMAL, 0, 1,1,0,0,0,0,0,0,0,0,1 },
    { "horse",          do_horse,          POS_STANDING,    0,  LOG_NORMAL, 0, 1,1,0,0,0,0,0,0,0,0,1 },
    { "dragon",         do_dragon,         POS_STANDING,    0,  LOG_NORMAL, 0, 1,1,0,0,0,0,0,0,0,0,1 },
    { "buddha",         do_buddha,         POS_STANDING,    0,  LOG_NORMAL, 0, 1,1,0,0,0,0,0,0,0,0,1 },
    { "catalepsy",      do_catalepsy,      POS_RESTING,     0,  LOG_NORMAL, 0, 1,1,0,1,0,1,0,0,0,0,1 },
    { "revive",         do_revive,         POS_DEAD,        0,  LOG_NORMAL, 0, 1,1,0,1,0,1,0,0,0,0,0 },
    { "aura",           do_aura,           POS_STANDING,    0,  LOG_NORMAL, 0, 1,1,0,0,0,0,0,0,0,0,1 },
    { "healing",        do_healing,        POS_STANDING,    0,  LOG_NORMAL, 0, 1,1,0,0,0,0,0,0,0,0,1 },
    { "sense",          do_sense_motion,   POS_STANDING,    0,  LOG_NORMAL, 0, 1,1,0,0,0,0,0,0,0,0,1 },
    { "kinetics",       do_kinetics,       POS_STANDING,    0,  LOG_NORMAL, 0, 1,1,0,0,0,0,0,0,0,0,1 },
    { "outcast",        do_outcast,        POS_DEAD,       L6,  LOG_ALWAYS, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "empower",        do_empower,	       POS_STANDING,    0,  LOG_NORMAL, 0, 1,1,0,0,0,0,0,0,0,0,1 },
    { "store_chii",     do_store_chii,	    POS_STANDING,    0,  LOG_NORMAL, 0, 1,1,0,0,0,0,0,0,0,0,1 },
    { "thrash",         do_thrash,         POS_FIGHTING,    0,  LOG_NORMAL, 0, 1,1,0,0,0,0,0,0,0,0,1 },
    { "bolt",           do_chii_bolt,      POS_FIGHTING,    0,  LOG_NORMAL, 0, 1,1,0,0,0,0,0,0,0,0,1 },
    { "deathblow",      do_deathblow,      POS_FIGHTING,    0,  LOG_NORMAL, 0, 1,0,0,1,0,1,0,0,0,0,1 },
    { "silvanus",	do_trap_silvanus,  POS_STANDING,    0,  LOG_NORMAL, 0, 1,1,0,1,0,1,0,0,0,0,1 },
    { "entomb",      	do_entomb,         POS_STANDING,    0,  LOG_NORMAL, 0, 1,1,0,1,0,1,0,0,0,0,1 },
    { "untomb",       	do_untomb,         POS_STANDING,    0,  LOG_NORMAL, 0, 1,1,0,1,0,1,0,0,0,0,1 },
    { "test",           do_test,           POS_DEAD,       L6,  LOG_NORMAL, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "double",         do_double_grip,    POS_RESTING,     0,  LOG_NORMAL, 0, 1,1,0,1,0,1,0,0,0,0,1 },
    { "high",           do_high,	   POS_RESTING,     0,  LOG_NORMAL, 0, 1,1,0,1,0,1,0,0,0,0,1 },
    { "low",            do_low,		   POS_RESTING,     0,  LOG_NORMAL, 0, 1,1,0,1,0,1,0,0,0,0,1 },
    { "left",           do_left,	   POS_RESTING,     0,  LOG_NORMAL, 0, 1,1,0,1,0,1,0,0,0,0,1 },
    { "right",          do_right,	   POS_RESTING,     0,  LOG_NORMAL, 0, 1,1,0,1,0,1,0,0,0,0,1 },
    { "middle",         do_middle,	   POS_RESTING,     0,  LOG_NORMAL, 0, 1,1,0,1,0,1,0,0,0,0,1 },
    { "damage",         do_damage,	   POS_RESTING,     0,  LOG_NORMAL, 0, 1,1,0,1,0,1,0,0,0,0,1 },
    { "normal",         do_normal,	   POS_RESTING,     0,  LOG_NORMAL, 0, 1,1,0,1,0,1,0,0,0,0,1 },
    { "coneofforce",    do_cone,           POS_FIGHTING,    0,  LOG_NORMAL, 0, 1,1,0,0,0,0,0,0,0,0,1 },
    { "transform",      do_transform,      POS_FIGHTING,    0,  LOG_NORMAL, 0, 1,1,0,0,0,0,0,0,0,0,1 },
    { "werepower",      do_werepower,      POS_FIGHTING,    0,  LOG_NORMAL, 0, 1,1,0,0,0,0,0,0,0,0,1 },
    { "burrow",         do_burrow,         POS_STANDING,    0,  LOG_NORMAL, 0, 1,1,0,1,0,1,0,0,0,1,1 },
    { "unburrow",       do_unburrow,       POS_STANDING,    0,  LOG_NORMAL, 0, 1,1,0,1,0,1,0,0,0,1,0 },
    { "cutpurse",       do_cutpurse,       POS_FIGHTING,    0,  LOG_NORMAL, 0, 1,1,0,0,0,0,0,0,0,0,1 },
    { "insectswarm",    do_insect_swarm,   POS_FIGHTING,    0,  LOG_NORMAL, 0, 0,0,1,1,1,1,1,1,0,0,1 },
    { "darkritual",     do_dark_ritual,    POS_STANDING,    0,  LOG_NORMAL, 0, 1,0,0,1,0,1,0,0,0,0,1 },
    { "offhanddisarm",  do_offhand_disarm, POS_FIGHTING,    0,  LOG_NORMAL, 0, 1,1,0,0,0,0,0,0,0,0,1 },
    { "shed",           do_shed,           POS_FIGHTING,    0,  LOG_NORMAL, 0, 1,0,1,0,0,0,0,0,1,1,1 },
    { "fasting",        do_fasting,        POS_STANDING,    0,  LOG_NORMAL, 0, 1,1,0,0,0,0,0,0,0,0,1 },
    { "swallow",   	do_swallow,        POS_STANDING,    0,  LOG_NORMAL, 0, 1,1,0,1,0,1,0,0,0,0,1 },
    { "probe",          do_probe,          POS_RESTING,     0,  LOG_NORMAL, 1, 1,1,1,1,0,1,0,0,1,1,1 },
    { "decoy",          do_decoy,          POS_STANDING,    0,  LOG_NORMAL, 0, 1,1,0,0,0,0,0,0,0,0,1 },
    { "crusade",        do_crusade,        POS_STANDING,    0,  LOG_NORMAL, 0, 1,1,0,0,0,0,0,0,0,0,1 },
    { "avenge",         do_avenger,        POS_STANDING,    0,  LOG_NORMAL, 0, 1,1,0,0,0,0,0,0,0,0,1 },
    { "heroism",        do_heroism,        POS_STANDING,    0,  LOG_NORMAL, 0, 1,1,0,0,0,0,0,0,0,0,1 },
    { "refrain",        do_refrain,        POS_FIGHTING,    0,  LOG_NORMAL, 1, 1,0,0,0,0,0,0,0,0,0,1 },
    { "tarot",          do_tarot,          POS_RESTING,     0,  LOG_NORMAL, 1, 1,0,1,1,0,1,0,0,0,0,1 },
    { "leech",          do_leech,          POS_STANDING,    0,  LOG_NORMAL, 0, 0,0,0,1,0,1,0,0,0,0,1 },
    { "knockout",       do_tko,   	   POS_STANDING,    0,  LOG_NORMAL, 0, 1,0,0,1,0,1,0,0,0,0,1 },
    { "create_torch",   do_create_torch,   POS_STANDING,    0,  LOG_NORMAL, 0, 1,1,0,1,0,1,0,0,0,0,1 },
    { "credits",        do_credits,        POS_STANDING,    0,  LOG_NORMAL, 0, 1,1,0,1,0,1,0,0,0,0,1 },
    { "panhandle",      do_panhandle,      POS_RESTING,     0,  LOG_NORMAL, 0, 1,0,0,1,0,1,0,0,0,0,1 },
    { "lure",           do_attract,        POS_STANDING,    0,  LOG_NORMAL, 0, 1,0,0,1,0,1,0,0,0,0,1 },
    { "taunt",          do_taunt,          POS_FIGHTING,    0,  LOG_NORMAL, 0, 1,0,0,0,0,0,0,0,0,0,1 },
    { "uppercut",       do_uppercut,       POS_FIGHTING,    0,  LOG_NORMAL, 0, 1,0,0,0,0,0,0,0,0,0,1 },
    { "haymaker",       do_haymaker,       POS_FIGHTING,    0,  LOG_NORMAL, 0, 1,0,1,1,1,1,1,1,0,0,1 },
    { "ventriloquate",  do_ventriloquate,  POS_FIGHTING,    0,  LOG_NORMAL, 1, 1,0,0,1,0,1,0,0,0,0,1 },
    { "duet",           do_duet,           POS_STANDING,    0,  LOG_NORMAL, 1, 0,0,0,0,0,0,0,0,0,0,1 },
    { "tune",           do_tune,           POS_STANDING,    0,  LOG_NORMAL, 0, 0,0,0,1,0,1,0,0,0,0,1 },
    { "feed",           do_feed,           POS_RESTING,     0,  LOG_NORMAL, 1, 0,0,0,0,0,0,0,0,0,0,1 },
    { "ignite",         do_ignite,         POS_STANDING,    0,  LOG_NORMAL, 1, 1,1,1,1,1,1,1,1,1,1,1 },
    { "alias",          do_alias,          POS_RESTING,     0,  LOG_ALWAYS, 1, 1,1,1,0,0,0,0,0,0,1,0 },
    { "history",        do_history,	   POS_RESTING,     0,  LOG_NORMAL, 1, 1,0,0,1,0,1,0,0,0,0,1 },
    { "ram",            do_ram,            POS_STANDING,    0,  LOG_NORMAL, 1, 1,1,0,1,0,1,0,0,0,0,1 },
    { "anger",          do_anger,          POS_STANDING,    0,  LOG_NORMAL, 0, 1,1,0,1,0,1,0,0,0,0,1 },
    { "sharpen",        do_sharpen,       POS_STANDING,     0,  LOG_NORMAL, 0, 1,1,0,1,0,1,0,0,0,0,1 },
    { "roccall",        do_call_roc,       POS_FIGHTING,     0,  LOG_NORMAL, 1, 0,1,0,1,0,1,0,0,0,1,1 },  
    { "embrace",        do_embrace ,       POS_STANDING,    0,  LOG_NORMAL, 0, 1,0,1,0,1,1,0,1,1,1,1 },
    { "predict",        do_predict ,       POS_STANDING,    0,  LOG_NORMAL, 0, 1,0,1,0,1,1,0,1,1,1,1 },
    { "spellkill",      do_spellkiller ,   POS_STANDING,    0,  LOG_NORMAL, 0, 1,0,1,0,1,1,0,1,1,1,1 },
    /* End of list */
    { "if",             do_if,             POS_DEAD,       ML,  LOG_NORMAL, 0, 1,1,1,0,0,0,0,0,0,0,0 },
    { "endif",          do_endif,          POS_DEAD,       ML,  LOG_NORMAL, 0, 1,1,1,0,0,0,0,0,0,0,0 },
    { "",               0,                 POS_DEAD,        0,  LOG_NORMAL, 0, 1,1,1,0,0,0,0,0,0,0,0 }
};



int PRECOMMAND_CHECK(CHAR_DATA* ch, int cmd, char* argument)
{
  /* If function retrunts FALSE the command is NOT run. */
  //To run before any skill function is called set F1_CMDBLOCK

  CHAR_DATA* vch = ch;
  AFFECT_DATA* paf;
  AFFECT_DATA* paf_next;

  int fSuccess = TRUE;
  int result = 0;

  //---FUNCTIONS THAT BLOCK COMMANDS---..
  for (paf = vch->affected; paf != NULL; paf = paf_next) {
    paf_next = paf->next;
    //we only run the update once per effect.
    if (paf_next != NULL) {
      if (paf->type == paf_next->type) {
	continue;
      }
    }
    
    if (!IS_SET(effect_table[GN_POS(paf->type)].flags, EFF_F1_CMDBLOCK)) {
      continue;
    }

    //BLOCKING OF COMMANDS DONE HERE
    if (IS_GEN(paf->type)) {
      if ((result = run_effect_update(ch, paf, argument, paf->type, 
				      &cmd, NULL, TRUE, EFF_UPDATE_PRECOMMAND)) == TRUE) {
	return FALSE;
      }
    }
  }


//OTHER
  for (paf = vch->affected; paf != NULL; paf = paf_next) {
    paf_next = paf->next;
    //we only run the update once per effect.
    if (paf_next != NULL) {
      if (paf->type == paf_next->type) {
	continue;
      }
    }

    if (IS_SET(effect_table[GN_POS(paf->type)].flags, EFF_F1_CMDBLOCK)) {
      continue;
    }

//SPECIAL GENS HERE

    if (IS_GEN(paf->type)) {
      if ((result = run_effect_update(ch, paf, argument, paf->type, 
				      &cmd, NULL, TRUE, EFF_UPDATE_PRECOMMAND)) != TRUE) {
	if (result == -1) {
	  return -1;
	}
      }
    }
  }

  return fSuccess;
}


int POSTCOMMAND_CHECK(CHAR_DATA* ch, int cmd)
{
  //RUn after the skill function exectures.
  CHAR_DATA* vch = ch;
  AFFECT_DATA* paf;
  AFFECT_DATA* paf_next;

  int fSuccess = TRUE;
  int result = 0;

  for (paf = vch->affected; paf != NULL; paf = paf_next) {
    paf_next = paf->next;
    //we only run the update once per effect.
    if (paf_next != NULL) {
      if (paf->type == paf_next->type) {
	continue;
      }
    }
    
//SPECIAL GENS HERE

    if (IS_GEN(paf->type)) {
      if ((result = run_effect_update(ch, NULL, NULL, paf->type, 
				      &cmd, NULL, TRUE, EFF_UPDATE_POSTCOMMAND)) != TRUE) {
	if (result == -1) {
	  return -1;
	}
	else {
	  fSuccess = result;
	}
      }
    }
  }

  return fSuccess;

}



void interpret( CHAR_DATA *ch, char *argument )
{
  int string_count = nAllocString, perm_count = nAllocPerm, string_size = sAllocString, perm_size = sAllocPerm;
  int stringdif, permdif;
  int cmd, trust = get_trust(ch);
  char buf[MSL];
  char cmd_copy[MIL], prefix[MIL], command[MIL], logline[MIL];
  char *strtime;
  char *new_cmd;
  int Pre_Ret = 1;//return value out of PRECOMMAND_CHECK
  bool found = FALSE;
  Double_List * tmp_list;
  
  if (sec_check(ch))
    return;

  if (ch->in_room == NULL)
    return;
  if (ch->prefix[0] != '\0' && str_prefix("prefix",argument)) {
    if (strlen(ch->prefix) + strlen(argument) > MIL) {
      send_to_char("Line to long, prefix not processed.\r\n",ch);
    }
    else {
      sprintf(prefix,"%s %s",ch->prefix,argument);
      argument = prefix;
    }
  }
  
  while ( isspace(*argument) ) {
    argument++;
  }
   
  if ( argument[0] == '\0' ) {
    return;
  }

  if (!IS_NPC(ch) && IS_SET(ch->act, PLR_FREEZE)) {
    send_to_char( "You're totally frozen!\n\r", ch );
    return;
  }
  else if (IS_STONED(ch)){
    send_to_char("You're too busy collecting bird droppings!\n\r", ch);
    return;
  }
  if ( !IS_NPC(ch) && is_affected(ch,gsn_mortally_wounded) 
       && !IS_IMMORTAL(ch)) {
    send_to_char( "You are too hurt to do anything.\n\r",ch);
    return;
  }
  if ( is_affected(ch,gsn_ecstacy) && !IS_IMMORTAL(ch)) {
    send_to_char( "Why?!? You're so happy right now.\n\r",ch);
    return;
  }
  if ( is_song_affected(ch,gsn_dance_song) && number_percent() < 25) {
    if (!IS_AWAKE(ch) && !IS_AFFECTED(ch,AFF_SLEEP)) {
      do_wake(ch,"");
    }
    send_to_char( "You decide to dance instead!\n\r",ch);
    act("$n dances wildly in front of you!",ch,NULL,NULL,TO_ROOM);
    return;
  }
  
  strcpy( logline, argument );
  strcpy(cmd_copy,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 );
  }

  /* alias check, if succesfull the input is stuffed with the alias */
  if (!IS_GAME(ch, GAME_NOALIAS) 
      && ( new_cmd = check_alias( ch, command, argument)) != NULL){
    char cmd[MIL];
    new_cmd[MIL] = 0;
    sprintf( cmd, "%s", new_cmd);
    interpret(ch, cmd);
    return;
  }
  AliasClearSafety();


  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 ) {
      found = TRUE;
      break;
    }
  }

  //remove quit confirm
  if (!IS_NPC(ch) && ch->pcdata->confirm_quit 
      && str_cmp(cmd_table[cmd].name, "quit")){
    ch->pcdata->confirm_quit = FALSE;
  }

  //this prevents commands when burrowed except revert
  if (found
      && (is_affected(ch,gsn_burrow) 
	  && cmd_table[cmd].meditate > 0) 
      && ((strcmp("revert", cmd_table[cmd].name)) 
	  && is_affected(ch, gsn_mist_form))) {
    send_to_char( "You can't do that while underground!\n\r", ch );
    send_to_char( "Type unburrow to emerge from the gound.\n\r", ch );
    return;
  }
  
  if (found
      && IS_AFFECTED2(ch, AFF_CATALEPSY) && cmd_table[cmd].meditate > 0) {
    send_to_char( "You're in a state of self-induced catalepsy.  You can't do that!\n\r", ch );
    send_to_char( "Type revive to revive yourself if you want.\n\r", ch );
    return;
  }

  if (ch->position == POS_MEDITATE && cmd_table[cmd].meditate > 0) {
    act_new("You stop meditating and stand up.",ch,NULL,NULL,TO_CHAR,POS_DEAD);
    act("$n stops meditating and stands up.",ch,NULL,NULL,TO_ROOM);
    ch->position = POS_STANDING;
    dreamprobe_cast(ch, NULL );
  }
  
  if (found && cmd_table[cmd].hide > 0 && IS_AFFECTED(ch, AFF_HIDE)) {
    affect_strip ( ch, gsn_hide);
    REMOVE_BIT (ch->affected_by, AFF_HIDE);
    act("You step out of the shadows.",ch,NULL,NULL,TO_CHAR);
    act("$n steps out of the shadows.",ch,NULL,NULL,TO_ROOM);
  }
  
  if (found && cmd_table[cmd].sneak > 0 && IS_AFFECTED(ch, AFF_SNEAK) 
      && ch->race != race_lookup("faerie") 
      && ch->race != race_lookup("elf") 
      && ch->race != race_lookup("drow")) {
    affect_strip (ch, gsn_sneak);
    REMOVE_BIT   (ch->affected_by, AFF_SNEAK);
    send_to_char("You trample around loudly again.\n\r",ch);
  }
  
  if (found && cmd_table[cmd].camo > 0 && IS_AFFECTED2(ch, AFF_CAMOUFLAGE)) {
    affect_strip ( ch, gsn_camouflage);
    REMOVE_BIT   ( ch->affected2_by, AFF_CAMOUFLAGE);
    act("You step out from your cover.",ch,NULL,NULL,TO_CHAR);
    act("$n steps out from $s cover.",ch,NULL,NULL,TO_ROOM);
  }
  
  if (found && cmd_table[cmd].shadow > 0 && IS_AFFECTED2(ch, AFF_SHADOWFORM)) {
    affect_strip (ch, gsn_shadowform);
    REMOVE_BIT (ch->affected2_by, AFF_SHADOWFORM);
    act("Your body regains its substance, and you materialize into existence.",ch,NULL,NULL,TO_CHAR);
    act("$n's body regains its substance, and $e materializes into existence.",ch,NULL,NULL,TO_ROOM);
    WAIT_STATE( ch, 24);
  }
  
  if (found && cmd_table[cmd].shadow > 0 && IS_AFFECTED(ch, AFF_TREEFORM)) {
    affect_strip (ch, gsn_treeform);
    REMOVE_BIT (ch->affected_by, AFF_TREEFORM);
    act("Your body returns to its normal shape.",ch,NULL,NULL,TO_CHAR);
    act("$n's body returns to its normal shape.",ch,NULL,NULL,TO_ROOM);
    WAIT_STATE( ch, 24);
  }

  if ( !found ) {
    if ( !check_social( ch, command, argument ) ) {
      send_to_char( "Huh?\n\r", ch );
      if ( IS_NPC(ch) && ch->trust && ch->trust == 6969 && str_cmp(logline,"endif")) {
	nlogf ("Log %d: MProg mistake: %s", ch->pIndexData->vnum, logline );
      }
    }
    return;
  }
  
  if ( IS_NPC(ch) && cmd_table[cmd].mob == 0 ) {
    return;
  }
   
  if ( IS_NPC(ch) && is_affected(ch,gsn_linked_mind) && cmd_table[cmd].swtch == 0 ) {
    return;
  }
  
  if ( ch->race == grn_vampire && cmd_table[cmd].morph == 0 ){
    if (is_affected(ch,gsn_bat_form) 
	|| is_affected(ch,gsn_wolf_form) 
	|| is_affected(ch,gsn_mist_form)){
      send_to_char("You can't do that while morphed.\n\r", ch);
      return;
    }
  }
  
  if ( IS_AFFECTED(ch, AFF_CHARM) && cmd_table[cmd].charm == 0 ) {
    send_to_char("You can't do that while charmed.\n\r",ch);
    return;
  }
  
  if ( cmd_table[cmd].log == LOG_NEVER ) {
    strcpy( logline, "" );
  }

  if ( ( !IS_NPC(ch) && IS_SET(ch->act, PLR_LOG) ) 
       || ( !IS_NPC(ch) && fLogAll ) 
       || (!IS_NPC(ch) && cmd_table[cmd].log == LOG_ALWAYS ) ) { 
    sprintf( log_buf, "[%d] Log %s: %s", ch->in_room->vnum, ch->name, logline );
    wiznet(log_buf,ch,NULL,WIZ_SECURE,0,get_trust(ch));
    log_string( log_buf );
  }
  
  if ( ch->desc != NULL && ch->desc->snoop_by != NULL ) {
    tmp_list = ch->desc->snoop_by;
    while (tmp_list != NULL) {
      write_to_buffer((DESCRIPTOR_DATA *)tmp_list->cur_entry, ch->name,0);
      write_to_buffer((DESCRIPTOR_DATA *)tmp_list->cur_entry, "% ",    2 );
      write_to_buffer((DESCRIPTOR_DATA *)tmp_list->cur_entry, logline, 0 );
      write_to_buffer((DESCRIPTOR_DATA *)tmp_list->cur_entry, "\n\r",  2 );
      tmp_list = tmp_list->next_node;
    }
  }
  
  if ( !found ) {
    if ( !check_social( ch, command, argument ) ) {
      send_to_char( "Huh?\n\r", ch );
      if ( IS_NPC(ch) && ch->trust && ch->trust == 6969 && str_cmp(logline,"endif")) {
	nlogf ("Log %d: MProg mistake: %s", ch->pIndexData->vnum, logline );
      }
    }
    return;
  }
  
  if ( ch->position < cmd_table[cmd].position) {
//Viri: This should have no effect, its taken care of above       && (ch->position != POS_MEDITATE) ) {
    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_RESTING:  send_to_char( "Nah... You feel too relaxed...\n\r", ch); break;
    case POS_MEDITATE:  send_to_char( "You are still meditating.\n\r", ch); break;
    case POS_SITTING:  send_to_char( "Better stand up first.\n\r",ch); break;
    case POS_FIGHTING: send_to_char( "No way!  You are still fighting!\n\r", ch); break;
    }
    return;
  }

  strtime = ctime( &mud_data.current_time );
  strtime[strlen(strtime)-1] = '\0';
  sprintf (last_command, "Command: [%5d] %s in [%5d] %s: %s (%s)",
	   IS_NPC(ch) ? ch->pIndexData->vnum : 0, IS_NPC(ch) ? ch->short_descr : ch->name,
	   ch->in_room ? ch->in_room->vnum : 0, 
	   ch->in_room ? ch->in_room->name : "(not in a room)", logline, strtime);

    
//PRECOMMAND CHECK
  if ( (Pre_Ret = PRECOMMAND_CHECK(ch, cmd, argument)) == -1) {
    bug("Error at: PRECOMMAND_CHECK\n\r", 0);
  }


//RUN COMMAND FUNCTION HERE  IF precommand returned TRUE
  if (Pre_Ret) {
    init_loop("command");

    /*     nlogf("Char: %s , Room: %d, Cmd: %s.", 
	   IS_NPC(ch)? ch->short_descr : ch->name, 
	   ch->in_room->vnum,
	   cmd_table[cmd].name); */

    (*cmd_table[cmd].do_fun) ( ch, argument );
    end_loop("command");
  }

    /*
//POSTCOMMAND CHECK
  if (POSTCOMMAND_CHECK(ch, cmd) == -1)
  bug("Error at: POSTCOMMAND_CHECK\n\r", 0);
    */

  sprintf (last_command, "Command: (Finished) [%5d] %s in [%5d] %s: %s (%s)",
	   IS_NPC(ch) ? ch->pIndexData->vnum : 0, IS_NPC(ch) ? ch->short_descr : ch->name,
	   ch->in_room ? ch->in_room->vnum : 0, 
	   ch->in_room ? ch->in_room->name : "(not in a room)", logline, strtime);

  if (string_count != nAllocString || perm_count < nAllocPerm ) {
    stringdif = sAllocString - string_size;
    permdif = sAllocPerm - perm_size;
    sprintf(buf,"Memcheck: strings %d bytes : perms %d bytes : %s : %s", 
	    stringdif, permdif, ch->name, cmd_copy);
    wiznet(buf,NULL,NULL,WIZ_MEMORY,0,0);
  }
  tail_chain( );
}

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

    if (is_affected(ch, gen_request)){
      send_to_char("You are far too taken with prayer for that.\n\r", ch);
      return TRUE;
    }

    if (is_affected(ch, gen_chant)){
      send_to_char("Ever tried to do that while chanting?.\n\r", ch);
      return TRUE;
    }

    if (is_affected(ch, gen_acraft)
	|| is_affected(ch, gen_wcraft)){
      send_to_char("Ever tried to do that while working on an item?.\n\r", ch);
      return TRUE;
    }

    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;
    if ( !IS_NPC(ch) && IS_SET(ch->comm, COMM_NOEMOTE) )
    {
	send_to_char( "You are anti-social!\n\r", ch );
	return TRUE;
    }
    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:
	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 (IS_AFFECTED(ch, AFF_HIDE))
    {
	affect_strip( ch, gsn_hide );
	REMOVE_BIT   ( ch->affected_by, AFF_HIDE		);
	act("You step out of the shadows.",ch,NULL,NULL,TO_CHAR);
	act("$n steps out of the shadows.",ch,NULL,NULL,TO_ROOM);
    }
    if (IS_AFFECTED2(ch, AFF_CAMOUFLAGE))
    {
	affect_strip ( ch, gsn_camouflage			);
	REMOVE_BIT   ( ch->affected2_by, AFF_CAMOUFLAGE		);
	act("You step out from your cover.",ch,NULL,NULL,TO_CHAR);
	act("$n steps out from $s cover.",ch,NULL,NULL,TO_ROOM);
    }
    if ( arg[0] == '\0' )
    {
	act_new( social_table[cmd].others_no_arg, ch, NULL, victim, TO_ROOM, POS_RESTING + 100    );
	act( social_table[cmd].char_no_arg,   ch, NULL, victim, TO_CHAR    );
    }
    else if ( ( victim = get_char_room( ch, NULL, arg ) ) == NULL )
	send_to_char( "They aren't here.\n\r", ch );
    else if ( victim == ch )
    {
	act_new( social_table[cmd].others_auto,   ch, NULL, victim, TO_ROOM, POS_RESTING + 100    );
	act( social_table[cmd].char_auto,     ch, NULL, victim, TO_CHAR    );
    }
    else
    {
	act_new( social_table[cmd].others_found,  ch, NULL, victim, TO_NOTVICT, POS_RESTING + 100 );
	act( social_table[cmd].char_found,    ch, NULL, victim, TO_CHAR    );
	act_new( social_table[cmd].vict_found,    ch, NULL, victim, TO_VICT, POS_RESTING + 100    );
    }
    return TRUE;
}

bool is_number ( char *arg )
{
    if ( *arg == '\0' )
        return FALSE;
    if ( *arg == '+' || *arg == '-' )
        arg++;
    for ( ; *arg != '\0'; arg++ )
        if ( !isdigit( *arg ) )
            return FALSE;
    return TRUE;
}

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;
}

int mult_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;
}

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;
}

char *one_argument_2( 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 = (*argument);
	arg_first++;
	argument++;
    }
    *arg_first = '\0';
    while ( isspace(*argument) )
	argument++;
    return argument;
}

void do_commands( CHAR_DATA *ch, char *argument )
{
    int cmd, col = 0;
    for ( cmd = 0; cmd_table[cmd].name[0] != '\0'; cmd++ )
    {
        if ( cmd_table[cmd].level <= LEVEL_HERO && cmd_table[cmd].level <= get_trust( ch ) && cmd_table[cmd].show)
	{
	    sendf( ch, "%-12s", cmd_table[cmd].name );
	    if ( ++col % 6 == 0 )
		send_to_char( "\n\r", ch );
	}
    }
    if ( col % 6 != 0 )
	send_to_char( "\n\r", ch );
}

void do_wizhelp( CHAR_DATA *ch, char *argument )
{
    int cmd, col = 0;
    for ( cmd = 0; cmd_table[cmd].name[0] != '\0'; cmd++ )
        if ( cmd_table[cmd].level > LEVEL_HERO && cmd_table[cmd].level <= get_trust( ch ) && cmd_table[cmd].show)
	{
	    sendf( ch, "%-12s", cmd_table[cmd].name );
	    if ( ++col % 6 == 0 )
		send_to_char( "\n\r", ch );
	}
    if ( col % 6 != 0 )
	send_to_char( "\n\r", ch );
}

/* do_deity */
/* linked into act_info.c */
/* written by viri */
void do_deity( CHAR_DATA *ch, char *argument )
{
  //this is the command that allwos the pc to choose his religion.

  char arg1[MIL];
  int god;

  int ethos = ch->pcdata->ethos;
  int align = 0;

  //args
  argument = one_argument( argument, arg1 );

  //quick safety checks
  if (IS_NPC(ch))
    {
      send_to_char("Mobiles follow no god.\n\r",ch);
      return;
    }
  //get align.
  if (ch->alignment <= EVIL_THRESH)
    align = DIETY_ALIGN_EVIL;
  else if (ch->alignment >= GOOD_THRESH)
    align = DIETY_ALIGN_GOOD;
  else
    align = DIETY_ALIGN_NEUTRAL;

  //get ethos.
  switch (ch->pcdata->ethos)
    {
    case 0: ethos = DIETY_ETHOS_LAWFUL;break;
    case 1: ethos = DIETY_ETHOS_NEUTRAL;break;
    case 2: ethos = DIETY_ETHOS_CHAOTIC;break;
    }

  if (ch->pcdata->way > 0)
    {
      send_to_char("Religion is not something to be taken lightly,\n\ryou have made your choice already.\n\r", ch);
      return;
    }
  
  if (IS_NULLSTR(arg1))
    {
      char buf[MIL];
      char out[MSL];
      send_to_char("Deity:\n\rSyntax: Religion <choice>\n\r\n\r"\
		   "This command allows you to select the primary principle\n\r"\
		   "which shall guide you in your life.\n\rYou are required to select "\
		   "one before proceding past rank 10.\n\r", ch);
      strcpy(out, "Your choices are: \n\r" );
      for ( god = 0; (deity_table[god].way != NULL && god < MAX_DIETY); god++ )
	{
	  //print only dieties that are right for the char.
	  if (!IS_SET(deity_table[god].align, align) || !IS_SET(deity_table[god].ethos, ethos) )
	    continue;  
/* viri: changed thsi to be easier for newbies
	  sprintf( buf, "%-12s: %-15s (%s)\n\r", 
		   path_table[deity_table[god].path].name, 
		   deity_table[god].way,
		   deity_table[god].god);
*/
	  sprintf( buf, "%-15s (%s)\n\r", 
		   deity_table[god].way,
		   deity_table[god].god);
	  strcat(out, buf);
	}
      strcat( out, "\n\r" );
      send_to_char(out,ch);
      send_to_char("\n\rConsult HELP RELIGION for more information.\n\r", ch);
      return;
    }//end show dieties.
  
  //No we check for proper args.
  if (str_cmp("confirm", argument) || IS_NULLSTR(argument))
    {
      send_to_char("Deity:\n\rSyntax: Religion <choice> confirm\n\rType: 'religion' alone with no arguments for more info.\n\r", ch);
      return;
    }

  //now we can do the changing.
  if ((god = way_lookup(arg1)) == -1
      || !IS_SET(deity_table[god].align, align) 
      || !IS_SET(deity_table[god].ethos, ethos) )
    {
      send_to_char("That religion is not avaliable as a choice.\n\rType: \"religion\" with no arguments for more info.\n\r", ch);
      return;
    }    
  
//we set the deity.
  ch->pcdata->deity = deity_table[god].god;
  ch->pcdata->way = god;
  sendf(ch, "You have decided to follow the way of %s under %s's guidance.\n\r", deity_table[ch->pcdata->way].way, 
	ch->pcdata->deity);
}

// 04-10 20:00 Ath: Added "coding" flag to title in who and whois.
// 04-23 10:00 Viri: Added PRECOMMAND_CHECK and POSTCOMMAND_CHECK
// 04-28-00 Viri: Added the new advself command.
// 05-09-00 Viri: Added Deity command
//01-02-01 Ath: Added "application" type notes