/* ************************************************************************ * file: Interpreter.c , Command interpreter module. Part of DIKUMUD * * Usage: Procedures interpreting user command * * Copyright (C) 1990, 1991 - see 'license.doc' for complete information. * ************************************************************************* */ #include <strings.h> #include <ctype.h> #include <stdio.h> #include "structs.h" #include "comm.h" #include "interpreter.h" #include "db.h" #include "utils.h" #include "limits.h" #define COMMANDO(number,min_pos,pointer,min_level,cflags) { \ cmd_info[(number)].command_pointer = (pointer); \ cmd_info[(number)].minimum_position = (min_pos); \ cmd_info[(number)].minimum_level = (min_level); \ cmd_info[(number)].flags = (cflags); } #define NOT ! #define AND && #define OR || #define STATE(d) ((d)->connected) #define MAX_CMD_LIST 300 extern int log_all,req_passwd,override; extern const struct title_type titles[4][28]; extern char *story,*menu,*welcome; extern char motd[MAX_STRING_LENGTH]; extern struct char_data *character_list; extern struct player_index_element *player_table; extern int top_of_p_table; extern struct index_data *mob_index; extern struct index_data *obj_index; extern struct room_data *world; struct command_info cmd_info[MAX_CMD_LIST]; /* external fcntls */ void set_title(struct char_data *ch); void init_char(struct char_data *ch); void store_to_char(struct char_file_u *st, struct char_data *ch); int create_entry(char *name); int special(struct char_data *ch, int cmd, char *arg); void log(char *str); void save_objs2(struct char_data *ch); int default_loc(int hometown); void do_move(struct char_data *ch, char *argument, int cmd); void do_look(struct char_data *ch, char *argument, int cmd); void do_read(struct char_data *ch, char *argument, int cmd); void do_say(struct char_data *ch, char *argument, int cmd); void do_exit(struct char_data *ch, char *argument, int cmd); void do_snoop(struct char_data *ch, char *argument, int cmd); void do_insult(struct char_data *ch, char *argument, int cmd); void do_quit(struct char_data *ch, char *argument, int cmd); void do_qui(struct char_data *ch, char *argument, int cmd); void do_help(struct char_data *ch, char *argument, int cmd); void do_who(struct char_data *ch, char *argument, int cmd); void do_emote(struct char_data *ch, char *argument, int cmd); void do_echo(struct char_data *ch, char *argument, int cmd); void do_trans(struct char_data *ch, char *argument, int cmd); void do_kill(struct char_data *ch, char *argument, int cmd); void do_stand(struct char_data *ch, char *argument, int cmd); void do_sit(struct char_data *ch, char *argument, int cmd); void do_rest(struct char_data *ch, char *argument, int cmd); void do_sleep(struct char_data *ch, char *argument, int cmd); void do_wake(struct char_data *ch, char *argument, int cmd); void do_force(struct char_data *ch, char *argument, int cmd); void do_get(struct char_data *ch, char *argument, int cmd); void do_drop(struct char_data *ch, char *argument, int cmd); void do_news(struct char_data *ch, char *argument, int cmd); void do_score(struct char_data *ch, char *argument, int cmd); void do_inventory(struct char_data *ch, char *argument, int cmd); void do_equipment(struct char_data *ch, char *argument, int cmd); void do_shout(struct char_data *ch, char *argument, int cmd); void do_not_here(struct char_data *ch, char *argument, int cmd); void do_no_buy(struct char_data *ch, char *argument, int cmd); void do_tell(struct char_data *ch, char *argument, int cmd); void do_wear(struct char_data *ch, char *argument, int cmd); void do_wield(struct char_data *ch, char *argument, int cmd); void do_grab(struct char_data *ch, char *argument, int cmd); void do_remove(struct char_data *ch, char *argument, int cmd); void do_put(struct char_data *ch, char *argument, int cmd); void do_shutdown(struct char_data *ch, char *argument, int cmd); void do_save(struct char_data *ch, char *argument, int cmd); void do_hit(struct char_data *ch, char *argument, int cmd); void do_string(struct char_data *ch, char *arg, int cmd); void do_give(struct char_data *ch, char *arg, int cmd); void do_stat(struct char_data *ch, char *arg, int cmd); void do_setskill(struct char_data *ch, char *arg, int cmd); void do_time(struct char_data *ch, char *arg, int cmd); void do_weather(struct char_data *ch, char *arg, int cmd); void do_load(struct char_data *ch, char *arg, int cmd); void do_purge(struct char_data *ch, char *arg, int cmd); void do_shutdow(struct char_data *ch, char *arg, int cmd); void do_idea(struct char_data *ch, char *arg, int cmd); void do_typo(struct char_data *ch, char *arg, int cmd); void do_bug(struct char_data *ch, char *arg, int cmd); void do_whisper(struct char_data *ch, char *arg, int cmd); void do_cast(struct char_data *ch, char *arg, int cmd); void do_at(struct char_data *ch, char *arg, int cmd); void do_goto(struct char_data *ch, char *arg, int cmd); void do_ask(struct char_data *ch, char *arg, int cmd); void do_drink(struct char_data *ch, char *arg, int cmd); void do_eat(struct char_data *ch, char *arg, int cmd); void do_pour(struct char_data *ch, char *arg, int cmd); void do_sip(struct char_data *ch, char *arg, int cmd); void do_taste(struct char_data *ch, char *arg, int cmd); void do_order(struct char_data *ch, char *arg, int cmd); void do_follow(struct char_data *ch, char *arg, int cmd); void do_rent(struct char_data *ch, char *arg, int cmd); void do_offer(struct char_data *ch, char *arg, int cmd); void do_advance(struct char_data *ch, char *arg, int cmd); void do_close(struct char_data *ch, char *arg, int cmd); void do_open(struct char_data *ch, char *arg, int cmd); void do_lock(struct char_data *ch, char *arg, int cmd); void do_unlock(struct char_data *ch, char *arg, int cmd); void do_exits(struct char_data *ch, char *arg, int cmd); void do_enter(struct char_data *ch, char *arg, int cmd); void do_leave(struct char_data *ch, char *arg, int cmd); void do_write(struct char_data *ch, char *arg, int cmd); void do_flee(struct char_data *ch, char *arg, int cmd); void do_sneak(struct char_data *ch, char *arg, int cmd); void do_hide(struct char_data *ch, char *arg, int cmd); void do_backstab(struct char_data *ch, char *arg, int cmd); void do_pick(struct char_data *ch, char *arg, int cmd); void do_steal(struct char_data *ch, char *arg, int cmd); void do_bash(struct char_data *ch, char *arg, int cmd); void do_rescue(struct char_data *ch, char *arg, int cmd); void do_kick(struct char_data *ch, char *arg, int cmd); void do_examine(struct char_data *ch, char *arg, int cmd); void do_info(struct char_data *ch, char *arg, int cmd); void do_users(struct char_data *ch, char *arg, int cmd); void do_where(struct char_data *ch, char *arg, int cmd); void do_levels(struct char_data *ch, char *arg, int cmd); void do_reroll(struct char_data *ch, char *arg, int cmd); void do_brief(struct char_data *ch, char *arg, int cmd); void do_wizlist(struct char_data *ch, char *arg, int cmd); void do_consider(struct char_data *ch, char *arg, int cmd); void do_group(struct char_data *ch, char *arg, int cmd); void do_restore(struct char_data *ch, char *arg, int cmd); void do_return(struct char_data *ch, char *argument, int cmd); void do_switch(struct char_data *ch, char *argument, int cmd); void do_quaff(struct char_data *ch, char *argument, int cmd); void do_recite(struct char_data *ch, char *argument, int cmd); void do_use(struct char_data *ch, char *argument, int cmd); void do_pose(struct char_data *ch, char *argument, int cmd); void do_noshout(struct char_data *ch, char *argument, int cmd); void do_wizhelp(struct char_data *ch, char *argument, int cmd); void do_credits(struct char_data *ch, char *argument, int cmd); void do_compact(struct char_data *ch, char *argument, int cmd); void do_display(struct char_data *ch, char *argument, int cmd); void do_poofIn(struct char_data *ch, char *argument, int cmd); void do_poofOut(struct char_data *ch, char *argument, int cmd); void do_teleport(struct char_data *ch, char *argument, int cmd); void do_gecho(struct char_data *ch, char *argument, int cmd); void do_wiznet(struct char_data *ch, char *argument, int cmd); void do_holylite(struct char_data *ch, char *argument, int cmd); void do_wizinvis(struct char_data *ch, char *argument, int cmd); void do_wimpy(struct char_data *ch, char *argument, int cmd); void do_setstat(struct char_data *ch, char *argument, int cmd); void do_localwho(struct char_data *ch, char *argument, int cmd); void do_notell(struct char_data *ch, char *argument, int cmd); void do_wizlock(struct char_data *ch, char *argument, int cmd); void do_pardon(struct char_data *ch, char *argument, int cmd); void do_action(struct char_data *ch, char *arg, int cmd); void do_practice(struct char_data *ch, char *arg, int cmd); void do_deposit(struct char_data *ch, char *arg, int cmd); void do_balance(struct char_data *ch, char *arg, int cmd); void do_withdraw(struct char_data *ch, char *arg, int cmd); void do_systats(struct char_data *ch, char *arg, int cmd); void do_multiclass(struct char_data *ch, char *arg, int cmd); void do_sockets(struct char_data *ch, char *arg, int cmd); void do_release(struct char_data *ch, char *arg, int cmd); void do_murder(struct char_data *ch, char *arg, int cmd); void do_nokill(struct char_data *ch, char *arg, int cmd); void do_ban(struct char_data *ch, char *arg, int cmd); void do_allow(struct char_data *ch, char *arg, int cmd); void do_fill(struct char_data *ch, char *arg, int cmd); void do_yell(struct char_data *ch, char *arg, int cmd); void do_nosummon(struct char_data *ch, char *arg, int cmd); void do_title(struct char_data *ch, char *arg, int cmd); void do_tag(struct char_data *ch, char *arg, int cmd); void do_rub(struct char_data *ch, char *arg, int cmd); void do_msgecho(struct char_data *ch, char *arg, int cmd); void do_auction(struct char_data *ch, char *arg, int cmd); void do_setzone(struct char_data *ch, char *arg, int cmd); void do_passwords(struct char_data *ch, char *arg, int cmd); void do_override(struct char_data *ch, char *arg, int cmd); void do_wizearmuffs(struct char_data *ch, char *arg, int cmd); void do_alert(struct char_data *ch, char *arg, int cmd); void do_jail(struct char_data *ch, char *arg, int cmd); void do_search(struct char_data *ch, char *arg, int cmd); void do_fly(struct char_data *ch, char *arg, int cmd); void do_levitate(struct char_data *ch, char *arg, int cmd); void do_secret(struct char_data *ch, char *arg, int cmd); void do_lookup(struct char_data *ch, char *arg, int cmd); void do_setobj(struct char_data *ch, char *arg, int cmd); /*void do_retreat(struct char_data *ch, char *arg, int cmd);*/ char *command[]= { "north", /* 1 */ "east", "south", "west", "up", "down", "enter", "exits", "kiss", "get", "drink", /* 11 */ "eat", "wear", "wield", "look", "score", "say", "shout", "tell", "inventory", "qui", /* 21 */ "bounce", "smile", "dance", "kill", "cackle", "laugh", "giggle", "shake", "puke", "growl", /* 31 */ "scream", "insult", "comfort", "nod", "sigh", "sulk", "help", "who", "emote", "echo", /* 41 */ "stand", "sit", "rest", "sleep", "wake", "force", "transfer", "hug", "snuggle", "cuddle", /* 51 */ "nuzzle", "cry", "news", "equipment", "buy", "sell", "value", "list", "drop", "goto", /* 61 */ "weather", "read", "pour", "grab", "remove", "put", "shutdow", "save", "hit", "string", /* 71 */ "give", "quit", "stat", "setskill", "time", "load", "purge", "shutdown", "idea", "typo", /* 81 */ "bug", "whisper", "cast", "at", "ask", "order", "sip", "taste", "snoop", "follow", /* 91 */ "rent", "offer", "poke", "advance", "accuse", "grin", "bow", "open", "close", "lock", /* 101 */ "unlock", "leave", "applaud", "blush", "burp", "chuckle", "clap", "cough", "curtsey", "fart", /* 111 */ "flip", "fondle", "frown", "gasp", "glare", "groan", "grope", "hiccup", "lick", "love", /* 121 */ "moan", "nibble", "pout", "purr", "ruffle", "shiver", "shrug", "sing", "slap", "smirk", /* 131 */ "snap", "sneeze", "snicker", "sniff", "snore", "spit", "squeeze", "stare", "strut", "thank", /* 141 */ "twiddle", "wave", "whistle", "wiggle", "wink", "yawn", "snowball", "write", "hold", "flee", /* 151 */ "sneak", "hide", "backstab", "pick", "steal", "bash", "rescue", "kick", "french", "comb", /* 161 */ "massage", "tickle", "practice", "pat", "examine", "take", "info", "'", "practise", "curse", /* 171 */ "use", "where", "levels", "reroll", "pray", ":", "beg", "bleed", "cringe", "daydream", /* 181 */ "fume", "grovel", "hop", "nudge", "peer", "point", "ponder", "punch", "snarl", "spank", /* 191 */ "steam", "tackle", "taunt", "think", "whine", "worship", "yodel", "brief", "wizlist", "consider", /* 201 */ "group", "restore", "return", "switch", /* 205 */ "quaff", "recite", "users", "pose", "noshout", "wizhelp", /* 211 */ "credits", "compact", "display", "poofin", "poofout", "teleport", "gecho", "wiznet", "holylite", "wizinvis", /* 221 */ "wimpy", "setstat", "lwho", "notell", "wizlock", "pardon", "join", /* 228 */ "deposit", "balance", "withdraw", /* 231 */ "systats", "multiclass", /* 233 */ "sockets", /* 234 */ "release", /* 235 */ "murder", /* 236 */ "nokill", /* 237 */ "ban", /* 238 */ "allow", /*239*/ "fill", "yell", /* 241 */ "tap", "touch", "scratch", "nosummon", /* 245 */ "title", /* 246 */ "tag", "pinch", "wince", "toss", "flame", /* 251 */ "arch", "amaze", "spin", "drool", "caress", "bathe", "embrace", "rub", "passwords", "setzone", /* 261 */ "auction", "override", "wizearmuffs", "chirp", "alert", "jail", "search", "fly", "levitate", "secret", /* 271 */ "lookup", "setobj", "msgecho", /*"retreat",*/ "\n" }; char *fill[]= { "in", "from", "with", "the", "on", "at", "to", "\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 (!strcmp(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); } int old_search_block(char *argument,int begin,int length,char **list,int mode) { int guess, found, search; /* If the word contain 0 letters, then a match is already found */ found = (length < 1); guess = 0; /* Search for a match */ if(mode) while ( NOT found AND *(list[guess]) != '\n' ) { found=(length==strlen(list[guess])); for(search=0;( search < length AND found );search++) found=(*(argument+begin+search)== *(list[guess]+search)); guess++; } else { while ( NOT found AND *(list[guess]) != '\n' ) { found=1; for(search=0;( search < length AND found );search++) found=(*(argument+begin+search)== *(list[guess]+search)); guess++; } } return ( found ? guess : -1 ); } void command_interpreter(struct char_data *ch, char *argument) { int look_at, cmd, begin; extern int no_specials; char swif_buf[MAX_INPUT_LENGTH+30]; bool check_item_teleport(struct char_data *ch,char *arg,int cmd); if(log_all){ sprintf(swif_buf,"CMD: %s %s",ch->player.name,argument); log(swif_buf); } REMOVE_BIT(ch->specials.affected_by, AFF_HIDE); /* Find first non blank */ for (begin = 0 ; (*(argument + begin ) == ' ' ) ; begin++ ); /* Find length of first word */ for (look_at = 0; *(argument + begin + look_at ) > ' ' ; look_at++) /* Make all letters lower case AND find length */ *(argument + begin + look_at) = LOWER(*(argument + begin + look_at)); cmd = old_search_block(argument,begin,look_at,command,0); if (!cmd) return; if ( cmd>0 && GET_LEVEL(ch)<cmd_info[cmd].minimum_level ) { send_to_char("Huh!?!\n\r", ch); return; } if ( cmd>0 && (cmd_info[cmd].command_pointer != 0)) { if( GET_POS(ch) < cmd_info[cmd].minimum_position ) switch(GET_POS(ch)) { case POSITION_DEAD: send_to_char("Lie still; you are DEAD!!! :-( \n\r", ch); break; case POSITION_INCAP: case POSITION_MORTALLYW: send_to_char( "You are in a pretty bad shape, unable to do anything!\n\r", ch); break; case POSITION_STUNNED: send_to_char( "All you can do right now, is think about the stars!\n\r", ch); break; case POSITION_SLEEPING: send_to_char("In your dreams, or what?\n\r", ch); break; case POSITION_RESTING: send_to_char("Nah... You feel too relaxed to do that..\n\r", ch); break; case POSITION_SITTING: send_to_char("Maybe you should get on your feet first?\n\r",ch); break; case POSITION_FIGHTING: send_to_char("No way! You are fighting for your life!\n\r", ch); break; } else { if(!no_specials&&special(ch,cmd,argument+begin+look_at)) return; /* Hack for item_teleport objects */ if(check_item_teleport(ch, argument+begin+look_at,cmd)) return; /* If we get this far, call the actual command */ ((*cmd_info[cmd].command_pointer) (ch, argument + begin + look_at, cmd)); } return; } if ( cmd>0 && (cmd_info[cmd].command_pointer == 0)) send_to_char( "Sorry, but that command has yet to be implemented...\n\r", ch); else send_to_char("Huh!?!\n\r", ch); } void argument_interpreter(char *argument,char *first_arg,char *second_arg ) { int look_at, found, begin; found = begin = 0; do { /* Find first non blank */ for ( ;*(argument + begin ) == ' ' ; begin++); /* Find length of first word */ for ( look_at=0; *(argument+begin+look_at)> ' ' ; look_at++) /* Make all letters lower case, AND 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)); do { /* Find first non blank */ for ( ;*(argument + begin ) == ' ' ; begin++); /* Find length of first word */ for ( look_at=0; *(argument+begin+look_at)> ' ' ; look_at++) /* Make all letters lower case, AND copy them to second_arg */ *(second_arg + look_at) = LOWER(*(argument + begin + look_at)); *(second_arg + look_at)='\0'; begin += look_at; } while( fill_word(second_arg)); } 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); } /* Quinn substituted a new one-arg for the old one.. I thought returning a char pointer would be neat, and avoiding the func-calls would save a little time... If anyone feels pissed, I'm sorry.. Anyhow, the code is snatched from the old one, so it outta work.. void one_argument(char *argument,char *first_arg ) { static char dummy[MAX_STRING_LENGTH]; argument_interpreter(argument,first_arg,dummy); } */ /* 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, AND 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); } /* determine if a given string is an abbreviation of another */ int is_abbrev(char *arg1, char *arg2) { if (!*arg1) return(0); for (; *arg1; arg1++, arg2++) if (LOWER(*arg1) != LOWER(*arg2)) return(0); return(1); } /* 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++); } int special(struct char_data *ch, int cmd, char *arg) { register struct obj_data *i; register struct char_data *k; int j; /* special in room? */ if (world[ch->in_room].funct) if ((*world[ch->in_room].funct)(ch->in_room, ch, cmd, arg)) return(1); /* special in equipment list? */ for (j = 0; j <= (MAX_WEAR - 1); j++) if (ch->equipment[j] && ch->equipment[j]->item_number>=0) if (obj_index[ch->equipment[j]->item_number].func) if ((*obj_index[ch->equipment[j]->item_number].func) (ch->equipment[j], 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)(i, ch, cmd, arg)) return(1); /* special in mobile present? */ for (k = world[ch->in_room].people; k; k = k->next_in_room) if ( IS_MOB(k) ) if (mob_index[k->nr].func) if ((*mob_index[k->nr].func)(k, ch, cmd, arg)) return(1); /* special in object present? */ for (i = world[ch->in_room].contents; i; i = i->next_content) if (i->item_number>=0) if (obj_index[i->item_number].func) if ((*obj_index[i->item_number].func)(i, ch, cmd, arg)) return(1); return(0); } void assign_command_pointers ( void ) { int position; for (position = 0 ; position < MAX_CMD_LIST; position++) cmd_info[position].command_pointer = 0; COMMANDO(1,POSITION_STANDING,do_move,0,CMD_ACTIVE); COMMANDO(2,POSITION_STANDING,do_move,0,CMD_ACTIVE); COMMANDO(3,POSITION_STANDING,do_move,0,CMD_ACTIVE); COMMANDO(4,POSITION_STANDING,do_move,0,CMD_ACTIVE); COMMANDO(5,POSITION_STANDING,do_move,0,CMD_ACTIVE); COMMANDO(6,POSITION_STANDING,do_move,0,CMD_ACTIVE); COMMANDO(7,POSITION_STANDING,do_enter,0,CMD_ACTIVE); COMMANDO(8,POSITION_RESTING,do_exits,0,CMD_ACTIVE); COMMANDO(9,POSITION_RESTING,do_action,0,CMD_ACTIVE); COMMANDO(10,POSITION_RESTING,do_get,0,CMD_ACTIVE); COMMANDO(11,POSITION_RESTING,do_drink,0,CMD_ACTIVE); COMMANDO(12,POSITION_RESTING,do_eat,0,CMD_ACTIVE); COMMANDO(13,POSITION_RESTING,do_wear,0,CMD_ACTIVE); COMMANDO(14,POSITION_RESTING,do_wield,0,CMD_ACTIVE); COMMANDO(15,POSITION_RESTING,do_look,0,CMD_ACTIVE); COMMANDO(16,POSITION_DEAD,do_score,0,0); COMMANDO(17,POSITION_RESTING,do_say,0,CMD_ACTIVE); COMMANDO(18,POSITION_RESTING,do_shout,0,CMD_ACTIVE); COMMANDO(19,POSITION_DEAD,do_tell,0,CMD_ACTIVE); COMMANDO(20,POSITION_DEAD,do_inventory,0,CMD_ACTIVE); COMMANDO(21,POSITION_DEAD,do_qui,0,0); COMMANDO(22,POSITION_STANDING,do_action,0,CMD_ACTIVE); COMMANDO(23,POSITION_RESTING,do_action,0,CMD_ACTIVE); COMMANDO(24,POSITION_STANDING,do_action,0,CMD_ACTIVE); COMMANDO(25,POSITION_FIGHTING,do_kill,0,CMD_ACTIVE); COMMANDO(26,POSITION_RESTING,do_action,0,CMD_ACTIVE); COMMANDO(27,POSITION_RESTING,do_action,0,CMD_ACTIVE); COMMANDO(28,POSITION_RESTING,do_action,0,CMD_ACTIVE); COMMANDO(29,POSITION_RESTING,do_action,0,CMD_ACTIVE); COMMANDO(30,POSITION_RESTING,do_action,0,CMD_ACTIVE); COMMANDO(31,POSITION_RESTING,do_action,0,CMD_ACTIVE); COMMANDO(32,POSITION_RESTING,do_action,0,CMD_ACTIVE); COMMANDO(33,POSITION_RESTING,do_insult,0,CMD_ACTIVE); COMMANDO(34,POSITION_RESTING,do_action,0,CMD_ACTIVE); COMMANDO(35,POSITION_RESTING,do_action,0,CMD_ACTIVE); COMMANDO(36,POSITION_RESTING,do_action,0,CMD_ACTIVE); COMMANDO(37,POSITION_RESTING,do_action,0,CMD_ACTIVE); COMMANDO(38,POSITION_DEAD,do_help,0,0); COMMANDO(39,POSITION_DEAD,do_who,0,0); COMMANDO(40,POSITION_SLEEPING,do_emote,1,CMD_ACTIVE); COMMANDO(41,POSITION_SLEEPING,do_echo,LV_IMMORTAL,CMD_ACTIVE); COMMANDO(42,POSITION_RESTING,do_stand,0,CMD_ACTIVE); COMMANDO(43,POSITION_RESTING,do_sit,0,CMD_ACTIVE); COMMANDO(44,POSITION_RESTING,do_rest,0,CMD_ACTIVE); COMMANDO(45,POSITION_SLEEPING,do_sleep,0,CMD_ACTIVE); COMMANDO(46,POSITION_SLEEPING,do_wake,0,CMD_ACTIVE); COMMANDO(47,POSITION_SLEEPING,do_force,LV_GOD,0); COMMANDO(48,POSITION_SLEEPING,do_trans,LV_DEITY,CMD_ACTIVE); COMMANDO(49,POSITION_RESTING,do_action,0,CMD_ACTIVE); COMMANDO(50,POSITION_RESTING,do_action,0,CMD_ACTIVE); COMMANDO(51,POSITION_RESTING,do_action,0,CMD_ACTIVE); COMMANDO(52,POSITION_RESTING,do_action,0,CMD_ACTIVE); COMMANDO(53,POSITION_RESTING,do_action,0,CMD_ACTIVE); COMMANDO(54,POSITION_SLEEPING,do_news,0,0); COMMANDO(55,POSITION_SLEEPING,do_equipment,0,CMD_ACTIVE); COMMANDO(56,POSITION_RESTING,do_no_buy,0,CMD_ACTIVE); COMMANDO(57,POSITION_STANDING,do_not_here,0,CMD_ACTIVE); COMMANDO(58,POSITION_STANDING,do_not_here,0,CMD_ACTIVE); COMMANDO(59,POSITION_STANDING,do_not_here,0,CMD_ACTIVE); COMMANDO(60,POSITION_RESTING,do_drop,0,CMD_ACTIVE); COMMANDO(61,POSITION_SLEEPING,do_goto,LV_IMMORTAL,CMD_ACTIVE); COMMANDO(62,POSITION_RESTING,do_weather,0,0); COMMANDO(63,POSITION_RESTING,do_read,0,CMD_ACTIVE); COMMANDO(64,POSITION_STANDING,do_pour,0,CMD_ACTIVE); COMMANDO(65,POSITION_RESTING,do_grab,0,CMD_ACTIVE); COMMANDO(66,POSITION_RESTING,do_remove,0,CMD_ACTIVE); COMMANDO(67,POSITION_RESTING,do_put,0,CMD_ACTIVE); COMMANDO(68,POSITION_DEAD,do_shutdow,LV_IMPL,0); COMMANDO(69,POSITION_SLEEPING,do_save,0,0); COMMANDO(70,POSITION_FIGHTING,do_hit,0,CMD_ACTIVE); COMMANDO(71,POSITION_SLEEPING,do_string,LV_DEMIGOD,0); COMMANDO(72,POSITION_RESTING,do_give,0,CMD_ACTIVE); COMMANDO(73,POSITION_DEAD,do_quit,0,0); COMMANDO(74,POSITION_DEAD,do_stat,LV_IMMORTAL,0); COMMANDO(75,POSITION_SLEEPING,do_setskill,LV_GREATER,0); COMMANDO(76,POSITION_DEAD,do_time,0,0); COMMANDO(77,POSITION_DEAD,do_load,LV_DEMIGOD,CMD_ACTIVE); COMMANDO(78,POSITION_DEAD,do_purge,LV_DEITY,CMD_ACTIVE); COMMANDO(79,POSITION_DEAD,do_shutdown,LV_IMPL,0); COMMANDO(80,POSITION_DEAD,do_idea,0,0); COMMANDO(81,POSITION_DEAD,do_typo,0,0); COMMANDO(82,POSITION_DEAD,do_bug,0,0); COMMANDO(83,POSITION_RESTING,do_whisper,0,CMD_ACTIVE); COMMANDO(84,POSITION_SITTING,do_cast,1,CMD_ACTIVE); COMMANDO(85,POSITION_DEAD,do_at,LV_DEMIGOD,0); COMMANDO(86,POSITION_RESTING,do_ask,0,CMD_ACTIVE); COMMANDO(87,POSITION_RESTING,do_order,1,CMD_ACTIVE); COMMANDO(88,POSITION_RESTING,do_sip,0,CMD_ACTIVE); COMMANDO(89,POSITION_RESTING,do_taste,0,CMD_ACTIVE); COMMANDO(90,POSITION_DEAD,do_snoop,LV_GREATER,0); COMMANDO(91,POSITION_RESTING,do_follow,0,CMD_ACTIVE); COMMANDO(92,POSITION_STANDING,do_not_here,1,CMD_ACTIVE); COMMANDO(93,POSITION_STANDING,do_not_here,1,CMD_ACTIVE); COMMANDO(94,POSITION_RESTING,do_action,0,CMD_ACTIVE); COMMANDO(95,POSITION_DEAD,do_advance,LV_GREATER,CMD_ACTIVE); COMMANDO(96,POSITION_SITTING,do_action,0,CMD_ACTIVE); COMMANDO(97,POSITION_RESTING,do_action,0,CMD_ACTIVE); COMMANDO(98,POSITION_STANDING,do_action,0,CMD_ACTIVE); COMMANDO(99,POSITION_SITTING,do_open,0,CMD_ACTIVE); COMMANDO(100,POSITION_SITTING,do_close,0,CMD_ACTIVE); COMMANDO(101,POSITION_SITTING,do_lock,0,CMD_ACTIVE); COMMANDO(102,POSITION_SITTING,do_unlock,0,CMD_ACTIVE); COMMANDO(103,POSITION_STANDING,do_leave,0,CMD_ACTIVE); COMMANDO(104,POSITION_RESTING,do_action,0,CMD_ACTIVE); COMMANDO(105,POSITION_RESTING,do_action,0,CMD_ACTIVE); COMMANDO(106,POSITION_RESTING,do_action,0,CMD_ACTIVE); COMMANDO(107,POSITION_RESTING,do_action,0,CMD_ACTIVE); COMMANDO(108,POSITION_RESTING,do_action,0,CMD_ACTIVE); COMMANDO(109,POSITION_RESTING,do_action,0,CMD_ACTIVE); COMMANDO(110,POSITION_STANDING,do_action,0,CMD_ACTIVE); COMMANDO(111,POSITION_RESTING,do_action,0,CMD_ACTIVE); COMMANDO(112,POSITION_STANDING,do_action,0,CMD_ACTIVE); COMMANDO(113,POSITION_RESTING,do_action,0,CMD_ACTIVE); COMMANDO(114,POSITION_RESTING,do_action,0,CMD_ACTIVE); COMMANDO(115,POSITION_RESTING,do_action,0,CMD_ACTIVE); COMMANDO(116,POSITION_RESTING,do_action,0,CMD_ACTIVE); COMMANDO(117,POSITION_RESTING,do_action,0,CMD_ACTIVE); COMMANDO(118,POSITION_RESTING,do_action,0,CMD_ACTIVE); COMMANDO(119,POSITION_RESTING,do_action,0,CMD_ACTIVE); COMMANDO(120,POSITION_RESTING,do_action,0,CMD_ACTIVE); COMMANDO(121,POSITION_RESTING,do_action,0,CMD_ACTIVE); COMMANDO(122,POSITION_RESTING,do_action,0,CMD_ACTIVE); COMMANDO(123,POSITION_RESTING,do_action,0,CMD_ACTIVE); COMMANDO(124,POSITION_RESTING,do_action,0,CMD_ACTIVE); COMMANDO(125,POSITION_RESTING,do_action,0,CMD_ACTIVE); COMMANDO(126,POSITION_STANDING,do_action,0,CMD_ACTIVE); COMMANDO(127,POSITION_RESTING,do_action,0,CMD_ACTIVE); COMMANDO(128,POSITION_RESTING,do_action,0,CMD_ACTIVE); COMMANDO(129,POSITION_RESTING,do_action,0,CMD_ACTIVE); COMMANDO(130,POSITION_RESTING,do_action,0,CMD_ACTIVE); COMMANDO(131,POSITION_RESTING,do_action,0,CMD_ACTIVE); COMMANDO(132,POSITION_RESTING,do_action,0,CMD_ACTIVE); COMMANDO(133,POSITION_RESTING,do_action,0,CMD_ACTIVE); COMMANDO(134,POSITION_RESTING,do_action,0,CMD_ACTIVE); COMMANDO(135,POSITION_RESTING,do_action,0,CMD_ACTIVE); COMMANDO(136,POSITION_SLEEPING,do_action,0,CMD_ACTIVE); COMMANDO(137,POSITION_STANDING,do_action,0,CMD_ACTIVE); COMMANDO(138,POSITION_RESTING,do_action,0,CMD_ACTIVE); COMMANDO(139,POSITION_RESTING,do_action,0,CMD_ACTIVE); COMMANDO(140,POSITION_STANDING,do_action,0,CMD_ACTIVE); COMMANDO(141,POSITION_RESTING,do_action,0,CMD_ACTIVE); COMMANDO(142,POSITION_RESTING,do_action,0,CMD_ACTIVE); COMMANDO(143,POSITION_RESTING,do_action,0,CMD_ACTIVE); COMMANDO(144,POSITION_RESTING,do_action,0,CMD_ACTIVE); COMMANDO(145,POSITION_STANDING,do_action,0,CMD_ACTIVE); COMMANDO(146,POSITION_RESTING,do_action,0,CMD_ACTIVE); COMMANDO(147,POSITION_RESTING,do_action,0,CMD_ACTIVE); COMMANDO(148,POSITION_STANDING,do_action,LV_DEITY,CMD_ACTIVE); COMMANDO(149,POSITION_STANDING,do_write,1,CMD_ACTIVE); COMMANDO(150,POSITION_RESTING,do_grab,1,CMD_ACTIVE); COMMANDO(151,POSITION_FIGHTING,do_flee,1,CMD_ACTIVE); COMMANDO(152,POSITION_STANDING,do_sneak,1,CMD_ACTIVE); COMMANDO(153,POSITION_RESTING,do_hide,1,CMD_ACTIVE); COMMANDO(154,POSITION_STANDING,do_backstab,1,CMD_ACTIVE); COMMANDO(155,POSITION_STANDING,do_pick,1,CMD_ACTIVE); COMMANDO(156,POSITION_STANDING,do_steal,1,CMD_ACTIVE); COMMANDO(157,POSITION_FIGHTING,do_bash,1,CMD_ACTIVE); COMMANDO(158,POSITION_FIGHTING,do_rescue,1,CMD_ACTIVE); COMMANDO(159,POSITION_FIGHTING,do_kick,1,CMD_ACTIVE); COMMANDO(160,POSITION_RESTING,do_action,0,CMD_ACTIVE); COMMANDO(161,POSITION_RESTING,do_action,0,CMD_ACTIVE); COMMANDO(162,POSITION_RESTING,do_action,0,CMD_ACTIVE); COMMANDO(163,POSITION_RESTING,do_action,0,CMD_ACTIVE); COMMANDO(164,POSITION_RESTING,do_practice,1,CMD_ACTIVE); COMMANDO(165,POSITION_RESTING,do_action,0,CMD_ACTIVE); COMMANDO(166,POSITION_SITTING,do_examine,0,CMD_ACTIVE); COMMANDO(167,POSITION_RESTING,do_get,0,CMD_ACTIVE); /* TAKE */ COMMANDO(168,POSITION_SLEEPING,do_info,0,0); COMMANDO(169,POSITION_RESTING,do_say,0,CMD_ACTIVE); COMMANDO(170,POSITION_RESTING,do_practice,1,CMD_ACTIVE); COMMANDO(171,POSITION_RESTING,do_action,0,CMD_ACTIVE); COMMANDO(172,POSITION_SITTING,do_use,1,CMD_ACTIVE); COMMANDO(173,POSITION_DEAD,do_where,1,0); COMMANDO(174,POSITION_DEAD,do_levels,0,0); COMMANDO(175,POSITION_DEAD,do_reroll,LV_IMPL,0); COMMANDO(176,POSITION_SITTING,do_action,0,CMD_ACTIVE); COMMANDO(177,POSITION_SLEEPING,do_emote,1,CMD_ACTIVE); COMMANDO(178,POSITION_RESTING,do_action,0,CMD_ACTIVE); COMMANDO(179,POSITION_RESTING,do_action,0,CMD_ACTIVE); COMMANDO(180,POSITION_RESTING,do_action,0,CMD_ACTIVE); COMMANDO(181,POSITION_SLEEPING,do_action,0,CMD_ACTIVE); COMMANDO(182,POSITION_RESTING,do_action,0,CMD_ACTIVE); COMMANDO(183,POSITION_RESTING,do_action,0,CMD_ACTIVE); COMMANDO(184,POSITION_RESTING,do_action,0,CMD_ACTIVE); COMMANDO(185,POSITION_RESTING,do_action,0,CMD_ACTIVE); COMMANDO(186,POSITION_RESTING,do_action,0,CMD_ACTIVE); COMMANDO(187,POSITION_RESTING,do_action,0,CMD_ACTIVE); COMMANDO(188,POSITION_RESTING,do_action,0,CMD_ACTIVE); COMMANDO(189,POSITION_RESTING,do_action,0,CMD_ACTIVE); COMMANDO(190,POSITION_RESTING,do_action,0,CMD_ACTIVE); COMMANDO(191,POSITION_RESTING,do_action,0,CMD_ACTIVE); COMMANDO(192,POSITION_RESTING,do_action,0,CMD_ACTIVE); COMMANDO(193,POSITION_RESTING,do_action,0,CMD_ACTIVE); COMMANDO(194,POSITION_RESTING,do_action,0,CMD_ACTIVE); COMMANDO(195,POSITION_RESTING,do_action,0,CMD_ACTIVE); COMMANDO(196,POSITION_RESTING,do_action,0,CMD_ACTIVE); COMMANDO(197,POSITION_RESTING,do_action,0,CMD_ACTIVE); COMMANDO(198,POSITION_RESTING,do_action,0,CMD_ACTIVE); COMMANDO(199,POSITION_DEAD,do_brief,0,0); COMMANDO(200,POSITION_DEAD,do_wizlist,0,0); COMMANDO(201,POSITION_RESTING,do_consider,0,CMD_ACTIVE); COMMANDO(202,POSITION_RESTING,do_group,1,CMD_ACTIVE); COMMANDO(203,POSITION_DEAD,do_restore,LV_GREATER,CMD_ACTIVE); COMMANDO(204,POSITION_DEAD,do_return,0,0); COMMANDO(205,POSITION_DEAD,do_switch,LV_GOD,0); COMMANDO(206,POSITION_RESTING,do_quaff,0,CMD_ACTIVE); COMMANDO(207,POSITION_RESTING,do_recite,0,CMD_ACTIVE); COMMANDO(208,POSITION_DEAD,do_users,LV_DEITY,0); COMMANDO(209,POSITION_STANDING,do_pose,0,CMD_ACTIVE); COMMANDO(210,POSITION_SLEEPING,do_noshout,0,0); COMMANDO(211,POSITION_SLEEPING,do_wizhelp,LV_IMMORTAL,0); COMMANDO(212,POSITION_DEAD,do_credits,0,0); COMMANDO(213,POSITION_DEAD,do_compact,0,0); COMMANDO(214,POSITION_DEAD,do_display,0,0); COMMANDO(215,POSITION_DEAD,do_poofIn,LV_DEITY,0); COMMANDO(216,POSITION_DEAD,do_poofOut,LV_DEITY,0); COMMANDO(217,POSITION_DEAD,do_teleport,LV_DEITY,CMD_ACTIVE); COMMANDO(218,POSITION_DEAD,do_gecho, LV_DEITY,CMD_ACTIVE); COMMANDO(219,POSITION_DEAD,do_wiznet, LV_IMMORTAL,CMD_ACTIVE); COMMANDO(220,POSITION_DEAD,do_holylite, LV_IMMORTAL,0); COMMANDO(221,POSITION_DEAD,do_wizinvis, LV_DEITY,CMD_ACTIVE); COMMANDO(222,POSITION_DEAD,do_wimpy, 0,0); COMMANDO(223,POSITION_DEAD,do_setstat, LV_GREATER,0); COMMANDO(224,POSITION_DEAD,do_localwho, 0,0); COMMANDO(225,POSITION_DEAD,do_notell, 1,0); COMMANDO(226,POSITION_DEAD,do_wizlock, LV_GREATER,0); COMMANDO(227,POSITION_DEAD,do_pardon, LV_GREATER,CMD_ACTIVE); COMMANDO(228,POSITION_DEAD,do_not_here,0,CMD_ACTIVE); COMMANDO(229,POSITION_DEAD,do_deposit,0,CMD_ACTIVE); COMMANDO(230,POSITION_DEAD,do_balance,0,CMD_ACTIVE); COMMANDO(231,POSITION_DEAD,do_withdraw,0,CMD_ACTIVE); COMMANDO(232,POSITION_DEAD,do_systats,LV_IMPL,0); COMMANDO(233,POSITION_DEAD,do_multiclass,1,CMD_ACTIVE); COMMANDO(234,POSITION_DEAD,do_sockets,LV_GREATER,0); COMMANDO(235,POSITION_DEAD,do_release,LV_GREATER,0); COMMANDO(236,POSITION_FIGHTING,do_murder,0,CMD_ACTIVE); COMMANDO(237,POSITION_DEAD,do_nokill,0,0); COMMANDO(238,POSITION_DEAD,do_ban,LV_GREATER,0); COMMANDO(239,POSITION_DEAD,do_allow,LV_GREATER,0); COMMANDO(240,POSITION_STANDING,do_fill,0,CMD_ACTIVE); COMMANDO(241,POSITION_RESTING,do_yell,0,CMD_ACTIVE); COMMANDO(242,POSITION_RESTING,do_action,0,CMD_ACTIVE); COMMANDO(243,POSITION_RESTING,do_action,0,CMD_ACTIVE); COMMANDO(244,POSITION_RESTING,do_action,0,CMD_ACTIVE); COMMANDO(245,POSITION_DEAD,do_nosummon,0,0); COMMANDO(246,POSITION_DEAD,do_title,10,0); COMMANDO(247,POSITION_DEAD,do_tag,0,CMD_ACTIVE); COMMANDO(248,POSITION_DEAD,do_action,0,CMD_ACTIVE); COMMANDO(249,POSITION_DEAD,do_action,0,CMD_ACTIVE); COMMANDO(250,POSITION_DEAD,do_action,0,CMD_ACTIVE); COMMANDO(251,POSITION_DEAD,do_action,0,CMD_ACTIVE); COMMANDO(252,POSITION_DEAD,do_action,0,CMD_ACTIVE); COMMANDO(253,POSITION_DEAD,do_action,0,CMD_ACTIVE); COMMANDO(254,POSITION_DEAD,do_action,0,CMD_ACTIVE); COMMANDO(255,POSITION_DEAD,do_action,0,CMD_ACTIVE); COMMANDO(256,POSITION_DEAD,do_action,0,CMD_ACTIVE); COMMANDO(257,POSITION_DEAD,do_action,0,CMD_ACTIVE); COMMANDO(258,POSITION_DEAD,do_action,0,CMD_ACTIVE); COMMANDO(259,POSITION_DEAD,do_rub,0,CMD_ACTIVE); COMMANDO(260,POSITION_DEAD,do_passwords,LV_IMPL,0); COMMANDO(261,POSITION_DEAD,do_setzone,LV_IMPL,0); COMMANDO(262,POSITION_DEAD,do_auction,0,CMD_ACTIVE); COMMANDO(263,POSITION_DEAD,do_override,LV_IMPL,0); COMMANDO(264,POSITION_DEAD,do_wizearmuffs,LV_GREATER,0); COMMANDO(265,POSITION_DEAD,do_action,0,CMD_ACTIVE); COMMANDO(266,POSITION_DEAD,do_alert,LV_GREATER,CMD_ACTIVE); COMMANDO(267,POSITION_DEAD,do_jail,LV_GREATER,CMD_ACTIVE); COMMANDO(268,POSITION_STANDING,do_search,0,CMD_ACTIVE); COMMANDO(269,POSITION_STANDING,do_fly,0,CMD_ACTIVE); COMMANDO(270,POSITION_STANDING,do_levitate,0,CMD_ACTIVE); COMMANDO(271,POSITION_STANDING,do_secret,LV_GOD,0); COMMANDO(272,POSITION_DEAD,do_lookup,LV_DEMIGOD,0); COMMANDO(273,POSITION_DEAD,do_setobj,LV_IMPL,0); COMMANDO(274,POSITION_DEAD,do_msgecho,0,0); /* COMMANDO(27?,POSITION_DEAD,do_retreat,0);*/ }