/***************************************************************************
* Original Diku Mud copyright (C) 1990, 1991 by Sebastian Hammer, *
* Michael Seifert, Hans Henrik St{rfeldt, Tom Madsen, and Katja Nyboe. *
* *
* Merc Diku Mud improvments copyright (C) 1992, 1993 by Michael *
* Chastain, Michael Quan, and Mitchell Tse. *
* *
* In order to use any part of this Merc Diku Mud, you must comply with *
* both the original Diku license in 'license.doc' as well the Merc *
* license in 'license.txt'. In particular, you may not remove either of *
* these copyright notices. *
* *
* Dystopia Mud improvements copyright (C) 2000, 2001 by Brian Graversen *
* *
* Much time and thought has gone into this software and you are *
* benefitting. We hope that you share your changes too. What goes *
* around, comes around. *
***************************************************************************/
/***************************************************************************
* _/ _/ *
* _/_/_/ _/_/ _/_/_/ _/ _/_/ _/ _/ _/_/_/ *
* _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ *
* _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ *
* _/ _/ _/ _/_/_/ _/ _/_/ _/_/_/ _/_/_/ *
***************************************************************************
* Mindcloud Copyright 2001-2003 by Jeff Boschee (Zarius), *
* Additional credits are in the help file CODECREDITS *
* All Rights Reserved. *
***************************************************************************/
#include <sys/types.h>
#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <unistd.h> /* unlink() */
#include "merc.h"
#include "interp.h"
#include "garou.h"
#include "olc.h"
bool check_social args((CHAR_DATA * ch, char *command, char *argument));
bool check_xsocial args((CHAR_DATA * ch, char *command, char *argument));
int can_interpret args((CHAR_DATA * ch, int cmd));
int can_interpret(CHAR_DATA * ch, int cmd)
{
bool cando = FALSE;
if (ch->level == 12)
cando = TRUE;
if (cmd_table[cmd].level > get_trust(ch))
return 0;
if (cmd_table[cmd].race == 0 && cmd_table[cmd].discipline == 0)
cando = TRUE;
if (cmd_table[cmd].race > 0
&& cmd_table[cmd].discipline == 0
&& ch->class == cmd_table[cmd].race)
cando = TRUE;
if (cmd_table[cmd].discipline > 0
&& ch->power[cmd_table[cmd].discipline] >=
cmd_table[cmd].disclevel)
cando = TRUE;
if (!cando)
return 0;
if (ch->position < cmd_table[cmd].position)
return -1;
return 1;
}
void do_racecommands(CHAR_DATA * ch, char *argument)
{
int i, cmd, foundpower = 0;
char buf[MAX_STRING_LENGTH];
bool displayed;
if ((ch->class == 0 && !IS_IMMORTAL(ch)) || IS_NPC(ch))
{
send_to_char("You don't have any special powers.\n\r", ch);
return;
}
xprintf(buf, "%s\n\r", get_dystopia_banner(" Powers ", 82));
send_to_char(buf, ch);
for (i = 0; i < MAX_DISCIPLINES; i++)
{
displayed = FALSE;
if (ch->power[i] > 0 && strlen(discipline[i]) > 0
&& (ch->level < 7 || argument[0] == '\0'
|| !str_prefix(argument, discipline[i])))
{
foundpower = 1;
for (cmd = 0; cmd_table[cmd].name[0] != '\0'; cmd++)
{
if (cmd_table[cmd].discipline == i
&& ch->power[i] >=
cmd_table[cmd].disclevel
&& IS_CLASS(ch, cmd_table[cmd].race))
{
if (!displayed)
{
displayed = TRUE;
xprintf(buf, " %15s : ",
discipline[i]);
send_to_char(buf, ch);
}
send_to_char(cmd_table[cmd].name, ch);
send_to_char(" ", ch);
}
}
if (displayed)
send_to_char("\n\r", ch);
}
}
/* OBEAH CRAP HAVE TO ADD MANUAL......ANYONE HAVE ANOTHER WAY.....PLEASE BY ALL MEANS CHANGE IT */
if (IS_CLASS(ch, CLASS_VAMPIRE))
{
if (IS_CLASS(ch, CLASS_VAMPIRE)
&& ch->power[DISC_VAMP_OBEA] > 1)
{
xprintf(buf, " obeah :");
send_to_char(buf, ch);
}
if (IS_CLASS(ch, CLASS_VAMPIRE)
&& ch->power[DISC_VAMP_OBEA] > 6)
{
xprintf(buf, " (#Gpurify#n)");
send_to_char(buf, ch);
}
if (IS_CLASS(ch, CLASS_VAMPIRE)
&& ch->power[DISC_VAMP_OBEA] > 8)
{
xprintf(buf, " (#rBeast control#n)");
send_to_char(buf, ch);
}
if (IS_CLASS(ch, CLASS_VAMPIRE)
&& ch->power[DISC_VAMP_OBEA] > 9)
{
xprintf(buf, " (#wMovement of pure magic#n)");
send_to_char(buf, ch);
}
send_to_char("\n\r", ch);
}
if (IS_CLASS(ch, CLASS_SKYBLADE))
{
send_to_char(" Misc : Bladetalk Abilities\n\r",
ch);
if (ch->pcdata->powers[SKYBLADE_POWER] > 0)
{
send_to_char(" Power :", ch);
if (ch->pcdata->powers[SKYBLADE_POWER] >= 1)
send_to_char(" OwlEyes(Leye/Reye)", ch);
if (ch->pcdata->powers[SKYBLADE_POWER] >= 3)
send_to_char(" EagleStrength", ch);
if (ch->pcdata->powers[SKYBLADE_POWER] >= 5)
send_to_char(" HawkEyes", ch);
if (ch->pcdata->powers[SKYBLADE_POWER] >= 7)
send_to_char(" VultureVigor", ch);
if (ch->pcdata->powers[SKYBLADE_POWER] >= 9)
send_to_char(" FalconBlade", ch);
send_to_char("\n\r", ch);
}
if (ch->pcdata->powers[SKYBLADE_MAGIC] > 0)
{
send_to_char(" Magic :", ch);
if (ch->pcdata->powers[SKYBLADE_MAGIC] >= 1)
send_to_char(" SkyForge", ch);
//if (ch->pcdata->powers[SKYBLADE_MAGIC] >= 2)
//send_to_char(" SkyArmor",ch);
if (ch->pcdata->powers[SKYBLADE_MAGIC] >= 3)
send_to_char(" HeavenlyRain", ch);
if (ch->pcdata->powers[SKYBLADE_MAGIC] >= 5)
send_to_char(" Climax", ch);
if (ch->pcdata->powers[SKYBLADE_MAGIC] >= 7)
send_to_char(" DragonAura", ch);
if (ch->pcdata->powers[SKYBLADE_MAGIC] >= 9)
send_to_char(" WyrmAura", ch);
send_to_char("\n\r", ch);
}
if (ch->pcdata->powers[SKYBLADE_SKILLS] > 0)
{
send_to_char(" Skills:", ch);
if (ch->pcdata->powers[SKYBLADE_SKILLS] >= 1)
send_to_char(" BladeJump", ch);
if (ch->pcdata->powers[SKYBLADE_SKILLS] >= 2)
send_to_char(" Pummel", ch);
if (ch->pcdata->powers[SKYBLADE_SKILLS] >= 3)
send_to_char(" CloudsBlessing", ch);
if (ch->pcdata->powers[SKYBLADE_SKILLS] >= 4)
send_to_char(" RapierStrike", ch);
if (ch->pcdata->powers[SKYBLADE_SKILLS] >= 5)
send_to_char(" Retort", ch);
if (ch->pcdata->powers[SKYBLADE_SKILLS] >= 6)
send_to_char(" LeapOfFaith", ch);
if (ch->pcdata->powers[SKYBLADE_SKILLS] >= 7)
send_to_char(" DragonCharge", ch);
if (ch->pcdata->powers[SKYBLADE_SKILLS] >= 8)
send_to_char
(" \n\rDragonX",
ch);
if (ch->pcdata->powers[SKYBLADE_SKILLS] >= 9)
send_to_char(" WyrmRoar", ch);
if (ch->pcdata->powers[SKYBLADE_SKILLS] >= 10)
send_to_char(" DiveStrike", ch);
send_to_char("\n\r", ch);
}
}
i = 0;
displayed = FALSE;
for (cmd = 0; cmd_table[cmd].name[0] != '\0'; cmd++)
{
if (IS_CLASS(ch, cmd_table[cmd].race)
&& cmd_table[cmd].discipline == 0)
{
strcpy(buf, "");
if (i == 0)
{
switch (ch->class)
{
case 1:
xprintf(buf, " %15s : ",
"Demon Kind");
break;
case 2:
xprintf(buf, " %15s : ", "Magi");
break;
case 3:
xprintf(buf, " %15s : ",
"Werewolf Powers");
break;
case 4:
xprintf(buf, " %15s : ", "Innate");
break;
case 5:
xprintf(buf, " %15s : ",
"Weaponsmaster");
break;
case 6:
xprintf(buf, " %15s : ",
"Drow Abilities");
break;
case 7:
xprintf(buf, " %15s : ",
"Monk Abilities");
break;
case 8:
xprintf(buf, " %15s : ",
"Ninja Abilities");
break;
case CLASS_LICH:
xprintf(buf, " %15s : ",
"Lich Abilities");
break;
case CLASS_SHAPESHIFTER:
xprintf(buf, " %15s : ",
"Shapeshifter");
break;
case CLASS_TANARRI:
xprintf(buf, " %15s : ",
"Tanar'ri Powers");
break;
case CLASS_ANGEL:
xprintf(buf, " %15s : ",
"Angel Abilities");
break;
case CLASS_UNDEAD_KNIGHT:
xprintf(buf, " %15s : ",
"Knight Powers");
break;
case CLASS_CYBORG:
xprintf(buf, " %15s : ",
"Cyborg Powers");
break;
case CLASS_SKYBLADE:
xprintf(buf, " %15s : ",
"Tapped Powers");
break;
case CLASS_GHOUL:
xprintf(buf, " %15s : ",
"Ghoul Powers");
break;
case CLASS_THIEF:
xprintf(buf, " %15s : ",
"Thief Skills");
break;
case 19:
xprintf(buf, " %15s : ",
"Magical Abilities");
break;
case CLASS_SHADOW:
xprintf(buf, " %15s : ",
"Shadow Skills");
break;
case CLASS_PRIEST:
xprintf(buf, " %15s : ",
"Priest Abilities");
break;
case CLASS_JEDI:
xprintf(buf, " %15s : ",
"Jedi Skills");
break;
case CLASS_DRONE:
xprintf(buf, " %15s : ",
"Drone Powers");
break;
case CLASS_DROID:
xprintf(buf, " %15s : ",
"Droid Powers");
break;
case CLASS_HOBBIT:
xprintf(buf, " %15s : ",
"Hobbit Powers");
break;
case CLASS_FAE:
xprintf(buf, " %15s : ",
"Fae Powers");
break;
case CLASS_GIANT:
xprintf(buf, " %15s : ",
"Giant Powers");
break;
case CLASS_ELEMENTAL:
xprintf(buf, " %15s : ",
"Elemental Powers");
break;
case CLASS_PALADIN:
xprintf(buf, " %15s : ",
"Paladin Powers");
break;
case CLASS_BLADE_MASTER:
xprintf(buf, " %15s : ",
"Blademaster Powers");
break;
case CLASS_DRAGON:
xprintf(buf, " %15s : ",
"Dragon Powers");
break;
case CLASS_ZOMBIE:
xprintf(buf, " %15s : ",
"Zombie Powers");
break;
case CLASS_SHINOBI:
xprintf(buf, " %15s : ",
"Shinobi Powers");
break;
}
}
else if (i % 4 == 0)
{
xprintf(buf, "\n\r ");
}
i++;
send_to_char(buf, ch);
send_to_char(cmd_table[cmd].name, ch);
send_to_char(" ", ch);
displayed = TRUE;
foundpower++;
}
}
if (displayed)
send_to_char("\n\r", ch);
if (foundpower == 0)
{
send_to_char(" You do not yet possess any powers.\n\r", ch);
}
xprintf(buf, "%s\n\r", get_dystopia_banner("", 80));
send_to_char(buf, ch);
return;
}
/*
* Command logging types.
*/
#define LOG_NORMAL 0 // Doesn't log unless the player is logged
#define LOG_ALWAYS 1 // Will always log this command (both file and logchannel)
#define LOG_NEVER 2 // Will never log this command, no matter what
#define LOG_SEMI 3 // Will always log this command (file only)
/*
* Log-all switch.
*/
char *last_command = NULL;
bool arena_open = FALSE;
bool arena_base = FALSE;
bool arenaopen = FALSE;
bool current_arena = FALSE;
bool ragnarok = FALSE;
bool fLogAll = FALSE;
bool global_exp = FALSE;
bool global_qp = FALSE;
bool global_dt = FALSE;
bool global_cp = FALSE;
bool global_chaos = FALSE;
bool tourney = FALSE;
bool extra_log = FALSE;
bool cmd_done = TRUE;
bool arena2 = TRUE;
bool arena2death = FALSE;
int exptimer = 0;
int qpstimer = 0;
int players_logged = 0;
int thread_count = 0;
int top_playerid = 0;
int ragnarok_cost = 5000;
int exp_cost = 25000;
int dt_cost = 50000;
int cp_cost = 25000;
int bones_cost = 75000;
int pulse_exp = -1;
int pulse_cp = -1;
int pulse_dt = -1;
int pulse_qp = -1;
int ragnarok_timer = PULSE_AREA * 60;
int pulse_arena = 1;
int players_decap = 0;
int players_gstolen = 0;
int iDelete = 0;
int total_output = 0;
int mudinfo[MUDINFO_MAX];
int ccenter[CCENTER_MAX];
bool check_disabled(const struct cmd_type *command);
DISABLED_DATA *disabled_first;
BAN_DATA *ban_list;
BAN_DATA *newbieban_list;
pthread_mutex_t memory_mutex = PTHREAD_MUTEX_INITIALIZER;
/*
* Command table.
*/
const struct cmd_type cmd_table[] = {
/*
* Name Function Min Position Level Log Class,DiscLevel,DiscName
*/
/*
* common movement commands
*/
{"north", do_north, POS_STANDING, 0, LOG_NORMAL, 0, 0, 0},
{"east", do_east, POS_STANDING, 0, LOG_NORMAL, 0, 0, 0},
{"south", do_south, POS_STANDING, 0, LOG_NORMAL, 0, 0, 0},
{"west", do_west, POS_STANDING, 0, LOG_NORMAL, 0, 0, 0},
{"up", do_up, POS_STANDING, 0, LOG_NORMAL, 0, 0, 0},
{"down", do_down, POS_STANDING, 0, LOG_NORMAL, 0, 0, 0},
/*
* Common other commands.
* Placed here so one and two letter abbreviations work.
*/
{"cast", do_cast, POS_FIGHTING, 0, LOG_NORMAL, 0, 0, 0},
{"call", do_call, POS_SLEEPING, 0, LOG_NORMAL, 0, 0, 0},
{"consider", do_consider, POS_SITTING, 0, LOG_NORMAL, 0, 0, 0},
{"chi", do_chi, POS_FIGHTING, 3, LOG_NORMAL, 64, 0, 0},
{"mesmerise", do_command, POS_SITTING, 3, LOG_ALWAYS, 4,
DISC_VAMP_DOMI, 2},
{"command", do_command, POS_SITTING, 3, LOG_ALWAYS, 4, DISC_VAMP_DOMI,
1},
{"crack", do_crack, POS_STANDING, 0, LOG_NORMAL, 0, 0, 0},
{"diagnose", do_diagnose, POS_FIGHTING, 0, LOG_NORMAL, 0, 0, 0},
{"dismount", do_dismount, POS_STANDING, 0, LOG_NORMAL, 0, 0, 0},
{"enter", do_enter, POS_STANDING, 0, LOG_NORMAL, 0, 0, 0},
{"exits", do_exits, POS_SITTING, 0, LOG_NORMAL, 0, 0, 0},
{"get", do_get, POS_SITTING, 0, LOG_NORMAL, 0, 0, 0},
{"inventory", do_inventory, POS_DEAD, 0, LOG_NORMAL, 0, 0, 0},
{"kill", do_kill, POS_FIGHTING, 0, LOG_NORMAL, 0, 0, 0},
{"combatswitch", do_combatswitch, POS_FIGHTING, 0, LOG_NORMAL, 0, 0,
0},
{"look", do_look, POS_MEDITATING, 0, LOG_NORMAL, 0, 0, 0},
{"ls", do_look, POS_MEDITATING, 0, LOG_NORMAL, 0, 0, 0},
{"mount", do_mount, POS_STANDING, 0, LOG_NORMAL, 0, 0, 0},
{"order", do_order, POS_SITTING, 1, LOG_ALWAYS, 0, 0, 0},
{"rest", do_rest, POS_MEDITATING, 0, LOG_NORMAL, 0, 0, 0},
{"reimb", do_reimb, POS_MEDITATING, 12, LOG_NORMAL, 0, 0, 0},
{"sit", do_sit, POS_SITTING, 0, LOG_NORMAL, 0, 0, 0},
{"stand", do_stand, POS_SLEEPING, 0, LOG_NORMAL, 0, 0, 0},
{"tell", do_tell, POS_MEDITATING, 0, LOG_NORMAL, 0, 0, 0},
{"whisper", do_whisper, POS_SITTING, 0, LOG_NORMAL, 0, 0, 0},
{"wield", do_wear, POS_SITTING, 0, LOG_NORMAL, 0, 0, 0},
{"wizhelp", do_wizhelp, POS_DEAD, 4, LOG_NORMAL, 0, 0, 0},
{"wizlist", do_wizlist, POS_DEAD, 0, LOG_NORMAL, 0, 0, 0},
{"version", do_version, POS_DEAD, 0, LOG_NORMAL, 0, 0, 0},
{"linkdead", do_linkdead, POS_DEAD, 7, LOG_NORMAL, 0, 0, 0},
/*
* Informational commands.
*/
{"affects", do_affects, POS_DEAD, 0, LOG_NORMAL, 0, 0, 0},
{"areas", do_areas, POS_DEAD, 0, LOG_NORMAL, 0, 0, 0},
{"credits", do_credits, POS_DEAD, 0, LOG_NORMAL, 0, 0, 0},
{"equipment", do_equipment, POS_DEAD, 0, LOG_NORMAL, 0, 0, 0},
{"examine", do_examine, POS_SITTING, 0, LOG_NORMAL, 0, 0, 0},
{"help", do_help, POS_DEAD, 0, LOG_NORMAL, 0, 0, 0},
{"idea", do_idea, POS_DEAD, 0, LOG_NORMAL, 0, 0, 0},
{"report", do_report, POS_DEAD, 0, LOG_NORMAL, 0, 0, 0},
{"reply", do_reply, POS_MEDITATING, 0, LOG_NORMAL, 0, 0, 0},
{"autoset", do_autoset, POS_STANDING, 0, LOG_NORMAL, 0, 0, 0},
{"autoall", do_autoall, POS_DEAD, 0, LOG_NORMAL, 0, 0, 0},
{"autostance", do_autostance, POS_STANDING, 0, LOG_NORMAL, 0, 0, 0},
{"mastery", do_mastery, POS_STANDING, 3, LOG_ALWAYS, 0, 0, 0},
{"expcalc", do_exp, POS_FIGHTING, 1, LOG_NORMAL, 0, 0, 0},
{"pkpowers", do_pkpowers, POS_STANDING, 0, LOG_NORMAL, 0, 0, 0},
{"gensteal", do_gensteal, POS_STANDING, 3, LOG_NORMAL, 0, 0, 0},
{"setstance", do_setstance, POS_STANDING, 0, LOG_NORMAL, 0, 0, 0},
{"findspec", do_specfind, POS_DEAD, 12, LOG_NORMAL, 0, 0, 0},
{"itemwf", do_itemwearfind, POS_DEAD, 12, LOG_NORMAL, 0, 0, 0},
{"mudstat", do_mudstat, POS_DEAD, 2, LOG_NORMAL, 0, 0, 0},
{"level", do_level, POS_FIGHTING, 0, LOG_NORMAL, 0, 0, 0},
{"oldlevel", do_oldlevel, POS_FIGHTING, 0, LOG_NORMAL, 0, 0, 0},
{"top", do_top, POS_FIGHTING, 0, LOG_NORMAL, 0, 0, 0},
{"topclear", do_topclear, POS_DEAD, 11, LOG_NORMAL, 0, 0, 0},
{"selfdelete", do_selfdelete, POS_STANDING, 2, LOG_NEVER, 0, 0, 0},
{"selfclass", do_classself, POS_STANDING, 3, LOG_ALWAYS, 0, 0, 0},
{"selfrace", do_raceself, POS_STANDING, 3, LOG_ALWAYS, 0, 0, 0},
{"score", do_newscore, POS_DEAD, 0, LOG_NORMAL, 0, 0, 0},
{"scroll", do_scroll, POS_DEAD, 2, LOG_NORMAL, 0, 0, 0},
{"spit", do_spit, POS_SITTING, 3, LOG_NORMAL, 4, DISC_VAMP_QUIE, 1},
{"split", do_split, POS_SITTING, 3, LOG_NORMAL, 0, 0, 0},
{"tongue", do_tongue, POS_FIGHTING, 3, LOG_NORMAL, 4, DISC_VAMP_SERP,
4},
{"mindblast", do_mindblast, POS_STANDING, 3, LOG_NORMAL, 4,
DISC_VAMP_PRES, 2},
{"stat", do_stat, POS_DEAD, 3, LOG_NORMAL, 0, 0, 0},
{"skill", do_skill, POS_MEDITATING, 0, LOG_NORMAL, 0, 0, 0},
{"spells", do_spell, POS_MEDITATING, 0, LOG_NORMAL, 0, 0, 0},
{"socials", do_socials, POS_DEAD, 0, LOG_NORMAL, 0, 0, 0},
{"time", do_time, POS_DEAD, 0, LOG_NORMAL, 0, 0, 0},
{"typo", do_typo, POS_DEAD, 0, LOG_NORMAL, 0, 0, 0},
{"who", do_who, POS_DEAD, 0, LOG_NORMAL, 0, 0, 0},
{"viewtier", do_viewtier, POS_DEAD, 0, LOG_NORMAL, 0, 0, 0},
{"xemot", do_huh, POS_DEAD, 1, LOG_NORMAL, 0, 0, 0},
{"xemote", do_xemote, POS_SITTING, 1, LOG_NORMAL, 0, 0, 0},
{"xsocial", do_huh, POS_DEAD, 1, LOG_NORMAL, 0, 0, 0},
{"xsocials", do_xsocials, POS_DEAD, 1, LOG_NORMAL, 0, 0, 0},
{"group", do_group, POS_DEAD, 0, LOG_NORMAL, 0, 0, 0},
/*Ghoul Commands*/
{"realms", do_realms, POS_STANDING, 3, LOG_NORMAL, 17, 0, 0},
{"gcreate", do_gcreate, POS_SITTING, 3, LOG_NORMAL, 17, 0, 0},
{"gore", do_gore, POS_STANDING, 3, LOG_NORMAL, 17, 0, 0},
{"ravage", do_ravage, POS_FIGHTING, 3, LOG_NORMAL, 17, 0, 0},
{"sdecay", do_sdecay, POS_STANDING, 3, LOG_NORMAL, 17, 0, 0},
{"sdeath", do_sdeath, POS_STANDING, 3, LOG_NORMAL, 17, 0, 0},
//{ "ghouleq", do_ghouleq, POS_STANDING, 3, LOG_NORMAL, 17,0,0 },
{"swampwalk", do_swampwalk, POS_STANDING, 3, LOG_NORMAL, 17, 0, 0},
/*Draconians*/
{"dragonorb", do_dragonorb, POS_STANDING, 0, LOG_NORMAL, 15, 0, 0},
{"fieryeyes", do_fieryeyes, POS_FIGHTING, 0, LOG_NORMAL, 15, 0, 0},
{"spikes", do_spikes, POS_FIGHTING, 0, LOG_NORMAL, 15, 0, 0},
{"deathstate", do_deathstate, POS_STANDING, 0, LOG_NORMAL, 15, 0,
0},
{"dclaws", do_dclaws, POS_FIGHTING, 0, LOG_NORMAL, 15, 0, 0},
{"headbash", do_headbash, POS_FIGHTING, 0, LOG_NORMAL, 15, 0, 0},
{"acidblood", do_acidblood, POS_STANDING, 0, LOG_NORMAL, 15, 0, 0},
{"lizardform", do_lizardform, POS_STANDING, 0, LOG_NORMAL, 15, 0,
0},
{"dtail", do_dtail, POS_FIGHTING, 0, LOG_NORMAL, 15, 0, 0},
{"venomspit", do_venomspit, POS_FIGHTING, 0, LOG_NORMAL, 15, 0, 0},
{"dragonrun", do_dragonrun, POS_STANDING, 0, LOG_NORMAL, 15, 0, 0},
{"gasbreath", do_gasbreath, POS_FIGHTING, 0, LOG_NORMAL, 15, 0, 0},
{"firebreath", do_firebreath, POS_FIGHTING, 0, LOG_NORMAL, 15, 0,
0},
/*Thief Commands*/
{"thiefskills", do_thiefskills, POS_STANDING, 3, LOG_NORMAL,
CLASS_THIEF, 0, 0},
{"rolldice", do_rolldice, POS_STANDING, 3, LOG_NORMAL, CLASS_THIEF, 0,
0},
{"tconceal", do_tconceal, POS_STANDING, 3, LOG_NORMAL, CLASS_THIEF, 0,
0},
{"gleam", do_gleam, POS_STANDING, 3, LOG_NORMAL, CLASS_THIEF, 0, 0},
{"bstab", do_bstab, POS_STANDING, 3, LOG_NORMAL, CLASS_THIEF, 0, 0},
{"tdagger", do_tdagger, POS_FIGHTING, 3, LOG_NORMAL, CLASS_THIEF, 0,
0},
//{ "thiefeq", do_thiefeq, POS_STANDING, 3, LOG_NORMAL, CLASS_THIEF,0,0 },
{"dtrick", do_dtrick, POS_FIGHTING, 3, LOG_NORMAL, CLASS_THIEF, 0, 0},
{"poisonblade", do_poisonblade, POS_STANDING, 3, LOG_NORMAL,
CLASS_THIEF, 0, 0},
{"shadowmove", do_shadowmove, POS_STANDING, 3, LOG_NORMAL, CLASS_THIEF, 0, 0},
/*
* shadows
*/
{"moonstrike", do_moonstrike, POS_FIGHTING, 3, LOG_NORMAL,
CLASS_SHADOW, 0, 0},
{"shadowthrust", do_shadowthrust, POS_FIGHTING, 3, LOG_NORMAL,
CLASS_SHADOW, 0, 0},
{"dirtthrow", do_dirtthrow, POS_FIGHTING, 3, LOG_NORMAL, CLASS_SHADOW,
0, 0},
{"gutcutter", do_gutcutter, POS_FIGHTING, 3, LOG_NORMAL, CLASS_SHADOW,
0, 0},
{"soulreaper", do_soulreaper, POS_FIGHTING, 3, LOG_NORMAL,
CLASS_SHADOW, 0, 0},
{"knifespin", do_knifespin, POS_FIGHTING, 3, LOG_NORMAL, CLASS_SHADOW,
0, 0},
{"wakasashislice", do_wakasashislice, POS_FIGHTING, 3, LOG_NORMAL,
CLASS_SHADOW, SHADOW_ATTACK, 64},
{"caltrops", do_caltrops, POS_FIGHTING, 3, LOG_NORMAL, CLASS_SHADOW,
0, 0},
{"shadowlearn", do_shadowlearn, POS_STANDING, 3, LOG_NORMAL,
CLASS_SHADOW, 0, 0},
{"soulseek", do_soulseek, POS_STANDING, 3, LOG_NORMAL, CLASS_SHADOW,
0, 0},
{"soultarget", do_soultarget, POS_FIGHTING, 3, LOG_NORMAL,
CLASS_SHADOW, 0, 0},
{"shadowwalk", do_shadowwalk, POS_STANDING, 3, LOG_NORMAL,
CLASS_SHADOW, 0, 0},
{"scry", do_scry, POS_STANDING, 3, LOG_NORMAL, CLASS_SHADOW,
0, 0},
{"vanish", do_vanish, POS_STANDING, 3, LOG_NORMAL, CLASS_SHADOW,
0, 0},
{"shield", do_shield, POS_STANDING, 3, LOG_NORMAL, CLASS_SHADOW,
0, 0},
{"assassinate", do_assassinate, POS_STANDING, 3, LOG_NORMAL,
CLASS_SHADOW, 0, 0},
{"truesight", do_truesight, POS_STANDING, 3, LOG_NORMAL, CLASS_SHADOW,
0, 0},
/*
* Priests
*/
{"pgain", do_pgain, POS_STANDING, 3, LOG_NORMAL, CLASS_PRIEST, 0, 0},
{"priestform", do_priestform, POS_STANDING, 3, LOG_NORMAL,
CLASS_PRIEST, 0, 0},
{"holyaura", do_holyaura, POS_STANDING, 3, LOG_NORMAL, CLASS_PRIEST,
0, 0},
{"godbless", do_godbless, POS_STANDING, 3, LOG_NORMAL, CLASS_PRIEST,
0, 0},
{"ascend", do_ascend, POS_STANDING, 3, LOG_NORMAL, CLASS_PRIEST, 0,
0},
{"godheal", do_godheal, POS_STANDING, 3, LOG_NORMAL, CLASS_PRIEST, 0,
0},
{"godpeace", do_godpeace, POS_STANDING, 3, LOG_NORMAL, CLASS_PRIEST,
0, 0},
{"godstrike", do_godstrike, POS_FIGHTING, 3, LOG_NORMAL, CLASS_PRIEST,
0, 0},
{"grheal", do_grheal, POS_STANDING, 3, LOG_NORMAL, CLASS_PRIEST, 0,
0},
{"grstorm", do_grstorm, POS_STANDING, 3, LOG_NORMAL, CLASS_PRIEST, 0,
0},
{"healstorm", do_healstorm, POS_STANDING, 3, LOG_NORMAL, CLASS_PRIEST,
0, 0},
{"majorheal", do_majorheal, POS_FIGHTING, 3, LOG_NORMAL, CLASS_PRIEST,
0, 0},
{"minheal", do_minheal, POS_FIGHTING, 3, LOG_NORMAL, CLASS_PRIEST, 0,
0},
{"minstorm", do_minstorm, POS_FIGHTING, 3, LOG_NORMAL, CLASS_PRIEST,
0, 0},
{"pwho", do_pwho, POS_FIGHTING, 3, LOG_NORMAL, CLASS_PRIEST, 0, 0},
{"turn", do_turnundead, POS_FIGHTING, 3, LOG_NORMAL, CLASS_PRIEST, 0,
0},
/*
* Jedi
*/
{"jfight", do_jfight, POS_FIGHTING, 3, LOG_NORMAL, 24, 0, 0},
{"jstate", do_jstate, POS_FIGHTING, 3, LOG_NORMAL, 24, 0, 0},
{"jstep", do_jstep, POS_STANDING, 3, LOG_NORMAL, 24, 0, 0},
//{ "forcetalk", do_forcetalk, POS_DEAD, 3, LOG_NORMAL,24,0,0},
//{ "jediarmor", do_jediarmor, POS_STANDING, 3, LOG_NORMAL,24,0,0},
{"jedilearn", do_jedilearn, POS_STANDING, 3, LOG_NORMAL, 24, 0,
0},
{"jediskill", do_jediskill, POS_STANDING, 3, LOG_NORMAL, 24, 0,
0},
{"fshield", do_fshield, POS_STANDING, 3, LOG_NORMAL, 24, 0, 0},
{"jlevitate", do_jlevitate, POS_STANDING, 3, LOG_NORMAL, 24, 0,
0},
{"jsight", do_jsight, POS_STANDING, 3, LOG_NORMAL, 24, 0, 0},
{"jeyes", do_jeyes, POS_STANDING, 3, LOG_NORMAL, 24, 0, 0},
{"jsense", do_jsense, POS_STANDING, 3, LOG_NORMAL, 24, 0, 0},
{"jhealing", do_jhealing, POS_STANDING, 3, LOG_NORMAL, 24, 0, 0},
{"jsummon", do_jsummon, POS_FIGHTING, 3, LOG_NORMAL, 24, 0, 0},
{"jsault", do_jsault, POS_FIGHTING, 3, LOG_NORMAL, 24, 0, 0},
{"fpush", do_fpush, POS_FIGHTING, 3, LOG_NORMAL, 24, 0, 0},
{"jreverse", do_jreverse, POS_FIGHTING, 3, LOG_NORMAL, 24, 0, 0},
{"jkneel", do_jkneel, POS_FIGHTING, 3, LOG_NORMAL, 24, 0, 0},
{"jstab", do_jstab, POS_FIGHTING, 3, LOG_NORMAL, 24, 0, 0},
{"jhigh", do_jhigh, POS_FIGHTING, 3, LOG_NORMAL, 24, 0, 0},
{"jupper", do_jupper, POS_FIGHTING, 3, LOG_NORMAL, 24, 0, 0},
{"jbutterfly", do_jbutterfly, POS_FIGHTING, 3, LOG_NORMAL, 24, 0,
0},
{"jcross", do_jcross, POS_FIGHTING, 3, LOG_NORMAL, 24, 0, 0},
{"jslash", do_jslash, POS_FIGHTING, 3, LOG_NORMAL, 24, 0, 0},
{"jcircle", do_jcircle, POS_FIGHTING, 3, LOG_NORMAL, 24, 0, 0},
{"jedishield", do_jedishield, POS_STANDING, 3, LOG_NORMAL, 24, 0,
0},
{"jedisleep", do_jedisleep, POS_STANDING, 3, LOG_NORMAL, 24, 0,
0},
{"fspeed", do_fspeed, POS_STANDING, 3, LOG_NORMAL, 24, 0, 0},
{"jwalk", do_jwalk, POS_STANDING, 3, LOG_NORMAL, CLASS_JEDI, 0, 0},
{"jfocus", do_jfocus, POS_STANDING, 3, LOG_NORMAL, CLASS_JEDI, 0, 0},
{"jtouch", do_jtouch, POS_STANDING, 3, LOG_NORMAL, 24, 0, 0},
/*
* Configuration commands.
*/
{"alignment", do_alignment, POS_DEAD, 0, LOG_NORMAL, 0, 0, 0},
{"alias", do_alias, POS_STANDING, 2, LOG_ALWAYS, 0, 0, 0},
{"config", do_config, POS_DEAD, 0, LOG_NORMAL, 0, 0, 0},
{"vt100", do_vt100, POS_DEAD, 1, LOG_NORMAL, 0, 0, 0},
{"compres", do_compres, POS_DEAD, 0, LOG_NORMAL, 0, 0, 0},
{"compress", do_compress, POS_DEAD, 0, LOG_NORMAL, 0, 0, 0},
{"description", do_description, POS_DEAD, 0, LOG_NORMAL, 0, 0, 0},
{"password", do_password, POS_DEAD, 0, LOG_NEVER, 0, 0, 0},
{"title", do_title, POS_DEAD, 0, LOG_NORMAL, 0, 0, 0},
{"ansi", do_ansi, POS_DEAD, 0, LOG_NORMAL, 0, 0, 0},
{"autoexit", do_autoexit, POS_DEAD, 0, LOG_NORMAL, 0, 0, 0},
{"autoloot", do_autoloot, POS_DEAD, 0, LOG_NORMAL, 0, 0, 0},
{"autoslab", do_autoslab, POS_DEAD, 0, LOG_NORMAL, 0, 0, 0},
{"autohilt", do_autohilt, POS_DEAD, 0, LOG_NORMAL, 0, 0, 0},
{"autogem", do_autogem, POS_DEAD, 0, LOG_NORMAL, 0, 0, 0},
{"autohead", do_autohead, POS_DEAD, 0, LOG_NORMAL, 0, 0, 0},
{"autosplit", do_autosplit, POS_DEAD, 0, LOG_NORMAL, 0, 0, 0},
{"autoweather", do_autoweather, POS_DEAD, 0, LOG_NORMAL, 0, 0, 0},
{"autosigil", do_autosigil, POS_DEAD, 0, LOG_NORMAL, 0, 0, 0},
{"weather", do_weather, POS_DEAD, 0, LOG_NORMAL, 0, 0, 0},
{"autosac", do_autosac, POS_DEAD, 0, LOG_NORMAL, 0, 0, 0},
{"autobones", do_autobones, POS_DEAD, 0, LOG_NORMAL, 0, 0, 0},
{"autostore", do_autostore, POS_DEAD, 0, LOG_NORMAL, 0, 0, 0},
{"brief1", do_brief, POS_DEAD, 0, LOG_NORMAL, 0, 0, 0},
{"brief2", do_brief2, POS_DEAD, 0, LOG_NORMAL, 0, 0, 0},
{"brief3", do_brief3, POS_DEAD, 0, LOG_NORMAL, 0, 0, 0},
{"brief4", do_brief4, POS_DEAD, 0, LOG_NORMAL, 0, 0, 0},
{"brief5", do_brief5, POS_DEAD, 0, LOG_NORMAL, 0, 0, 0},
{"brief6", do_brief6, POS_DEAD, 0, LOG_NORMAL, 0, 0, 0},
{"brief7", do_brief7, POS_DEAD, 0, LOG_NORMAL, 0, 0, 0},
{"cprompt", do_cprompt, POS_DEAD, 0, LOG_NORMAL, 0, 0, 0},
{"prompt", do_prompt, POS_DEAD, 0, LOG_NORMAL, 0, 0, 0},
{"sound", do_sound, POS_DEAD, 1, LOG_NORMAL, 0, 0, 0},
{"music", do_music, POS_DEAD, 1, LOG_NORMAL, 0, 0, 0},
{"map", do_map, POS_DEAD, 1, LOG_NORMAL, 0, 0, 0},
/*
* Communication commands.
*/
{"flame", do_flame, POS_DEAD, 0, LOG_NORMAL, 0, 0, 0},
{"gsocial", do_gsocial, POS_DEAD, 0, LOG_NORMAL, 0, 0, 0},
{"trivia", do_trivia, POS_DEAD, 0, LOG_NORMAL, 0, 0, 0},
{"chat", do_chat, POS_DEAD, 0, LOG_NORMAL, 0, 0, 0},
{".", do_chat, POS_DEAD, 2, LOG_NORMAL, 0, 0, 0},
{"clandisc", do_clandisc, POS_SITTING, 3, LOG_NORMAL, 0, 0, 0},
{"intro", do_introduce, POS_DEAD, 3, LOG_NORMAL, 8, 0, 0,},
{"intro", do_introduce, POS_DEAD, 3, LOG_NORMAL, 4, 0, 0,},
{"emote", do_xemote, POS_SITTING, 0, LOG_NORMAL, 0, 0, 0},
{",", do_xemote, POS_SITTING, 0, LOG_NORMAL, 0, 0, 0},
{"gtell", do_gtell, POS_DEAD, 0, LOG_NORMAL, 0, 0, 0},
{";", do_gtell, POS_DEAD, 0, LOG_NORMAL, 0, 0, 0},
{"howl", do_howl, POS_DEAD, 1, LOG_NORMAL, 0, 0, 0},
{"telepath", do_telepath, POS_DEAD, 1, LOG_NORMAL, 512, 0, 0},
{"music", do_music, POS_SLEEPING, 2, LOG_NORMAL, 0, 0, 0},
{"sing", do_sing, POS_SITTING, 2, LOG_NORMAL, 0, 0, 0},
{"note", do_note, POS_DEAD, 0, LOG_NORMAL, 0, 0, 0},
{"board", do_board, POS_DEAD, 0, LOG_NORMAL, 0, 0, 0},
{"pose", do_emote, POS_SITTING, 0, LOG_NORMAL, 0, 0, 0},
{"gemote", do_gemote, POS_SITTING, 0, LOG_NORMAL, 0, 0, 0},
{"quest", do_quest, POS_SITTING, 0, LOG_NORMAL, 0, 0, 0},
{"qtalk", do_qtalk, POS_DEAD, 0, LOG_NORMAL, 0, 0, 0},
{"say", do_say, POS_MEDITATING, 0, LOG_NORMAL, 0, 0, 0},
{"speak", do_speak, POS_MEDITATING, 0, LOG_NORMAL, 0, 0, 0},
{"'", do_say, POS_MEDITATING, 0, LOG_NORMAL, 0, 0, 0},
{"yell", do_yell, POS_SITTING, 2, LOG_NORMAL, 0, 0, 0},
{"powers", do_racecommands, POS_FIGHTING, 3, LOG_NORMAL, 0, 0, 0},
{"history", do_history, POS_DEAD, 0, LOG_NORMAL, 0, 0, 0},
{"replay", do_replay, POS_DEAD, 0, LOG_NORMAL, 0, 0, 0},
{"lastmessage", do_lastmessage, POS_DEAD, 2, LOG_NORMAL, 0, 0, 0},
/*
* Object manipulation commands.
*/
{"trigger", do_trigger, POS_FIGHTING, 3, LOG_NORMAL, 0, 0, 0},
{"activate", do_activate, POS_STANDING, 0, LOG_NORMAL, 0, 0, 0},
{"brandish", do_brandish, POS_SITTING, 0, LOG_NORMAL, 0, 0, 0},
{"close", do_close, POS_SITTING, 0, LOG_NORMAL, 0, 0, 0},
{"draw", do_draw, POS_FIGHTING, 0, LOG_NORMAL, 0, 0, 0},
{"drink", do_drink, POS_SITTING, 0, LOG_NORMAL, 0, 0, 0},
{"drop", do_drop, POS_SITTING, 0, LOG_NORMAL, 0, 0, 0},
{"eat", do_eat, POS_SITTING, 0, LOG_NORMAL, 0, 0, 0},
{"empty", do_empty, POS_SITTING, 0, LOG_NORMAL, 0, 0, 0},
{"fill", do_fill, POS_SITTING, 0, LOG_NORMAL, 0, 0, 0},
{"give", do_give, POS_SITTING, 0, LOG_ALWAYS, 0, 0, 0},
{"gift", do_gift, POS_STANDING, 0, LOG_NEVER, 0, 0, 0},
{"hold", do_wear, POS_SITTING, 0, LOG_NORMAL, 0, 0, 0},
{"lock", do_lock, POS_SITTING, 0, LOG_NORMAL, 0, 0, 0},
{"open", do_open, POS_SITTING, 0, LOG_NORMAL, 0, 0, 0},
{"pick", do_pick, POS_SITTING, 0, LOG_NORMAL, 0, 0, 0},
{"press", do_press, POS_STANDING, 0, LOG_NORMAL, 0, 0, 0},
{"pull", do_pull, POS_STANDING, 0, LOG_NORMAL, 0, 0, 0},
{"put", do_put, POS_SITTING, 0, LOG_NORMAL, 0, 0, 0},
{"quaff", do_quaff, POS_SITTING, 0, LOG_NORMAL, 0, 0, 0},
{"recite", do_recite, POS_SITTING, 0, LOG_NORMAL, 0, 0, 0},
{"remove", do_remove, POS_SITTING, 0, LOG_NORMAL, 0, 0, 0},
{"removealias", do_removealias, POS_STANDING, 2, LOG_NORMAL, 0, 0, 0},
{"sheath", do_sheath, POS_STANDING, 0, LOG_NORMAL, 0, 0, 0},
{"take", do_get, POS_SITTING, 0, LOG_NORMAL, 0, 0, 0},
{"throw", do_throw, POS_STANDING, 0, LOG_NORMAL, 0, 0, 0},
{"turn", do_turn, POS_MEDITATING, 0, LOG_NORMAL, 0, 0, 0},
{"twist", do_twist, POS_STANDING, 0, LOG_NORMAL, 0, 0, 0},
{"sacrifice", do_sacrifice, POS_SITTING, 1, LOG_NORMAL, 0, 0, 0},
{"unlock", do_unlock, POS_SITTING, 0, LOG_NORMAL, 0, 0, 0},
{"wear", do_wear, POS_SITTING, 0, LOG_NORMAL, 0, 0, 0},
{"voodoo", do_voodoo, POS_SITTING, 0, LOG_NORMAL, 0, 0, 0},
{"zap", do_zap, POS_SITTING, 0, LOG_NORMAL, 0, 0, 0},
{"junk", do_sacrifice, POS_STANDING, 3, LOG_NORMAL, 0, 0, 0},
{"stalk", do_stalk, POS_STANDING, 0, LOG_NORMAL, 128, 0, 0},
/*
* Samurai
*/
{"ancestralpath", do_hologramtransfer, POS_STANDING, 3, LOG_NORMAL,
5, 0, 0},
{"techniques", do_bladespin, POS_STANDING, 3, LOG_NORMAL, 5, 0, 0},
{"web", do_web, POS_FIGHTING, 3, LOG_NORMAL, 5, 0, 0},
{"focus", do_focus, POS_FIGHTING, 3, LOG_NORMAL, 5, 0, 0},
{"slide", do_slide, POS_FIGHTING, 3, LOG_NORMAL, 5, 0, 0},
{"sidestep", do_sidestep, POS_FIGHTING, 3, LOG_NORMAL, 5, 0, 0},
{"block", do_block, POS_FIGHTING, 3, LOG_NORMAL, 5, 0, 0},
{"countermove", do_countermove, POS_FIGHTING, 3, LOG_NORMAL, 5, 0,
0},
{"martial", do_martial, POS_STANDING, 3, LOG_NORMAL, 5, 0, 0},
{"samseye", do_samseye, POS_STANDING, 3, LOG_NORMAL, 5, 0, 0},
{"samlearn", do_samlearn, POS_STANDING, 3, LOG_NORMAL, 5, 0, 0},
{"sword", do_sword, POS_FIGHTING, 3, LOG_NORMAL, 5, 0, 0},
/*
* Combat commands.
*/
{"generation", do_generation, POS_STANDING, 11, LOG_ALWAYS, 0, 0, 0},
{"class", do_class, POS_STANDING, 9, LOG_ALWAYS, 0, 0, 0},
{"backstab", do_backstab, POS_STANDING, 0, LOG_NORMAL, 0, 0, 0},
{"berserk", do_berserk, POS_FIGHTING, 0, LOG_NORMAL, 0, 0, 0},
{"bs", do_backstab, POS_STANDING, 0, LOG_NORMAL, 0, 0, 0},
{"disarm", do_disarm, POS_FIGHTING, 0, LOG_NORMAL, 0, 0, 0},
{"flee", do_flee, POS_FIGHTING, 0, LOG_NORMAL, 0, 0, 0},
{"fightstyle", do_fightstyle, POS_FIGHTING, 0, LOG_NORMAL, 0, 0, 0},
{"hurl", do_hurl, POS_STANDING, 0, LOG_NORMAL, 0, 0, 0},
{"kick", do_kick, POS_FIGHTING, 0, LOG_NORMAL, 0, 0, 0},
{"servant", do_servant, POS_STANDING, 3, LOG_NORMAL, 4,
DISC_VAMP_DAIM, 8},
{"punch", do_punch, POS_STANDING, 0, LOG_NORMAL, 0, 0, 0},
{"rescue", do_rescue, POS_FIGHTING, 0, LOG_NORMAL, 0, 0, 0},
{"stance", do_stance, POS_FIGHTING, 0, LOG_NORMAL, 0, 0, 0},
{"surrender", do_surrender, POS_FIGHTING, 0, LOG_NORMAL, 0, 0, 0},
{"pray", do_pray, POS_MEDITATING, 1, LOG_NORMAL, 64, 0, 0},
// Xrakisis
{ "jail", do_jail, POS_DEAD, 9, LOG_ALWAYS, 0,0,0 },
{ "freechar", do_freechar, POS_DEAD, 9, LOG_ALWAYS, 0,0,0 },
{ "warden", do_warden, POS_DEAD, 7, LOG_NORMAL, 0,0,0 },
{"gain", do_gain, POS_STANDING, 3, LOG_NORMAL, 13, 0, 0},
{ "gainlevel", do_gainlevel, POS_DEAD, 3, LOG_NORMAL, 0,0,0 },
{ "practice", do_rompractice, POS_DEAD, 3, LOG_NORMAL, 0,0,0 },
{ "prof", do_prof, POS_DEAD, 3, LOG_NORMAL, 0,0,0 },
{ "racepowers", do_racepowers, POS_DEAD, 3, LOG_NORMAL, 0,0,0 },
{ "convert", do_convert, POS_DEAD, 3, LOG_NORMAL, 0,0,0 },
{ "ascension", do_ascension, POS_DEAD, 3, LOG_NORMAL, 0,0,0 },
// Race Powers -Xrakisis
{ "thunderhammer", do_thunderhammer, POS_STANDING, 3, LOG_NORMAL, 0,0,0 },
{ "mistform", do_mistform, POS_STANDING, 3, LOG_NORMAL, 0,0,0 },
{ "weaponenhance", do_weaponenhance, POS_STANDING, 3, LOG_NORMAL, 0,0,0 },
{ "armorenhance", do_armorenhance, POS_STANDING, 3, LOG_NORMAL, 0,0,0 },
{ "flameblade", do_flameblade, POS_STANDING, 3, LOG_NORMAL, 0,0,0 },
{ "goblingrenade", do_goblingrenade, POS_STANDING, 3, LOG_NORMAL, 0,0,0 },
{ "airshiptravel", do_airshiptravel, POS_STANDING, 3, LOG_NORMAL, 0,0,0 },
{ "superberserk", do_superberserk, POS_STANDING, 3, LOG_NORMAL, 0,0,0 },
{ "infravision", do_elveninfra, POS_STANDING, 3, LOG_NORMAL, 0,0,0 },
{ "songs", do_songs, POS_STANDING, 3, LOG_NORMAL, 0,0,0 },
{ "elfsing", do_elfsing, POS_STANDING, 3, LOG_NORMAL, 0,0,0 },
{ "lessons", do_lessons, POS_STANDING, 3, LOG_NORMAL, 0,0,0 },
{ "tremble", do_tremble, POS_FIGHTING, 3, LOG_NORMAL, 0,0,0 },
{ "pirate", do_pirate, POS_FIGHTING, 3, LOG_NORMAL, 0,0,0 },
{ "regrow", do_regrow, POS_FIGHTING, 3, LOG_NORMAL, 0,0,0 },
{ "toughskin", do_toughskin, POS_FIGHTING, 3, LOG_NORMAL, 0,0,0 },
// Drexx
{ "objsell", do_objsell, POS_STANDING, 3, LOG_NORMAL, 0,0,0},
{ "identify", do_identify, POS_STANDING, 3, LOG_NORMAL, 0,0,0},
/*
* Elemental,
*/
{ "truesight", do_truesight, POS_STANDING, 3, LOG_NORMAL, CLASS_ELEMENTAL,0,0},
{ "enflame", do_enflame, POS_STANDING, 3, LOG_NORMAL, CLASS_ELEMENTAL,0,0},
{ "magma", do_magma, POS_FIGHTING, 3, LOG_NORMAL, CLASS_ELEMENTAL,0,0 },
{ "naturesfury", do_naturesfury, POS_MEDITATING, 3, LOG_NORMAL, CLASS_ELEMENTAL,0,0 },
{ "disburse", do_disperce, POS_STANDING, 3, LOG_NORMAL, CLASS_ELEMENTAL,0,0 },
{ "enfold", do_enfold, POS_STANDING, 3, LOG_NORMAL, CLASS_ELEMENTAL,0,0},
{ "earthshatter", do_earthshatter,POS_FIGHTING, 3, LOG_NORMAL, CLASS_ELEMENTAL, 0, 0 },
{ "hydro", do_hydro, POS_FIGHTING, 3, LOG_NORMAL, CLASS_ELEMENTAL, 0, 0 },
{ "evaporate", do_evaporate, POS_STANDING, 3, LOG_NORMAL, CLASS_ELEMENTAL,0,0 },
{ "solidify", do_solidify, POS_STANDING, 3, LOG_NORMAL, CLASS_ELEMENTAL,0,0 },
{ "elemshift", do_elemshift, POS_STANDING, 3, LOG_NORMAL, CLASS_ELEMENTAL,0,0 },
/*
* Paladin
*/
{ "enlighten", do_enlighten, POS_STANDING, 3, LOG_NORMAL, CLASS_PALADIN,0,0},
{ "holyaura", do_pholyaura, POS_FIGHTING, 3, LOG_NORMAL, CLASS_PALADIN,0,0},
{ "retribution", do_retribution, POS_FIGHTING, 3, LOG_NORMAL, CLASS_PALADIN,0,0},
{ "pmight", do_pmight, POS_STANDING, 3, LOG_NORMAL, CLASS_PALADIN,0,0},
{ "holywrath", do_pwrath, POS_FIGHTING, 3, LOG_NORMAL, CLASS_PALADIN,0,0},
{ "pblade", do_pblade, POS_STANDING, 3, LOG_NORMAL, CLASS_PALADIN,0,0},
{ "barmor", do_barmor, POS_STANDING, 3, LOG_NORMAL, CLASS_PALADIN,0,0},
{ "ppractice", do_paladinpractice,POS_STANDING,3, LOG_NORMAL, CLASS_PALADIN,0,0},
{ "holyvision", do_holyvision, POS_STANDING, 3, LOG_NORMAL, CLASS_PALADIN,0,0},
{ "righteousaura", do_righteous, POS_STANDING, 3, LOG_NORMAL, CLASS_PALADIN,0,0},
{ "bash", do_pbash, POS_FIGHTING, 3, LOG_NORMAL, CLASS_PALADIN,0,0},
{ "leap", do_paladinleap, POS_FIGHTING, 3, LOG_NORMAL, CLASS_PALADIN,0,0},
/*
* Blade Master Class by Xrakisis
*/
{ "bladeshow", do_bladegain, POS_STANDING, 3, LOG_NORMAL, CLASS_BLADE_MASTER,0,0},
{ "retort", do_retort, POS_STANDING, 3, LOG_NORMAL, CLASS_BLADE_MASTER,0,0},
{ "portal", do_portal, POS_STANDING, 3, LOG_NORMAL, CLASS_BLADE_MASTER,0,0},
{ "rapidstrike", do_rapidstrike, POS_STANDING, 3, LOG_NORMAL, CLASS_BLADE_MASTER,0,0},
{ "pstrike", do_pstrike, POS_FIGHTING, 3, LOG_NORMAL, CLASS_BLADE_MASTER,0,0},
{ "combatstyle", do_combatstyle, POS_STANDING, 3, LOG_NORMAL, CLASS_BLADE_MASTER,0,0 },
{ "weaponpractice", do_weaponpractice, POS_STANDING, 3, LOG_NORMAL, CLASS_BLADE_MASTER,0,0},
{ "shield", do_shield, POS_STANDING, 3, LOG_NORMAL, CLASS_BLADE_MASTER, 0, 0 },
{ "truesight", do_truesight, POS_STANDING, 3, LOG_NORMAL, CLASS_BLADE_MASTER,0,0 },
/*
* Dragon Commands. GryphonHawk, March 20003
*/
{ "dscry", do_scry, POS_STANDING, 3, LOG_NORMAL, CLASS_DRAGON, 0, 0},
{ "droar", do_droar, POS_DEAD, 3,LOG_NORMAL, CLASS_DRAGON,0,0},
{ "nest", do_nest, POS_STANDING,3,LOG_NORMAL, CLASS_DRAGON,0,0},
{ "dgain", do_dgain, POS_STANDING,3,LOG_NORMAL, CLASS_DRAGON,0,0},
{ "dfly", do_fly, POS_STANDING,3,LOG_NORMAL, CLASS_DRAGON,0,0},
{ "dgem", do_dgem, POS_STANDING,3,LOG_NORMAL, CLASS_DRAGON,0,0},
{ "consume", do_consume, POS_STANDING,3,LOG_NORMAL, CLASS_DRAGON,0,0},
{ "dragform", do_drackform, POS_STANDING,3,LOG_NORMAL, CLASS_DRAGON,0,0},
{ "dsight", do_dsight, POS_STANDING,3,LOG_NORMAL, CLASS_DRAGON,0,0},
{ "hatch", do_hatch, POS_STANDING,3,LOG_ALWAYS, CLASS_DRAGON,0,0},
{ "dlick", do_lick, POS_DEAD ,3,LOG_NORMAL, CLASS_DRAGON,0,0},
{ "dconfuse", do_dconfuse, POS_STANDING,3,LOG_NORMAL, CLASS_DRAGON,0,0},
{ "peer", do_peer, POS_STANDING,3,LOG_NORMAL, CLASS_DRAGON,0,0},
{ "age", do_age, POS_STANDING,3,LOG_NORMAL, CLASS_DRAGON,0,0},
{ "gbreath", do_gbreath, POS_FIGHTING,3,LOG_NORMAL, CLASS_DRAGON,0,0},
{ "fbreath", do_fbreath, POS_FIGHTING,3,LOG_NORMAL, CLASS_DRAGON,0,0},
{ "lbreath", do_lbreath, POS_FIGHTING,3,LOG_NORMAL, CLASS_DRAGON,0,0},
{ "cbreath", do_cbreath, POS_FIGHTING,3,LOG_NORMAL, CLASS_DRAGON,0,0},
{ "abreath", do_abreath, POS_FIGHTING,3,LOG_NORMAL, CLASS_DRAGON,0,0},
{ "dswoop", do_dswoop, POS_STANDING,3,LOG_NORMAL, CLASS_DRAGON,0,0},
{ "absorb", do_deat, POS_STANDING,3,LOG_NORMAL, CLASS_DRAGON,0,0},
{ "breathforge", do_breathforge, POS_STANDING,3,LOG_NORMAL, CLASS_DRAGON,0,0},
/*
* Shinobi Commands.
*/
// { "setshin", do_shinflag, POS_STANDING, 12, LOG_NORMAL, 0,0,0},
{ "shinobirank",do_shinobirank, POS_STANDING, 3, LOG_NORMAL, CLASS_SHINOBI,0,0},
{ "jutsus", do_jutsus, POS_FIGHTING, 3, LOG_NORMAL, CLASS_SHINOBI,0,0},
{ "handmotion", do_handmotions, POS_STANDING, 3, LOG_NORMAL, CLASS_SHINOBI,0,0},
/*
* Zombie Commands.
*/
{ "fleshbond", do_fleshbond, POS_STANDING, 3, LOG_NORMAL, CLASS_ZOMBIE, 0, 0},
{ "evolve", do_evolve, POS_STANDING, 3, LOG_NORMAL, CLASS_ZOMBIE, 0, 0},
{ "shadowplane", do_shadowplane, POS_STANDING, 3, LOG_NORMAL, CLASS_ZOMBIE, 0, 0},
{ "infest", do_infest, POS_FIGHTING, 3, LOG_NORMAL, CLASS_ZOMBIE, 0, 0},
{ "fleshportal", do_fleshportal, POS_STANDING, 3, LOG_NORMAL, CLASS_ZOMBIE, 0, 0},
{ "satiate", do_satiate, POS_FIGHTING, 3, LOG_NORMAL, CLASS_ZOMBIE, 0, 0},
{ "zsight", do_zombiesight, POS_STANDING, 3, LOG_NORMAL, CLASS_ZOMBIE, 0, 0},
{ "deathvision", do_deathvision, POS_STANDING, 3, LOG_NORMAL, CLASS_ZOMBIE, 0, 0},
{ "gravespawn", do_meditate, POS_STANDING, 3, LOG_NORMAL, CLASS_ZOMBIE, 0, 0},
{ "shatter", do_shatter, POS_FIGHTING, 3, LOG_NORMAL, CLASS_ZOMBIE, 0, 0},
{ "zomscry", do_zomscry, POS_FIGHTING, 3, LOG_NORMAL, CLASS_ZOMBIE, 0, 0},
{ "explosion", do_explosion, POS_FIGHTING, 3, LOG_NORMAL, CLASS_ZOMBIE, 0, 0},
{ "moan", do_zomtalk, POS_SLEEPING, 2, LOG_NORMAL, CLASS_ZOMBIE, 0, 0},
{ "forsake", do_forsake, POS_FIGHTING, 3, LOG_NORMAL, CLASS_ZOMBIE, 0, 0},
{ "regrow", do_regrow, POS_FIGHTING, 3, LOG_NORMAL, CLASS_ZOMBIE, 0, 0},
{ "noxious", do_noxious, POS_STANDING, 3, LOG_NORMAL, CLASS_ZOMBIE, 0, 0},
{ "relinquish", do_relinquish, POS_STANDING, 3, LOG_NORMAL, CLASS_ZOMBIE, 0, 0},
{ "spawn", do_spawn, POS_STANDING, 3, LOG_NORMAL, CLASS_ZOMBIE, 0, 0},
{ "assimilate", do_assimilate, POS_STANDING, 3, LOG_NORMAL, CLASS_ZOMBIE, 0, 0},
/* Giant powers */
{"truesight", do_truesight, POS_STANDING, 3, LOG_NORMAL, CLASS_GIANT,
0, 0},
{"longstep", do_classportal, POS_STANDING, 3, LOG_NORMAL, CLASS_GIANT,
0, 0},
{"growth", do_ggrow, POS_STANDING, 3, LOG_NORMAL, CLASS_GIANT, 0, 0},
{"smack", do_smack, POS_FIGHTING, 3, LOG_NORMAL, CLASS_GIANT, 0, 0},
{"thwack", do_thwack, POS_FIGHTING, 3, LOG_NORMAL, CLASS_GIANT, 0, 0},
{"bash", do_bash, POS_FIGHTING, 3, LOG_NORMAL, CLASS_GIANT, 0, 0},
{"dawnstrength", do_dawnstrength, POS_FIGHTING, 3, LOG_NORMAL,
CLASS_GIANT, 0, 0},
{"scry", do_scry, POS_STANDING, 3, LOG_NORMAL, CLASS_GIANT, 0, 0},
{"giantgift", do_giantgift, POS_STANDING, 3, LOG_NORMAL, CLASS_GIANT,
0, 0},
{"sweep", do_gsweep, POS_FIGHTING, 3, LOG_NORMAL, CLASS_GIANT, 0, 0},
{"standfirm", do_standfirm, POS_FIGHTING, 3, LOG_NORMAL, CLASS_GIANT,
0, 0},
{"revival", do_revival, POS_FIGHTING, 3, LOG_NORMAL, CLASS_GIANT, 0,
0},
{"stoneshape", do_stoneshape, POS_STANDING, 3, LOG_NORMAL,
CLASS_GIANT, 0, 0},
{"earthpunch", do_earthpunch, POS_FIGHTING, 3, LOG_NORMAL,
CLASS_GIANT, 0, 0},
{"rumble", do_rumble, POS_DEAD, 3, LOG_NORMAL, CLASS_GIANT, 0, 0},
{"deathfrenzy", do_deathfrenzy, POS_FIGHTING, 3, LOG_NORMAL,
CLASS_GIANT, 0, 0},
/*
* Hobbit powers
*/
{"vanish", do_vanish, POS_STANDING, 3, LOG_NORMAL, CLASS_HOBBIT, 0,
0},
{"hobtalk", do_hobtalk, POS_DEAD, 3, LOG_NORMAL, CLASS_HOBBIT, 0, 0},
{"readaura", do_readaura, POS_STANDING, 3, LOG_NORMAL, CLASS_HOBBIT,
0, 0},
{"shield", do_shield, POS_STANDING, 3, LOG_NORMAL, CLASS_HOBBIT, 0,
0},
{"truesight", do_truesight, POS_STANDING, 3, LOG_NORMAL, CLASS_HOBBIT,
0, 0},
{"bettercook", do_bettercook, POS_STANDING, 3, LOG_NORMAL,
CLASS_HOBBIT, 0, 0},
{"dishes", do_dishes, POS_STANDING, 3, LOG_NORMAL, CLASS_HOBBIT, 0,
0},
{"cook", do_cook, POS_FIGHTING, 3, LOG_NORMAL, CLASS_HOBBIT, 0, 0},
{"tunnel", do_classportal, POS_STANDING, 3, LOG_NORMAL, CLASS_HOBBIT,
0, 0},
/*
* Power Lich commands.
*/
{"lore", do_lore, POS_STANDING, 3, LOG_NORMAL, 9, 0, 0},
{"studylore", do_studylore, POS_STANDING, 3, LOG_NORMAL, 9, 0, 0},
{"lichtalk", do_lichtalk, POS_SLEEPING, 3, LOG_NORMAL, 9, 0, 0},
{"objectgate", do_objectgate, POS_STANDING, 3, LOG_NORMAL, 9, 0, 0},
{"fireball", do_infernal, POS_FIGHTING, 3, LOG_NORMAL, 9, 0, 0},
{"chaosmagic", do_chaosmagic, POS_FIGHTING, 3, LOG_NORMAL, 9, 0, 0},
{"chaossurge", do_chaossurge, POS_FIGHTING, 3, LOG_NORMAL, 9, 0, 0},
{"chaosshield", do_chaosshield, POS_STANDING, 3, LOG_NORMAL, 9, 0,
0},
{"golemsummon", do_summongolem, POS_FIGHTING, 3, LOG_NORMAL, 9, 0,
0},
{"planartravel", do_planartravel, POS_STANDING, 3, LOG_NORMAL, 9, 0,
0},
{"truesight", do_truesight, POS_STANDING, 3, LOG_NORMAL, 9, 0, 0},
{"planarstorm", do_planarstorm, POS_FIGHTING, 3, LOG_NORMAL, 9, 0,
0},
{"readaura", do_readaura, POS_FIGHTING, 3, LOG_NORMAL, 9, 0, 0},
{"powertransfer", do_powertransfer, POS_STANDING, 3, LOG_NORMAL, 9,
0, 0},
{"polarity", do_polarity, POS_FIGHTING, 3, LOG_NORMAL, 9, 0, 0},
{"chillhand", do_chillhand, POS_FIGHTING, 3, LOG_NORMAL, 9, 0, 0},
{"creepingdoom", do_creepingdoom, POS_FIGHTING, 3, LOG_NORMAL, 9, 0,
0},
{"painwreck", do_painwreck, POS_FIGHTING, 3, LOG_NORMAL, 9, 0, 0},
{"manasuck", do_manasuck, POS_FIGHTING, 3, LOG_NORMAL, 9, 0, 0},
{"earthswallow", do_earthswallow, POS_STANDING, 3, LOG_NORMAL, 9, 0,
0},
//{ "licharmor", do_licharmor, POS_STANDING, 3, LOG_NORMAL, 9,0,0},
{"soulsuck", do_soulsuck, POS_FIGHTING, 3, LOG_NORMAL, 9, 0, 0},
{"zombie", do_zombie, POS_STANDING, 3, LOG_NORMAL, 9, 0, 0},
{"pentagram", do_pentagram, POS_STANDING, 3, LOG_NORMAL, 9, 0, 0},
{"planeshift", do_planeshift, POS_STANDING, 3, LOG_NORMAL, 9, 0, 0},
{"chant", do_chant, POS_MEDITATING, 3, LOG_NORMAL, 9, 0, 0},
{"callgolems", do_callgolems, POS_FIGHTING, 3, LOG_NORMAL, 9, 0, 0},
/*
* Drone powers
*/
{"abstract", do_abstract, POS_STANDING, 3, LOG_NORMAL, CLASS_DRONE, 0,
0},
{"dreamscape", do_classportal, POS_STANDING, 3, LOG_NORMAL,
CLASS_DRONE, 0, 0},
{"drool", do_drool, POS_DEAD, 3, LOG_NORMAL, CLASS_DRONE, 0, 0},
{"truesight", do_truesight, POS_STANDING, 3, LOG_NORMAL, CLASS_DRONE,
0, 0},
{"shield", do_shield, POS_STANDING, 3, LOG_NORMAL, CLASS_DRONE, 0, 0},
{"mentalblock", do_mentalblock, POS_STANDING, 3, LOG_NORMAL,
CLASS_DRONE, 0, 0},
{"readaura", do_readaura, POS_STANDING, 3, LOG_NORMAL, CLASS_DRONE, 0,
0},
{"mindwarp", do_mindwarp, POS_FIGHTING, 3, LOG_NORMAL, CLASS_DRONE, 0,
0},
{"realityshift", do_realityshift, POS_FIGHTING, 3, LOG_NORMAL,
CLASS_DRONE, 0, 0},
{"psionicburst", do_psionicburst, POS_STANDING, 3, LOG_NORMAL,
CLASS_DRONE, 0, 0},
{"mindseye", do_mindseye, POS_STANDING, 3, LOG_NORMAL, CLASS_DRONE, 0,
0},
{"distort", do_distort, POS_FIGHTING, 3, LOG_NORMAL, CLASS_DRONE, 0,
0},
{"horrid", do_horrid, POS_FIGHTING, 3, LOG_NORMAL, CLASS_DRONE, 0, 0},
{"nightmare", do_nightmare, POS_STANDING, 3, LOG_NORMAL, CLASS_DRONE,
0, 0},
{"memorytwist", do_memorytwist, POS_FIGHTING, 3, LOG_NORMAL,
CLASS_DRONE, 0, 0},
{"visage", do_visage, POS_FIGHTING, 3, LOG_NORMAL, CLASS_DRONE, 0, 0},
/*
* Fae Powers
*/
{"reform", do_reform, POS_FIGHTING, 3, LOG_NORMAL, CLASS_FAE,
DISC_FAE_ARCANE, 1},
{"faetalk", do_faetalk, POS_DEAD, 3, LOG_NORMAL, CLASS_FAE, 0, 0},
{"infuse", do_infuse, POS_FIGHTING, 3, LOG_NORMAL, CLASS_FAE, 0, 0},
{"will", do_will, POS_STANDING, 3, LOG_NORMAL, CLASS_FAE, 0, 0},
{"energy", do_energy, POS_STANDING, 3, LOG_NORMAL, CLASS_FAE, 0, 0},
{"matter", do_matter, POS_STANDING, 3, LOG_NORMAL, CLASS_FAE, 0, 0},
{"plasma", do_plasma, POS_STANDING, 3, LOG_NORMAL, CLASS_FAE, 0, 0},
{"conjurebow", do_conjurebow, POS_STANDING, 3, LOG_NORMAL, CLASS_FAE,
0, 0},
{"ancients", do_ancients, POS_STANDING, 3, LOG_NORMAL, CLASS_FAE, 0,
0},
{"scry", do_scry, POS_STANDING, 3, LOG_NORMAL, CLASS_FAE,
DISC_FAE_NATURE, 3},
{"readaura", do_readaura, POS_FIGHTING, 3, LOG_NORMAL, CLASS_FAE,
DISC_FAE_NATURE, 5},
{"barkshift", do_classportal, POS_STANDING, 3, LOG_NORMAL, CLASS_FAE,
DISC_FAE_NATURE, 6},
{"djinn", do_djinn, POS_STANDING, 3, LOG_NORMAL, CLASS_FAE,
DISC_FAE_NATURE, 8},
{"elementalform", do_elementalform, POS_STANDING, 3, LOG_NORMAL,
CLASS_FAE, DISC_FAE_NATURE, 10},
{"vanish", do_vanish, POS_STANDING, 3, LOG_NORMAL, CLASS_FAE,
DISC_FAE_ARCANE, 4},
{"truesight", do_truesight, POS_STANDING, 3, LOG_NORMAL, CLASS_FAE,
DISC_FAE_ARCANE, 6},
{"genie", do_genie, POS_STANDING, 3, LOG_NORMAL, CLASS_FAE,
DISC_FAE_ARCANE, 8},
{"glamour", do_glamour, POS_STANDING, 3, LOG_NORMAL, CLASS_FAE,
DISC_FAE_ARCANE, 10},
/*
* Tanar'ri commands.
*/
{"earthquake", do_earthquake, POS_FIGHTING, 3, LOG_NORMAL, CLASS_TANARRI, 0,
0},
{"tornado", do_tornado, POS_FIGHTING, 3, LOG_NORMAL, CLASS_TANARRI, 0, 0},
{"infernal", do_infernal, POS_FIGHTING, 3, LOG_NORMAL, CLASS_TANARRI, 0, 0},
{"bloodsacrifice", do_bloodsac, POS_STANDING, 3, LOG_NORMAL, CLASS_TANARRI, 0,
0},
{"enmity", do_enmity, POS_FIGHTING, 3, LOG_NORMAL, CLASS_TANARRI, 0, 0},
{"enrage", do_enrage, POS_FIGHTING, 3, LOG_NORMAL, CLASS_TANARRI, 0, 0},
{"booming", do_booming, POS_FIGHTING, 3, LOG_NORMAL, CLASS_TANARRI, 0, 0},
{"truesight", do_truesight, POS_STANDING, 3, LOG_NORMAL, CLASS_TANARRI, 0, 0},
{"web", do_web, POS_FIGHTING, 3, LOG_NORMAL, CLASS_TANARRI, 0, 0},
{"claws", do_claws, POS_STANDING, 3, LOG_NORMAL, CLASS_TANARRI, 0, 0},
{"chaosgate", do_chaosgate, POS_STANDING, 3, LOG_NORMAL, CLASS_TANARRI, 0, 0},
{"fury", do_fury, POS_STANDING, 3, LOG_NORMAL, CLASS_TANARRI, 0, 0},
{"tantalk", do_tantalk, POS_DEAD, 3, LOG_NORMAL, CLASS_TANARRI, 0, 0},
//{ "taneq", do_taneq, POS_STANDING, 3, LOG_NORMAL, CLASS_TANARRI,0,0},
{"bloodrite", do_unholyrite, POS_STANDING, 3, LOG_NORMAL, CLASS_TANARRI, 0, 0},
{"lavablast", do_lavablast, POS_FIGHTING, 3, LOG_NORMAL, CLASS_TANARRI, 0, 0},
{"chaossurge", do_chaossurge, POS_FIGHTING, 3, LOG_NORMAL, CLASS_TANARRI, 0,
0},
/*
* Undead Knight commands
*/
{"knighttalk", do_knighttalk, POS_DEAD, 3, LOG_NORMAL, 13, 0, 0},
//{ "knightarmor", do_knightarmor, POS_STANDING, 3, LOG_NORMAL,13,0,0},
// up higher {"gain", do_gain, POS_STANDING, 3, LOG_NORMAL, 13, 0, 0},
{"weaponpractice", do_weaponpractice, POS_STANDING, 3, LOG_NORMAL,
13, 0, 0},
{"powerword", do_powerword, POS_FIGHTING, 3, LOG_NORMAL, 13, 0, 0},
{"aura", do_aura, POS_STANDING, 3, LOG_NORMAL, 13, 0, 0},
{"command", do_command, POS_STANDING, 3, LOG_ALWAYS, 13, 0, 0},
{"unholysight", do_truesight, POS_STANDING, 3, LOG_NORMAL, 13, 0,
0},
{"bloodrite", do_unholyrite, POS_STANDING, 3, LOG_NORMAL, 13, 0, 0},
{"ride", do_ride, POS_STANDING, 3, LOG_NORMAL, 13, 0, 0},
{"soulsuck", do_soulsuck, POS_FIGHTING, 3, LOG_NORMAL, 13, 0, 0},
/*
* Angel Commands.
*/
{"prayer", do_angeltalk, POS_MEDITATING, 3, LOG_NORMAL, 12, 0, 0},
{"gpeace", do_gpeace, POS_STANDING, 3, LOG_NORMAL, 12, 0, 0},
{"innerpeace", do_innerpeace, POS_STANDING, 3, LOG_NORMAL, 12, 0,
0},
{"houseofgod", do_houseofgod, POS_STANDING, 3, LOG_NORMAL, 12, 0,
0},
{"angelicaura", do_angelicaura, POS_FIGHTING, 3, LOG_NORMAL, 12, 0,
0},
{"gbanish", do_gbanish, POS_FIGHTING, 3, LOG_NORMAL, 12, 0, 0},
{"harmony", do_harmony, POS_FIGHTING, 3, LOG_NORMAL, 12, 0, 0},
{"gsenses", do_gsenses, POS_STANDING, 3, LOG_NORMAL, 12, 0, 0},
{"gfavor", do_gfavor, POS_STANDING, 3, LOG_NORMAL, 12, 0, 0},
{"forgiveness", do_forgivness, POS_FIGHTING, 3, LOG_NORMAL, 12, 0,
0},
{"martyr", do_martyr, POS_STANDING, 3, LOG_NORMAL, 12, 0, 0},
{"swoop", do_swoop, POS_STANDING, 3, LOG_NORMAL, 12, 0, 0},
{"awings", do_awings, POS_STANDING, 3, LOG_NORMAL, 12, 0, 0},
{"halo", do_halo, POS_STANDING, 3, LOG_NORMAL, 12, 0, 0},
{"sinsofthepast", do_sinsofthepast, POS_FIGHTING, 3, LOG_NORMAL, 12,
0, 0},
{"eyeforaneye", do_eyeforaneye, POS_FIGHTING, 3, LOG_NORMAL, 12, 0,
0},
//{ "angelicarmor", do_angelicarmor, POS_STANDING, 3, LOG_NORMAL, 12,0,0 },
{"touchofgod", do_touchofgod, POS_FIGHTING, 3, LOG_NORMAL, 12, 0,
0},
{"spiritform", do_spiritform, POS_STANDING, 3, LOG_NORMAL, 12, 0,
0},
/*
* Shapeshifter Commands.
*/
{"shift", do_shift, POS_FIGHTING, 3, LOG_NORMAL, CLASS_SHAPESHIFTER, 0, 0},
{"formlearn", do_formlearn, POS_STANDING, 3, LOG_NORMAL, CLASS_SHAPESHIFTER, 0, 0},
{"camouflage", do_camouflage, POS_STANDING, 3, LOG_NORMAL, CLASS_SHAPESHIFTER, 0, 0},
{"mask", do_mask, POS_STANDING, 3, LOG_NORMAL, CLASS_SHAPESHIFTER, 0, 0},
{"truesight", do_truesight, POS_STANDING, 3, LOG_NORMAL, CLASS_SHAPESHIFTER, 0, 0},
{"shapeshift", do_shapeshift, POS_STANDING, 3, LOG_NORMAL, CLASS_SHAPESHIFTER, 0, 0},
{"hatform", do_hatform, POS_STANDING, 3, LOG_NORMAL, CLASS_SHAPESHIFTER, 0, 0},
{"mistwalk", do_mistwalk, POS_STANDING, 3, LOG_NORMAL, CLASS_SHAPESHIFTER, 0, 0},
//{ "shapearmor", do_shapearmor, POS_STANDING, 3, LOG_NORMAL, CLASS_SHAPESHIFTER,0,0 },
{"roar", do_shaperoar, POS_FIGHTING, 3, LOG_NORMAL, CLASS_SHAPESHIFTER, 0, 0},
{"charge", do_charge, POS_FIGHTING, 3, LOG_NORMAL, CLASS_SHAPESHIFTER, 0, 0},
{"fblink", do_faerieblink, POS_FIGHTING, 3, LOG_NORMAL, CLASS_SHAPESHIFTER, 0, 0},
{"stomp", do_stomp, POS_FIGHTING, 3, LOG_NORMAL, CLASS_SHAPESHIFTER, 0, 0},
{"faeriecurse", do_faeriecurse, POS_FIGHTING, 3, LOG_NORMAL, CLASS_SHAPESHIFTER, 0,
0},
{"phase", do_phase, POS_FIGHTING, 3, LOG_NORMAL, CLASS_SHAPESHIFTER, 0, 0},
{"breath", do_breath, POS_FIGHTING, 3, LOG_NORMAL, CLASS_SHAPESHIFTER, 0, 0},
/*
* Mage Commands.
*/
{"magics", do_magics, POS_STANDING, 3, LOG_NORMAL, 2, 0, 0},
{"teleport", do_teleport, POS_STANDING, 3, LOG_NORMAL, 2, 0, 0},
{"invoke", do_invoke, POS_STANDING, 3, LOG_NORMAL, 2, 0, 0},
{"chant", do_chant, POS_MEDITATING, 3, LOG_NORMAL, 2, 0, 0},
//{ "magearmor", do_magearmor, POS_MEDITATING, 3, LOG_NORMAL, 2,0,0 },
{"objectgate", do_objectgate, POS_STANDING, 3, LOG_NORMAL, 2, 0, 0},
{"discharge", do_discharge, POS_FIGHTING, 3, LOG_NORMAL, 2, 0, 0},
{"scry", do_scry, POS_FIGHTING, 3, LOG_NORMAL, 2, 0, 0},
{"reveal", do_reveal, POS_STANDING, 3, LOG_NORMAL, 2, 0, 0},
{"chaosmagic", do_chaosmagic, POS_FIGHTING, 3, LOG_NORMAL, 2, 0, 0},
{"truesight", do_truesight, POS_STANDING, 3, LOG_NORMAL, 2, 0, 0},
/*
* PK POWERS
*/
{"eaglesight", do_pkscry, POS_STANDING, 3, LOG_NORMAL, 0, 0, 0},
{"silverpath", do_pkportal, POS_STANDING, 3, LOG_NORMAL, 0, 0, 0},
{"darkhunter", do_pkhunter, POS_STANDING, 3, LOG_NORMAL, 0, 0, 0},
{"lifesense", do_pkaura, POS_STANDING, 3, LOG_NORMAL, 0, 0, 0},
{"sanctum", do_pkheal, POS_STANDING, 3, LOG_NORMAL, 0, 0, 0},
{"calltoarms", do_pkcall, POS_FIGHTING, 3, LOG_NORMAL, 0, 0, 0},
{"ironmind", do_pkmind, POS_STANDING, 3, LOG_NORMAL, 0, 0, 0},
{"objectscry", do_pkobjscry, POS_STANDING, 3, LOG_NORMAL, 0, 0, 0},
{"crystalsight", do_pkvision, POS_STANDING, 3, LOG_NORMAL, 0, 0, 0},
/* ****| V-A-M-P-I-R-E-S |**** */
// Melpominee
{"scream", do_scream, POS_STANDING, 3, LOG_NORMAL, 4, DISC_VAMP_MELP,
1},
// Daimoinon
{"guardian", do_guardian, POS_STANDING, 3, LOG_NORMAL, 4,DISC_VAMP_DAIM, 1},
{"fear", do_fear, POS_FIGHTING, 3, LOG_NORMAL, 4, DISC_VAMP_DAIM, 2},
{"portal", do_gate, POS_STANDING, 3, LOG_NORMAL, 4, DISC_VAMP_DAIM,
3},
// Lvl 4 - curse ---
{"vtwist", do_vtwist, POS_STANDING, 3, LOG_NORMAL, 4, DISC_VAMP_DAIM,
5},
{"wither", do_wither, POS_FIGHTING, 3, LOG_NORMAL, 3, DISC_WERE_HAWK,
7},
// Thanatosis
{"hagswrinkles", do_hagswrinkles, POS_STANDING, 3, LOG_NORMAL, 4, DISC_VAMP_THAN, 1},
{"putrefaction", do_rot, POS_STANDING, 3, LOG_NORMAL, 4, DISC_VAMP_THAN, 2},
/* { "ashes", do_ashes, POS_STANDING, 3, LOG_NORMAL, 4, DISC_VAMP_THAN, 3 }, */
{"withering", do_withering, POS_STANDING, 3, LOG_NORMAL, 4, DISC_VAMP_THAN, 4},
{"drainlife", do_drain, POS_FIGHTING, 3, LOG_NORMAL, 4, DISC_VAMP_THAN, 5},
// Necromancy
{"preserve", do_preserve, POS_STANDING, 3, LOG_NORMAL, 4,
DISC_VAMP_NECR, 2},
{"spiritgate", do_spiritgate, POS_STANDING, 3, LOG_NORMAL, 4,
DISC_VAMP_NECR, 3},
{"spiritguard", do_spiritguard, POS_STANDING, 3, LOG_NORMAL, 4,
DISC_VAMP_NECR, 4},
// Auspex
{"truesight", do_truesight, POS_STANDING, 3, LOG_NORMAL, 4,
DISC_WERE_HAWK, 3},
{"truesight", do_truesight, POS_STANDING, 3, LOG_NORMAL, 4,
DISC_VAMP_AUSP, 1},
{"readaura", do_readaura, POS_FIGHTING, 3, LOG_NORMAL, 4,
DISC_VAMP_AUSP, 2},
{"scry", do_scry, POS_FIGHTING, 3, LOG_NORMAL, 4, DISC_VAMP_AUSP, 3},
{"astralwalk", do_astralwalk, POS_STANDING, 3, LOG_NORMAL, 4,
DISC_VAMP_AUSP, 4},
{"unveil", do_unveil, POS_STANDING, 3, LOG_NORMAL, 4, DISC_VAMP_AUSP,
5},
// Obfuscate
{"vanish", do_vanish, POS_STANDING, 3, LOG_NORMAL, 4, DISC_VAMP_OBFU,
1},
{"mask", do_mask, POS_STANDING, 3, LOG_NORMAL, 4, DISC_VAMP_OBFU, 2},
{"shield", do_shield, POS_STANDING, 3, LOG_NORMAL, 4, DISC_VAMP_OBFU,
3},
{"shield", do_shield, POS_STANDING, 3, LOG_NORMAL, 3, DISC_WERE_OWL,
2},
// Chimerstry
{"mirror", do_mirror, POS_STANDING, 3, LOG_NORMAL, 4, DISC_VAMP_CHIM,
1},
{"formillusion", do_formillusion, POS_STANDING, 3, LOG_NORMAL, 4, DISC_VAMP_CHIM, 2},
{"controlclone", do_control, POS_STANDING, 3, LOG_NORMAL, 4, DISC_VAMP_CHIM, 4},
/*
* Miscellaneous commands.
*/
{"accep", do_huh, POS_STANDING, 2, LOG_NORMAL, 0, 0, 0},
{"accept", do_accept, POS_STANDING, 2, LOG_NORMAL, 0, 0, 0},
{"artifact", do_artifact, POS_STANDING, 0, LOG_NORMAL, 0, 0, 0},
{"artisteal", do_artisteal, POS_STANDING, 3, LOG_NORMAL, 0, 0, 0},
{"birth", do_birth, POS_STANDING, 1, LOG_NORMAL, 0, 0, 0},
{"blindfold", do_blindfold, POS_STANDING, 0, LOG_NORMAL, 0, 0, 0},
{"breaku", do_huh, POS_STANDING, 2, LOG_NORMAL, 0, 0, 0},
{"breakup", do_breakup, POS_STANDING, 2, LOG_NORMAL, 0, 0, 0},
{"claim", do_claim, POS_STANDING, 2, LOG_NORMAL, 0, 0, 0},
{"consen", do_huh, POS_STANDING, 1, LOG_NORMAL, 0, 0, 0},
{"consent", do_consent, POS_STANDING, 1, LOG_NORMAL, 0, 0, 0},
{"finger", do_finger, POS_SITTING, 1, LOG_NORMAL, 0, 0, 0},
{"follow", do_follow, POS_STANDING, 1, LOG_NORMAL, 0, 0, 0},
{"gag", do_gag, POS_STANDING, 0, LOG_NORMAL, 0, 0, 0},
{"godsfavor", do_godsfavor, POS_DEAD, 3, LOG_NORMAL, 64, 0, 0},
{"hide", do_hide, POS_STANDING, 0, LOG_NORMAL, 0, 0, 0},
{"home", do_home, POS_STANDING, 0, LOG_NORMAL, 0, 0, 0},
{"hunt", do_hunt, POS_STANDING, 1, LOG_NORMAL, 0, 0, 0},
{"locate", do_locate, POS_STANDING, 0, LOG_NORMAL, 0, 0, 0},
{"godwarspractice", do_practice, POS_SLEEPING, 0, LOG_NORMAL, 0, 0, 0},
{"propos", do_huh, POS_STANDING, 2, LOG_NORMAL, 0, 0, 0},
{"propose", do_propose, POS_STANDING, 2, LOG_NORMAL, 0, 0, 0},
{"qui", do_qui, POS_DEAD, 0, LOG_NORMAL, 0, 0, 0},
{"quit", do_quit, POS_SLEEPING, 0, LOG_NORMAL, 0, 0, 0},
{"recall", do_recall, POS_FIGHTING, 0, LOG_NORMAL, 0, 0, 0},
{"crecall", do_crecall, POS_FIGHTING, 0, LOG_NORMAL, 0, 0, 0},
{"escape", do_escape, POS_DEAD, 3, LOG_NORMAL, 0, 0, 0},
{"/", do_recall, POS_FIGHTING, 0, LOG_NORMAL, 0, 0, 0},
{"rent", do_rent, POS_DEAD, 0, LOG_NORMAL, 0, 0, 0},
{"safe", do_safe, POS_STANDING, 0, LOG_NORMAL, 0, 0, 0},
{"save", do_save, POS_DEAD, 0, LOG_NORMAL, 0, 0, 0},
{"sleep", do_sleep, POS_SLEEPING, 0, LOG_NORMAL, 0, 0, 0},
{"smother", do_smother, POS_STANDING, 0, LOG_NORMAL, 0, 0, 0},
{"sneak", do_sneak, POS_STANDING, 0, LOG_NORMAL, 0, 0, 0},
{"scan", do_scan, POS_SITTING, 0, LOG_NORMAL, 0, 0, 0},
{"scales", do_dscales, POS_STANDING, 0, LOG_NORMAL, 15, 0, 0},
{"spy", do_spy, POS_SITTING, 0, LOG_NORMAL, 0, 0, 0},
{"steal", do_steal, POS_STANDING, 0, LOG_NORMAL, 0, 0, 0},
{"notravel", do_notravel, POS_DEAD, 1, LOG_NORMAL, 0, 0, 0},
{"nosummon", do_nosummon, POS_DEAD, 1, LOG_NORMAL, 0, 0, 0},
{"embrace", do_embrace, POS_STANDING, 3, LOG_NORMAL, 8, 0, 0},
{"diablerise", do_diablerise, POS_STANDING, 3, LOG_NORMAL, 8, 0, 0},
{"assassinate", do_assassinate, POS_STANDING, 3, LOG_NORMAL, 4, DISC_VAMP_QUIE, 4},
{"tendrils", do_tendrils, POS_FIGHTING, 3, LOG_NORMAL, 4, DISC_VAMP_SERP, 4},
{"lamprey", do_lamprey, POS_FIGHTING, 3, LOG_NORMAL, 4, DISC_VAMP_OBTE, 5},
{"entrance", do_entrance, POS_STANDING, 3, LOG_NORMAL, 4, DISC_VAMP_PRES, 3},
{"fleshcraft", do_fleshcraft, POS_STANDING, 3, LOG_NORMAL, 4, DISC_VAMP_VICI, 2},
{"zombie", do_zombie, POS_STANDING, 3, LOG_NORMAL, 4, DISC_VAMP_NECR, 5},
{"baal", do_baal, POS_STANDING, 3, LOG_NORMAL, 4, DISC_VAMP_DOMI, 5},
{"dragonform", do_dragonform, POS_STANDING, 3, LOG_NORMAL, 4, DISC_VAMP_VICI, 4},
{"spew", do_spew, POS_FIGHTING, 3, LOG_NORMAL, 4, DISC_VAMP_THAU, 6},
{"bloodwater", do_bloodwater, POS_FIGHTING, 3, LOG_NORMAL, 4, DISC_VAMP_NECR, 5},
{"gourge", do_gourge, POS_STANDING, 3, LOG_NORMAL, 4, DISC_VAMP_THAU, 8},
{"roar", do_roar, POS_FIGHTING, 3, LOG_NORMAL, 3, DISC_WERE_BEAR, 6},
{"jawlock", do_jawlock, POS_STANDING, 3, LOG_NORMAL, 3, DISC_WERE_RAPT, 8},
{"perception", do_perception, POS_STANDING, 3, LOG_NORMAL, 3, DISC_WERE_RAPT, 3},
{"skin", do_skin, POS_STANDING, 3, LOG_NORMAL, 3, DISC_WERE_BEAR, 7},
{"rend", do_rend, POS_STANDING, 3, LOG_NORMAL, 3, DISC_WERE_BOAR, 7},
{"slam", do_slam, POS_STANDING, 3, LOG_NORMAL, 3, DISC_WERE_BEAR, 8},
{"shred", do_shred, POS_STANDING, 3, LOG_NORMAL, 3, DISC_WERE_RAPT, 7},
{"diablerize", do_diablerise, POS_STANDING, 3, LOG_NORMAL, 8, 0, 0},
{"taste", do_taste, POS_STANDING, 3, LOG_NORMAL, 4, DISC_VAMP_THAU, 1},
{"pigeon", do_pigeon, POS_STANDING, 3, LOG_NORMAL, 4, DISC_VAMP_ANIM, 3},
{"bloodagony", do_bloodagony, POS_STANDING, 3, LOG_NORMAL, 4, DISC_VAMP_QUIE, 3},
{"tie", do_tie, POS_STANDING, 3, LOG_NORMAL, 0, 0, 0},
{"token", do_token, POS_STANDING, 10, LOG_NORMAL, 0, 0, 0},
{"track", do_track, POS_STANDING, 1, LOG_NORMAL, 0, 0, 0},
{"train", do_train, POS_STANDING, 1, LOG_NORMAL, 0, 0, 0},
{"unpolymorph", do_unpolymorph, POS_STANDING, 4, LOG_NORMAL, 0, 0, 0},
{"untie", do_untie, POS_STANDING, 1, LOG_NORMAL, 0, 0, 0},
{"visible", do_visible, POS_SLEEPING, 1, LOG_NORMAL, 0, 0, 0},
{"wake", do_wake, POS_SLEEPING, 0, LOG_NORMAL, 0, 0, 0},
{"where", do_where, POS_SITTING, 0, LOG_NORMAL, 0, 0, 0},
{"connect", do_connect, POS_SITTING, 0, LOG_NORMAL, 0, 0, 0},
{"game", do_game, POS_STANDING, 0, LOG_NORMAL, 0, 0, 0},
/* need it before forge */
{"contraception", do_contraception, POS_DEAD, 1, LOG_NORMAL, 0, 0, 0},
/*
* Monk
*/
{"chaoshands", do_chands, POS_STANDING, 3, LOG_NORMAL, 64, 0, 0},
//{ "monkarmor", do_monkarmor, POS_STANDING, 3, LOG_NORMAL, 64,0,0 },
{"ghold", do_ghold, POS_STANDING, 3, LOG_NORMAL, 64, 0, 0},
{"godsheal", do_godsheal, POS_FIGHTING, 3, LOG_NORMAL, 64, 0, 0},
{"mantra", do_mantra, POS_STANDING, 3, LOG_NORMAL, 64, 0, 0},
{"guide", do_guide, POS_STANDING, 3, LOG_NORMAL, 64, 0, 0},
{"wrathofgod", do_wrathofgod, POS_FIGHTING, 3, LOG_NORMAL, 64, 0, 0},
{"cloak", do_cloak, POS_STANDING, 3, LOG_NORMAL, 64, 0, 0},
{"prayofages", do_prayofages, POS_FIGHTING, 3, LOG_NORMAL, 64, 0, 0},
{"sacredinvis", do_sacredinvis, POS_STANDING, 3, LOG_NORMAL, 64, 0,
0},
{"flaminghands", do_flaminghands, POS_STANDING, 3, LOG_NORMAL, 64, 0,
0},
{"darkblaze", do_darkblaze, POS_FIGHTING, 3, LOG_NORMAL, 64, 0, 0},
{"adamantium", do_adamantium, POS_STANDING, 3, LOG_NORMAL, 64, 0, 0},
{"godseye", do_godseye, POS_STANDING, 3, LOG_NORMAL, 64, 0, 0},
{"celestial", do_celestial, POS_STANDING, 3, LOG_NORMAL, 64, 0, 0},
{"steelskin", do_steelskin, POS_STANDING, 3, LOG_NORMAL, 64, 0, 0},
{"godsbless", do_godsbless, POS_FIGHTING, 3, LOG_NORMAL, 64, 0, 0},
{"thrustkick", do_thrustkick, POS_FIGHTING, 3, LOG_NORMAL, 64, 0, 0},
{"spinkick", do_spinkick, POS_FIGHTING, 3, LOG_NORMAL, 64, 0, 0},
{"backfist", do_backfist, POS_FIGHTING, 3, LOG_NORMAL, 64, 0, 0},
{"elbow", do_elbow, POS_FIGHTING, 3, LOG_NORMAL, 64, 0, 0},
{"sweep", do_sweep, POS_FIGHTING, 3, LOG_NORMAL, 64, 0, 0},
{"reverse", do_reverse, POS_FIGHTING, 3, LOG_NORMAL, 64, 0, 0},
{"knee", do_knee, POS_FIGHTING, 3, LOG_NORMAL, 64, 0, 0},
{"shinkick", do_shinkick, POS_FIGHTING, 3, LOG_NORMAL, 64, 0, 0},
{"palmstrike", do_palmstrike, POS_FIGHTING, 3, LOG_NORMAL, 64, 0, 0},
{"spiritpower", do_spiritpower, POS_FIGHTING, 3, LOG_NORMAL, 64, 0,
0},
{"deathtouch", do_deathtouch, POS_STANDING, 3, LOG_NORMAL, 64, 0, 0},
{"relax", do_relax, POS_FIGHTING, 3, LOG_NORMAL, 64, 0, 0},
{"monktalk", do_monktalk, POS_DEAD, 3, LOG_NORMAL, 64, 0, 0},
{"disciplines", do_disciplines, POS_STANDING, 3, LOG_NORMAL, 0, 0, 0},
{"research", do_research, POS_STANDING, 3, LOG_NORMAL, 0, 0, 0},
/*
* Garou
*/
// Ahroun
{"razorclaws", do_razorclaws, POS_FIGHTING, 3, LOG_NORMAL, 4,
DISC_WERE_WOLF, 4},
// Homid
// Persuasion, automatic
{"staredown", do_staredown, POS_FIGHTING, 3, LOG_NORMAL, 4,
DISC_WERE_OWL, 5},
{"disquiet", do_disquiet, POS_FIGHTING, 3, LOG_NORMAL, 4,
DISC_WERE_OWL, 6},
{"reshape", do_reshape, POS_STANDING, 3, LOG_NORMAL, 3, DISC_WERE_OWL,
7},
{"cocoon", do_cocoon, POS_FIGHTING, 3, LOG_NORMAL, 3, DISC_WERE_OWL,
8},
// Metis
{"quills", do_quills, POS_FIGHTING, 3, LOG_NORMAL, 3, DISC_WERE_HAWK,
5},
{"burrow", do_burrow, POS_FIGHTING, 3, LOG_NORMAL, 3, DISC_WERE_HAWK,
6},
{"nightsight", do_nightsight, POS_FIGHTING, 3, LOG_NORMAL, 4,
DISC_WERE_HAWK, 1},
{"learn", do_learn, POS_FIGHTING, 3, LOG_NORMAL, 64, 0, 0},
/*
* Vampire and werewolf commands.
*/
//{ "vamparmor", do_vampirearmor, POS_STANDING, 3, LOG_NORMAL, 8, 0, 0 },
{"bloodwall", do_bloodwall, POS_STANDING, 3, LOG_NORMAL, 8,
DISC_VAMP_DAIM, 2},
{"conceal", do_conceal, POS_STANDING, 3, LOG_NORMAL, 8,
DISC_VAMP_OBFU, 5},
{"sharpen", do_sharpen, POS_STANDING, 3, LOG_NORMAL, 8,
DISC_VAMP_QUIE, 7},
{"purify", do_purification, POS_STANDING, 3, LOG_NORMAL, 0, 0, 0},
/*
* Protean
*//*
* healing has to go after drow heal
*/
/*
* Obtene
*/
{"grab", do_grab, POS_STANDING, 3, LOG_NORMAL, 4, DISC_VAMP_OBTE, 8},
{"shadowgaze", do_shadowgaze, POS_STANDING, 3, LOG_NORMAL, 8,
DISC_VAMP_OBTE, 10},
/*
* Luna Powers
*/
{"flameclaws", do_flameclaws, POS_STANDING, 3, LOG_NORMAL, 4,
DISC_WERE_LUNA, 1},
{"motherstouch", do_motherstouch, POS_FIGHTING, 3, LOG_NORMAL, 4,
DISC_WERE_LUNA, 3},
{"gmotherstouch", do_gmotherstouch, POS_FIGHTING, 3, LOG_NORMAL, 4,
DISC_WERE_LUNA, 4},
{"sclaws", do_sclaws, POS_STANDING, 3, LOG_NORMAL, 3, DISC_WERE_LUNA,
5},
{"moonbeam", do_moonbeam, POS_FIGHTING, 3, LOG_NORMAL, 4,
DISC_WERE_LUNA, 8},
//{ "moonarmour", do_moonarmour,POS_STANDING, 3, LOG_NORMAL, 4,DISC_WERE_LUNA,2 },
{"moongate", do_moongate, POS_STANDING, 3, LOG_NORMAL, 4,
DISC_WERE_LUNA, 6},
/*
* No more luna Powers
*/
{"tribe", do_tribe, POS_STANDING, 3, LOG_NORMAL, 4, 0, 0},
{"info", do_info, POS_DEAD, 11, LOG_NORMAL, 0, 0, 0},
{"building", do_building, POS_DEAD, 7, LOG_NORMAL, 0, 0, 0},
{"coding", do_coding, POS_DEAD, 12, LOG_NORMAL, 0, 0, 0},
{"demongate", do_dgate, POS_FIGHTING, 3, LOG_NORMAL, 1, 0, 0},
{"devour", do_devour, POS_STANDING, 3, LOG_NORMAL, 3, DISC_WERE_RAPT,
5},
{"frostbreath", do_frostbreath, POS_FIGHTING, 3, LOG_NORMAL,
CLASS_DEMON, DISC_DAEM_GELU, 2},
{"tick", do_tick, POS_DEAD, 12, LOG_ALWAYS, 0, 0, 0},
{"resetarea", do_resetarea, POS_DEAD, 10, LOG_ALWAYS, 0, 0, 0},
{"graft", do_graft, POS_STANDING, 3, LOG_NORMAL, CLASS_DEMON,
DISC_DAEM_ATTA, 5},
{"rage", do_rage, POS_FIGHTING, 3, LOG_NORMAL, CLASS_DEMON,
DISC_DAEM_ATTA, 3},
{"calm", do_calm, POS_STANDING, 3, LOG_NORMAL, CLASS_DEMON,
DISC_DAEM_ATTA, 4},
{"vamptalk", do_vamptalk, POS_DEAD, 1, LOG_NORMAL, 8, 0, 0},
{"obtain", do_obtain, POS_STANDING, 3, LOG_NORMAL, 0, 0, 0},
{"warps", do_warps, POS_STANDING, 3, LOG_NORMAL, 0, 0, 0},
{"claws", do_claws, POS_FIGHTING, 3, LOG_NORMAL, CLASS_DEMON,
DISC_DAEM_ATTA, 1},
{"claws", do_claws, POS_FIGHTING, 3, LOG_NORMAL, 3, DISC_WERE_WOLF,
1},
{"fangs", do_fangs, POS_FIGHTING, 3, LOG_NORMAL, CLASS_DEMON,
DISC_DAEM_ATTA, 2},
{"fangs", do_fangs, POS_FIGHTING, 3, LOG_NORMAL, 3, DISC_WERE_WOLF,
2},
{"horns", do_horns, POS_FIGHTING, 3, LOG_NORMAL, 1, DISC_DAEM_ATTA,
4},
{"blink", do_blink, POS_FIGHTING, 3, LOG_NORMAL, CLASS_DEMON,
DISC_DAEM_ATTA, 7},
{"inferno", do_dinferno, POS_DEAD, 3, LOG_NORMAL, CLASS_DEMON,
DISC_DAEM_HELL, 3},
{"tail", do_tail, POS_FIGHTING, 3, LOG_NORMAL, 1, 0, 0},
/* Vamp */
{"binferno", do_inferno, POS_STANDING, 3, LOG_NORMAL, 1,
DISC_VAMP_DAIM, 6},
/* Vamp ^^^^ */
{"immolate", do_immolate, POS_STANDING, 3, LOG_NORMAL, CLASS_DEMON,
DISC_DAEM_HELL, 2},
{"daemonseed", do_seed, POS_STANDING, 3, LOG_NORMAL, CLASS_DEMON,
DISC_DAEM_HELL, 7},
{"hellfire", do_hellfire, POS_STANDING, 3, LOG_NORMAL, CLASS_DEMON,
DISC_DAEM_HELL, 8},
{"ban", do_ban, POS_DEAD, 11, LOG_ALWAYS, 0, 0, 0},
{"transfer", do_transfer, POS_DEAD, 7, LOG_NORMAL, 0, 0, 0},
{"runeeq", do_runeeq, POS_STANDING, 2, LOG_NORMAL, 0, 0, 0},
{"afk", do_afk, POS_STANDING, 3, LOG_NORMAL, 0, 0, 0},
{"hedit", do_hedit, POS_STANDING, 7, LOG_NORMAL, 0, 0, 0},
{"freeze", do_freeze, POS_DEAD, 9, LOG_ALWAYS, 0, 0, 0},
{"bitchslap", do_freeze, POS_DEAD, 9, LOG_ALWAYS, 0, 0, 0},
{"unnerve", do_unnerve, POS_FIGHTING, 3, LOG_NORMAL, CLASS_DEMON,
DISC_DAEM_DISC, 1},
{"freezeweapon", do_wfreeze, POS_STANDING, 3, LOG_NORMAL, CLASS_DEMON,
DISC_DAEM_GELU, 1},
{"chaosportal", do_chaosport, POS_FIGHTING, 3, LOG_NORMAL,
CLASS_DEMON, DISC_DAEM_DISC, 4},
{"caust", do_caust, POS_STANDING, 3, LOG_NORMAL, CLASS_DEMON,
DISC_DAEM_CORR, 4},
{"gust", do_gust, POS_STANDING, 3, LOG_NORMAL, CLASS_DEMON,
DISC_DAEM_GELU, 7},
{"entomb", do_entomb, POS_STANDING, 3, LOG_NORMAL, CLASS_DEMON,
DISC_DAEM_GELU, 6},
{"evileye", do_evileye, POS_STANDING, 3, LOG_NORMAL, CLASS_DEMON,
DISC_DAEM_DISC, 2},
{"leech", do_leech, POS_FIGHTING, 3, LOG_NORMAL, CLASS_DEMON,
DISC_DAEM_NETH, 4},
{"deathsense", do_deathsense, POS_FIGHTING, 3, LOG_NORMAL,
CLASS_DEMON, DISC_DAEM_NETH, 2},
{"prefix", do_prefix, POS_DEAD, 7, LOG_NORMAL, 0, 0, 0},
/*
* bugaboo lala Dunkirk Shit Lala mmm POOP Daemon Stuff
*/
/*
* Start of OLC Shit. Hmm
*/
{"hset", do_hset, POS_DEAD, 11, LOG_ALWAYS, 0, 0, 0},
{"hlist", do_hlist, POS_DEAD, 10, LOG_ALWAYS, 0, 0, 0},
{"tcolor", do_tcolor, POS_DEAD, 3, LOG_NORMAL, 0, 0, 0},
{"talons", do_talons, POS_FIGHTING, 3, LOG_NORMAL, 3, DISC_WERE_RAPT,
10},
{"bonemod", do_bonemod, POS_STANDING, 3, LOG_NORMAL, 8,
DISC_VAMP_VICI, 3},
{"cauldron", do_cauldron, POS_FIGHTING, 3, LOG_NORMAL, 8,
DISC_VAMP_THAU, 2},
{"flamehands", do_flamehands, POS_FIGHTING, 3, LOG_NORMAL, 8,
DISC_VAMP_PROT, 5},
{"summon", do_summon, POS_STANDING, 3, LOG_NORMAL, 4, DISC_VAMP_PRES,
4},
{"shroud", do_shroud, POS_STANDING, 3, LOG_NORMAL, 4, DISC_VAMP_OBTE,
1},
{"share", do_share, POS_STANDING, 3, LOG_NORMAL, 4, DISC_VAMP_ANIM,
4},
{"frenzy", do_frenzy, POS_FIGHTING, 3, LOG_NORMAL, 4, DISC_VAMP_ANIM,
5},
{"far", do_far, POS_STANDING, 3, LOG_NORMAL, 4, DISC_VAMP_PRES, 9},
{"awe", do_awe, POS_STANDING, 3, LOG_NORMAL, 4, DISC_VAMP_PRES, 1},
{"forge", do_forge, POS_STANDING, 1, LOG_NORMAL, 0, 0, 0},
{"forget", do_forget, POS_STANDING, 3, LOG_NORMAL, 4, DISC_VAMP_DOMI,
8},
{"acid", do_acid, POS_STANDING, 3, LOG_NORMAL, 4, DISC_VAMP_DOMI, 4},
{"vsilence", do_death, POS_STANDING, 3, LOG_NORMAL, 4, DISC_VAMP_QUIE,
5},
{"flash", do_flash, POS_STANDING, 3, LOG_NORMAL, 4, DISC_VAMP_QUIE,
9},
{"tide", do_tide, POS_STANDING, 3, LOG_NORMAL, 4, DISC_VAMP_THAU, 5},
{"coil", do_coil, POS_STANDING, 3, LOG_NORMAL, 4, DISC_VAMP_SERP, 8},
{"infirmity", do_infirmity, POS_FIGHTING, 3, LOG_NORMAL, 8,
DISC_VAMP_QUIE, 2},
{"klaive", do_klaive, POS_STANDING, 3, LOG_NORMAL, 3, 0, 0},
{"gklaive", do_gklaive, POS_STANDING, 3, LOG_NORMAL, 3,
DISC_WERE_LUNA, 7},
{"calm", do_calm, POS_STANDING, 3, LOG_NORMAL, 3, DISC_WERE_WOLF, 3},
{"change", do_change, POS_STANDING, 3, LOG_NORMAL, 4, DISC_VAMP_PROT,
3},
{"katana", do_katana, POS_RESTING, 3, LOG_NORMAL, CLASS_SAMURAI, 0,
0},
{"earthshatter", do_earthshatter, POS_FIGHTING, 3, LOG_NORMAL, 0, 0,
0},
//{ "ninjaarmor", do_ninjaarmor, POS_STANDING, 3, LOG_NORMAL, CLASS_NINJA, 0, 0 },
{"shadowstep", do_shadowstep, POS_STANDING, 3, LOG_NORMAL, 8,
DISC_VAMP_OBTE, 4},
{"claws", do_claws, POS_SITTING, 3, LOG_NORMAL, 4, DISC_VAMP_PROT, 2},
{"darkheart", do_darkheart, POS_STANDING, 3, LOG_NORMAL, 8,
DISC_VAMP_SERP, 1},
{"earthmeld", do_earthmeld, POS_STANDING, 3, LOG_NORMAL, 8,
DISC_VAMP_PROT, 4},
{"burrow", do_burrow, POS_STANDING, 3, LOG_NORMAL, 3, DISC_WERE_BOAR,
5},
{"fangs", do_fangs, POS_SITTING, 3, LOG_NORMAL, 8, 0, 0},
{"flex", do_flex, POS_SITTING, 0, LOG_NORMAL, 0, 0, 0},
{"gcommand", do_fcommand, POS_STANDING, 3, LOG_NORMAL, 0, 0, 0},
{"possession", do_possession, POS_STANDING, 3, LOG_NORMAL, 8,
DISC_VAMP_DOMI, 3},
{"hum", do_monktalk, POS_DEAD, 3, LOG_NORMAL, 0, 0, 0},
{"humanform", do_humanform, POS_SITTING, 2, LOG_NORMAL, 0, 0, 0},
{"theft", do_theft, POS_FIGHTING, 3, LOG_NORMAL, 4, DISC_VAMP_THAU,
4},
{"plasma", do_plasma, POS_STANDING, 3, LOG_NORMAL, 4, DISC_VAMP_VICI,
5},
{"zuloform", do_zuloform, POS_FIGHTING, 3, LOG_NORMAL, 8,
DISC_VAMP_VICI, 2},
{"beckon", do_beckon, POS_STANDING, 3, LOG_NORMAL, 4, DISC_VAMP_ANIM,
1},
/*
* Ninja
*/
{"miktalk", do_miktalk, POS_SLEEPING, 2, LOG_NORMAL, CLASS_NINJA, 0, 0},
{"principles", do_principles, POS_MEDITATING, 3, LOG_NORMAL, CLASS_NINJA, 0,
0},
{"michi", do_michi, POS_FIGHTING, 3, LOG_NORMAL, CLASS_NINJA, 0, 0},
{"harakiri", do_hara_kiri, POS_MEDITATING, 3, LOG_NORMAL, CLASS_NINJA, 0, 0},
{"circle", do_circle, POS_FIGHTING, 3, LOG_NORMAL, CLASS_NINJA, 0, 0},
{"kakusu", do_kakusu, POS_STANDING, 3, LOG_NORMAL, CLASS_NINJA, 0, 0},
{"kanzuite", do_kanzuite, POS_MEDITATING, 3, LOG_NORMAL, CLASS_NINJA, 0, 0},
{"mienaku", do_mienaku, POS_FIGHTING, 3, LOG_NORMAL, CLASS_NINJA, 0, 0},
{"bomuzite", do_bomuzite, POS_MEDITATING, 3, LOG_NORMAL, CLASS_NINJA, 0, 0},
{"tsume", do_tsume, POS_FIGHTING, 3, LOG_NORMAL, CLASS_NINJA, 0, 0},
{"mitsukeru", do_mitsukeru, POS_MEDITATING, 3, LOG_NORMAL, CLASS_NINJA, 0, 0},
{"koryou", do_koryou, POS_MEDITATING, 3, LOG_NORMAL, CLASS_NINJA, 0, 0},
{"hakunetsu", do_strangle, POS_STANDING, 3, LOG_NORMAL, CLASS_NINJA, 0, 0},
/*
* start drow section
*/
{"newbiepack", do_newbiepack, POS_SLEEPING, 1, LOG_NORMAL, 0, 0, 0},
{"sign", do_sign, POS_DEAD, 1, LOG_NORMAL, 6, 0, 0},
{"reltalk", do_reltalk, POS_DEAD, 1, LOG_NORMAL, 0, 0, 0},
{"relevel", do_relevel, POS_DEAD, 0, LOG_ALWAYS, 0, 0, 0},
{"delevel", do_delevel, POS_DEAD, 11, LOG_ALWAYS, 0, 0, 0},
{"grant", do_grant, POS_STANDING, 3, LOG_NORMAL, 6, 0, 0},
{"drowsight", do_drowsight, POS_STANDING, 3, LOG_NORMAL, 6, 0, 0},
{"drowshield", do_drowshield, POS_STANDING, 3, LOG_NORMAL, 6, 0, 0},
{"drowfire", do_drowfire, POS_FIGHTING, 3, LOG_NORMAL, 6, 0, 0},
{"drowhate", do_drowhate, POS_STANDING, 3, LOG_NORMAL, 6, 0, 0},
{"drowpowers", do_drowpowers, POS_STANDING, 3, LOG_NORMAL, 6, 0, 0},
{"darkness", do_darkness, POS_STANDING, 3, LOG_NORMAL, 6, 0, 0},
{"lloth", do_lloth, POS_STANDING, 3, LOG_NORMAL, 6, 0, 0},
{"collective", do_lloth, POS_STANDING, 3, LOG_NORMAL, 6, 0, 0},
{"shadowwalk", do_shadowwalk, POS_STANDING, 3, LOG_NORMAL, 6, 0, 0},
//{ "drowcreate", do_drowcreate, POS_STANDING, 3, LOG_NORMAL, 6,0,0 },
{"dheal", do_heal, POS_FIGHTING, 3, LOG_NORMAL, 6, 0, 0},
{"garotte", do_garotte, POS_FIGHTING, 3, LOG_NORMAL, 6, 0, 0},
{"spiderform", do_spiderform, POS_STANDING, 3, LOG_NORMAL, 6, 0, 0},
{"chaosblast", do_chaosblast, POS_FIGHTING, 3, LOG_NORMAL, 6, 0, 0},
{"dgarotte", do_dark_garotte, POS_STANDING, 3, LOG_NORMAL, 6, 0, 0},
{"glamour", do_glamour, POS_RESTING, 3, LOG_NORMAL, 6, 0, 0},
{"confuse", do_confuse, POS_FIGHTING, 3, LOG_NORMAL, 6, 0, 0},
{"darktendrils", do_darktendrils, POS_STANDING, 3, LOG_NORMAL, 6, 0,
0},
{"fightdance", do_fightdance, POS_STANDING, 3, LOG_NORMAL, 6, 0, 0},
/* end drow */
/*demon section*/
{"eyespy", do_eyespy, POS_STANDING, 3, LOG_NORMAL, 1, 0, 0},
{"champions", do_champions, POS_STANDING, 3, LOG_NORMAL, 1, 0, 0},
//{ "demonarmour", do_demonarmour, POS_STANDING, 3, LOG_NORMAL, 1,0,0 },
{"hooves", do_hooves, POS_STANDING, 3, LOG_NORMAL, 1, 0, 0},
{"humanform", do_humanform, POS_SITTING, 2, LOG_NORMAL, 1, 0, 0},
{"inpart", do_inpart, POS_STANDING, 3, LOG_NORMAL, 1, 0, 0},
{"travel", do_travel, POS_STANDING, 3, LOG_NORMAL, 1, 0, 0},
{"weaponform", do_weaponform, POS_STANDING, 2, LOG_NORMAL, 1, 0, 0},
{"leap", do_leap, POS_STANDING, 3, LOG_NORMAL, 1, 0, 0},
{"wings", do_wings, POS_STANDING, 3, LOG_NORMAL, 1, 0, 0},
{"demonform", do_demonform, POS_STANDING, 3, LOG_NORMAL, 1, 0, 0,},
/*end demon section*/
{"abilities", do_abilities, POS_STANDING, 3, LOG_NORMAL, 0, 0, 0},
//{ "bladetalk", do_bladetalk, POS_DEAD, 3, LOG_NORMAL, 0,0,0},
{"heavenlyrain", do_heavenlyrain, POS_FIGHTING, 3, LOG_NORMAL, 0, 0,
0},
{"leye", do_truesight, POS_STANDING, 3, LOG_NORMAL, 0, 0, 0},
{"reye", do_shadowsight, POS_STANDING, 3, LOG_NORMAL, 0, 0, 0},
{"eaglestrength", do_eaglestrength, POS_STANDING, 3, LOG_NORMAL, 0, 0,
0},
{"hawkeyes", do_hawkeyes, POS_STANDING, 3, LOG_NORMAL, 0, 0, 0},
{"vulturevigor", do_vulturevigor, POS_STANDING, 3, LOG_NORMAL, 0, 0,
0},
{"skyforge", do_skyforge, POS_STANDING, 3, LOG_NORMAL, 0, 0, 0},
//{ "skyarmor", do_skyarmor, POS_STANDING, 3, LOG_NORMAL, 0,0,0},
{"bladejump", do_bladejump, POS_STANDING, 3, LOG_NORMAL, 0, 0, 0},
{"pummel", do_pummel, POS_FIGHTING, 3, LOG_NORMAL, 0, 0, 0},
{"cloudsblessing", do_cloudsblessing, POS_STANDING, 3, LOG_NORMAL, 0,
0, 0},
{"dragonx", do_dragonx, POS_FIGHTING, 3, LOG_NORMAL, 0, 0, 0},
{"wyrmroar", do_wyrmroar, POS_FIGHTING, 3, LOG_NORMAL, 0, 0, 0},
{"divestrike", do_divestrike, POS_FIGHTING, 3, LOG_NORMAL, 0, 0, 0},
/* Autocommands (doesn't have to be typed but this will send them a note telling them that
this is an automatic command if they type it.*/
{"falconblade", do_isauto, POS_DEAD, 3, LOG_NORMAL, 0, 0, 0},
{"climax", do_isauto, POS_DEAD, 3, LOG_NORMAL, 0, 0, 0},
{"dragonaura", do_isauto, POS_DEAD, 3, LOG_NORMAL, 0, 0, 0},
{"wyrmaura", do_isauto, POS_DEAD, 3, LOG_NORMAL, 0, 0, 0},
{"rapierstrike", do_isauto, POS_DEAD, 3, LOG_NORMAL, 0, 0, 0},
{"retort", do_isauto, POS_DEAD, 3, LOG_NORMAL, 0, 0, 0},
{"leapoffaith", do_isauto, POS_DEAD, 3, LOG_NORMAL, 0, 0, 0},
{"dragoncharge", do_isauto, POS_DEAD, 3, LOG_NORMAL, 0, 0, 0},
{"bladetalk", do_bladetalk, POS_DEAD, 3, LOG_NORMAL, 0, 0, 0},
/* vamp protean healing*/
{"healing", do_healing, POS_FIGHTING, 3, LOG_NORMAL, 8,
DISC_VAMP_PROT, 8},
{"healingtouch", do_healingtouch, POS_STANDING, 3, LOG_NORMAL, 64, 0, 0}, /*monks healing power */
{"inconnu", do_inconnu, POS_STANDING, 3, LOG_NORMAL, 8, 0, 0},
{"majesty", do_majesty, POS_STANDING, 3, LOG_NORMAL, 8,
DISC_VAMP_PRES, 5},
{"nightsight", do_nightsight, POS_SITTING, 3, LOG_NORMAL, 8,
DISC_VAMP_PROT, 1},
{"poison", do_poison, POS_STANDING, 3, LOG_NORMAL, 4, DISC_VAMP_SERP,
3},
{"rage", do_rage, POS_FIGHTING, 3, LOG_NORMAL, 4, 0, 0},
{"regenerate", do_regenerate, POS_SLEEPING, 3, LOG_NORMAL, 8, 0, 0},
{"roll", do_roll, POS_RESTING, 2, LOG_NORMAL, 1, 0, 0},
{"stake", do_stake, POS_STANDING, 3, LOG_NORMAL, 0, 0, 0},
{"serpent", do_serpent, POS_STANDING, 3, LOG_NORMAL, 8,
DISC_VAMP_SERP, 2},
{"shadowplane", do_shadowplane, POS_STANDING, 3, LOG_NORMAL, 8,
DISC_VAMP_OBTE, 3},
{"shadowplane", do_shadowplane, POS_STANDING, 3, LOG_NORMAL, 4,
DISC_WERE_OWL, 3},
{"shadowsight", do_shadowsight, POS_SITTING, 3, LOG_NORMAL, 8,
DISC_VAMP_OBTE, 2},
{"shadowsight", do_shadowsight, POS_SITTING, 3, LOG_NORMAL, 4,
DISC_WERE_HAWK, 2},
{"serenity", do_serenity, POS_SITTING, 3, LOG_NORMAL, 8,
DISC_VAMP_ANIM, 2},
{"totems", do_totems, POS_SITTING, 3, LOG_NORMAL, 4, 0, 0},
{"upkeep", do_upkeep, POS_DEAD, 3, LOG_NORMAL, 0, 0, 0},
{"vanish", do_vanish, POS_STANDING, 3, LOG_NORMAL, 3, DISC_WERE_OWL,
1},
{"web", do_web, POS_FIGHTING, 3, LOG_NORMAL, 3, DISC_WERE_SPID, 2},
/* Spider Droid Powers */
{"chitter", do_chitter, POS_DEAD, 3, LOG_NORMAL, CLASS_DROID, 0, 0},
{"web", do_web, POS_FIGHTING, 3, LOG_NORMAL, CLASS_DROID, 0, 0},
// { "spiderarmor", do_spiderarmor, POS_STANDING, 3, LOG_NORMAL, CLASS_DROID, 0, 0 },
{"lloth", do_lloth, POS_STANDING, 3, LOG_NORMAL, CLASS_DROID, 0, 0},
{"shadowwalk", do_classportal, POS_STANDING, 3, LOG_NORMAL,
CLASS_DROID, 0, 0},
{"darkness", do_darkness, POS_STANDING, 3, LOG_NORMAL, CLASS_DROID, 0,
0},
{"radarscan", do_radarscan, POS_FIGHTING, 3, LOG_NORMAL, CLASS_DROID,
0, 0},
{"truesight", do_truesight, POS_STANDING, 3, LOG_NORMAL, CLASS_DROID,
0, 0},
{"battlestation", do_battlestation, POS_FIGHTING, 3, LOG_NORMAL,
CLASS_DROID, 0, 0},
{"implant", do_implant, POS_STANDING, 3, LOG_NORMAL, CLASS_DROID, 0,
0},
{"reload", do_reload, POS_STANDING, 3, LOG_NORMAL, CLASS_DROID, 0, 0},
{"droidspeed", do_droidspeed, POS_FIGHTING, 3, LOG_NORMAL,
CLASS_DROID, 0, 0},
{"submachine", do_submachine, POS_FIGHTING, 3, LOG_NORMAL,
CLASS_DROID, 0, 0},
{"rocketblast", do_rocketblast, POS_FIGHTING, 3, LOG_NORMAL,
CLASS_DROID, 0, 0},
{"steam", do_steam, POS_FIGHTING, 3, LOG_NORMAL, CLASS_DROID, 0, 0},
/* Tag commands */
{"healme", do_healme, POS_STANDING, 2, LOG_NORMAL, 0, 0, 0},
{"bounty", do_bounty, POS_STANDING, 2, LOG_NORMAL, 0, 0, 0},
{"bountylist", do_bountylist, POS_FIGHTING, 2, LOG_NORMAL, 0, 0, 0},
{"oilspit", do_stuntubes, POS_FIGHTING, 3, LOG_NORMAL, 8192, 0, 0},
{"terminator", do_cubeform, POS_STANDING, 3, LOG_NORMAL, 8192, 0, 0},
{"implant", do_implant, POS_STANDING, 0, LOG_NORMAL, 8192, 0, 0},
{"scry", do_scry, POS_STANDING, 3, LOG_NORMAL, 8192, 0, 0},
{"readaura", do_readaura, POS_STANDING, 3, LOG_NORMAL, 8192, 0, 0},
{"lloth", do_lloth, POS_STANDING, 3, LOG_NORMAL, 8192, 0, 0},
{"darkness", do_darkness, POS_STANDING, 3, LOG_NORMAL, 8192, 0, 0},
{"mechsight", do_infravision, POS_STANDING, 3, LOG_NORMAL, 8192, 0,
0},
//{ "cyborgeq", do_cyborgeq, POS_STANDING, 3, LOG_NORMAL, 8192,0,0},
{"web", do_web, POS_FIGHTING, 3, LOG_NORMAL, 8192, 0, 0},
{"transmit", do_transmit, POS_DEAD, 3, LOG_NORMAL, 8192, 0, 0},
{"upload", do_shadowwalk, POS_STANDING, 3, LOG_NORMAL, 8192, 0, 0},
/*
* quest stuff
*/
{"createbase", do_createbase, POS_DEAD, 12, LOG_NORMAL, 0, 0, 0},
{"showquest", do_showquest, POS_DEAD, 1, LOG_NORMAL, 0, 0, 0},
{"qgain", do_qgain, POS_STANDING, 1, LOG_NORMAL, 0, 0, 0},
{"qcomplete", do_qcomplete, POS_STANDING, 1, LOG_NORMAL, 0, 0, 0},
{"showalias", do_showalias, POS_STANDING, 2, LOG_NORMAL, 0, 0, 0},
{"history", do_history, POS_DEAD, 1, LOG_NORMAL, 0, 0, 0},
/*
* shopping commands
*/
{"shop", do_shop, POS_STANDING, 1, LOG_NORMAL, 0, 0, 0},
{"obuy", do_obuy, POS_STANDING, 1, LOG_NORMAL, 0, 0, 0},
{"olist", do_olist, POS_STANDING, 1, LOG_NORMAL, 0, 0, 0},
{"buy", do_buy, POS_STANDING, 1, LOG_NORMAL, 0, 0, 0},
{"sell", do_sell, POS_STANDING, 1, LOG_NORMAL, 0, 0, 0},
{"list", do_list, POS_STANDING, 1, LOG_NORMAL, 0, 0, 0},
{"describe", do_describe, POS_STANDING, 1, LOG_NORMAL, 0, 0, 0},
{"auction", do_auction, POS_DEAD, 1, LOG_NORMAL, 0, 0, 0},
{"vote", do_vote, POS_DEAD, 2, LOG_NORMAL, 0, 0, 0},
{"changes", do_changes, POS_DEAD, 1, LOG_NORMAL, 0, 0, 0},
{"delchange", do_delchange, POS_DEAD, 11, LOG_NORMAL, 0, 0, 0},
{"addchange", do_addchange, POS_DEAD, 11, LOG_NORMAL, 0, 0, 0},
{"oldscore", do_score, POS_DEAD, 0, LOG_NORMAL, 0, 0, 0},
{"shoot", do_shoot, POS_STANDING, 1, LOG_NORMAL, CLASS_CYBORG, 0, 0},
{"reload", do_reload, POS_STANDING, 1, LOG_NORMAL, CLASS_CYBORG, 0,
0},
{"unload", do_unload, POS_STANDING, 1, LOG_NORMAL, CLASS_CYBORG, 0,
0},
/*
* Immortal commands.
*/
{"faith", do_faith, POS_DEAD, 11, LOG_NORMAL, 0, 0, 0},
{"timer", do_timer, POS_FIGHTING, 3, LOG_NORMAL, 0, 0, 0},
{"ragnarok", do_ragnarok, POS_STANDING, 3, LOG_NORMAL, 0, 0, 0},
{"aggrocheck", do_aggrocheck, POS_DEAD, 11, LOG_NORMAL, 0, 0, 0},
{"showsounds", do_showsounds, POS_DEAD, 12, LOG_NORMAL, 0, 0, 0},
{"dblbuy", do_dblbuy, POS_STANDING, 3, LOG_NORMAL, 0, 0, 0},
{"showsilence", do_showsilence, POS_DEAD, 11, LOG_NORMAL, 0, 0, 0},
{"setclass", do_setclass, POS_DEAD, 11, LOG_NORMAL, 0, 0, 0},
{"pathfind", do_pathfind, POS_DEAD, 11, LOG_NORMAL, 0, 0, 0},
{"ccenter", do_ccenter, POS_DEAD, 11, LOG_NORMAL, 0, 0, 0},
{"project", do_project, POS_DEAD, 11, LOG_NORMAL, 0, 0, 0},
{"showcomp", do_showcompress, POS_DEAD, 11, LOG_NORMAL, 0, 0, 0},
{"implag", do_implag, POS_DEAD, 11, LOG_NORMAL, 0, 0, 0},
{"toggle", do_toggle, POS_DEAD, 11, LOG_ALWAYS, 0, 0, 0},
{"trust", do_trust, POS_DEAD, 11, LOG_ALWAYS, 0, 0, 0},
{"snatch", do_snatch, POS_DEAD, 10, LOG_NORMAL, 0, 0, 0},
{"allow", do_allow, POS_DEAD, 11, LOG_ALWAYS, 0, 0, 0},
{"bind", do_bind, POS_DEAD, 10, LOG_ALWAYS, 0, 0, 0},
{"clearstats", do_clearstats, POS_STANDING, 0, LOG_NORMAL, 0, 0, 0},
{"create", do_create, POS_STANDING, 8, LOG_NORMAL, 0, 0, 0},
{"deny", do_deny, POS_DEAD, 10, LOG_ALWAYS, 0, 0, 0},
{"wipe", do_wipe, POS_DEAD, 11, LOG_ALWAYS, 0, 0, 0},
{"disable", do_disable, POS_DEAD, 11, LOG_ALWAYS, 0, 0, 0},
{"disconnect", do_disconnect, POS_DEAD, 10, LOG_NEVER, 0, 0, 0},
{"divorce", do_divorce, POS_DEAD, 9, LOG_ALWAYS, 0, 0, 0},
{"familiar", do_familiar, POS_STANDING, 12, LOG_NORMAL, 0, 0, 0},
{"unpreg", do_unpreg, POS_STANDING, 12, LOG_NORMAL, 0, 0, 0},
{"makepreg", do_makepreg, POS_STANDING, 11, LOG_NORMAL, 0, 0, 0},
{"fcommand", do_fcommand, POS_STANDING, 4, LOG_NORMAL, 0, 0, 0},
{"freeze", do_freeze, POS_DEAD, 9, LOG_ALWAYS, 0, 0, 0},
{"marry", do_marry, POS_DEAD, 9, LOG_ALWAYS, 0, 0, 0},
{"paradox", do_paradox, POS_DEAD, 12, LOG_ALWAYS, 0, 0, 0},
{"bully", do_bully, POS_DEAD, 11, LOG_NORMAL, 0, 0, 0},
{"unmaster", do_unmaster, POS_DEAD, 11, LOG_NORMAL, 0, 0, 0},
{"qset", do_qset, POS_DEAD, 8, LOG_ALWAYS, 0, 0, 0},
{"qstat", do_qstat, POS_DEAD, 8, LOG_ALWAYS, 0, 0, 0},
{"qtrust", do_qtrust, POS_DEAD, 10, LOG_ALWAYS, 0, 0, 0},
{"prename", do_prename, POS_DEAD, 10, LOG_ALWAYS, 0, 0, 0},
{"wiznet", do_wiznet, POS_DEAD, 7, LOG_NORMAL, 0, 0, 0},
{"copyover", do_copyover, POS_DEAD, 11, LOG_ALWAYS, 0, 0, 0},
{"shutdow", do_shutdow, POS_DEAD, 12, LOG_NORMAL, 0, 0, 0},
{"shutdown", do_shutdown, POS_DEAD, 12, LOG_ALWAYS, 0, 0, 0},
{"users", do_users, POS_DEAD, 8, LOG_NORMAL, 0, 0, 0},
{"omni", do_omni, POS_DEAD, 10, LOG_NORMAL, 0, 0, 0},
{"hreload", do_hreload, POS_DEAD, 10, LOG_NORMAL, 0, 0, 0},
{"wizlock", do_wizlock, POS_DEAD, 11, LOG_ALWAYS, 0, 0, 0},
{"closemud", do_closemud, POS_DEAD, 12, LOG_ALWAYS, 0, 0, 0},
{"force", do_force, POS_DEAD, 9, LOG_ALWAYS, 0, 0, 0},
{"asperson", do_asperson, POS_DEAD, 11, LOG_ALWAYS, 0, 0, 0},
{"offline", do_offline, POS_DEAD, 12, LOG_ALWAYS, 0, 0, 0},
{"pfile", do_pfile, POS_DEAD, 7, LOG_ALWAYS, 0, 0, 0},
{"exlist", do_exlist, POS_DEAD, 8, LOG_NORMAL, 0, 0, 0},
{"load", do_load, POS_DEAD, 7, LOG_ALWAYS, 0, 0, 0},
{"undeny", do_undeny, POS_DEAD, 11, LOG_ALWAYS, 0, 0, 0},
{"mset", do_mset, POS_DEAD, 8, LOG_ALWAYS, 0, 0, 0},
{"wset", do_wset, POS_DEAD, 8, LOG_ALWAYS, 0, 0, 0},
{"multicheck", do_multicheck, POS_DEAD, 7, LOG_NORMAL, 0, 0, 0},
{"resetpasswd", do_resetpassword, POS_DEAD, 12, LOG_ALWAYS, 0, 0, 0},
{"oclone", do_oclone, POS_DEAD, 8, LOG_ALWAYS, 0, 0, 0},
//{ "oload", do_oload, POS_DEAD, 8, LOG_ALWAYS, 0,0,0 },
{"randomload", do_randomload, POS_DEAD, 8, LOG_ALWAYS, 0, 0, 0},
{"psycho", do_psycho, POS_DEAD, 11, LOG_ALWAYS, 0, 0, 0},
{"oset", do_oset, POS_DEAD, 8, LOG_ALWAYS, 0, 0, 0},
{"otransfer", do_otransfer, POS_DEAD, 8, LOG_ALWAYS, 0, 0, 0},
{"pload", do_pload, POS_DEAD, 11, LOG_ALWAYS, 0, 0, 0},
{"preturn", do_preturn, POS_DEAD, 2, LOG_NORMAL, 0, 0, 0},
{"pset", do_pset, POS_DEAD, 10, LOG_ALWAYS, 0, 0, 0},
{"pstat", do_pstat, POS_DEAD, 10, LOG_ALWAYS, 0, 0, 0},
{"purge", do_purge, POS_DEAD, 7, LOG_NORMAL, 0, 0, 0},
{"beep", do_beep, POS_DEAD, 7, LOG_NORMAL, 0, 0, 0},
{"unrestore", do_unrestore, POS_DEAD, 11, LOG_NORMAL, 0, 0, 0},
{"xpup", do_xpup, POS_DEAD, 12, LOG_NORMAL, 0, 0, 0},
{"checkpk", do_checkpk, POS_DEAD, 10, LOG_NORMAL, 0, 0, 0},
{"freevnums", do_freevnums, POS_DEAD, 11, LOG_NORMAL, 0, 0, 0},
{"daynight", do_daynight, POS_DEAD, 10, LOG_NORMAL, 0, 0, 0},
{"release", do_release, POS_DEAD, 9, LOG_ALWAYS, 0, 0, 0},
{"restore", do_restore, POS_DEAD, 8, LOG_ALWAYS, 0, 0, 0},
{"rset", do_rset, POS_DEAD, 8, LOG_ALWAYS, 0, 0, 0},
{"silence", do_silence, POS_DEAD, 9, LOG_NORMAL, 0, 0, 0},
{"sla", do_sla, POS_DEAD, 10, LOG_NORMAL, 0, 0, 0},
{"slay", do_slay, POS_DEAD, 10, LOG_ALWAYS, 0, 0, 0},
{"slay2", do_slay2, POS_FIGHTING, 12, LOG_NORMAL, 0, 0, 0},
{"decapitate", do_decapitate, POS_STANDING, 3, LOG_NORMAL, 0, 0, 0},
{"tiercap", do_tiercap, POS_STANDING, 3, LOG_NORMAL, 0, 0, 0},
{"sset", do_sset, POS_DEAD, 10, LOG_ALWAYS, 0, 0, 0},
{"transfer", do_transfer, POS_DEAD, 7, LOG_ALWAYS, 0, 0, 0},
{"transport", do_transport, POS_DEAD, 1, LOG_NORMAL, 0, 0, 0},
{"at", do_at, POS_DEAD, 8, LOG_NORMAL, 0, 0, 0},
{"bamfin", do_bamfin, POS_DEAD, 7, LOG_NORMAL, 0, 0, 0},
{"bamfout", do_bamfout, POS_DEAD, 7, LOG_NORMAL, 0, 0, 0},
{"echo", do_echo, POS_DEAD, 8, LOG_ALWAYS, 0, 0, 0},
{"goto", do_goto, POS_DEAD, 7, LOG_NORMAL, 0, 0, 0},
{"holylight", do_holylight, POS_DEAD, 7, LOG_NORMAL, 0, 0, 0},
{"invis", do_invis, POS_DEAD, 7, LOG_NORMAL, 0, 0, 0},
{"incognito", do_incognito, POS_DEAD, 7, LOG_NORMAL, 0, 0, 0},
{"ghost", do_ghost, POS_DEAD, 7, LOG_NORMAL, 0, 0, 0},
{"log", do_log, POS_DEAD, 12, LOG_ALWAYS, 0, 0, 0},
{"logstat", do_logstat, POS_DEAD, 12, LOG_NORMAL, 0, 0, 0},
{"logstatclear", do_logstatclear, POS_DEAD, 12, LOG_NORMAL, 0, 0, 0},
{"memusage", do_memory, POS_DEAD, 8, LOG_NORMAL, 0, 0, 0},
{"mfind", do_mfind, POS_DEAD, 7, LOG_NORMAL, 0, 0, 0},
{"mstat", do_mstat, POS_DEAD, 7, LOG_NORMAL, 0, 0, 0},
{"mpstat", do_mpstat, POS_DEAD, 7, LOG_NORMAL, 0, 0, 0},
{"opedit", do_opedit, POS_DEAD, 11, LOG_ALWAYS, 0},
{"rpedit", do_rpedit, POS_DEAD, 11, LOG_ALWAYS, 0},
{"opdump", do_opdump, POS_DEAD, 7, LOG_NEVER, 0},
{"mpdump", do_mpdump, POS_DEAD, 7, LOG_NEVER, 0},
{"opstat", do_opstat, POS_DEAD, 7, LOG_NEVER, 0},
{"rpdump", do_rpdump, POS_DEAD, 7, LOG_NEVER, 0},
{"rpstat", do_rpstat, POS_DEAD, 7, LOG_NEVER, 0},
{"mwhere", do_mwhere, POS_DEAD, 7, LOG_NORMAL, 0, 0, 0},
{"ofind", do_ofind, POS_DEAD, 7, LOG_NORMAL, 0, 0, 0},
{"ostat", do_ostat, POS_DEAD, 7, LOG_NORMAL, 0, 0, 0},
{"oswitch", do_oswitch, POS_DEAD, 8, LOG_NORMAL, 0, 0, 0},
{"oreturn", do_oreturn, POS_DEAD, 8, LOG_NORMAL, 0, 0, 0},
{"owhere", do_owhere, POS_DEAD, 8, LOG_NORMAL, 0, 0, 0},
{"peace", do_peace, POS_DEAD, 10, LOG_NORMAL, 0, 0, 0},
{"recho", do_recho, POS_DEAD, 8, LOG_ALWAYS, 0, 0, 0},
{"immreturn", do_return, POS_DEAD, 8, LOG_NORMAL, 0, 0, 0},
{"rstat", do_rstat, POS_DEAD, 7, LOG_NORMAL, 0, 0, 0},
{"slookup", do_slookup, POS_DEAD, 8, LOG_NORMAL, 0, 0, 0},
{"snoop", do_snoop, POS_DEAD, 8, LOG_NORMAL, 0, 0, 0},
{"switch", do_switch, POS_DEAD, 8, LOG_ALWAYS, 0, 0, 0},
{"samtalk", do_hightalk, POS_DEAD, 1, LOG_NORMAL, 5, 0, 0},
{"magetalk", do_magetalk, POS_DEAD, 2, LOG_NORMAL, 2, 0, 0},
{"vtalk", do_vamptalk, POS_DEAD, 1, LOG_NORMAL, 0, 0, 0},
{">", do_vamptalk, POS_DEAD, 1, LOG_NORMAL, 0, 0, 0},
{"vampire", do_vampire, POS_STANDING, 1, LOG_NORMAL, 0, 0, 0},
{"immune", do_immune, POS_DEAD, 1, LOG_NORMAL, 0, 0, 0},
{"resistance", do_resistance, POS_DEAD, 1, LOG_NORMAL, 0, 0, 0},
{"[", do_fcommand, POS_SITTING, 3, LOG_NORMAL, 0, 0, 0},
{"immtalk", do_immtalk, POS_DEAD, 7, LOG_NORMAL, 0, 0, 0},
{":", do_immtalk, POS_DEAD, 7, LOG_NORMAL, 0, 0, 0},
{"thirdeye", do_thirdeye, POS_STANDING, 3, LOG_NORMAL, 0, 0, 0},
{"psilence", do_psilence, POS_DEAD, 2, LOG_NORMAL, 0, 0, 0},
{"plog", do_plog, POS_DEAD, 2, LOG_NORMAL, 0, 0, 0},
/*
* New Database shit - JOBO
*/
{"leader", do_leader, POS_STANDING, 2, LOG_NORMAL, 0, 0, 0},
{"leaderclear", do_leaderclear, POS_DEAD, 7, LOG_NORMAL, 0, 0, 0},
{"kingdoms", do_kingdoms, POS_DEAD, 1, LOG_NORMAL, 0, 0, 0},
{"ktalk", do_ktalk, POS_DEAD, 2, LOG_NORMAL, 0, 0, 0},
{"kstats", do_kstats, POS_DEAD, 2, LOG_NORMAL, 0, 0, 0},
{"kingset", do_kingset, POS_DEAD, 7, LOG_NORMAL, 0, 0, 0},
{"wantkingdom", do_wantkingdom, POS_DEAD, 2, LOG_NORMAL, 0, 0, 0},
{"kinduct", do_kinduct, POS_STANDING, 2, LOG_NORMAL, 0, 0, 0},
{"kset", do_kset, POS_STANDING, 2, LOG_NORMAL, 0, 0, 0},
{"koutcast", do_koutcast, POS_STANDING, 2, LOG_NORMAL, 0, 0, 0},
{"kdeposit", do_kdeposit, POS_STANDING, 2, LOG_NORMAL, 0, 0, 0},
{"decwar", do_decwar, POS_STANDING, 2, LOG_NORMAL, 0, 0, 0},
{"warlist", do_warlist, POS_STANDING, 2, LOG_NORMAL, 0, 0, 0},
{"warpeace", do_warpeace, POS_STANDING, 2, LOG_NORMAL, 0, 0, 0},
{"krecall", do_krecall, POS_STANDING, 2, LOG_NORMAL, 0, 0, 0},
{"kpromote", do_kpromote, POS_STANDING, 3, LOG_NORMAL, 0, 0, 0},
{"kwithdraw", do_kwithdraw, POS_STANDING, 3, LOG_NORMAL, 0, 0, 0},
{"defect", do_defect, POS_STANDING, 2, LOG_NORMAL, 0, 0, 0},
/*
* newbie banning and unbanning
*/
{"newban", do_newban, POS_DEAD, 11, LOG_NORMAL, 0, 0, 0},
{"newallow", do_newallow, POS_DEAD, 11, LOG_NORMAL, 0, 0, 0},
/*
* Arena stuff - Jobo
*/
{"resign", do_resign, POS_STANDING, 3, LOG_NORMAL, 0, 0, 0},
{"arenastats", do_arenastats, POS_STANDING, 2, LOG_NORMAL, 0, 0, 0},
{"arenaset", do_arenaset, POS_DEAD, 7, LOG_NORMAL, 0, 0, 0},
{"tourney", do_tourney, POS_DEAD, 12, LOG_NORMAL, 0, 0, 0},
{"arenajoin", do_arenajoin, POS_STANDING, 3, LOG_NORMAL, 0, 0, 0},
{"arenaopen", do_openthearena, POS_DEAD, 12, LOG_NORMAL, 0, 0, 0},
{"bet", do_bet, POS_DEAD, 2, LOG_NORMAL, 0, 0, 0},
{"balance", do_balance, POS_STANDING, 2, LOG_NORMAL, 0, 0, 0},
{"membership", do_membership, POS_STANDING, 2, LOG_NORMAL, 0, 0, 0},
{"deposit", do_deposit, POS_STANDING, 2, LOG_NORMAL, 0, 0, 0},
{"withdraw", do_withdraw, POS_STANDING, 2, LOG_NORMAL, 0, 0, 0},
{"fortressstats", do_fortressstats, POS_STANDING, 2, LOG_NORMAL, 0, 0,
0},
{"challenge", do_challenge, POS_STANDING, 3, LOG_NORMAL, 0, 0, 0},
{"decline", do_decline, POS_STANDING, 3, LOG_NORMAL, 0, 0, 0},
{"agree", do_accept2, POS_STANDING, 3, LOG_NORMAL, 0, 0, 0},
{"ignore", do_ignore, POS_DEAD, 2, LOG_NORMAL, 0, 0, 0},
{"policy", do_policy, POS_STANDING, 1, LOG_NEVER, 0, 0, 0},
{"favor", do_favor, POS_STANDING, 2, LOG_NORMAL, 0, 0, 0},
/*
* Religion commands
*/
{"worship", do_worship, POS_STANDING, 3, LOG_NORMAL, 0, 0, 0},
{"forsake", do_forsake, POS_STANDING, 3, LOG_NORMAL, 0, 0, 0},
{"setavatar", do_setavatar, POS_STANDING, 3, LOG_NORMAL, 0, 0, 0},
{"setdecap", do_setdecap, POS_STANDING, 3, LOG_NORMAL, 0, 0, 0},
{"setlogout", do_setlogout, POS_STANDING, 3, LOG_NORMAL, 0, 0, 0},
{"setlogin", do_setlogin, POS_STANDING, 3, LOG_NORMAL, 0, 0, 0},
{"settie", do_settie, POS_STANDING, 3, LOG_NORMAL, 0, 0, 0},
{"relset", do_relset, POS_DEAD, 12, LOG_NORMAL, 0, 0, 0},
{"setrank", do_setrank, POS_DEAD, 12, LOG_NORMAL, 0, 0, 0},
{"relbuy", do_relbuy, POS_STANDING, 3, LOG_NORMAL, 0, 0, 0},
{"darmor", do_darmor, POS_FIGHTING, 3, LOG_NORMAL, 0, 0, 0},
{"gzone", do_gzone, POS_STANDING, 3, LOG_NORMAL, 0, 0, 0},
{"holyword", do_holyword, POS_FIGHTING, 3, LOG_NORMAL, 0, 0, 0},
{"areaaffects", do_areaaffects, POS_FIGHTING, 3, LOG_NORMAL, 0, 0, 0},
{"thorns", do_thorns, POS_STANDING, 3, LOG_NORMAL, 0, 0, 0},
{"rpurge", do_rpurge, POS_STANDING, 3, LOG_NORMAL, 0, 0, 0},
{"deja", do_deja, POS_FIGHTING, 3, LOG_NORMAL, 0, 0, 0},
{"holysymbol", do_holysymbol, POS_STANDING, 3, LOG_NORMAL, 0, 0, 0},
{"badmoon", do_badmoon, POS_STANDING, 3, LOG_NORMAL, 0, 0, 0},
{"areaheal", do_areaheal, POS_STANDING, 3, LOG_NORMAL, 0, 0, 0},
{"relpowers", do_relpowers, POS_STANDING, 3, LOG_NORMAL, 0, 0, 0},
{"hdesire", do_hdesire, POS_STANDING, 3, LOG_NORMAL, 0, 0, 0},
{"dscry", do_dscry, POS_STANDING, 3, LOG_NORMAL, 0, 0, 0},
{"pestilence", do_pestilence, POS_STANDING, 3, LOG_NORMAL, 0, 0, 0},
{"banishment", do_banishment, POS_STANDING, 3, LOG_NORMAL, 0, 0, 0},
{"starsight", do_starsight, POS_STANDING, 3, LOG_NORMAL, 0, 0, 0},
{"gaia", do_gaia, POS_STANDING, 3, LOG_NORMAL, 0, 0, 0},
{"dbattle", do_dbattle, POS_FIGHTING, 3, LOG_NORMAL, 0, 0, 0},
{"callwild", do_callwild, POS_FIGHTING, 3, LOG_NORMAL, 0, 0, 0},
{"madness", do_madness, POS_FIGHTING, 3, LOG_NORMAL, 0, 0, 0},
{"gfury", do_gfury, POS_FIGHTING, 3, LOG_NORMAL, 0, 0, 0},
{"subvert", do_subvert, POS_STANDING, 3, LOG_NORMAL, 0, 0, 0},
{"rebirth", do_rebirth, POS_STANDING, 3, LOG_NORMAL, 0, 0, 0},
{"landscape", do_landscape, POS_STANDING, 3, LOG_NORMAL, 0, 0, 0},
{"supernova", do_supernova, POS_FIGHTING, 3, LOG_NORMAL, 0, 0, 0},
{"farmor", do_farmor, POS_FIGHTING, 3, LOG_NORMAL, 0, 0, 0},
/*
* New shit added by Hutoshi
*/
{"sigil", do_sigil, POS_STANDING, 3, LOG_NORMAL, 0, 0, 0},
{"cprime", do_cprime, POS_STANDING, 11, LOG_NORMAL, 0, 0, 0},
/*
* OLC 1.1b and Social Edit
*/
{"allpeace", do_allpeace, POS_DEAD, 11, LOG_NORMAL, 0, 0, 0},
{"aedit", do_aedit, POS_DEAD, 7, LOG_NORMAL, 0, 0, 0},
{"dismember", do_dismember, POS_DEAD, 11, LOG_NORMAL, 0, 0, 0},
{"redit", do_redit, POS_DEAD, 7, LOG_NORMAL, 0, 0, 0},
{"oedit", do_oedit, POS_DEAD, 7, LOG_NORMAL, 0, 0, 0},
{"medit", do_medit, POS_DEAD, 7, LOG_NORMAL, 0, 0, 0},
{"mpedit", do_mpedit, POS_DEAD, 11, LOG_NORMAL, 0, 0, 0},
{"asave", do_asave, POS_DEAD, 7, LOG_NORMAL, 0, 0, 0},
{"alist", do_alist, POS_DEAD, 7, LOG_NORMAL, 0, 0, 0},
{"resets", do_resets, POS_DEAD, 7, LOG_NORMAL, 0, 0, 0},
{"spellset", do_spellset, POS_DEAD, 10, LOG_NORMAL, 0, 0, 0},
{"stanceset", do_stanceset, POS_DEAD, 10, LOG_NORMAL, 0, 0, 0},
{"weapset", do_weapset, POS_DEAD, 10, LOG_NORMAL, 0, 0, 0},
{"sedit", do_sedit, POS_DEAD, 7, LOG_NORMAL, 0, 0, 0},
{"wrlist", do_wrlist, POS_DEAD, 8, LOG_NORMAL, 0, 0, 0},
{"meditate", do_meditate, POS_MEDITATING, 0, LOG_NORMAL, 0, 0, 0},
{"relearn", do_relearn, POS_DEAD, 1, LOG_NORMAL, 0, 0, 0},
{"mobquest", do_mobquest, POS_DEAD, 11, LOG_NORMAL, 0, 0, 0},
{"clearflags", do_clearflags, POS_DEAD, 11, LOG_NORMAL, 0, 0, 0},
{"spinebreak", do_spinebreak, POS_DEAD, 12, LOG_NORMAL, 0, 0, 0},
{"startragbid", do_startragbid, POS_DEAD, 11, LOG_NORMAL, 0, 0, 0},
{"endragnarok", do_endragnarok, POS_DEAD, 11, LOG_NORMAL, 0, 0, 0},
{"loop", do_loop, POS_DEAD, 11, LOG_NORMAL, 0, 0, 0},
{"scatter", do_scatter, POS_DEAD, 11, LOG_NORMAL, 0, 0, 0},
{"commands", do_commands, POS_DEAD, 0, LOG_NORMAL, 0, 0, 0},
{"meditate", do_meditate, POS_STANDING, 3, LOG_NORMAL, CLASS_FAE,
DISC_FAE_ARCANE, 2},
{"channel", do_channel, POS_FIGHTING, 3, LOG_NORMAL, CLASS_FAE, 0, 0},
{"newwho", do_newwho, POS_DEAD, 0, LOG_NORMAL, 0, 0, 0},
{"channels", do_channels, POS_DEAD, 0, LOG_NORMAL, 0, 0, 0},
{"channelforce", do_channelforce, POS_STANDING, 3, LOG_NORMAL,
CLASS_JEDI, 0, 0},
{"arts", do_arts, POS_STANDING, 3, LOG_NORMAL, 9, 0, 0},
{"chaos", do_chaos, POS_FIGHTING, 3, LOG_NORMAL, 9, 0, 0},
{"thunderclap", do_thunderclap, POS_FIGHTING, 3, LOG_NORMAL, 9, 0,
0},
// {"mirage", do_mirage, POS_STANDING, 3, LOG_NORMAL, 9, 0, 0},
{"hellblades", do_hellblades, POS_FIGHTING, 3, LOG_NORMAL, 9, 0, 0},
{"wod", do_wrath, POS_FIGHTING, 3, LOG_NORMAL, 9, 0, 0},
{"firebolt", do_firebolt, POS_FIGHTING, 3, LOG_NORMAL, 9, 0, 0},
{"pshift", do_pshift, POS_FIGHTING, 3, LOG_NORMAL, 9, 0, 0},
{"plost", do_plost, POS_FIGHTING, 3, LOG_NORMAL, 9, 0, 0},
{"icelance", do_icelance, POS_FIGHTING, 3, LOG_NORMAL, 9, 0, 0},
{"negativity", do_negativity, POS_FIGHTING, 3, LOG_NORMAL, 9, 0, 0},
/*New Mages*/
{"mageskill", do_mageskill, POS_STANDING, 3, LOG_NORMAL, 2, 0, 0},
{"specialize", do_specialize, POS_STANDING, 3, LOG_NORMAL, 2, 0, 0},
{"magechant", do_sorchant, POS_FIGHTING, 3, LOG_NORMAL, 2, 0, 0},
{"mindblank", do_mindblank, POS_FIGHTING, 3, LOG_NORMAL, 2, 0, 0},
{"target", do_target, POS_FIGHTING, 3, LOG_NORMAL, 2, 0, 0},
{"magespells", do_magespells, POS_MEDITATING, 3, LOG_NORMAL, 2, 0, 0},
/* Akurei's things */
{ "outerexits", do_outerexits, POS_STANDING, 7, LOG_NORMAL, 0, 0, 0 },
{ "enterexits", do_enterexits, POS_STANDING, 7, LOG_NORMAL, 0, 0, 0 },
{ "removeexit", do_removeexit, POS_STANDING, 12, LOG_ALWAYS, 0, 0, 0 },
{ "removeexits", do_removeexits, POS_STANDING, 12, LOG_ALWAYS, 0, 0, 0 },
/*
* End of list.
*/
{"", 0, POS_DEAD, 0, LOG_NORMAL, 0, 0, 0}
};
/*
* The main entry point for executing commands.
* Can be recursively called from 'at', 'order', 'force'.
*/
void interpret(CHAR_DATA * ch, char *argument)
{
CHAR_DATA *unveil;
char arg[MAX_STRING_LENGTH];
char argu[MAX_STRING_LENGTH];
char buf[MAX_INPUT_LENGTH];
char log_buf[MSL];
char command[MAX_STRING_LENGTH];
char logline[MAX_STRING_LENGTH];
int cmd;
int trust;
bool found, foundstar = FALSE;
sh_int col = 0;
int star = 0;
int cPerm = sAllocPerm;
char cmd_copy[MAX_INPUT_LENGTH];
if (!ch)
return;
if (!ch->in_room)
{
xprintf(buf, "Interpret: %s not in any room.", ch->name);
bug(buf, 0);
return;
}
xprintf(argu, "%s %s", arg, one_argument(argument, arg));
/*
* Strip leading spaces.
*/
while (isspace(*argument))
argument++;
if (argument[0] == '\0')
return;
strcpy(cmd_copy, argument);
/*
* Implement freeze command.
*/
if (!IS_NPC(ch) && IS_SET(ch->act, PLR_FREEZE))
{
send_to_char("You can't do anything while frozen!\n\r", ch);
return;
}
if (!IS_NPC(ch) && IS_SET(ch->extra, EXTRA_AFK)
&& str_cmp(argument, "afk"))
do_afk(ch, "");
/*
* Grab the command word.
* Special parsing so ' can be a command,
* also no spaces needed after punctuation.
*/
strcpy(logline, argument);
if (!isalpha(argument[0]) && !isdigit(argument[0]))
{
command[0] = argument[0];
command[1] = '\0';
argument++;
while (isspace(*argument))
argument++;
}
else
{
argument = one_argument(argument, command);
}
/*
* List all valid commands
*/
if (command[strlen(command) - 1] == '*')
{
command[strlen(command) - 1] = '\0';
for (cmd = 0; cmd_table[cmd].name[0] != '\0'; cmd++)
{
if ((!str_prefix(command, cmd_table[cmd].name)
|| strlen(command) == 0)
&& can_interpret(ch, cmd))
{
foundstar = TRUE;
star++;
xprintf(buf, "%-15s", cmd_table[cmd].name);
send_to_char(buf, ch);
if (++col % 5 == 0)
send_to_char("\n\r", ch);
}
}
if (col % 5 != 0 && foundstar)
send_to_char("\n\r", ch);
if (foundstar && star != 0)
{
xprintf(buf, "\n%d command%s found.\n\r", star,
(star > 1) ? "s" : "");
stc(buf, ch);
}
if (!foundstar)
{
stc("No commands found.\n\r", ch);
}
return;
}
/*
* Alias system, beta version by Jobo.
*/
if (!IS_NPC(ch))
{
ALIAS_DATA *ali;
for (ali = ch->pcdata->alias; ali; ali = ali->next)
{
if (!str_cmp(command, ali->short_n))
{
xprintf(buf, "%s %s", ali->long_n, argument);
interpret(ch, buf);
return;
}
}
}
/*
* Look for command in command table.
*/
found = FALSE;
trust = get_trust(ch);
for (cmd = 0; cmd_table[cmd].name[0] != '\0'; cmd++)
{
if (command[0] == cmd_table[cmd].name[0]
&& !str_prefix(command, cmd_table[cmd].name)
&& cmd_table[cmd].level <= trust)
{
if (IS_HEAD(ch, LOST_HEAD)
|| IS_EXTRA(ch, EXTRA_OSWITCH))
{
if (!str_cmp(cmd_table[cmd].name, "say"))
found = TRUE;
else if (!str_cmp(cmd_table[cmd].name, "'"))
found = TRUE;
else if (!str_cmp
(cmd_table[cmd].name, "immtalk"))
found = TRUE;
else if (!str_cmp(cmd_table[cmd].name, ":"))
found = TRUE;
else if (!str_cmp
(cmd_table[cmd].name, "chat"))
found = TRUE;
else if (!str_cmp(cmd_table[cmd].name, "."))
found = TRUE;
else if (!str_cmp
(cmd_table[cmd].name, "look"))
found = TRUE;
else if (!str_cmp
(cmd_table[cmd].name, "save"))
found = TRUE;
else if (!str_cmp
(cmd_table[cmd].name, "exits"))
found = TRUE;
else if (!str_cmp
(cmd_table[cmd].name, "emote"))
found = TRUE;
else if (!str_cmp
(cmd_table[cmd].name, "tell"))
found = TRUE;
else if (!str_cmp
(cmd_table[cmd].name, "order"))
found = TRUE;
else if (!str_cmp(cmd_table[cmd].name, "who"))
found = TRUE;
else if (!str_cmp
(cmd_table[cmd].name, "where"))
found = TRUE;
else if (!str_cmp
(cmd_table[cmd].name, "relevel"))
found = TRUE;
else if (!str_cmp
(cmd_table[cmd].name, "safe"))
found = TRUE;
else if (!str_cmp
(cmd_table[cmd].name, "scan"))
found = TRUE;
else if (!str_cmp(cmd_table[cmd].name, "spy"))
found = TRUE;
else if (!str_cmp
(cmd_table[cmd].name, "score"))
found = TRUE;
else if (!str_cmp
(cmd_table[cmd].name, "save"))
found = TRUE;
else if (!str_cmp
(cmd_table[cmd].name, "inventory"))
found = TRUE;
else if (!str_cmp
(cmd_table[cmd].name, "oreturn"))
found = TRUE;
else if (!str_cmp
(cmd_table[cmd].name, "roll"))
found = TRUE;
else if (!str_cmp
(cmd_table[cmd].name, "leap"))
found = TRUE;
else if (!str_cmp
(cmd_table[cmd].name, "lifespan"))
found = TRUE;
else if (!str_cmp
(cmd_table[cmd].name, "nightsight"))
found = TRUE;
else if (!str_cmp
(cmd_table[cmd].name, "truesight"))
found = TRUE;
else if (!str_cmp
(cmd_table[cmd].name, "horns"))
found = TRUE;
else if (!str_cmp
(cmd_table[cmd].name, "fangs"))
found = TRUE;
else if (!str_cmp
(cmd_table[cmd].name, "cast"))
found = TRUE;
else if (!str_cmp
(cmd_table[cmd].name, "plasma"))
found = TRUE;
else if (!str_cmp
(cmd_table[cmd].name, "ashes"))
found = TRUE;
else if (!str_cmp(cmd_table[cmd].name, "obj")
&& !IS_NPC(ch)
&& ch->pcdata->obj_vnum != 0)
found = TRUE;
else if (!str_cmp(cmd_table[cmd].name, "quit")
&& !IS_NPC(ch)
&& ch->pcdata->obj_vnum != 0)
found = TRUE;
else if (!str_cmp
(cmd_table[cmd].name, "humanform")
&& !IS_NPC(ch)
&& ch->pcdata->obj_vnum != 0)
found = TRUE;
else
{
send_to_char
("Not without a body!\n\r",
ch);
return;
}
}
else if (IS_EXTRA(ch, EXTRA_EARTHMELD))
{
if (!str_cmp
(cmd_table[cmd].name, "earthmeld"))
found = TRUE;
else if (!str_cmp
(cmd_table[cmd].name, "burrow"))
found = TRUE;
else if (!str_cmp
(cmd_table[cmd].name, "look"))
found = TRUE;
else if (!str_cmp
(cmd_table[cmd].name, "save"))
found = TRUE;
else if (!str_cmp
(cmd_table[cmd].name, "exits"))
found = TRUE;
else if (!str_cmp
(cmd_table[cmd].name, "wake"))
found = TRUE;
else if (!str_cmp
(cmd_table[cmd].name, "inventory"))
found = TRUE;
else if (!str_cmp(cmd_table[cmd].name, "who"))
found = TRUE;
else if (!str_cmp
(cmd_table[cmd].name, "where"))
found = TRUE;
else if (!str_cmp
(cmd_table[cmd].name, "relevel"))
found = TRUE;
else if (!str_cmp
(cmd_table[cmd].name, "safe"))
found = TRUE;
else if (!str_cmp
(cmd_table[cmd].name, "scan"))
found = TRUE;
else if (!str_cmp(cmd_table[cmd].name, "spy"))
found = TRUE;
else if (!str_cmp
(cmd_table[cmd].name, "shadowsight"))
found = TRUE;
else if (!str_cmp
(cmd_table[cmd].name, "vclan"))
found = TRUE;
else if (!str_cmp
(cmd_table[cmd].name, "upkeep"))
found = TRUE;
else if (!str_cmp
(cmd_table[cmd].name, "score"))
found = TRUE;
else if (!str_cmp
(cmd_table[cmd].name, "immune"))
found = TRUE;
else if (!str_cmp
(cmd_table[cmd].name, "clandisc"))
found = TRUE;
else
{
send_to_char
("Not while in the ground.\n\r",
ch);
return;
}
}
else if (ch->embracing != NULL
|| ch->embraced != NULL)
{
if (!str_cmp(cmd_table[cmd].name, "say"))
found = TRUE;
else if (!str_cmp(cmd_table[cmd].name, "'"))
found = TRUE;
else if (!str_cmp
(cmd_table[cmd].name, "chat"))
found = TRUE;
else if (!str_cmp(cmd_table[cmd].name, "."))
found = TRUE;
else if (!str_cmp
(cmd_table[cmd].name, "look"))
found = TRUE;
else if (!str_cmp
(cmd_table[cmd].name, "inventory"))
found = TRUE;
else if (!str_cmp(cmd_table[cmd].name, "who"))
found = TRUE;
else if (!str_cmp
(cmd_table[cmd].name, "relevel"))
found = TRUE;
else if (!str_cmp
(cmd_table[cmd].name, "score"))
found = TRUE;
else if (!str_cmp
(cmd_table[cmd].name, "report"))
found = TRUE;
else if (!str_cmp
(cmd_table[cmd].name, "goto"))
found = TRUE;
else if (!str_cmp
(cmd_table[cmd].name, "kill"))
found = TRUE;
else if (!str_cmp
(cmd_table[cmd].name, "berserk"))
found = TRUE;
else if (!str_cmp
(cmd_table[cmd].name, "testemb"))
found = TRUE;
else if (!str_cmp
(cmd_table[cmd].name, "reboot"))
found = TRUE;
else if (!str_cmp
(cmd_table[cmd].name, "save"))
found = TRUE;
else if (!str_cmp
(cmd_table[cmd].name, "diablerize")
&& ch->embracing != NULL)
found = TRUE;
else if (!str_cmp
(cmd_table[cmd].name, "restore"))
found = TRUE;
else
{
send_to_char
("Not while in an embrace.\n\r",
ch);
return;
}
}
else if (IS_EXTRA(ch, TIED_UP))
{
if (!str_cmp(cmd_table[cmd].name, "say"))
found = TRUE;
else if (!str_cmp(cmd_table[cmd].name, "'"))
found = TRUE;
else if (!str_cmp
(cmd_table[cmd].name, "chat"))
found = TRUE;
else if (!str_cmp(cmd_table[cmd].name, "."))
found = TRUE;
else if (!str_cmp
(cmd_table[cmd].name, "yell"))
found = TRUE;
else if (!str_cmp
(cmd_table[cmd].name, "shout"))
found = TRUE;
else if (!str_cmp
(cmd_table[cmd].name, "look"))
found = TRUE;
else if (!str_cmp
(cmd_table[cmd].name, "call"))
found = TRUE;
else if (!str_cmp
(cmd_table[cmd].name, "save"))
found = TRUE;
else if (!str_cmp
(cmd_table[cmd].name, "exits"))
found = TRUE;
else if (!str_cmp
(cmd_table[cmd].name, "inventory"))
found = TRUE;
else if (!str_cmp
(cmd_table[cmd].name, "tell"))
found = TRUE;
else if (!str_cmp
(cmd_table[cmd].name, "restore"))
found = TRUE;
else if (!str_cmp
(cmd_table[cmd].name, "order"))
found = TRUE;
else if (!str_cmp(cmd_table[cmd].name, "who"))
found = TRUE;
else if (!str_cmp
(cmd_table[cmd].name, "where"))
found = TRUE;
else if (!str_cmp
(cmd_table[cmd].name, "introduce"))
found = TRUE;
else if (!str_cmp
(cmd_table[cmd].name, "relevel"))
found = TRUE;
else if (!str_cmp
(cmd_table[cmd].name, "safe"))
found = TRUE;
else if (!str_cmp
(cmd_table[cmd].name, "scan"))
found = TRUE;
else if (!str_cmp(cmd_table[cmd].name, "spy"))
found = TRUE;
else if (!str_cmp
(cmd_table[cmd].name, "darkness"))
found = TRUE;
else if (!str_cmp
(cmd_table[cmd].name, "sleep"))
found = TRUE;
else if (!str_cmp
(cmd_table[cmd].name, "wake"))
found = TRUE;
else if (!str_cmp
(cmd_table[cmd].name, "fangs"))
found = TRUE;
else if (!str_cmp
(cmd_table[cmd].name, "claws"))
found = TRUE;
else if (!str_cmp
(cmd_table[cmd].name, "nightsight"))
found = TRUE;
else if (!str_cmp
(cmd_table[cmd].name, "shadowsight"))
found = TRUE;
else if (!str_cmp
(cmd_table[cmd].name, "shadowplane"))
found = TRUE;
else if (!str_cmp
(cmd_table[cmd].name, "regenerate"))
found = TRUE;
else if (!str_cmp
(cmd_table[cmd].name, "shield"))
found = TRUE;
else if (!str_cmp
(cmd_table[cmd].name, "vclan"))
found = TRUE;
else if (!str_cmp
(cmd_table[cmd].name, "upkeep"))
found = TRUE;
else if (!str_cmp
(cmd_table[cmd].name, "score"))
found = TRUE;
else if (!str_cmp
(cmd_table[cmd].name, "immune"))
found = TRUE;
else if (!str_cmp
(cmd_table[cmd].name, "consent"))
found = TRUE;
else if (!str_cmp
(cmd_table[cmd].name, "report"))
found = TRUE;
else if (!str_cmp
(cmd_table[cmd].name, "goto"))
found = TRUE;
else if (!str_cmp
(cmd_table[cmd].name, "flex"))
found = TRUE;
else if (!str_cmp
(cmd_table[cmd].name, "wake"))
found = TRUE;
else if (!str_cmp
(cmd_table[cmd].name, "change"))
found = TRUE;
else if (!str_cmp
(cmd_table[cmd].name, "drink"))
found = TRUE;
else
{
send_to_char("Not while tied up.\n\r",
ch);
if (ch->position > POS_STUNNED)
act("$n strains against $s bonds.", ch, NULL, NULL, TO_ROOM);
return;
}
}
found = TRUE;
break;
}
}
/*
* Log and snoop.
*/
if (cmd_table[cmd].log == LOG_NEVER)
strcpy(logline, "XXXXXXXX XXXXXXXX XXXXXXXX");
if (!IS_NPC(ch) && (IS_SET(ch->act, PLR_LOG)
|| fLogAll || cmd_table[cmd].log == LOG_ALWAYS))
{
if (!IS_CREATOR(ch) && !IS_NPC(ch))
{
if (ch->pcdata->log_count > 0)
{
ch->pcdata->log_count--;
if (ch->pcdata->log_count == 0)
REMOVE_BIT(ch->act, PLR_LOG);
}
xprintf(log_buf, "Log %s: %s", ch->pcdata->switchname,
logline);
wiznet(log_buf, ch, NULL, WIZ_SECURE, 0,
get_trust(ch));
log_string(LOG_SECURITY, log_buf);
}
}
/*
* logs only to file, not to channel_log
*/
if (IS_SET(ch->special, SPC_LOG2) || cmd_table[cmd].log == LOG_SEMI)
{
if (!IS_NPC(ch))
{
xprintf(log_buf, "Log %s: %s", ch->pcdata->switchname,
logline);
log_string(LOG_SECURITY, log_buf);
}
}
if (ch->desc != NULL && ch->desc->snoop_by != NULL)
{
write_to_buffer(ch->desc->snoop_by, "% ", 2);
write_to_buffer(ch->desc->snoop_by, logline, 0);
write_to_buffer(ch->desc->snoop_by, "\n\r", 2);
}
if (ch != NULL && ch->unveil != NULL)
{
unveil = ch->unveil;
if (unveil->in_room != NULL)
{
if (unveil->in_room->vnum != ch->in_room->vnum)
{
xprintf(buf,
"You lose your mental link with %s.\n\r",
ch->name);
stc(buf, unveil);
}
else
{
stc("% ", unveil);
stc(logline, unveil);
stc("\n\r", unveil);
}
}
else
ch->unveil = NULL;
}
if (ch->desc != NULL)
write_to_buffer(ch->desc, "\n\r", 2);
if (!found)
{
/*
* Look for command in socials table.
*/
if (!check_social(ch, command, argument)
#ifdef I3
&& !I3_command_hook(ch, command, argument)
#endif
#ifdef IMC
&& !imc_command_hook(ch, command, argument)
#endif
)
{
if (!check_xsocial(ch, command, argument))
do_rand_typo(ch, "");
}
return;
}
else /* a normal valid command.. check if it is disabled */
if (check_disabled(&cmd_table[cmd]))
{
send_to_char
("This command has been temporarily disabled.\n\r",
ch);
return;
}
if (IS_AFF2(ch, PLR_IMPLAG))
{
WAIT_STATE(ch, 20 * PULSE_VIOLENCE);
}
/*
* Character not in position for command?
*/
if (ch->position < cmd_table[cmd].position)
{
switch (ch->position)
{
case POS_DEAD:
send_to_char("Lie still; you are DEAD.\n\r", ch);
break;
case POS_MORTAL:
case POS_INCAP:
{
send_to_char
("You are hurt far too bad for that.\n\r",
ch);
break;
}
case POS_STUNNED:
{
send_to_char
("You are too stunned to do that.\n\r",
ch);
break;
}
case POS_SLEEPING:
send_to_char("In your dreams, or what?\n\r", ch);
break;
case POS_MEDITATING:
case POS_SITTING:
case POS_RESTING:
send_to_char("Nah... You feel too relaxed...\n\r",
ch);
break;
case POS_FIGHTING:
send_to_char("No way! You are still fighting!\n\r",
ch);
break;
}
return;
}
/*
* Dispatch the command.
*/
if (last_command != NULL)
free_string(last_command);
xprintf(log_buf, "%s %s BY %s", cmd_table[cmd].name, argument,
ch->name);
last_command = str_dup(log_buf);
cmd_done = FALSE;
(*cmd_table[cmd].do_fun) (ch, argument);
cmd_done = TRUE;
if (extra_log)
{
if (cPerm < sAllocPerm)
{
xprintf(buf, "Alloc_perm : %s %s by %s",
cmd_table[cmd].name, argument, ch->name);
log_string(LOG_GAME, buf);
}
}
tail_chain();
return;
}
bool check_social(CHAR_DATA * ch, char *command, char *argument)
{
char arg[MAX_STRING_LENGTH];
CHAR_DATA *victim;
int cmd;
bool found;
found = FALSE;
for (cmd = 0; social_table[cmd].name[0] != '\0'; cmd++)
{
if (command[0] == social_table[cmd].name[0]
&& !str_prefix(command, social_table[cmd].name))
{
found = TRUE;
break;
}
}
if (!found)
return FALSE;
switch (ch->position)
{
case POS_DEAD:
send_to_char("Lie still; you are DEAD.\n\r", ch);
return TRUE;
case POS_INCAP:
case POS_MORTAL:
send_to_char("You are hurt far too bad for that.\n\r", ch);
return TRUE;
case POS_STUNNED:
send_to_char("You are too stunned to do that.\n\r", ch);
return TRUE;
case POS_SLEEPING:
/*
* I just know this is the path to a 12" 'if' statement. :(
* But two players asked for it already! -- Furey
*/
if (!str_cmp(social_table[cmd].name, "snore"))
break;
send_to_char("In your dreams, or what?\n\r", ch);
return TRUE;
}
one_argument(argument, arg);
victim = NULL;
if (arg[0] == '\0')
{
act(social_table[cmd].others_no_arg, ch, NULL, victim,
TO_ROOM);
act(social_table[cmd].char_no_arg, ch, NULL, victim, TO_CHAR);
}
else if ((victim = get_char_room(ch, NULL, arg)) == NULL)
{
send_to_char("They aren't here.\n\r", ch);
}
else if (victim == ch)
{
act(social_table[cmd].others_auto, ch, NULL, victim, TO_ROOM);
act(social_table[cmd].char_auto, ch, NULL, victim, TO_CHAR);
}
else
{
act(social_table[cmd].others_found, ch, NULL, victim,
TO_NOTVICT);
act(social_table[cmd].char_found, ch, NULL, victim, TO_CHAR);
act(social_table[cmd].vict_found, ch, NULL, victim, TO_VICT);
if (!IS_NPC(ch) && IS_NPC(victim)
&& !IS_AFFECTED(victim, AFF_CHARM) && IS_AWAKE(victim))
{
switch (number_bits(4))
{
case 0:
multi_hit(victim, ch, TYPE_UNDEFINED);
break;
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
case 8:
act(social_table[cmd].others_found,
victim, NULL, ch, TO_NOTVICT);
act(social_table[cmd].char_found,
victim, NULL, ch, TO_CHAR);
act(social_table[cmd].vict_found,
victim, NULL, ch, TO_VICT);
break;
case 9:
case 10:
case 11:
case 12:
act("$n slaps $N.", victim, NULL, ch,
TO_NOTVICT);
act("You slap $N.", victim, NULL, ch,
TO_CHAR);
act("$n slaps you.", victim, NULL, ch,
TO_VICT);
break;
}
}
}
return TRUE;
}
bool check_xsocial(CHAR_DATA * ch, char *command, char *argument)
{
char arg[MAX_STRING_LENGTH];
CHAR_DATA *victim;
CHAR_DATA *partner = NULL;
int cmd;
int stage;
int amount;
bool is_ok = FALSE;
bool found = FALSE;
bool one = FALSE;
bool two = FALSE;
if (IS_NPC(ch))
return FALSE;
for (cmd = 0; xsocial_table[cmd].name[0] != '\0'; cmd++)
{
if (command[0] == xsocial_table[cmd].name[0]
&& !str_prefix(command, xsocial_table[cmd].name))
{
found = TRUE;
break;
}
}
if (!found)
return FALSE;
switch (ch->position)
{
case POS_DEAD:
send_to_char("Lie still; you are DEAD.\n\r", ch);
return TRUE;
case POS_INCAP:
case POS_MORTAL:
send_to_char("You are hurt far too bad for that.\n\r", ch);
return TRUE;
case POS_STUNNED:
send_to_char("You are too stunned to do that.\n\r", ch);
return TRUE;
case POS_SLEEPING:
send_to_char("In your dreams, or what?\n\r", ch);
return TRUE;
}
one_argument(argument, arg);
victim = NULL;
if ((victim = get_char_room(ch, NULL, arg)) == NULL)
{
send_to_char("They aren't here.\n\r", ch);
return TRUE;
}
if (IS_NPC(victim))
{
send_to_char("You can only perform xsocials on players.\n\r",
ch);
return TRUE;
}
if (!str_cmp(ch->pcdata->switchname, ""))
{
victim->pcdata->partner = ch;
}
else if (IS_SET(victim->extra, TIED_UP))
{
victim->pcdata->partner = ch;
}
if (IS_EXTRA(ch, TIED_UP))
{
send_to_char
("You wiggle and strain but the ropes only tighten.\n\r",
ch);
act("$n strains helplessly against $m bonds.", ch, NULL, NULL,
TO_ROOM);
return FALSE;
}
else if (arg[0] == '\0')
{
act(xsocial_table[cmd].others_no_arg, ch, NULL, victim,
TO_ROOM);
act(xsocial_table[cmd].char_no_arg, ch, NULL, victim,
TO_CHAR);
}
else if (victim == ch)
{
act(xsocial_table[cmd].others_auto, ch, NULL, victim,
TO_ROOM);
act(xsocial_table[cmd].char_auto, ch, NULL, victim, TO_CHAR);
}
else
{
if (xsocial_table[cmd].gender == SEX_MALE
&& ch->sex != SEX_MALE)
{
send_to_char
("Only men can perform this type of social.\n\r",
ch);
}
else if (xsocial_table[cmd].gender == SEX_FEMALE
&& ch->sex != SEX_FEMALE)
{
send_to_char
("Only women can perform this type of social.\n\r",
ch);
}
else if (xsocial_table[cmd].gender == SEX_MALE
&& victim->sex != SEX_FEMALE)
{
send_to_char
("You can only perform this social on a woman.\n\r",
ch);
}
else if (xsocial_table[cmd].gender == SEX_FEMALE
&& victim->sex != SEX_MALE)
{
send_to_char
("You can only perform this social on a man.\n\r",
ch);
}
else if (xsocial_table[cmd].gender == 3
&& ch->sex != SEX_FEMALE)
{
stc("Only females may preform this command.\n\r", ch);
}
else if (xsocial_table[cmd].gender == 3
&& victim->sex != SEX_FEMALE)
{
stc("You can only preform this command on a female.\n\r", ch);
}
else if (((partner = victim->pcdata->partner) == NULL
|| partner != ch))
{
stc("You cannot perform an xsocial on someone without their consent.\n\r", ch);
}
else if (xsocial_table[cmd].stage == 0
&& ch->pcdata->stage[0] < 1
&& ch->pcdata->stage[2] > 0 && ch->sex == 5)
send_to_char
("You have not yet recovered from last time!\n\r",
ch);
else if (xsocial_table[cmd].stage == 0
&& victim->pcdata->stage[0] < 1
&& victim->pcdata->stage[2] > 0 && victim->sex == 5)
send_to_char
("They have not yet recovered from last time!\n\r",
ch);
else if (xsocial_table[cmd].stage > 0
&& ch->pcdata->stage[0] < 100)
send_to_char("You are not sufficiently aroused.\n\r",
ch);
else if (xsocial_table[cmd].stage > 0
&& victim->pcdata->stage[0] < 100)
send_to_char("They are not sufficiently aroused.\n\r",
ch);
else if (xsocial_table[cmd].stage > 1
&& ch->pcdata->stage[1] < 1)
send_to_char("You are not in the right position.\n\r",
ch);
else if (xsocial_table[cmd].stage > 1
&& victim->pcdata->stage[1] < 1)
send_to_char
("They are not in the right position.\n\r",
ch);
else
{
act(xsocial_table[cmd].others_found, ch, NULL, victim,
TO_NOTVICT);
act(xsocial_table[cmd].char_found, ch, NULL, victim,
TO_CHAR);
act(xsocial_table[cmd].vict_found, ch, NULL, victim,
TO_VICT);
if (xsocial_table[cmd].chance)
{
if (ch->sex == SEX_FEMALE &&
!IS_EXTRA(ch, EXTRA_PREGNANT)
&& number_range(1, 3) == 1)
make_preg(ch, victim);
else if (victim->sex == SEX_FEMALE &&
!IS_EXTRA(victim, EXTRA_PREGNANT) &&
number_range(1, 3) == 1)
make_preg(victim, ch);
}
if (!str_prefix(xsocial_table[cmd].name, "x-tie"))
{
SET_BIT(victim->extra, TIED_UP);
}
if (!str_prefix(xsocial_table[cmd].name, "x-gag"))
{
SET_BIT(victim->extra, GAGGED);
}
if (!str_prefix
(xsocial_table[cmd].name, "x-blindfold"))
{
SET_BIT(victim->extra, BLINDFOLDED);
}
if (xsocial_table[cmd].stage == 1)
{
ch->pcdata->stage[1] =
xsocial_table[cmd].position;
victim->pcdata->stage[1] =
xsocial_table[cmd].position;
if (!IS_SET(ch->extra, EXTRA_DONE))
{
SET_BIT(ch->extra, EXTRA_DONE);
if (ch->sex == SEX_FEMALE)
{
act("You feel $n bleed as you enter $m.", ch, NULL, victim, TO_VICT);
act("You feel yourself bleed as $N enters you.", ch, NULL, victim, TO_CHAR);
ch->in_room->blood += 1;
}
}
if (!IS_SET(victim->extra, EXTRA_DONE))
{
SET_BIT(victim->extra, EXTRA_DONE);
if (victim->sex == SEX_FEMALE)
{
act("You feel $N bleed as you enter $M.", ch, NULL, victim, TO_CHAR);
act("You feel yourself bleed as $n enters you.", ch, NULL, victim, TO_VICT);
ch->in_room->blood += 1;
}
}
stage = 2;
}
else
stage = xsocial_table[cmd].stage;
if (stage == 2)
amount = ch->pcdata->stage[1];
else
amount = 100;
if (xsocial_table[cmd].self > 0)
{
is_ok = FALSE;
if (ch->pcdata->stage[stage] >= amount)
is_ok = TRUE;
ch->pcdata->stage[stage] +=
xsocial_table[cmd].self;
if (!is_ok
&& ch->pcdata->stage[stage] >= amount)
{
stage_update(ch, victim, stage,
xsocial_table[cmd].name);
one = TRUE;
}
}
if (xsocial_table[cmd].other > 0)
{
is_ok = FALSE;
if (victim->pcdata->stage[stage] >= amount)
is_ok = TRUE;
victim->pcdata->stage[stage] +=
xsocial_table[cmd].other;
if (!is_ok
&& victim->pcdata->stage[stage] >= amount)
{
stage_update(victim, ch, stage,
xsocial_table[cmd].name);
two = TRUE;
}
}
if (one && two)
{
ch->pcdata->stage[0] = 0;
victim->pcdata->stage[0] = 0;
if (!IS_EXTRA(ch, EXTRA_EXP))
{
send_to_char
("Congratulations on achieving a simultanious orgasm! Recieve 100000 exp!\n\r",
ch);
SET_BIT(ch->extra, EXTRA_EXP);
ch->exp += 100000;
}
if (!IS_EXTRA(victim, EXTRA_EXP))
{
send_to_char
("Congratulations on achieving a simultanious orgasm! Recieve 100000 exp!\n\r",
victim);
SET_BIT(victim->extra, EXTRA_EXP);
victim->exp += 100000;
}
}
}
}
return TRUE;
}
void stage_update(CHAR_DATA * ch, CHAR_DATA * victim, int stage,
char *argument)
{
if (IS_NPC(ch) || IS_NPC(victim))
return;
if (stage == 0)
{
if (ch->sex == SEX_MALE)
{
send_to_char("You get a boner.\n\r", ch);
act("You feel $n get a boner.", ch, NULL, victim,
TO_VICT);
return;
}
else if (ch->sex == SEX_FEMALE)
{
send_to_char("You get wet.\n\r", ch);
act("You feel $n get wet.", ch, NULL, victim,
TO_VICT);
return;
}
}
else if (stage == 2)
{
if (ch->sex == SEX_MALE)
{
if (str_cmp(argument, "xm-cum")
&& str_cmp(argument, "xm-facial")
&& str_cmp(argument, "xm-canal")
&& str_cmp(argument, "xm-canal")
&& str_cmp(argument, "xm-cbreasts")
&& str_cmp(argument, "xm-chair")
&& str_cmp(argument, "xm-chand")
&& str_cmp(argument, "xm-cstomach")
&& str_cmp(argument, "xf-chands")
&& str_cmp(argument, "xf-cbreasts"))
{
act("You grit your teeth as you shoot your creamy load inside of $M.", ch, NULL, victim, TO_CHAR);
act("$n grits his teeth as he shoots his load inside of you.", ch, NULL, victim, TO_VICT);
act("$n grits his teeth as he shoots a load of cum inside of $N.", ch, NULL, victim, TO_NOTVICT);
}
ch->pcdata->genes[8] += 1;
victim->pcdata->genes[8] += 1;
save_char_obj(ch);
save_char_obj(victim);
if (victim->pcdata->stage[2] < 1
|| victim->pcdata->stage[2] >= 250)
{
ch->pcdata->stage[2] = 0;
if (ch->pcdata->stage[0] >= 200)
ch->pcdata->stage[0] -= 100;
}
else
ch->pcdata->stage[2] = 200;
if (victim->sex == SEX_FEMALE &&
!IS_EXTRA(victim, EXTRA_PREGNANT)
&& number_percent() <= 8)
make_preg(victim, ch);
return;
}
else if (ch->sex == SEX_FEMALE)
{
if (str_cmp(argument, "xf-cum")
&& str_cmp(argument, "xf-cface"))
{
act("You whimper as you cum.", ch, NULL,
victim, TO_CHAR);
act("$n whimpers as $e cums.", ch, NULL,
victim, TO_ROOM);
}
if (victim->pcdata->stage[2] < 1
|| victim->pcdata->stage[2] >= 250)
{
ch->pcdata->stage[2] = 0;
if (ch->pcdata->stage[0] >= 200)
ch->pcdata->stage[0] -= 100;
}
else
ch->pcdata->stage[2] = 200;
return;
}
}
return;
}
void make_preg(CHAR_DATA * mother, CHAR_DATA * father)
{
char *strtime;
char buf[MAX_STRING_LENGTH];
if (IS_NPC(mother) || IS_NPC(father))
return;
if (IS_SET(mother->affected_by2, AFF_CONTRACEPTION))
return;
strtime = ctime(¤t_time);
strtime[strlen(strtime) - 1] = '\0';
free_string(mother->pcdata->conception);
mother->pcdata->conception = str_dup(strtime);
xprintf(buf, "%s", father->name);
free_string(mother->pcdata->cparents);
mother->pcdata->cparents = str_dup(buf);
SET_BIT(mother->extra, EXTRA_PREGNANT);
mother->pcdata->genes[0] = (mother->max_hit + father->max_hit) * 0.5;
mother->pcdata->genes[1] =
(mother->max_mana + father->max_mana) * 0.5;
mother->pcdata->genes[2] =
(mother->max_move + father->max_move) * 0.5;
if (IS_IMMUNE(mother, IMM_SLASH) && IS_IMMUNE(father, IMM_SLASH))
SET_BIT(mother->pcdata->genes[3], IMM_SLASH);
if (IS_IMMUNE(mother, IMM_STAB) && IS_IMMUNE(father, IMM_STAB))
SET_BIT(mother->pcdata->genes[3], IMM_STAB);
if (IS_IMMUNE(mother, IMM_SMASH) && IS_IMMUNE(father, IMM_SMASH))
SET_BIT(mother->pcdata->genes[3], IMM_SMASH);
if (IS_IMMUNE(mother, IMM_ANIMAL) && IS_IMMUNE(father, IMM_ANIMAL))
SET_BIT(mother->pcdata->genes[3], IMM_ANIMAL);
if (IS_IMMUNE(mother, IMM_MISC) && IS_IMMUNE(father, IMM_MISC))
SET_BIT(mother->pcdata->genes[3], IMM_MISC);
if (IS_IMMUNE(mother, IMM_CHARM) && IS_IMMUNE(father, IMM_CHARM))
SET_BIT(mother->pcdata->genes[3], IMM_CHARM);
if (IS_IMMUNE(mother, IMM_HEAT) && IS_IMMUNE(father, IMM_HEAT))
SET_BIT(mother->pcdata->genes[3], IMM_HEAT);
if (IS_IMMUNE(mother, IMM_COLD) && IS_IMMUNE(father, IMM_COLD))
SET_BIT(mother->pcdata->genes[3], IMM_COLD);
if (IS_IMMUNE(mother, IMM_LIGHTNING)
&& IS_IMMUNE(father, IMM_LIGHTNING))
SET_BIT(mother->pcdata->genes[3], IMM_LIGHTNING);
if (IS_IMMUNE(mother, IMM_ACID) && IS_IMMUNE(father, IMM_ACID))
SET_BIT(mother->pcdata->genes[3], IMM_ACID);
if (IS_IMMUNE(mother, IMM_VOODOO) && IS_IMMUNE(father, IMM_VOODOO))
SET_BIT(mother->pcdata->genes[3], IMM_VOODOO);
if (IS_IMMUNE(mother, IMM_HURL) && IS_IMMUNE(father, IMM_HURL))
SET_BIT(mother->pcdata->genes[3], IMM_HURL);
if (IS_IMMUNE(mother, IMM_BACKSTAB)
&& IS_IMMUNE(father, IMM_BACKSTAB))
SET_BIT(mother->pcdata->genes[3], IMM_BACKSTAB);
if (IS_IMMUNE(mother, IMM_KICK) && IS_IMMUNE(father, IMM_KICK))
SET_BIT(mother->pcdata->genes[3], IMM_KICK);
if (IS_IMMUNE(mother, IMM_DISARM) && IS_IMMUNE(father, IMM_DISARM))
SET_BIT(mother->pcdata->genes[3], IMM_DISARM);
if (IS_IMMUNE(mother, IMM_STEAL) && IS_IMMUNE(father, IMM_STEAL))
SET_BIT(mother->pcdata->genes[3], IMM_STEAL);
if (IS_IMMUNE(mother, IMM_SLEEP) && IS_IMMUNE(father, IMM_SLEEP))
SET_BIT(mother->pcdata->genes[3], IMM_SLEEP);
if (IS_IMMUNE(mother, IMM_DRAIN) && IS_IMMUNE(father, IMM_DRAIN))
SET_BIT(mother->pcdata->genes[3], IMM_DRAIN);
mother->pcdata->genes[4] = number_range(1, 2);
return;
}
/*
* Return true if an argument is completely numeric.
*/
bool is_number(char *arg)
{
if (*arg == '\0')
return FALSE;
for (; *arg != '\0'; arg++)
{
if (!isdigit(*arg))
return FALSE;
}
return TRUE;
}
/*
* Given a string like 14.foo, return 14 and 'foo'
*/
int number_argument(char *argument, char *arg)
{
char *pdot;
int number;
for (pdot = argument; *pdot != '\0'; pdot++)
{
if (*pdot == '.')
{
*pdot = '\0';
number = atoi(argument);
*pdot = '.';
strcpy(arg, pdot + 1);
return number;
}
}
strcpy(arg, argument);
return 1;
}
/*
* Pick off one argument from a string and return the rest.
* Understands quotes.
*/
char *one_argument(char *argument, char *arg_first)
{
char cEnd;
while (isspace(*argument))
argument++;
cEnd = ' ';
if (*argument == '\'' || *argument == '"')
cEnd = *argument++;
while (*argument != '\0')
{
if (*argument == cEnd)
{
argument++;
break;
}
*arg_first = LOWER(*argument);
arg_first++;
argument++;
}
*arg_first = '\0';
while (isspace(*argument))
argument++;
return argument;
}
/* Syntax is:
disable - shows disabled commands
disable <command> - toggles disable status of command
*/
void do_disable(CHAR_DATA * ch, char *argument)
{
int i;
DISABLED_DATA *p, *q;
char buf[100];
if (IS_NPC(ch))
{
send_to_char("RETURN first.\n\r", ch);
return;
}
if (!argument[0]) /* Nothing specified. Show disabled commands. */
{
if (!disabled_first) /* Any disabled at all ? */
{
send_to_char("There are no commands disabled.\n\r",
ch);
return;
}
send_to_char("Disabled commands:\n\r"
"Command Level Disabled by\n\r", ch);
for (p = disabled_first; p; p = p->next)
{
xprintf(buf, "%-12s %5d %-12s\n\r",
p->command->name, p->level, p->disabled_by);
send_to_char(buf, ch);
}
return;
}
/*
* command given
*/
/*
* First check if it is one of the disabled commands
*/
for (p = disabled_first; p; p = p->next)
if (!str_cmp(argument, p->command->name))
break;
if (p) /* this command is disabled */
{
/*
* Optional: The level of the imm to enable the command must equal or exceed level
* of the one that disabled it
*/
if (get_trust(ch) < p->level)
{
send_to_char
("This command was disabled by a higher power.\n\r",
ch);
return;
}
/*
* Remove
*/
if (disabled_first == p) /* node to be removed == head ? */
disabled_first = p->next;
else /* Find the node before this one */
{
for (q = disabled_first; q->next != p; q = q->next); /* empty for */
q->next = p->next;
}
free_string(p->disabled_by); /* free name of disabler */
free_mem(p, sizeof(DISABLED_DATA)); /* free node */
save_disabled(); /* save to disk */
send_to_char("Command enabled.\n\r", ch);
}
else /* not a disabled command, check if that command exists */
{
/*
* IQ test
*/
if (!str_cmp(argument, "disable"))
{
send_to_char
("You cannot disable the disable command.\n\r",
ch);
return;
}
/*
* Search for the command
*/
for (i = 0; cmd_table[i].name[0] != '\0'; i++)
if (!str_cmp(cmd_table[i].name, argument))
break;
/*
* Found?
*/
if (cmd_table[i].name[0] == '\0')
{
send_to_char("No such command.\n\r", ch);
return;
}
/*
* Can the imm use this command at all ?
*/
if (cmd_table[i].level > get_trust(ch))
{
send_to_char
("You dot have access to that command; you cannot disable it.\n\r",
ch);
return;
}
/*
* Disable the command
*/
p = alloc_mem(sizeof(DISABLED_DATA));
p->command = &cmd_table[i];
p->disabled_by = str_dup(ch->pcdata->switchname); /* save name of disabler */
p->level = get_trust(ch); /* save trust */
p->next = disabled_first;
disabled_first = p; /* add before the current first element */
send_to_char("Command disabled.\n\r", ch);
save_disabled(); /* save to disk */
}
}
/* Check if that command is disabled
Note that we check for equivalence of the do_fun pointers; this means
that disabling 'chat' will also disable the '.' command
*/
bool check_disabled(const struct cmd_type *command)
{
DISABLED_DATA *p;
for (p = disabled_first; p; p = p->next)
if (p->command->do_fun == command->do_fun)
return TRUE;
return FALSE;
}
/* Load disabled commands */
void load_disabled()
{
FILE *fp;
DISABLED_DATA *p;
char *name;
int i;
disabled_first = NULL;
fp = fopen(DISABLED_FILE, "r");
if (!fp) /* No disabled file.. no disabled commands : */
return;
name = fread_word(fp);
while (str_cmp(name, END_MARKER)) /* as long as name is NOT END_MARKER :) */
{
/*
* Find the command in the table
*/
for (i = 0; cmd_table[i].name[0]; i++)
if (!str_cmp(cmd_table[i].name, name))
break;
if (!cmd_table[i].name[0]) /* command does not exist? */
{
bug("Skipping uknown command in " DISABLED_FILE
" file.", 0);
fread_number(fp); /* level */
fread_word(fp); /* disabled_by */
}
else /* add new disabled command */
{
p = alloc_mem(sizeof(DISABLED_DATA));
p->command = &cmd_table[i];
p->level = fread_number(fp);
p->disabled_by = str_dup(fread_word(fp));
p->next = disabled_first;
disabled_first = p;
}
name = fread_word(fp);
}
fclose(fp);
}
/* Save disabled commands */
void save_disabled()
{
FILE *fp;
DISABLED_DATA *p;
if (!disabled_first) /* delete file if no commands are disabled */
{
unlink(DISABLED_FILE);
return;
}
fp = fopen(DISABLED_FILE, "w");
if (!fp)
{
bug("Could not open " DISABLED_FILE " for writing", 0);
return;
}
for (p = disabled_first; p; p = p->next)
fprintf(fp, "%s %d %s\n", p->command->name, p->level,
p->disabled_by);
fprintf(fp, "%s\n", END_MARKER);
fclose(fp);
}
const char *typo_table[25] = {
"My tummy feels funny.",
"System going down, incorrect command typed!",
"ARRRRGGHH!!!",
"What!",
"Yes?",
"I'll do it when I get around to it.",
"Yes Sire.",
"What was that..Jerky?",
"Use BOTH hands when you type.",
"I'd rather be sailing!",
"that makes me sick.",
"Say that again, it makes me HOT!!!.",
"Negative Sir, Try again.",
"Stop rocking the boat...",
"Your making me seasick...",
"*bleeauccch*",
"Even elder races get tired of waiting.",
"Time is of the essence.",
"I'm sorry Dave, but I'm afraid I can't do that.",
"Wha? Wha?",
"That word is on the LAME LIST!",
"Running Level 1 Diagnostic -",
"Try again...",
"As if...",
"Thats some foul language there",
};
void do_rand_typo(CHAR_DATA * ch, char *argument)
{
char buf[MAX_STRING_LENGTH];
int number;
number = number_range(0, 25);
xprintf(buf, "#g%s#n\n\r", typo_table[number]);
send_to_char(buf, ch);
return;
}