Lyonesse/bin/
Lyonesse/doc/eng/
Lyonesse/doc/ita/
Lyonesse/lib/
Lyonesse/lib/buildings/
Lyonesse/lib/clans/
Lyonesse/lib/data/
Lyonesse/lib/etc/
Lyonesse/lib/house/
Lyonesse/lib/misc/
Lyonesse/lib/plralias/A-E/
Lyonesse/lib/plralias/F-J/
Lyonesse/lib/plralias/K-O/
Lyonesse/lib/plralias/P-T/
Lyonesse/lib/plralias/U-Z/
Lyonesse/lib/plralias/ZZZ/
Lyonesse/lib/plrobjs/A-E/
Lyonesse/lib/plrobjs/F-J/
Lyonesse/lib/plrobjs/K-O/
Lyonesse/lib/plrobjs/P-T/
Lyonesse/lib/plrobjs/U-Z/
Lyonesse/lib/plrobjs/ZZZ/
Lyonesse/lib/plrsave/A-E/
Lyonesse/lib/plrsave/F-J/
Lyonesse/lib/plrsave/K-O/
Lyonesse/lib/plrsave/P-T/
Lyonesse/lib/plrsave/U-Z/
Lyonesse/lib/plrsave/ZZZ/
Lyonesse/lib/ships/
Lyonesse/lib/stables/
Lyonesse/lib/text/help/
Lyonesse/lib/world/
Lyonesse/lib/world/bld/
Lyonesse/lib/world/ship/
Lyonesse/lib/world/shp/
Lyonesse/lib/world/wls/
Lyonesse/lib/world/wls/Life/
Lyonesse/lib/world/wls/Map/
Lyonesse/log/
/**************************************************************************
 * #   #   #   ##   #  #  ###   ##   ##  ###       http://www.lyonesse.it *
 * #    # #   #  #  ## #  #    #    #    #                                *
 * #     #    #  #  # ##  ##    #    #   ##   ## ##  #  #  ##             *
 * #     #    #  #  # ##  #      #    #  #    # # #  #  #  # #            *
 * ###   #     ##   #  #  ###  ##   ##   ###  #   #  ####  ##    Ver. 1.0 *
 *                                                                        *
 * -Based on CircleMud & Smaug-     Copyright (c) 2001-2002 by Mithrandir *
 *                                                                        *
 * ********************************************************************** */
/* ************************************************************************
*   File: interpreter.h                                 Part of CircleMUD *
*  Usage: header file: public procs, macro defs, subcommand defines       *
*                                                                         *
*  All rights reserved.  See license.doc for complete information.        *
*                                                                         *
*  Copyright (C) 1993, 94 by the Trustees of the Johns Hopkins University *
*  CircleMUD is based on DikuMUD, Copyright (C) 1990, 1991.               *
************************************************************************ */

#define ACMD(name)  \
   void name(CHAR_DATA *ch, char *argument, int cmd, int subcmd)

ACMD(do_move);

#define CMD_NAME (cmd_info[cmd].command)
#define CMD_IS(cmd_name) (!strcmp(cmd_name, cmd_info[cmd].command))
#define IS_MOVE(cmdnum) (cmd_info[cmdnum].command_pointer == do_move)

void	command_interpreter(CHAR_DATA *ch, char *argument);
int		search_block(char *arg, const char **list, int exact);
char	lower( char c );
char	*one_argument(char *argument, char *first_arg);
char	*one_word(char *argument, char *first_arg);
char	*any_one_arg(char *argument, char *first_arg);
char	*two_arguments(char *argument, char *first_arg, char *second_arg);
int		fill_word(char *argument);
void	half_chop(char *string, char *arg1, char *arg2);
void	nanny(DESCRIPTOR_DATA *d, char *arg);
int		is_abbrev(const char *arg1, const char *arg2);
int		is_number(const char *str);
int		find_command(const char *command);
void	skip_spaces(char **string);
char	*delete_doubledollar(char *string);

/* for compatibility with 2.20: */
#define argument_interpreter(a, b, c) two_arguments(a, b, c)


struct command_info
{
  const char	*command;
  byte			minimum_position;
  void (*command_pointer) (CHAR_DATA *ch, char *argument, int cmd, int subcmd);
  sh_int		minimum_level;
  int			subcmd;
};

/*
 * Necessary for CMD_IS macro.  Borland needs the structure defined first
 * so it has been moved down here.
 */
#ifndef __INTERPRETER_C__
extern const COMMAND_INFO cmd_info[];
#endif

/*
 * Alert! Changed from 'struct alias' to 'struct alias_data' in bpl15
 * because a Windows 95 compiler gives a warning about it having similiar
 * named member.
 */
