/************************************************************************ Realms of Aurealis James Rhone aka Vall of RoA interpreter.c Command interpreter, interface control for players. Handles command parsing, command routing. ******** Heavily modified and expanded ******** *** BE AWARE OF ALL RIGHTS AND RESERVATIONS *** ******** Heavily modified and expanded ******** All rights reserved henceforth. Please note that no guarantees are associated with any code from Realms of Aurealis. All code which has been released to the general public has been done so with an 'as is' pretense. RoA is based on both Diku and CircleMUD and ALL licenses from both *MUST* be adhered to as well as the RoA license. *** Read, Learn, Understand, Improve *** *************************************************************************/ #include "conf.h" #include "sysdep.h" #include "structures.h" #include "comm.h" #include "interpreter.h" #include "acmd.h" #include "db.h" #include "utils.h" #include "mudlimits.h" #include "magic.h" #include "handler.h" #include "mail.h" #include "screen.h" #include "objsave.h" #include "quest.h" #include "lists.h" #include "fight.h" #include "global.h" #include "htown.h" #include "affect.h" #include "darkenelf.h" /* external functions */ int special(chdata *ch, int cmd, char *arg); int check_reaction(chdata *ch, char *str); int check_rtrigs(chdata *ch, char *str); // fill words, one_argument ignores these char *fill[] = { "in", "from", "with", "the", "on", "at", "to", "\n" }; // Reserved words. 03/22/98 -callahan char *reserved[] = { "self", "me", "all", "room", "someone", "something", "\n" }; int search_block(char *arg, char **list, BOOL exact) { register int i, l; /* Make into lower case, and get length of string */ for (l = 0; *(arg + l); l++) *(arg + l) = LOWER(*(arg + l)); if (exact) { for (i = 0; **(list + i) != '\n'; i++) if (!str_cmp(arg, *(list + i))) return(i); } else { if (!l) l = 1; /* Avoid "" to match the first available string */ for (i = 0; **(list + i) != '\n'; i++) if (!strncmp(arg, *(list + i), l)) return(i); } return(-1); } // tried command, but in improper position void send_wrong_pos_mesg(chdata *ch) { switch (GET_POS(ch)) { case POS_DEAD: send_to_char("Lie still; you are DEAD!!! :-( \n\r", ch); break; case POS_INCAP: case POS_MORTALLYW: send_to_char("You are in a pretty bad shape, unable to do anything!\n\r", ch); break; case POS_STUNNED: if (GET_HIT(ch) > 0) update_pos(ch); else send_to_char("All you can do right now is think about the stars!\n\r", ch); break; case POS_SLEEPING: send_to_char("You'd have to be awake to do that.\n\r", ch); break; case POS_RESTING: send_to_char("Nah... You feel too relaxed to do that..\n\r", ch); break; case POS_SITTING: send_to_char("Maybe you should get on your feet first?\n\r", ch); break; case POS_FIGHTING: send_to_char("No way! You're fighting for your life!\n\r", ch); break; } } int is_number(char *str) { int look_at; if (*str == '\0') return(0); for (look_at = 0; *(str + look_at) != '\0'; look_at++) if ((*(str + look_at) < '0') || (*(str + look_at) > '9')) return(0); return(1); } /* same as one_argument except that it doesn't ignore fill words */ char *any_one_arg(char *argument, char *first_arg) { skip_spaces(&argument); while (*argument && !isspace(*argument)) { *(first_arg++) = LOWER(*argument); argument++; } *first_arg = '\0'; return argument; } /* find the first sub-argument of a string, return pointer to first char in primary argument, following the sub-arg */ char *one_argument(char *argument, char *first_arg) { int found, begin, look_at; found = begin = 0; do { /* Find first non blank */ for ( ; isspace(*(argument + begin)); begin++) ; /* Find length of first word */ for (look_at = 0; *(argument + begin + look_at) > ' ' ; look_at++) /* Make all letters lower case, && copy them to first_arg */ *(first_arg + look_at) = LOWER(*(argument + begin + look_at)); *(first_arg + look_at) = '\0'; begin += look_at; } while (fill_word(first_arg)); return(argument + begin); } int fill_word(char *argument) { return (search_block(argument, fill, TRUE) >= 0); } int reserved_word(char *argument) // 03/22/98 -callahan { return (search_block(argument, reserved, TRUE) >= 0); } /* determine if a given string is an abbreviation of another */ int is_abbrev(char *arg1, char *arg2) { if (!*arg1) return(FALSE); for (; *arg1; arg1++, arg2++) { if ((!isalpha(*arg1) || !isalpha(*arg2)) && *arg1 != *arg2) return (FALSE); else if (LOWER(*arg1) != LOWER(*arg2)) return(FALSE); } return(TRUE); } // Same as one_argument except that it takes two args and returns the rest char *two_arguments(char *argument, char *first_arg, char *second_arg) { return one_argument(one_argument(argument, first_arg), second_arg); /* :-) */ } /* return first 'word' plus trailing substring of input string */ void half_chop(char *string, char *arg1, char *arg2) { for (; isspace(*string); string++) ; for (; !isspace(*arg1 = *string) && *string; string++, arg1++) ; *arg1 = '\0'; for (; isspace(*string); string++) ; for (; (*arg2 = *string); string++, arg2++) ; return; } int special(chdata *ch, int cmd, char *arg) { register obdata *i; register chdata *k; extern int postmaster(chdata *ch, chdata *k, int cmd, char *arg); if (IN_NOWHERE(ch)) return(0); /* special in equipment list? for (j = 0; j < MAX_WEAR; j++) if (EQ(ch, j) && EQ(ch, j)->item_number >= 0) if (obj_index[EQ(ch, j)->item_number].func) if ((*obj_index[EQ(ch, j)->item_number].func) (ch, cmd, arg)) return(1); */ /* special in inventory? for (i = ch->carrying; i; i = i->next_content) if (i->item_number >= 0) if (obj_index[i->item_number].func) if ((*obj_index[i->item_number].func)(ch, cmd, arg)) return(1); */ /* special in mobile present? added mobflag postmaster RoA*/ for (k = world[ch->in_room].people; k; k = k->next_in_room) if (IS_MOB(k)) { if (SPC_FLAGGED(k, SPC_MAILMAN)) if (postmaster(ch, k, cmd, arg)) return (1); if (mob_index[k->nr].func) if ((*mob_index[k->nr].func)(ch, cmd, arg)) return(1); } /* special in object present? */ for (i = world[ch->in_room].contents; i; i = i->next_content) if (GET_OBJ_RNUM(i) >= 0) if (obj_index[GET_OBJ_RNUM(i)].func) if ((*obj_index[GET_OBJ_RNUM(i)].func)(ch, cmd, arg)) return(1); return(0); } // add a command to the command list, and increment the top_of_cmds void addcommand( char *comm, int min_pos, void (*pointer) (struct char_data *ch, char * argument, int cmd, int subcmd), int min_level, int subc, int bitv, int gbitv, int glev) { if (top_of_cmds >= MAX_CMD_LIST) { mudlog("SYSWAR: Out of room in command array.", NRM, LEV_GOD, TRUE); return; } cmd_info[(top_of_cmds)].slot = (top_of_cmds); strcpy(cmd_info[(top_of_cmds)].comm, comm); cmd_info[(top_of_cmds)].cmd_ptr = (pointer); cmd_info[(top_of_cmds)].minimum_position = (min_pos); cmd_info[(top_of_cmds)].minimum_level = (min_level); cmd_info[(top_of_cmds)].subcmd = (subc); cmd_info[(top_of_cmds)].bitvector = (bitv); cmd_info[(top_of_cmds)].gbitvector = (gbitv); cmd_info[(top_of_cmds)].glevel = (glev); top_of_cmds++; } // return the command slot, if its there, if not, -1 4/9/98 -jtrhone int get_command(char *arg) { char comm[MAX_INPUT_LENGTH]; int i; any_one_arg(arg, comm); for (i = 1; i < top_of_cmds; i++) if (is_abbrev(comm, cmd_info[i].comm)) return i; return -1; } // revamped, order is mostly unimportant now... // 4/9/98 -jtrhone // added ooc and question/answer channels if so chosen to be used by // administrator via config file and useglobals variable 4/11/98 -jtrhone // assemview now LEV_IMM 5/23/98 -jtrhone // asssemload now LEV_CIMP 5/23/98 -jtrhone void assign_command_pointers (void) { top_of_cmds = 0; // need an offset for command 0 addcommand("OFFSET", POS_DEAD, do_move,LEV_IMPL,0,CMD_NONE, NOGRANTS,0); // the directions ARE order dependant, don't move these //////////////////////////////////////////////////////////////////// // directions //////////////////////////////////////////////////////////////////// addcommand("north", POS_STANDING, do_move, 0, 0, CMD_NONE, NOGRANTS, 0); addcommand("east", POS_STANDING, do_move, 0, 0, CMD_NONE, NOGRANTS, 0); addcommand("south", POS_STANDING, do_move, 0, 0, CMD_NONE, NOGRANTS, 0); addcommand("west", POS_STANDING, do_move, 0, 0, CMD_NONE, NOGRANTS, 0); addcommand("up", POS_STANDING, do_move, 0, 0, CMD_NONE, NOGRANTS, 0); addcommand("down" , POS_STANDING, do_move, 0, 0, CMD_NONE, NOGRANTS, 0); addcommand("neast", POS_STANDING, do_move, 0, 0, CMD_NONE, NOGRANTS, 0); addcommand("seast", POS_STANDING, do_move, 0, 0, CMD_NONE, NOGRANTS, 0); addcommand("swest", POS_STANDING, do_move, 0, 0, CMD_NONE, NOGRANTS, 0); addcommand("nwest", POS_STANDING, do_move, 0, 0, CMD_NONE, NOGRANTS, 0); //////////////////////////////////////////////////////////////////// // preventions come RIGHT after dirs to catch them early //////////////////////////////////////////////////////////////////// addcommand("qui", POS_DEAD, do_quit, 0, 0,CMD_NONE, NOGRANTS,0); addcommand("shutdow", POS_DEAD, do_shutdown, LEV_IMPL, 0,CMD_NONE, NOGRANTS, 0); //////////////////////////////////////////////////////////////////// // Primaries (those which should come first, common commands) //////////////////////////////////////////////////////////////////// addcommand("affects", POS_DEAD, do_affects, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("afk", POS_SLEEPING, do_afk, 1, 0,CMD_NONE, NOGRANTS,0);; addcommand("alias", POS_SLEEPING, do_alias, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("assist", POS_FIGHTING, do_assist, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("assemble", POS_STANDING, do_assemble, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("assassinate", POS_STANDING, do_assassinate, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("ban", POS_DEAD, do_ban, LEV_CIMP, 0,CMD_NONE, GRNT_BAN, LEV_CIMP); addcommand("bank", POS_SLEEPING, do_gold, 0, 0,CMD_NONE, NOGRANTS,0); addcommand("balance", POS_STANDING, do_bank, 1, SCMD_BALANCE,CMD_NONE, NOGRANTS,0); addcommand("bladedance", POS_FIGHTING, do_bladedance, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("blindstrike", POS_FIGHTING, do_blindstrike, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("brew", POS_STANDING, do_brew, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("bug", POS_DEAD, do_gen_write, 0, SCMD_BUG,CMD_NONE, NOGRANTS,0); addcommand("cast", POS_SITTING, do_cast, 1, 0,CMD_TRUSTED, NOGRANTS,0); addcommand("check", POS_STANDING, do_not_here, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("consider", POS_RESTING, do_consider, 0, 0,CMD_NONE, NOGRANTS,0); addcommand("clientopt", POS_SLEEPING, do_client_options, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("darttrap", POS_STANDING, do_darttrap, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("deposit", POS_STANDING, do_bank, 1, SCMD_DEPOSIT,CMD_NONE, NOGRANTS,0); addcommand("detect", POS_STANDING, do_detect, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("disembowel", POS_FIGHTING, do_disembowel, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("doorbash", POS_STANDING, do_doorbash, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("drink", POS_RESTING, do_drink, 0, SCMD_DRINK,CMD_NONE, NOGRANTS,0); addcommand("eat", POS_RESTING, do_eat, 0, SCMD_EAT,CMD_NONE, NOGRANTS,0); addcommand("eavesdrop", POS_RESTING, do_eavesdrop, 0, 0,CMD_NONE, NOGRANTS,0); addcommand("equipment", POS_SLEEPING, do_equipment, 0, 0,CMD_NONE, NOGRANTS,0); addcommand("extinguish", POS_RESTING, do_extinguish, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("firetrap", POS_STANDING, do_firetrap, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("flee", POS_FIGHTING, do_flee, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("get", POS_RESTING, do_get, 0, 0,CMD_NONE, NOGRANTS,0); addcommand("hamstring", POS_FIGHTING, do_hamstring, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("help", POS_DEAD, do_help, 0, 0,CMD_NONE, NOGRANTS,0); addcommand("inventory", POS_DEAD, do_inventory, 0, 0,CMD_NONE, NOGRANTS,0); addcommand("idea", POS_DEAD, do_gen_write, 0, SCMD_IDEA,CMD_NONE, NOGRANTS,0); addcommand("jamlock", POS_STANDING, do_jamlock, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("kill", POS_FIGHTING, do_kill, 0, 0,CMD_NONE, NOGRANTS,0); addcommand("look", POS_RESTING, do_look, 0, 0,CMD_NONE, NOGRANTS,0); addcommand("light", POS_RESTING, do_light , 1, 0,CMD_NONE, NOGRANTS,0); addcommand("lighttrap", POS_STANDING, do_lightningtrap, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("lowstrike", POS_FIGHTING, do_lowstrike, 0, 0,CMD_NONE, NOGRANTS,0); addcommand("mail", POS_STANDING, do_not_here, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("obscure", POS_STANDING, do_obscure, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("play", POS_SITTING, do_play, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("poison", POS_STANDING, do_poison, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("poisonblade", POS_RESTING, do_poisonblade, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("poisontrap", POS_STANDING, do_poisontrap, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("recite", POS_RESTING, do_recite, 0, 0,CMD_NONE, NOGRANTS,0); addcommand("receive", POS_STANDING, do_not_here, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("remove", POS_STANDING, do_remove, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("score", POS_DEAD, do_score, 0, 0,CMD_NONE, NOGRANTS,0); addcommand("seal", POS_STANDING, do_seal, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("search", POS_STANDING, do_search, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("shadowwalk", POS_STANDING, do_shadowwalk, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("sidestep", POS_FIGHTING, do_sidestep, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("sleep", POS_SLEEPING, do_sleep, 0, 0,CMD_NONE, NOGRANTS,0); addcommand("snareset", POS_STANDING, do_snareset, 0, 0,CMD_NONE, NOGRANTS,0); addcommand("tell", POS_DEAD, do_tell, 0, 0,CMD_NONE, NOGRANTS,0); addcommand("tumble", POS_FIGHTING, do_tumble, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("typo", POS_DEAD, do_gen_write, 0, SCMD_TYPO,CMD_NONE, NOGRANTS,0); addcommand("unequip", POS_RESTING, do_unequip, 0, 0,CMD_NONE, NOGRANTS,0); addcommand("use", POS_SITTING, do_use, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("wa", POS_RESTING, do_wa, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("wear", POS_RESTING, do_wear, 0, 0,CMD_NONE, NOGRANTS,0); addcommand("who", POS_DEAD, do_who, 0, 0,CMD_NONE, NOGRANTS,0); addcommand("wield", POS_RESTING, do_wield, 0, 0,CMD_NONE, NOGRANTS,0); addcommand("withdraw", POS_STANDING, do_bank, 1, SCMD_WITHDRAW,CMD_NONE, NOGRANTS,0); addcommand("wizlist", POS_DEAD, do_gen_ps, 0, SCMD_WIZLIST,CMD_NONE, NOGRANTS,0); //////////////////////////////////////////////////////////////////// // movement related //////////////////////////////////////////////////////////////////// addcommand("enter", POS_STANDING, do_enter, 0, 0,CMD_NONE, NOGRANTS,0); addcommand("exits", POS_RESTING, do_exits, 0, 0,CMD_NONE, NOGRANTS,0); addcommand("stand", POS_RESTING, do_stand, 0, 0,CMD_NONE, NOGRANTS,0); addcommand("sit", POS_RESTING, do_sit, 0, 0,CMD_NONE, NOGRANTS,0); addcommand("rest", POS_RESTING, do_rest, 0, 0,CMD_NONE, NOGRANTS,0); addcommand("follow", POS_RESTING, do_follow, 0, 0,CMD_NONE, NOGRANTS,0); addcommand("open", POS_SITTING, do_open, 0, 0,CMD_NONE, NOGRANTS,0); addcommand("close", POS_SITTING, do_close, 0, 0,CMD_NONE, NOGRANTS,0); addcommand("lock", POS_SITTING, do_lock, 0, 0,CMD_NONE, NOGRANTS,0); addcommand("unlock", POS_SITTING, do_unlock, 0, 0,CMD_NONE, NOGRANTS,0); addcommand("leave", POS_STANDING, do_leave, 0, 0,CMD_NONE, NOGRANTS,0); addcommand("sneak", POS_STANDING, do_sneak, 1, 0,CMD_NONE, NOGRANTS,0); //////////////////////////////////////////////////////////////////// // communication //////////////////////////////////////////////////////////////////// addcommand("\"", POS_RESTING, do_commune, 0, SCMD_SAYTO,CMD_NONE, NOGRANTS,0); addcommand("ask", POS_RESTING, do_commune, 0, SCMD_ASK, CMD_NONE, NOGRANTS,0); addcommand("bellow",POS_RESTING, do_gen_com, 0, SCMD_BELLOW, CMD_NONE, NOGRANTS,0); addcommand("chat", POS_SLEEPING, do_chat, 1, 0, CMD_NONE, NOGRANTS,0); addcommand("csay", POS_SLEEPING, do_clan_say, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("echo", POS_STANDING, do_echo, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("emote", POS_RESTING, do_emote, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("newbie", POS_SLEEPING, do_gen_com, 0, SCMD_NEWBIE, CMD_NONE, NOGRANTS,0); addcommand("lsay", POS_RESTING, do_lsay, 1, 0,CMD_NONE, NOGRANTS,0) ; addcommand("reply", POS_SLEEPING, do_reply, 0,0,CMD_NONE, NOGRANTS,0); addcommand("gtell", POS_SLEEPING, do_gsay, 0, 0,CMD_NONE, NOGRANTS,0); addcommand("gsay", POS_SLEEPING, do_gsay, 0, 0,CMD_NONE, NOGRANTS,0); addcommand("order", POS_RESTING, do_order, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("pray",POS_RESTING, do_gen_com, 2, SCMD_PRAYER, CMD_NONE, NOGRANTS,0); addcommand("say", POS_RESTING, do_say, 0, 0,CMD_NONE, NOGRANTS,0); addcommand("sayto", POS_RESTING, do_commune, 0, SCMD_SAYTO, CMD_NONE, NOGRANTS,0); addcommand("speak", POS_SLEEPING, do_speak, 1, 0,CMD_NONE, NOGRANTS,0) ; addcommand("whisper", POS_RESTING, do_commune, 0, SCMD_WHISPER,CMD_NONE, NOGRANTS,0); addcommand("yell", POS_RESTING, do_gen_com, 1, SCMD_YELL, CMD_NONE, NOGRANTS,0); if (useglobals) { addcommand("ooc", POS_SLEEPING, do_gen_com, 1, SCMD_OOC, CMD_NONE, NOGRANTS,0); addcommand("noooc", POS_SLEEPING, do_gen_tog, 1, SCMD_NOOOC, CMD_NONE, NOGRANTS,0); /* Ok, we don't want these, i guess *boggle* 4/14/98 -jtrhone addcommand("question", POS_SLEEPING, do_gen_com, 1, SCMD_QUESTION, CMD_NONE, NOGRANTS,0); addcommand("answer", POS_SLEEPING, do_gen_com, 1, SCMD_ANSWER, CMD_NONE, NOGRANTS,0); addcommand("noqa", POS_SLEEPING, do_gen_tog, 1, SCMD_NOQA, CMD_NONE, NOGRANTS,0); */ } //////////////////////////////////////////////////////////////////// // RoAOLC related / Immortal //////////////////////////////////////////////////////////////////// addcommand("slotupdate", POS_SLEEPING, do_slotupdate, LEV_IMPL, 0,CMD_NONE, NOGRANTS,0); addcommand("olist", POS_SLEEPING, do_olist, LEV_IMM, 0,CMD_NONE, NOGRANTS,0); addcommand("mlist", POS_SLEEPING, do_mlist, LEV_IMM, 0,CMD_NONE, NOGRANTS,0); addcommand("rlist", POS_SLEEPING, do_rlist, LEV_IMM, 0,CMD_NONE, NOGRANTS,0); addcommand("redit", POS_DEAD, do_redit, LEV_IMM, 0,CMD_NONE, GRNT_ROOMEDIT, LEV_CIMP); addcommand("hedit", POS_SLEEPING, do_hedit, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("oquery", POS_SLEEPING, do_oquery, LEV_AIMP, 0,CMD_NONE, NOGRANTS,0); addcommand("map", POS_SLEEPING, do_map, LEV_IMM, 0,CMD_NONE, NOGRANTS,0);; addcommand("voidlist", POS_SLEEPING, do_voidlist, LEV_IMM, 0,CMD_NONE, NOGRANTS,0);; addcommand("helpedit", POS_RESTING, do_help_edit, LEV_AIMP, 0,CMD_NONE, GRNT_HELPED, LEV_CIMP); addcommand("helpdel", POS_RESTING, do_remove_help_entry, LEV_AIMP, 0,CMD_NONE, GRNT_HELPED, LEV_CIMP); addcommand("wizcomm", POS_SLEEPING, do_commands, LEV_IMM, SCMD_WIZCOMM,CMD_NONE, NOGRANTS,0); addcommand("wizhelp", POS_RESTING, do_wizhelp, LEV_IMM, 0,CMD_NONE, NOGRANTS,0); addcommand("wizhelpedit", POS_RESTING, do_wizhelp_edit, LEV_AIMP, 0,CMD_NONE, GRNT_HELPED, LEV_CIMP); addcommand("rterrain", POS_RESTING, do_room_terrain, LEV_AIMP, 0,CMD_NONE, NOGRANTS,0); addcommand("zterrain", POS_RESTING, do_zone_terrain, LEV_AIMP, 0,CMD_NONE, NOGRANTS,0); addcommand("pledit", POS_SLEEPING, do_plshopedit, LEV_AIMP, 0, CMD_NONE, NOGRANTS,0); addcommand("plcreate", POS_SLEEPING, do_plshopcreate, LEV_AIMP, 0, CMD_NONE, NOGRANTS,0); addcommand("pldelete", POS_SLEEPING, do_plshopdelete, LEV_AIMP, 0, CMD_NONE, NOGRANTS,0); addcommand("plsave", POS_SLEEPING, do_plshopsave, LEV_AIMP, 0, CMD_NONE, NOGRANTS,0); addcommand("pllist", POS_SLEEPING, do_plshoplist, LEV_GOD, 0, CMD_NONE, NOGRANTS,0); addcommand("plstat", POS_SLEEPING, do_plshopstat, LEV_GOD, 0, CMD_NONE, NOGRANTS,0); addcommand("bsave", POS_SLEEPING, do_save_boards, LEV_AIMP, 0, CMD_NONE, NOGRANTS,0); addcommand("blist", POS_SLEEPING, do_blist, LEV_GOD, 0, CMD_NONE, NOGRANTS,0); addcommand("badd", POS_SLEEPING, do_badd, LEV_IMPL,0, CMD_NONE, NOGRANTS,0); addcommand("htlist", POS_SLEEPING, do_htlist, LEV_GOD, 0, CMD_NONE, NOGRANTS,0); addcommand("htstat", POS_SLEEPING, do_htstat, LEV_GOD, 0, CMD_NONE, NOGRANTS,0); addcommand("htsave", POS_SLEEPING, do_htsave, LEV_AIMP, 0, CMD_NONE, NOGRANTS,0); addcommand("htcreate", POS_SLEEPING, do_htcreate, LEV_IMPL, 0, CMD_NONE, NOGRANTS,0); addcommand("htedit", POS_SLEEPING, do_htedit, LEV_IMPL, 0, CMD_NONE, NOGRANTS,0); addcommand("mprocshow", POS_SLEEPING, do_mobproc_show, LEV_IMM, 0, CMD_NONE, NOGRANTS,0); addcommand("rprocshow", POS_SLEEPING, do_roomproc_show, LEV_IMM, 0, CMD_NONE, NOGRANTS,0); addcommand("rpcommand", POS_SLEEPING, do_rpcom, LEV_IMM, 0, CMD_NONE, NOGRANTS,0); addcommand("load", POS_DEAD, do_load, LEV_GOD, 0,CMD_NONE, GRNT_LOAD, LEV_CIMP); addcommand("stat", POS_DEAD, do_stat, LEV_IMM, 0,CMD_TRUSTED, NOGRANTS,0); addcommand("olc", POS_DEAD, do_olc, LEV_IMM, 0,CMD_NONE, GRNT_OLC, LEV_CIMP); addcommand("vnum", POS_DEAD, do_vnum, LEV_IMM, 0,CMD_TRUSTED, GRNT_VNUM, LEV_CIMP); addcommand("zreset", POS_DEAD, do_zreset, LEV_CIMP, 0,CMD_NONE, NOGRANTS,0); addcommand("roomflags", POS_DEAD, do_gen_tog, LEV_IMM, SCMD_ROOMFLAGS,CMD_NONE, NOGRANTS,0); addcommand("vstat", POS_DEAD, do_vstat, LEV_IMM, 0,CMD_TRUSTED, GRNT_VSTAT, LEV_CIMP); addcommand("fremove", POS_RESTING, do_low_force, LEV_IMM, SCMD_FREMOVE,CMD_NONE, NOGRANTS,0); addcommand("medit", POS_DEAD, do_medit, LEV_IMM, 0,CMD_NONE, GRNT_MOBEDIT, LEV_CIMP); addcommand("oedit", POS_DEAD, do_oedit, LEV_IMM, 0,CMD_NONE, GRNT_OBJEDIT, LEV_CIMP); addcommand("zlock", POS_SLEEPING, do_zlock, LEV_IMM, 0,CMD_NONE, NOGRANTS,0); addcommand("zunlock", POS_SLEEPING, do_zunlock, LEV_IMM, 0,CMD_NONE, NOGRANTS,0); addcommand("zlist", POS_SLEEPING, do_zlist, LEV_IMM, 0,CMD_NONE, NOGRANTS,0); addcommand("zedit", POS_RESTING, do_zedit, LEV_IMM, 0,CMD_NONE, NOGRANTS,0); addcommand("socedit", POS_SLEEPING, do_sedit, LEV_CIMP, 0,CMD_NONE, GRNT_SOCEDIT, LEV_CIMP); addcommand("zcreate", POS_SLEEPING, do_zcreate, LEV_IMM, 0,CMD_NONE, NOGRANTS,0); addcommand("mobsave", POS_DEAD, do_mobsave, LEV_AIMP, 1,CMD_NONE, GRNT_MOWSAVE,LEV_IMPL); addcommand("objsave", POS_DEAD, do_objsave, LEV_AIMP, 1,CMD_NONE, GRNT_MOWSAVE,LEV_IMPL); addcommand("wldsave", POS_DEAD, do_wldsave, LEV_AIMP, 1,CMD_NONE, GRNT_MOWSAVE,LEV_IMPL); addcommand("zclose", POS_DEAD, do_zclose, LEV_CIMP, 0,CMD_NONE, GRNT_ZOPCLO, LEV_CIMP); addcommand("zopen", POS_DEAD, do_zopen, LEV_CIMP, 0,CMD_NONE, GRNT_ZOPCLO, LEV_CIMP); addcommand("fget", POS_RESTING, do_low_force, LEV_IMM, SCMD_FGET,CMD_NONE, NOGRANTS,0); addcommand("fgrab", POS_RESTING, do_low_force, LEV_IMM, SCMD_FGRAB,CMD_NONE, NOGRANTS,0); addcommand("fwear", POS_RESTING, do_low_force, LEV_IMM, SCMD_FWEAR,CMD_NONE, NOGRANTS,0); addcommand("fwield", POS_RESTING, do_low_force, LEV_IMM, SCMD_FWIELD,CMD_NONE, NOGRANTS,0); addcommand("zimmort", POS_RESTING, do_zimmort, LEV_IMM, 0,CMD_NONE, NOGRANTS,0); addcommand("ztest", POS_RESTING, do_ztest, LEV_IMM, 0,CMD_NONE, NOGRANTS,0); addcommand("chart", POS_SLEEPING, do_chart, LEV_IMM, 0,CMD_NONE, NOGRANTS,0) ; addcommand("adjust", POS_SLEEPING, do_adjust, LEV_IMM, 0,CMD_NONE, NOGRANTS,0) ; addcommand("zoneadjust", POS_SLEEPING, do_adjust_zone, LEV_IMM, 0,CMD_NONE, NOGRANTS,0) ; addcommand("average", POS_SLEEPING, do_calc_zones, LEV_IMM, 0,CMD_NONE, NOGRANTS,0) ; addcommand("helpconv", POS_RESTING, do_help_conversion, LEV_IMPL+1, 0,CMD_NONE, NOGRANTS,0); addcommand("wizhelpdel", POS_RESTING, do_remove_wizhelp_entry, LEV_AIMP,0,CMD_NONE, GRNT_HELPED, LEV_CIMP); addcommand("socdelete", POS_RESTING, do_socdelete, LEV_CIMP,0,CMD_NONE, GRNT_SOCDEL, LEV_CIMP); addcommand("texedit", POS_SLEEPING, do_tedit, LEV_CIMP,0,CMD_NONE, NOGRANTS,0); addcommand("waredit", POS_SLEEPING, do_wedit, LEV_IMPL,0,CMD_NONE, GRNT_WAREDIT, LEV_CIMP); addcommand("wardelete", POS_SLEEPING, do_wspell_delete, LEV_IMPL,0,CMD_NONE, GRNT_WARDEL, LEV_CIMP); addcommand("wldupdate", POS_RESTING, do_wldupdate, LEV_IMPL, 0,CMD_NONE, NOGRANTS,0); addcommand("fzone", POS_SLEEPING, do_free_zone, LEV_IMPL, 0,CMD_NONE, NOGRANTS,0); addcommand("rbuild", POS_STANDING, do_rbuild, LEV_IMM, 0,CMD_NONE, NOGRANTS,0); addcommand("rconnect", POS_STANDING, do_rconnect, LEV_IMM, 0,CMD_NONE, NOGRANTS,0); addcommand("exedit", POS_SLEEPING, do_exedit, LEV_IMM, 0,CMD_TRUSTED, NOGRANTS,0); addcommand("mfinger", POS_SLEEPING, do_mfinger, 5, 0,CMD_NONE, NOGRANTS,0); addcommand("mfingeredit", POS_SLEEPING, do_mfinger_edit, 5, 0,CMD_NONE, NOGRANTS,0); addcommand("mfingerdel", POS_SLEEPING, do_mfinger_delete, 5, 0,CMD_NONE, NOGRANTS,0); addcommand("hbuild", POS_STANDING, do_hbuild, 10, 0,CMD_NONE, NOGRANTS,0); addcommand("comload", POS_RESTING, do_reload_messages, LEV_IMPL, 0,CMD_NONE, NOGRANTS,0); addcommand("assemview", POS_RESTING, do_show_assem_table, LEV_IMM, 0,CMD_NONE, NOGRANTS,0); addcommand("assemload", POS_RESTING, do_reload_table, LEV_CIMP, 0,CMD_NONE, NOGRANTS,0); addcommand("messedit", POS_SLEEPING, do_mess_edit, LEV_IMPL, 0,CMD_NONE, NOGRANTS,0); addcommand("messsave", POS_RESTING, do_save_messages, LEV_IMPL, 0,CMD_NONE, NOGRANTS,0); addcommand("objchart", POS_SLEEPING, do_object_chart, LEV_IMM, 0,CMD_NONE, NOGRANTS,0); addcommand("wiperoom", POS_STANDING, do_wipe_room, LEV_IMM, 0,CMD_NONE, NOGRANTS,0); addcommand("qedit", POS_SLEEPING, do_qedit, LEV_GOD, 0,CMD_NONE, NOGRANTS,0); addcommand("conceal", POS_SLEEPING, do_conceal, LEV_IMM, 0, CMD_NONE, NOGRANTS,0); addcommand("config", POS_SLEEPING, do_config, LEV_IMPL, 0, CMD_NONE, NOGRANTS,0); addcommand("convert", POS_RESTING, do_convert, LEV_IMPL,0,CMD_NONE, NOGRANTS,0); addcommand("flagtog", POS_SLEEPING, do_flagtog, LEV_AIMP, 0, CMD_NONE, NOGRANTS,0); addcommand("shopedit", POS_RESTING , do_mort_plshopedit, 1, 0, CMD_NONE, NOGRANTS,0); addcommand("clpidlist", POS_RESTING , do_clpidlist, LEV_IMM, 0, CMD_NONE, NOGRANTS,0); addcommand("cliedit", POS_RESTING , do_cliedit, LEV_IMM, 0, CMD_NONE, NOGRANTS,0); addcommand("pllink", POS_RESTING , do_relink_plshops, LEV_GOD, 0, CMD_NONE, NOGRANTS,0); addcommand("traplevel", POS_SLEEPING, do_traplevel, LEV_IMM, 0, CMD_TRUSTED, NOGRANTS,0); //////////////////////////////////////////////////////////////////// // Immortal only //////////////////////////////////////////////////////////////////// addcommand("restartrouter", POS_DEAD, do_restartrouter, LEV_IMPL, 0, CMD_NONE, NOGRANTS, 0); addcommand("record", POS_DEAD, do_record, LEV_IMPL, 0, CMD_NONE, NOGRANTS, 0); addcommand("playback", POS_DEAD, do_playback, LEV_IMPL, 0, CMD_NONE, NOGRANTS, 0); addcommand("at", POS_DEAD, do_at, LEV_IMM, 0,CMD_TRUSTED, GRNT_AT, LEV_CIMP); addcommand("force", POS_SLEEPING, do_force, LEV_GOD, 0,CMD_TRUSTED, NOGRANTS,0); addcommand("transfer", POS_SLEEPING, do_trans, LEV_GOD, 0,CMD_TRUSTED, GRNT_TRANS, LEV_CIMP); addcommand("goto", POS_SLEEPING, do_goto, LEV_IMM, 0,CMD_NONE, NOGRANTS,0); addcommand("purge", POS_DEAD, do_purge, LEV_IMM, 0,CMD_NONE, GRNT_PURGE, LEV_CIMP); addcommand("shutdown", POS_DEAD, do_shutdown, LEV_IMPL, SCMD_SHUTDOWN, CMD_NONE, GRNT_SHUTDOWN, LEV_IMPL); addcommand("snoop", POS_DEAD, do_snoop, LEV_GOD, 0,CMD_TRUSTED, GRNT_SNOOP, LEV_CIMP); addcommand("advance", POS_DEAD, do_advance, LEV_IMPL, 0,CMD_NONE, NOGRANTS,0); addcommand("restore", POS_DEAD, do_restore, LEV_GOD, 0,CMD_NONE, NOGRANTS,0); addcommand("switch", POS_DEAD, do_switch, LEV_CIMP, 0,CMD_TRUSTED, GRNT_SWITCH, LEV_CIMP); addcommand("users", POS_DEAD, do_users, LEV_IMM, 0,CMD_NONE, NOGRANTS,0); addcommand("poofin", POS_DEAD, do_poofset, LEV_IMM, SCMD_POOFIN,CMD_NONE, NOGRANTS,0); addcommand("poofout", POS_DEAD, do_poofset, LEV_IMM, SCMD_POOFOUT,CMD_NONE, NOGRANTS,0); addcommand("teleport", POS_DEAD, do_teleport, LEV_AIMP, 0,CMD_TRUSTED, GRNT_TELEPORT, LEV_CIMP); addcommand("gecho", POS_DEAD, do_gecho, LEV_CIMP, 0,CMD_NONE, GRNT_GECHO, LEV_CIMP); addcommand("wiznet", POS_DEAD, do_wiznet, LEV_IMM, 0,CMD_NONE, NOGRANTS,0); addcommand("holylight", POS_DEAD, do_gen_tog, LEV_IMM, SCMD_HOLYLIGHT,CMD_NONE, NOGRANTS,0); addcommand("invis", POS_DEAD, do_invis, LEV_IMM, 0,CMD_NONE, NOGRANTS,0); addcommand("set", POS_DEAD, do_set, LEV_GOD, 0,CMD_NONE, GRNT_SET, LEV_CIMP); addcommand("wizlock", POS_DEAD, do_wizlock, LEV_CIMP, 0,CMD_NONE, NOGRANTS,0); addcommand("pardon", POS_DEAD, do_wizutil, LEV_GOD, SCMD_PARDON,CMD_NONE, NOGRANTS,0); addcommand(";", POS_DEAD, do_wiznet, LEV_IMM, 0,CMD_NONE, NOGRANTS,0); addcommand("freeze", POS_DEAD, do_wizutil, LEV_FREEZE, SCMD_FREEZE,CMD_NONE, GRNT_FREEZE, LEV_CIMP); addcommand("dc", POS_DEAD, do_dc, LEV_GOD, 0,CMD_TRUSTED, NOGRANTS,0); addcommand("send", POS_SLEEPING, do_send, LEV_GOD, 0,CMD_TRUSTED, NOGRANTS,0); addcommand("uptime", POS_DEAD, do_uptime, LEV_IMM, 0,CMD_NONE, NOGRANTS,0); addcommand("unban", POS_DEAD, do_unban, LEV_CIMP, 0,CMD_NONE, GRNT_UNBAN, LEV_CIMP); addcommand("date", POS_DEAD, do_date, LEV_IMM, 0,CMD_NONE, NOGRANTS,0); addcommand("show", POS_DEAD, do_show, LEV_IMM, 0,CMD_NONE, NOGRANTS,0); addcommand("handbook", POS_DEAD, do_gen_ps, LEV_IMM, SCMD_HANDBOOK,CMD_NONE, NOGRANTS,0); addcommand("nohassle", POS_DEAD, do_gen_tog, LEV_IMM, SCMD_NOHASSLE,CMD_NONE, NOGRANTS,0); addcommand("mute", POS_DEAD, do_wizutil, LEV_GOD, SCMD_SQUELCH,CMD_NONE, NOGRANTS,0); addcommand("nowiz", POS_DEAD, do_gen_tog, LEV_IMM, SCMD_NOWIZ,CMD_NONE, NOGRANTS,0); addcommand("notitle", POS_DEAD, do_wizutil, LEV_GOD, SCMD_NOTITLE,CMD_NONE, NOGRANTS,0); addcommand("thaw", POS_DEAD, do_wizutil, LEV_FREEZE, SCMD_THAW,CMD_NONE, GRNT_THAW, LEV_CIMP); addcommand("unaffect", POS_DEAD, do_wizutil, LEV_GOD, SCMD_UNAFFECT,CMD_NONE, NOGRANTS,0); addcommand("page", POS_DEAD, do_page, LEV_GOD, 0,CMD_NONE, GRNT_PAGE, LEV_IMPL); addcommand("reboot", POS_DEAD, do_reboot, LEV_IMPL, 0,CMD_NONE, GRNT_REBOOT, LEV_IMPL); addcommand("syslog", POS_DEAD, do_syslog, LEV_IMM, 0,CMD_NONE, NOGRANTS,0); addcommand("last", POS_DEAD, do_last, LEV_GOD, 0,CMD_TRUSTED, NOGRANTS,0); addcommand("slowns", POS_DEAD, do_gen_tog, LEV_IMPL, SCMD_SLOWNS,CMD_NONE, NOGRANTS,0); addcommand("/", POS_DEAD, do_wiznet, LEV_IMM, 0,CMD_NONE, NOGRANTS,0); addcommand("mkassassin", POS_SLEEPING, do_wizutil, LEV_GOD, SCMD_ASSASSIN,CMD_NONE, GRNT_ASSASSIN, LEV_CIMP); addcommand("grant", POS_DEAD, do_grant, LEV_CIMP, 0,CMD_NONE, NOGRANTS,0); addcommand("identd", POS_RESTING, do_identify, LEV_CIMP, 0,CMD_NONE, NOGRANTS,0); addcommand("accept", POS_SLEEPING, do_accept, LEV_IMPL, 0,CMD_NONE, NOGRANTS,0); addcommand("reimburse", POS_SLEEPING, do_reimb, LEV_GOD, 0,CMD_TRUSTED, NOGRANTS,0); addcommand("fdrop", POS_RESTING, do_low_force, LEV_IMM, SCMD_FDROP,CMD_NONE, NOGRANTS,0); addcommand("format", POS_SLEEPING, do_format , LEV_IMM, 0,CMD_NONE, NOGRANTS,0); addcommand("delword", POS_SLEEPING, do_delword, LEV_IMM, 0,CMD_NONE, NOGRANTS,0); addcommand("insword", POS_SLEEPING, do_insword, LEV_IMM, 0,CMD_NONE, NOGRANTS,0); addcommand("view", POS_SLEEPING, do_view , LEV_IMM, 0,CMD_NONE, NOGRANTS,0); addcommand("checksnoop", POS_SLEEPING, do_checksnoop, LEV_GOD, 0,CMD_NONE, NOGRANTS,0); addcommand("snooptell", POS_SLEEPING, do_snooptell, LEV_CIMP, 0,CMD_NONE, NOGRANTS,0); addcommand("loadset", POS_SLEEPING, do_loadset, LEV_IMM,0,CMD_TRUSTED, NOGRANTS,0); addcommand("zarena", POS_RESTING, do_zarena, LEV_IMM, 0,CMD_TRUSTED, NOGRANTS,0); addcommand("arena", POS_SLEEPING, do_wizutil,LEV_GOD, SCMD_ARENA,CMD_NONE, NOGRANTS,0); addcommand("idle", POS_SLEEPING, do_idle_zone, LEV_IMM, 0,CMD_NONE, NOGRANTS,0) ; addcommand("hcontrol", POS_SLEEPING, do_hcontrol, LEV_GOD, 0,CMD_NONE, NOGRANTS,0); addcommand("wizhelpconv", POS_RESTING, do_wizhelp_conversion, LEV_IMPL+1, 0,CMD_NONE, NOGRANTS,0); addcommand("refresh", POS_RESTING, do_refresh, LEV_IMM, 0,CMD_NONE, NOGRANTS,0); addcommand("award", POS_SLEEPING, do_award, LEV_IMPL, 0,CMD_NONE, GRNT_AWARD, LEV_CIMP); addcommand("logall", POS_SLEEPING, do_logall, LEV_IMM, 0,CMD_NONE, NOGRANTS,0); addcommand("warp", POS_SLEEPING, do_timeshift, LEV_IMPL, 0,CMD_NONE, NOGRANTS,0); addcommand("exec", POS_SLEEPING, do_exec, LEV_IMPL, 0,CMD_NONE, NOGRANTS,0); addcommand("prename", POS_SLEEPING, do_prename, LEV_IMM, 0,CMD_NONE, NOGRANTS,0); addcommand("noemote", POS_DEAD, do_wizutil, LEV_GOD, SCMD_NOEMOTE,CMD_NONE, NOGRANTS,0); addcommand("strscan", POS_RESTING, do_pfile_scan, LEV_IMPL, 0,CMD_NONE, NOGRANTS,0); addcommand("imotd", POS_SLEEPING, do_gen_ps, LEV_IMM, SCMD_IMOTD,CMD_NONE, NOGRANTS,0); addcommand("rsnoop", POS_SLEEPING, do_rsnoop, LEV_IMPL, 0, CMD_NONE, NOGRANTS, 0); addcommand("match", POS_DEAD, do_match, LEV_IMM, 0,CMD_NONE, NOGRANTS,0); addcommand("soundsend", POS_DEAD, do_soundsend, LEV_IMM, 0,CMD_NONE, NOGRANTS,0); addcommand("bankset", POS_STANDING, do_bankset, LEV_AIMP, 0,CMD_NONE, NOGRANTS,0); addcommand("qcomplete", POS_SLEEPING, do_qcomplete, LEV_AIMP, 0,CMD_NONE, NOGRANTS,0); addcommand("minlevfix", POS_SLEEPING, do_minlevelfix, LEV_IMPL, 0, CMD_NONE, NOGRANTS,0); addcommand("topshops", POS_SLEEPING, do_topshops, LEV_IMM, 0, CMD_NONE, NOGRANTS,0); addcommand("soundlist", POS_RESTING , do_soundlist, LEV_IMM, 0, CMD_NONE, NOGRANTS,0); addcommand("piclist", POS_RESTING , do_piclist, LEV_IMM, 0, CMD_NONE, NOGRANTS,0); addcommand("csend", POS_RESTING , do_csend, LEV_AIMP, 0, CMD_NONE, NOGRANTS,0); addcommand("reveal", POS_SLEEPING, do_reveal, LEV_IMM, 0, CMD_NONE, NOGRANTS,0); addcommand("home", POS_RESTING, do_home, LEV_IMM, 0, CMD_NONE, NOGRANTS,0); addcommand("goldfix", POS_SLEEPING, do_goldfix, LEV_IMPL, 0, CMD_NONE, NOGRANTS, 0); //////////////////////////////////////////////////////////////////// // Miscellaneous (unsorted) //////////////////////////////////////////////////////////////////// addcommand("insult", POS_RESTING, do_insult, 0, 0,CMD_NONE, NOGRANTS,0); addcommand("news", POS_SLEEPING, do_gen_ps, 0, SCMD_NEWS,CMD_NONE, NOGRANTS,0); addcommand("buy", POS_STANDING, do_buy, 0, 0,CMD_NONE, NOGRANTS,0); addcommand("sell", POS_STANDING, do_sell, 0, 0,CMD_NONE, NOGRANTS,0); addcommand("value", POS_STANDING, do_value, 0, 0,CMD_NONE, NOGRANTS,0); addcommand("list", POS_STANDING, do_list, 0, 0,CMD_NONE, NOGRANTS,0); addcommand("drop", POS_RESTING, do_drop, 0, SCMD_DROP,CMD_NONE, NOGRANTS,0); addcommand("weather", POS_RESTING, do_weather, 0, 0,CMD_NONE, NOGRANTS,0); addcommand("read", POS_RESTING, do_read, 0, 0,CMD_NONE, NOGRANTS,0); addcommand("pour", POS_STANDING, do_pour, 0, SCMD_POUR,CMD_NONE, NOGRANTS,0); addcommand("grab", POS_RESTING, do_grab, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("erase", POS_RESTING, do_erase, 0, 0,CMD_NONE, NOGRANTS,0); addcommand("put", POS_RESTING, do_put, 0, 0,CMD_NONE, NOGRANTS,0); addcommand("save", POS_SLEEPING, do_save, 0, 0,CMD_NONE, NOGRANTS,0); addcommand("hit", POS_FIGHTING, do_hit, 0, SCMD_HIT,CMD_NONE, NOGRANTS,0); addcommand("give", POS_RESTING, do_give, 0, 0,CMD_NONE, NOGRANTS,0); addcommand("quit", POS_DEAD, do_quit, 0, SCMD_QUIT,CMD_NONE, NOGRANTS,0); addcommand("time", POS_DEAD, do_time, 0, 0,CMD_NONE, NOGRANTS,0); addcommand("sip", POS_RESTING, do_drink, 0, SCMD_SIP,CMD_NONE, NOGRANTS,0); addcommand("taste", POS_RESTING, do_eat, 0, SCMD_TASTE,CMD_NONE, NOGRANTS,0); addcommand("sing", POS_RESTING, do_sing, 0, 0,CMD_NONE, NOGRANTS,0); addcommand("songlist", POS_SLEEPING, do_songlist, 0, 0,CMD_NONE, NOGRANTS,0); addcommand("write", POS_STANDING, do_write, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("hold", POS_RESTING, do_grab, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("hide", POS_RESTING, do_hide, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("backstab", POS_STANDING, do_backstab, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("pick", POS_STANDING, do_pick, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("steal", POS_STANDING, do_steal, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("bash", POS_FIGHTING, do_bash, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("rescue", POS_FIGHTING, do_rescue, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("kick", POS_FIGHTING, do_kick, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("practise", POS_RESTING, do_practice, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("practice", POS_RESTING, do_practice, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("study", POS_RESTING, do_study, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("examine", POS_SITTING, do_examine, 0, 0,CMD_NONE, NOGRANTS,0); addcommand("take", POS_RESTING, do_get, 0, 0,CMD_NONE, NOGRANTS,0); addcommand("info", POS_SLEEPING, do_gen_ps, 0, SCMD_INFO,CMD_NONE, NOGRANTS,0); addcommand("'", POS_RESTING, do_say, 0, 0,CMD_NONE, NOGRANTS,0); addcommand("where", POS_DEAD, do_where, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("levels", POS_DEAD, do_levels, 0, 0,CMD_NONE, NOGRANTS,0); addcommand("reroll", POS_RESTING, do_wizutil, 1, SCMD_REROLL,CMD_NONE, NOGRANTS,0); addcommand(":", POS_RESTING, do_emote, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("brief", POS_DEAD, do_gen_tog, 0, SCMD_BRIEF,CMD_NONE, NOGRANTS,0); addcommand("group", POS_SLEEPING, do_group, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("return", POS_DEAD, do_return, 0, 0,CMD_NONE, NOGRANTS,0); addcommand("quaff", POS_RESTING, do_quaff, 0, 0,CMD_NONE, NOGRANTS,0); addcommand("immlist", POS_DEAD, do_gen_ps, 0, SCMD_IMMLIST,CMD_NONE, NOGRANTS,0); addcommand("deaf", POS_SLEEPING, do_gen_tog, 1, SCMD_DEAF,CMD_NONE, NOGRANTS,0); addcommand("credits", POS_DEAD, do_gen_ps, 0, SCMD_CREDITS,CMD_NONE, NOGRANTS,0); addcommand("compact", POS_DEAD, do_gen_tog, 0, SCMD_COMPACT,CMD_NONE, NOGRANTS,0); addcommand("wimpy", POS_DEAD, do_wimpy, 0, 0,CMD_NONE, NOGRANTS,0); addcommand("ungroup", POS_DEAD, do_ungroup, 0, 0,CMD_NONE, NOGRANTS,0); addcommand("notell", POS_DEAD, do_gen_tog, 1, SCMD_NOTELL,CMD_NONE, NOGRANTS,0); addcommand("junk", POS_RESTING, do_drop, 0, SCMD_JUNK,CMD_NONE, NOGRANTS,0); addcommand("murder", POS_FIGHTING, do_hit, 0, SCMD_MURDER,CMD_NONE, NOGRANTS,0); addcommand("title", POS_DEAD, do_title, 0, 0,CMD_NONE, NOGRANTS,0); addcommand("visible", POS_RESTING, do_visible, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("nosummon", POS_DEAD, do_gen_tog, 1, SCMD_NOSUMMON,CMD_NONE, NOGRANTS,0); addcommand("split", POS_SITTING, do_split, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("norepeat", POS_DEAD, do_gen_tog, 0, SCMD_NOREPEAT,CMD_NONE, NOGRANTS,0); addcommand("toggle", POS_DEAD, do_toggle, 0, 0,CMD_NONE, NOGRANTS,0); addcommand("fill", POS_STANDING, do_pour, 0, SCMD_FILL,CMD_NONE, NOGRANTS,0); addcommand("commands", POS_DEAD, do_commands, 0, SCMD_COMMANDS,CMD_NONE, NOGRANTS,0); addcommand("socials", POS_DEAD, do_commands, 0, SCMD_SOCIALS,CMD_NONE, NOGRANTS,0); addcommand("color", POS_DEAD, do_color, 0, 0,CMD_NONE, NOGRANTS,0); addcommand("prompt", POS_DEAD, do_prompt, 0, 0,CMD_NONE, NOGRANTS,0); addcommand("policy", POS_DEAD, do_gen_ps, 0, SCMD_POLICIES,CMD_NONE, NOGRANTS,0); addcommand("noauction", POS_DEAD, do_gen_tog, 0, SCMD_NOAUCTION,CMD_NONE, NOGRANTS,0); addcommand("cls", POS_DEAD, do_gen_ps, 0, SCMD_CLEAR,CMD_NONE, NOGRANTS,0); addcommand("clear", POS_DEAD, do_gen_ps, 0, SCMD_CLEAR,CMD_NONE, NOGRANTS,0); addcommand("version", POS_DEAD, do_gen_ps, 0, SCMD_VERSION,CMD_NONE, NOGRANTS,0); addcommand("auction", POS_SLEEPING, do_auction, 0, 0,CMD_NONE, NOGRANTS,0); addcommand("donate", POS_RESTING, do_drop, 0, SCMD_DONATE,CMD_NONE, NOGRANTS,0); addcommand("report", POS_SLEEPING, do_report, 0, 0,CMD_NONE, NOGRANTS,0); addcommand("diagnose", POS_RESTING, do_diagnose, 0, 0,CMD_NONE, NOGRANTS,0); addcommand("track", POS_STANDING, do_track, 0, 0,CMD_NONE, NOGRANTS,0); addcommand("whoami", POS_DEAD, do_gen_ps, 0, SCMD_WHOAMI,CMD_NONE, NOGRANTS,0); addcommand("autoexits", POS_DEAD, do_gen_tog, 0, SCMD_AUTOX,CMD_NONE, NOGRANTS,0); addcommand("incognito", POS_DEAD, do_gen_tog, 0, SCMD_INCOGNITO,CMD_NONE, NOGRANTS,0); addcommand("scan", POS_STANDING, do_scan, 0, 0,CMD_NONE, NOGRANTS,0); addcommand("skills", POS_SLEEPING, do_show_skills, 0, 0,CMD_NONE, NOGRANTS,0); addcommand("mortlog", POS_DEAD, do_gen_tog, 0, SCMD_MORTLOG,CMD_NONE, NOGRANTS,0); addcommand("motd", POS_SLEEPING, do_gen_ps, 0, SCMD_MOTD,CMD_NONE, NOGRANTS,0); addcommand("request", POS_SLEEPING, do_gen_tog, 3, SCMD_REQASS,CMD_NONE, NOGRANTS,0); addcommand("races", POS_SLEEPING, do_gen_ps, 0, SCMD_RACES,CMD_NONE, NOGRANTS,0); addcommand("float", POS_SITTING, do_float, 0, 0,CMD_NONE, NOGRANTS,0); addcommand("settle", POS_SLEEPING, do_settle, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("walkin", POS_DEAD, do_walkset, 1, SCMD_WALKIN,CMD_NONE, NOGRANTS,0); addcommand("walkout", POS_DEAD, do_walkset, 1, SCMD_WALKOUT,CMD_NONE, NOGRANTS,0); addcommand("munch", POS_STANDING, do_munch, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("clan", POS_RESTING, do_clan, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("clanname", POS_RESTING, do_clan_name, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("clanjoin", POS_RESTING, do_clan_join, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("clandismiss", POS_RESTING, do_clan_dis, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("clanwho", POS_SLEEPING, do_clan_who, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("autogold", POS_SLEEPING, do_autogold, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("autoloot", POS_SLEEPING, do_autoloot, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("autosplit", POS_SLEEPING, do_autosplit, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("stuntouch", POS_FIGHTING, do_stuntouch, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("mount", POS_STANDING, do_mount, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("dismount", POS_STANDING, do_dismount, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("mforce", POS_FIGHTING, do_mforce, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("hurl", POS_FIGHTING, do_hurl, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("shortx", POS_DEAD, do_gen_tog, 0, SCMD_SHORTX,CMD_NONE, NOGRANTS,0); addcommand("armor", POS_SLEEPING, do_armor, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("disarm", POS_FIGHTING, do_disarm, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("flight", POS_RESTING, do_dragon_flight, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("perform", POS_FIGHTING, do_init_rite, 0, 0,CMD_NONE, NOGRANTS,0); addcommand("firstaid", POS_RESTING, do_first_aid, 0, 0,CMD_NONE, NOGRANTS,0); addcommand("arjoin", POS_SLEEPING, do_arjoin, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("vt100", POS_RESTING, do_vt100, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("vtmap", POS_SLEEPING, do_vtmap, LEV_IMM, 0,CMD_NONE, NOGRANTS,0); addcommand("asay", POS_SLEEPING, do_asay, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("line", POS_SLEEPING, do_line, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("grapple", POS_FIGHTING, do_grapple, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("circle", POS_FIGHTING, do_circle, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("repair", POS_STANDING, do_repair, 1, 0,CMD_NONE, NOGRANTS,0) ; addcommand("cost", POS_STANDING, do_cost, 1, 0,CMD_NONE, NOGRANTS,0) ; addcommand("zones", POS_SLEEPING, do_zonehelp, 1, 0,CMD_NONE, NOGRANTS,0) ; addcommand("areas", POS_SLEEPING, do_zonehelp, 1, 0,CMD_NONE, NOGRANTS,0) ; addcommand("gate", POS_STANDING, do_enter_gate, 1, 0,CMD_NONE, NOGRANTS,0) ; addcommand("portal", POS_STANDING, do_enter_gate, 1, 0,CMD_NONE, NOGRANTS,0) ; addcommand("house", POS_SLEEPING, do_house, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("forage", POS_STANDING, do_forage, 1, 0,CMD_NONE, NOGRANTS,0);; addcommand("filet", POS_STANDING, do_filet, 1, 0,CMD_NONE, NOGRANTS,0);; addcommand("skin", POS_STANDING, do_skin, 1, 0,CMD_NONE, NOGRANTS,0);; addcommand("divine", POS_STANDING, do_divine, 1, 0,CMD_NONE, NOGRANTS,0);; addcommand("silentwalk", POS_STANDING, do_silentwalk, 1, 0,CMD_NONE, NOGRANTS,0);; addcommand("befriend", POS_STANDING, do_befriend, 1, 0,CMD_NONE, NOGRANTS,0);; addcommand("whirlwind", POS_FIGHTING, do_whirlwind, 1, 0,CMD_NONE, NOGRANTS,0);; addcommand("camouflage", POS_STANDING, do_camouflage, 1, 0,CMD_NONE, NOGRANTS,0);; addcommand("healwounds", POS_STANDING, do_heal_wounds, 1, 0,CMD_NONE, NOGRANTS,0);; addcommand("sweep", POS_FIGHTING, do_sweep, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("craft", POS_SITTING, do_craft, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("finish", POS_RESTING, do_finish, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("bid", POS_RESTING, do_bid , 1, 0,CMD_NONE, NOGRANTS,0); addcommand("arwho", POS_SLEEPING, do_arwho, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("redirect", POS_FIGHTING, do_redirect, 1,0,CMD_NONE, NOGRANTS,0); addcommand("tag", POS_RESTING, do_tag, 1,0,CMD_NONE, NOGRANTS,0); addcommand("legend", POS_SLEEPING, do_legend, LEV_IMM-1,0,CMD_NONE, NOGRANTS,0); addcommand("wcast", POS_FIGHTING, do_wcast, 1,0,CMD_NONE, NOGRANTS,0); addcommand("icount", POS_SLEEPING, do_icount, 0, 0,CMD_NONE, NOGRANTS,0); addcommand("wpractice", POS_STANDING, do_wpractice, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("bars", POS_SLEEPING, do_bars, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("aura", POS_STANDING, do_aura, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("sense", POS_RESTING, do_sense, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("rabbit", POS_FIGHTING, do_roll, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("snarl", POS_FIGHTING, do_snarl, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("razor", POS_FIGHTING, do_razor, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("levitate", POS_STANDING, do_levitate, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("om", POS_RESTING, do_om, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("mok", POS_RESTING, do_mok, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("iron", POS_FIGHTING, do_iron, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("leap", POS_STANDING, do_leap, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("fox", POS_STANDING, do_flip, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("turtle", POS_STANDING, do_turtle, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("wake", POS_SLEEPING, do_wake, 0, 0,CMD_NONE, NOGRANTS,0); addcommand("trance", POS_RESTING, do_trance, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("stone", POS_FIGHTING, do_stone, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("fist", POS_FIGHTING, do_fist, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("hasten", POS_FIGHTING, do_hasten, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("cleanse", POS_RESTING, do_cleanse, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("ironhand", POS_RESTING, do_ironhand, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("fortify", POS_RESTING, do_fortify, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("mcast", POS_RESTING, do_mcast, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("vtsize", POS_SLEEPING, do_vtsize, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("infochannel", POS_SLEEPING, do_infochannel, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("bidid", POS_SLEEPING, do_bidid, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("nogive", POS_SLEEPING, do_nogive, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("throw", POS_STANDING, do_throw, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("noarena", POS_SLEEPING, do_arena_flag, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("pagelength", POS_SLEEPING, do_page_length, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("nochannel", POS_SLEEPING, do_nochannel, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("allchannel", POS_SLEEPING, do_allchannel, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("wildcall", POS_STANDING, do_call_wildlife, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("meldspirit", POS_STANDING, do_become, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("presence", POS_SLEEPING, do_presence, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("remort", POS_STANDING, do_remort, 70, 0,CMD_NONE, NOGRANTS,0); addcommand("trek", POS_RESTING, do_trek, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("clanassist", POS_RESTING, do_clan_ass, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("qbegin", POS_RESTING, do_qbegin, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("qend", POS_RESTING, do_qend, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("qlist", POS_SLEEPING, do_qlist, 1, 0,CMD_NONE, NOGRANTS,0); addcommand("qdescribe", POS_SLEEPING, do_qdescribe, 1, 0, CMD_NONE, NOGRANTS,0); addcommand("qscore", POS_SLEEPING, do_qscore, 1, 0, CMD_NONE, NOGRANTS,0); addcommand("cripple", POS_FIGHTING, do_cripple, 1, 0, CMD_NONE, NOGRANTS,0); addcommand("findcorpse", POS_RESTING, do_findcorpse, 1, 0, CMD_NONE, NOGRANTS,0); addcommand("recall", POS_RESTING, do_recall, 1, 0, CMD_NONE, NOGRANTS,0); addcommand("subdue", POS_FIGHTING, do_subdue, 1, 0, CMD_NONE, NOGRANTS,0); addcommand("notrack", POS_STANDING, do_notrack, 1, 0, CMD_NONE, NOGRANTS,0); addcommand("madept", POS_SLEEPING, do_madept, 1, 0, CMD_NONE, NOGRANTS,0); addcommand("shopdeposit", POS_STANDING, do_shopdeposit, 1, 0, CMD_NONE, NOGRANTS,0); addcommand("shopwithdraw", POS_STANDING, do_shopwithdraw, 1, 0, CMD_NONE, NOGRANTS,0); addcommand("shopstats", POS_STANDING, do_shopstats, 1, 0, CMD_NONE, NOGRANTS,0); addcommand("shopopen", POS_STANDING, do_shopopen, 1, 0, CMD_NONE, NOGRANTS,0); addcommand("shopclose", POS_STANDING, do_shopclose, 1, 0, CMD_NONE, NOGRANTS,0); addcommand("shopgive", POS_STANDING, do_shopgive, 1, 0, CMD_NONE, NOGRANTS,0); addcommand("shoptake", POS_STANDING, do_shoptake, 1, 0, CMD_NONE, NOGRANTS,0); addcommand("train", POS_STANDING, do_train, 1, 0, CMD_NONE, NOGRANTS,0); addcommand("ignore", POS_SLEEPING, do_ignore, 1, 0, CMD_NONE, NOGRANTS,0); addcommand("listid", POS_STANDING, do_listid, 1, 0, CMD_NONE, NOGRANTS,0); addcommand("torch", POS_STANDING, do_create_torch, 1, 0, CMD_NONE, NOGRANTS,0); addcommand("trailblaze", POS_STANDING, do_trailblaze, 1, 0, CMD_NONE, NOGRANTS,0); addcommand("meditate", POS_RESTING, do_meditate, 1, 0, CMD_NONE, NOGRANTS,0); } // actual command interpreter, called if char is in game // and not at preliminary menus void command_interpreter(chdata *ch, char *argument) { int look_at, cmd, begin; char arg_back[MAX_INPUT_LENGTH]; extern BOOL find_roa_social(char *comm); extern void perform_roa_social(chdata *ch, char *comm); int get_command(char *comm); if (!*argument) return; if (IN_NOWHERE(ch)) { sprintf(buf, "SYSERR: NOWHERE executing command,(%s).",GET_NAME(ch)); mudlog(buf, BRF, LEV_IMM, TRUE); return; } if (PLR_FLAGGED(ch, PLR_FROZEN) && GET_LEVEL(ch) < LEV_IMPL) { send_to_char("Mind-numbing cold prevents you from doing anything.\n\r", ch); return; } if (IS_PC(ch) && CHAR_FLAGGED(ch, CH_CHAT)) { do_chatline(ch, argument, 0, 0); return; } // stay hidden if singing particular song // also, stay hidden if affected by shadowwalk 4/21/98 -jtrhone if ((IS_PC(ch) && (SINGING(ch) != 13) && (PLAYING(ch) != 13) && !affected_by_spell(ch, SKILL_SHADOWWALK)) || IS_NPC(ch)) REMOVE_BIT(AFF_FLAGS(ch), AFF_HIDE); if (IS_AFK(ch)) { REMOVE_BIT(PLR_FLAGS(ch), PLR_AFK); send_to_char("You are no longer %BAFK%0.\n\r",ch); } // if they are not fighting, remove whirlwind to be safe // 1/19/98 -jtrhone if (IS_PC(ch) && !FIGHTING(ch)) ch->pc_specials->whirlwind = 0; /* Find first non blank */ for (begin = 0 ; (*(argument + begin) == ' ' ) ; begin++) ; // do some special cases... (emote, say, etc) -roa switch (*(argument + begin)) { case ':': cmd = get_command("emote"); // the emote command look_at = 1; break; case '\'': cmd = get_command("say"); // the say command look_at = 1; break; case '/': case ';': cmd = get_command("/"); // wiznet command look_at = 1; break; case '\"': cmd = get_command("\""); // sayto command 05/02/98 -callahan look_at = 1; break; default: for (look_at = 0; *(argument + begin + look_at ) > ' ' ; look_at++) *(argument + begin + look_at) = LOWER(*(argument + begin + look_at)); cmd = get_command(argument+begin); break; } if (!cmd) return; if ((cmd > 0) && (GET_LEVEL(ch) < cmd_info[cmd].minimum_level) && !GRNT_FLAGGED(ch, CMD_GFLAGS(cmd))) { send_to_char("Huh?!?\n\r", ch); return; } if (cmd > 0 && CMD_FLAGGED(cmd, CMD_TRUSTED) && GET_LEVEL(ch) == LEV_IMM && !PLR_FLAGGED(ch, PLR_TRUSTED)) { send_to_char("You must be trusted to use this command.\n\r",ch); return; } // record/playback support 6/98 -jtrhone if (!CMD_IS(cmd, "record") && !CMD_IS(cmd, "playback") && ch->fp && CHAR_FLAGGED(ch, CH_RECORD)) fprintf(ch->fp, "%s\n", argument); if (strlen(argument) < MAX_INPUT_LENGTH -1) strcpy (arg_back, argument); if (cmd > 0 && cmd_info[cmd].cmd_ptr) { if (GET_POS(ch) < cmd_info[cmd].minimum_position) send_wrong_pos_mesg(ch); else { if (special(ch, cmd, argument + begin + look_at)) return; // actually call the ACMD() ((*cmd_info[cmd].cmd_ptr) (ch, argument + begin + look_at, cmd, cmd_info[cmd].subcmd)); if (IS_PC(ch)) check_reaction(ch, arg_back); // all chars can check rtrigs 6/6/98 -jtrhone check_rtrigs(ch, arg_back); } return; } if (cmd > 0 && !cmd_info[cmd].cmd_ptr) send_to_char("Sorry, but that command has yet to be implemented...\n\r", ch); else if (find_roa_social(arg_back)) { perform_roa_social(ch, arg_back); if (IS_PC(ch)) check_reaction(ch, arg_back); // all chars can check rtrigs 6/6/98 -jtrhone check_rtrigs(ch, arg_back); return; } else if ((IS_PC(ch) && !check_reaction(ch, arg_back)) && !check_rtrigs(ch, arg_back)) send_to_char("Huh?!?\n\r", ch); }