/***************************************************************************
* 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