struct alias_data
{
  ALIAS_DATA		*next;
  char				*alias;
  char				*replacement;
  int				type;
};

#define ALIAS_SIMPLE			0
#define ALIAS_COMPLEX			1

#define ALIAS_SEP_CHAR			';'
#define ALIAS_VAR_CHAR			'$'
#define ALIAS_GLOB_CHAR			'*'

/*
 * SUBCOMMANDS
 *   You can define these however you want to, and the definitions of the
 *   subcommands are independent from function to function.
 */

/* directions */
#define SCMD_NORTH				1
#define SCMD_EAST				2
#define SCMD_SOUTH				3
#define SCMD_WEST				4
#define SCMD_UP					5
#define SCMD_DOWN				6
#define SCMD_NORTHEAST			7
#define SCMD_SOUTHEAST			8
#define SCMD_SOUTHWEST			9
#define SCMD_NORTHWEST			10

/* do_gen_ps */
#define SCMD_INFO				0
#define SCMD_HANDBOOK			1 
#define SCMD_CREDITS			2
#define SCMD_NEWS				3
#define SCMD_WIZLIST			4
#define SCMD_POLICIES			5
#define SCMD_VERSION			6
#define SCMD_IMMLIST			7
#define SCMD_MOTD				8
#define SCMD_IMOTD				9
#define SCMD_CLEAR				10
#define SCMD_WHOAMI				11

/* do_gen_tog */
#define SCMD_NOSUMMON			0
#define SCMD_NOHASSLE			1
#define SCMD_BRIEF				2
#define SCMD_COMPACT			3
#define SCMD_NOTELL				4
#define SCMD_NOAUCTION			5
#define SCMD_DEAF				6
#define SCMD_NOGOSSIP			7
#define SCMD_NOGRATZ			8
#define SCMD_NOWIZ				9
#define SCMD_QUEST				10
#define SCMD_ROOMFLAGS			11
#define SCMD_NOREPEAT			12
#define SCMD_HOLYLIGHT			13
#define SCMD_SLOWNS				14
#define SCMD_AUTOEXIT			15
#define SCMD_TRACK				16
#define SCMD_WILDTEXT			17
#define SCMD_WILDBLACK			18
#define SCMD_WILDSMALL			19
#define SCMD_NOGREET			20

/* do_wizutil */
#define SCMD_REROLL				0
#define SCMD_PARDON				1
#define SCMD_NOTITLE			2
#define SCMD_SQUELCH			3
#define SCMD_FREEZE				4
#define SCMD_THAW				5
#define SCMD_UNAFFECT			6

/* do_spec_com */
#define SCMD_WHISPER			0
#define SCMD_ASK				1

/* do_gen_com */
#define SCMD_HOLLER				0
#define SCMD_SHOUT				1
#define SCMD_GOSSIP				2
#define SCMD_AUCTION			3
#define SCMD_GRATZ				4

/* do_shutdown */
#define SCMD_SHUTDOW			0
#define SCMD_SHUTDOWN			1

/* do_quit */
#define SCMD_QUI				0
#define SCMD_QUIT				1

/* do_date */
#define SCMD_DATE				0
#define SCMD_UPTIME				1

/* do_commands */
#define SCMD_COMMANDS			0
#define SCMD_SOCIALS			1
#define SCMD_WIZHELP			2

/* do_drop */
#define SCMD_DROP				0
#define SCMD_JUNK				1
#define SCMD_DONATE				2

/* do_gen_write */
#define SCMD_BUG				0
#define SCMD_TYPO				1
#define SCMD_IDEA				2

/* do_look */
#define SCMD_LOOK				0
#define SCMD_READ				1

/* do_qcomm */
#define SCMD_QSAY				0
#define SCMD_QECHO				1

/* do_pour */
#define SCMD_POUR				0
#define SCMD_FILL				1

/* do_poof */
#define SCMD_POOFIN				0
#define SCMD_POOFOUT			1

/* do_hit */
#define SCMD_HIT				0
#define SCMD_MURDER				1

/* do_eat */
#define SCMD_EAT				0
#define SCMD_TASTE				1
#define SCMD_DRINK				2
#define SCMD_SIP				3

/* do_use */
#define SCMD_USE				0
#define SCMD_QUAFF				1
#define SCMD_RECITE				2

/* do_echo */
#define SCMD_ECHO				0
#define SCMD_EMOTE				1

/* do_gen_door */
#define SCMD_OPEN				0
#define SCMD_CLOSE				1
#define SCMD_UNLOCK				2
#define SCMD_LOCK				3
#define SCMD_PICK				4