/** * @file command.h * * Command typed, function prototypes, and maintenence routines. * * @author Geoff Davis <geoff@circlemudsquared.org> * @ingroup command * @license All rights reserved. See license.doc for complete information. * @package cs * @since v1.0 * * Copyright (C) 2006 Geoff Davis <geoff@circlemudsquared.org> * Greg Buxton <greg@circlemudsquared.org> * * Copyright (C) 1993, 94 by the Trustees of the Johns Hopkins University * CircleMUD is based on DikuMUD, Copyright (C) 1990, 1991. */ #ifndef __COMMAND_H__ #define __COMMAND_H__ #include "base.h" /** * Expands to an ACMD definition. * @param name the name of the ACMD function to be defined * @return none */ #define ACMD(name) \ void name(charData_t *ch, char *argument, const commandData_t *cmd) #define CMD_NAME (cmd->command) #define CMD_IS(cmd_name) (strcasecmp((cmd_name), CMD_NAME) == 0) #define IS_MOVE(cmd) ((cmd) && (cmd)->command_pointer == do_move) /** * Expands to an ACMD registry header. * @param name the name of the ACMD registry * @return none */ #define BEGIN_ACMD_REGISTRY(name) \ const acmdData_t name[] = { /** * Expands the register an ACMD function. * @param function the ACMD function to be registered * @return none */ #define REGISTER_ACMD(function) \ { #function, function }, /** * Expands to an ACMD registry footer. * @return none */ #define END_ACMD_REGISTRY() \ { "\n", NULL } } /** * The type of an ACMD function. * @ingroup command * @typedef ACMD((*)) */ typedef ACMD((*acmdFunction_t)); /** * An alias for struct _acmdData_t. * @ingroup command * @typedef struct _acmdData_t */ typedef struct _acmdData_t acmdData_t; /** * The ACMD registry structure. * @ingroup command * @{ */ struct _acmdData_t { const char *name; /**< The name of the ACMD function. */ acmdFunction_t function; /**< The ACMD function. */ }; /** @} */ /** * The command data structure. * @ingroup command * @{ */ struct _commandData_t { const char *command; /**< The name of the command. */ int minimum_position; /**< The minimum position (POS_xxx).*/ acmdFunction_t command_pointer; /**< The ACMD function to be called.*/ int minimum_auth; /**< The minimum auth: AUTH_xxx. */ }; /** @} */ #ifndef __COMMAND_C__ /** * The ACMD table. * @ingroup command * @var const acmdData_t[] */ extern const acmdData_t acmd_registry[]; /** * The command table. * @ingroup command * @var const commandData_t[] */ extern const commandData_t cmd_info[]; #endif /* __COMMAND_C__ */ /* * Prototypes for command.c */ /** * Interprets one command from a character. * @param ch the character for whom the command is executed * @param argument the command line to be interpreted as a command * @return none */ void command_interpreter(charData_t *ch, char *argument); /** * Searches for a command. * @param command the cannonical name of the command * @return the command, or NULL if the command cannot be found */ const commandData_t *find_command(const char *command); /* * Prototypes for act.comm.c */ /** * The SAY command. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_say); /** * The GSAY command. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_gsay); /** * The TELL command. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_tell); /** * The REPLY command. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_reply); /** * The ASK and WHISPER commands. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_spec_comm); /** * The WRITE command. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_write); /** * The PAGE command. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_page); /** * The GOSSIP, GRATZ, HOLLER, and SHOUT commands. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_gen_comm); /** * The QCOMM command. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_qcomm); /* * Prototypes for act.informative.c. */ /** * The EXITS command. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_exits); /** * The LOOK and READ commands. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_look); /** * The EXAMINE command. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_examine); /** * The GOLD command. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_gold); /** * The SCORE command. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_score); /** * The INVENTORY command. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_inventory); /** * The EQUIPMENT command. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_equipment); /** * The TIME command. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_time); /** * The WEATHER command. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_weather); /** * The HELP command. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_help); /** * The WHO command. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_who); /** * The USERS command. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_users); /** * The generic ACMD function for toggle setting. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_gen_ps); /** * The WHERE command. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_where); /** * The LEVELS command. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_levels); /** * The CONSIDER command. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_consider); /** * The DIAGNOSE command. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_diagnose); /** * The COLOR command. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_color); /** * The TOGGLE command. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_toggle); /** * The COMMANDS, SOCIALS, and WIZHELP commands. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_commands); /* * Prototypes for act.item.c */ /** * The PUT command. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_put); /** * The GET command. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_get); /** * The DONATE, DROP, and JUNK commands. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_drop); /** * The GIVE command. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_give); /** * The DRINK and SIP commands. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_drink); /** * The EAT and TASTE commands. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_eat); /** * The POUR command. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_pour); /** * The WEAR command. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_wear); /** * The WIELD command. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_wield); /** * The GRAB command. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_grab); /** * The REMOVE command. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_remove); /* * Prototypes for act.movement.c */ /** * The NORTH, SOUTH, EAST, WEST, UP, and DOWN commands. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_move); /** * The CLOSE, LOCK, OPEN, and PICK commands. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_gen_door); /** * The ENTER command. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_enter); /** * The LEAVE command. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_leave); /** * The STAND command. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_stand); /** * The SIT command. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_sit); /** * The REST command. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_rest); /** * The SLEEP command. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_sleep); /** * The WAKE command. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_wake); /** * The FOLLOW command. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_follow); /* * Prototypes for act.offensive.c */ /** * The ASSIST command. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_assist); /** * The HIT command. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_hit); /** * The KILL and MURDER commands. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_kill); /** * The BACKSTAB command. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_backstab); /** * The ORDER command. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_order); /** * The FLEE command. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_flee); /** * The BASH command. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_bash); /** * The RESCUE command. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_rescue); /** * The KICK command. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_kick); /* * Prototypes for act.other.c */ /** * The QUIT command. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_quit); /** * The SAVE command. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_save); /** * The dummy function for command spec-procs. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_not_here); /** * The SNEAK command. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_sneak); /** * The HIDE command. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_hide); /** * The STEAL command. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_steal); /** * The PRACTICE command. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_practice); /** * The VISIBLE command. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_visible); /** * The TITLE command. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_title); /** * The GROUP command. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_group); /** * The UNGROUP command. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_ungroup); /** * The REPORT command. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_report); /** * The SPLIT command. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_split); /** * The QUAFF, RECITE, and USE commands. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_use); /** * The WIMPY command. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_wimpy); /** * The DISPLAY command. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_display); /** * The BUG, IDEA, and TYPO commands. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_gen_write); /* * Prototypes for act.social.c */ /** * The entry point for social commands. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_action); /** * The INSULT command. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_insult); /* * Prototypes for act.wizard.c */ /** * The ECHO command. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_echo); /** * The SEND command. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_send); /** * The AT command. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_at); /** * The GOTO command. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_goto); /** * The TRANS command. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_trans); /** * The TELEPORT command. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_teleport); /** * The VNUM command. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_vnum); /** * The STAT command. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_stat); /** * The SHUTDOWN command. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_shutdown); /** * The SNOOP command. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_snoop); /** * The SWITCH command. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_switch); /** * The RETURN command. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_return); /** * The LOAD command. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_load); /** * The VSTAT command. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_vstat); /** * The PURGE command. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_purge); /** * The SYSLOG command. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_syslog); /** * The ADVANCE command. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_advance); /** * The AUTHORIZE command. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_authorize); /** * The RESTORE command. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_restore); /** * The INVIS command. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_invis); /** * The GECHO command. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_gecho); /** * The POOFIN and POOFOUT commands. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_poofset); /** * The DC command. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_dc); /** * The WIZLOCK command. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_wizlock); /** * The DATE command. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_date); /** * The LAST command. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_last); /** * The FORCE command. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_force); /** * The WIZNET command. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_wiznet); /** * The ZRESET command. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_zreset); /** * The WIZUTIL command. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_wizutil); /** * The SHOW command. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_show); /** * The SET command. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_set); /** * The SLOWNS command. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_slowns); /** * The TRACKTHRU command. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_trackthru); /* * Prototypes for ban.c */ /** * The BAN command. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_ban); /** * The UNBAN command. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_unban); /* * Prototypes for db.c */ /** * The REBOOT command. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_reboot); /* * Prototypes for graph.c */ /** * The TRACK command. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_track); /* * Prototypes for house.c */ /** * The HCONTROL command. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_hcontrol); /** * The HOUSE command. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_house); /* * Prototypes for interpreter.c */ /** * The ALIAS command. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_alias); /* * Prototypes for modify.c */ /** * The SKILLSET command. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_skillset); /* * Prototypes for olc.c */ #if 0 /** * The OLC command. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_olc); #endif /* * Prototypes for spell_parser.c */ /** * The CAST command. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_cast); /* * Prototypes for zone.c */ /** * The SAVEZONE command. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_savezone); /* * Prototypes for command.c */ /** * The SAVECOMMANDS command. * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @returns none */ ACMD(do_savecommands); /** * LIST command * * This command lets a user list the items in a shop * * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @return none */ ACMD(do_list); /** * SELL command * * This command lets a user sell an item to a shop * * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @return none */ ACMD(do_sell); /** * APPRAISE command * * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @return none */ ACMD(do_appraise); /** * BUY command * * @param ch the character performing the command * @param argument the additional text passed after the command * @param cmd the command object that was performed * @return none */ ACMD(do_buy); #endif /* __COMMAND_H__ */