/*
 * RAM $Id: interp.h 13 2008-10-19 22:07:48Z ram $
 */

/***************************************************************************
 *  Original Diku Mud copyright (C) 1990, 1991 by Sebastian Hammer,	   *
 *  Michael Seifert, Hans Henrik St{rfeldt, Tom Madsen, and Katja Nyboe.   *
 *									   *
 *  Merc Diku Mud improvments copyright (C) 1992, 1993 by Michael	   *
 *  Chastain, Michael Quan, and Mitchell Tse.				   *
 *									   *
 *  In order to use any part of this Merc Diku Mud, you must comply with   *
 *  both the original Diku license in 'license.doc' as well the Merc	   *
 *  license in 'license.txt'.  In particular, you may not remove either of *
 *  these copyright notices.						   *
 *									   *
 *  Much time and thought has gone into this software and you are	   *
 *  benefitting.  We hope that you share your changes too.  What goes	   *
 *  around, comes around.						   *
 ***************************************************************************/
 
/***************************************************************************
*	ROM 2.4 is copyright 1993-1998 Russ Taylor			   *
*	ROM has been brought to you by the ROM consortium		   *
*	    Russ Taylor (rtaylor@hypercube.org)				   *
*	    Gabrielle Taylor (gtaylor@hypercube.org)			   *
*	    Brian Moore (zump@rom.org)					   *
*	By using this code, you have agreed to follow the terms of the	   *
*	ROM license, in the file Rom24/doc/rom.license			   *
***************************************************************************/

/* this is a listing of all the commands and command related data */

/* for command types */
#define ML 	MAX_LEVEL	/* implementor */
#define L1	MAX_LEVEL - 1  	/* creator */
#define L2	MAX_LEVEL - 2	/* supreme being */
#define L3	MAX_LEVEL - 3	/* deity */
#define L4 	MAX_LEVEL - 4	/* god */
#define L5	MAX_LEVEL - 5	/* immortal */
#define L6	MAX_LEVEL - 6	/* demigod */
#define L7	MAX_LEVEL - 7	/* angel */
#define L8	MAX_LEVEL - 8	/* avatar */
#define IM	LEVEL_IMMORTAL 	/* avatar */
#define HE	LEVEL_HERO	/* hero */

#define COM_INGORE	1


/*
 * Structure for a command in the command lookup table.
 */
struct	cmd_type
{
    const char *	name;
    DO_FUN *		do_fun;
    int		position;
    int		level;
    int		log;
    int              show;
};

/* Why is this in interp again??? */
extern bool				fLogAll;

/* the command table itself */
extern	const	struct	cmd_type	cmd_table	[];

void interpret( CHAR_DATA *ch, const char *argument );
void do_function (CHAR_DATA *ch, DO_FUN *do_fun, const char *argument);
bool check_social( CHAR_DATA *ch, const char *command, const char *argument );
bool is_number ( const char *arg );
int number_argument( const char *argument, char *arg );
int mult_argument( const char *argument, char *arg );
const char *one_argument( const char *argument, char *arg_first );
void do_commands( CHAR_DATA *ch, const char *argument );
void do_wizhelp( CHAR_DATA *ch, const char *argument );

/*
 * Command functions.
 * Defined in act_*.c (mostly).
 */

/* act_comm.c */
void do_delet( CHAR_DATA *ch, const char *argument);
void do_delete( CHAR_DATA *ch, const char *argument);
void do_channels( CHAR_DATA *ch, const char *argument);
void do_deaf( CHAR_DATA *ch, const char *argument);
void do_quiet ( CHAR_DATA *ch, const char * argument);
void do_afk ( CHAR_DATA *ch, const char * argument);
void do_replay (CHAR_DATA *ch, const char *argument);
void do_auction( CHAR_DATA *ch, const char *argument );
void do_gossip( CHAR_DATA *ch, const char *argument );
void do_grats( CHAR_DATA *ch, const char *argument );
void do_quote( CHAR_DATA *ch, const char *argument );
void do_question( CHAR_DATA *ch, const char *argument );
void do_answer( CHAR_DATA *ch, const char *argument );
void do_music( CHAR_DATA *ch, const char *argument );
void do_clantalk( CHAR_DATA *ch, const char *argument );
void do_immtalk( CHAR_DATA *ch, const char *argument );
void do_say( CHAR_DATA *ch, const char *argument );
void do_shout( CHAR_DATA *ch, const char *argument );
void do_tell( CHAR_DATA *ch, const char *argument );
void do_reply( CHAR_DATA *ch, const char *argument );
void do_yell( CHAR_DATA *ch, const char *argument );
void do_emote( CHAR_DATA *ch, const char *argument );
void do_pmote( CHAR_DATA *ch, const char *argument );
void do_pose( CHAR_DATA *ch, const char *argument );
void do_bug( CHAR_DATA *ch, const char *argument );
void do_typo( CHAR_DATA *ch, const char *argument );
void do_rent( CHAR_DATA *ch, const char *argument );
void do_qui( CHAR_DATA *ch, const char *argument );
void do_quit( CHAR_DATA *ch, const char *argument );
void do_save( CHAR_DATA *ch, const char *argument );
void do_follow( CHAR_DATA *ch, const char *argument );
void do_order( CHAR_DATA *ch, const char *argument );
void do_group( CHAR_DATA *ch, const char *argument );
void do_split( CHAR_DATA *ch, const char *argument );
void do_gtell( CHAR_DATA *ch, const char *argument );

/* act_info.c */
void do_scroll(CHAR_DATA *ch, const char *argument);
void do_socials(CHAR_DATA *ch, const char *argument);
void do_motd(CHAR_DATA *ch, const char *argument);
void do_imotd(CHAR_DATA *ch, const char *argument);
void do_rules(CHAR_DATA *ch, const char *argument);
void do_story(CHAR_DATA *ch, const char *argument);
void do_wizlist(CHAR_DATA *ch, const char *argument);
void do_autolist(CHAR_DATA *ch, const char *argument);
void do_autoassist(CHAR_DATA *ch, const char *argument);
void do_autoexit(CHAR_DATA *ch, const char *argument);
void do_autogold(CHAR_DATA *ch, const char *argument);
void do_autoloot(CHAR_DATA *ch, const char *argument);
void do_autosac(CHAR_DATA *ch, const char *argument);
void do_autosplit(CHAR_DATA *ch, const char *argument);
void do_brief(CHAR_DATA *ch, const char *argument);
void do_compact(CHAR_DATA *ch, const char *argument);
void do_show(CHAR_DATA *ch, const char *argument);
void do_prompt(CHAR_DATA *ch, const char *argument);
void do_combine(CHAR_DATA *ch, const char *argument);
void do_noloot(CHAR_DATA *ch, const char *argument);
void do_nofollow(CHAR_DATA *ch, const char *argument);
void do_nosummon(CHAR_DATA *ch, const char *argument);
void do_look( CHAR_DATA *ch, const char *argument );
void do_read (CHAR_DATA *ch, const char *argument );
void do_examine( CHAR_DATA *ch, const char *argument );
void do_exits( CHAR_DATA *ch, const char *argument );
void do_worth( CHAR_DATA *ch, const char *argument );
void do_score( CHAR_DATA *ch, const char *argument );
void do_affects(CHAR_DATA *ch, const char *argument );
void do_time( CHAR_DATA *ch, const char *argument );
void do_weather( CHAR_DATA *ch, const char *argument );
void do_help( CHAR_DATA *ch, const char *argument );
void do_whois (CHAR_DATA *ch, const char *argument);
void do_who( CHAR_DATA *ch, const char *argument );
void do_count ( CHAR_DATA *ch, const char *argument );
void do_inventory( CHAR_DATA *ch, const char *argument );
void do_equipment( CHAR_DATA *ch, const char *argument );
void do_compare( CHAR_DATA *ch, const char *argument );
void do_credits( CHAR_DATA *ch, const char *argument );
void do_where( CHAR_DATA *ch, const char *argument );
void do_consider( CHAR_DATA *ch, const char *argument );
void do_title( CHAR_DATA *ch, const char *argument );
void do_description( CHAR_DATA *ch, const char *argument );
void do_report( CHAR_DATA *ch, const char *argument );
void do_practice( CHAR_DATA *ch, const char *argument );
void do_wimpy( CHAR_DATA *ch, const char *argument );
void do_password( CHAR_DATA *ch, const char *argument );

/* act_move.c */
void do_north( CHAR_DATA *ch, const char *argument );
void do_east( CHAR_DATA *ch, const char *argument );
void do_south( CHAR_DATA *ch, const char *argument );
void do_west( CHAR_DATA *ch, const char *argument );
void do_up( CHAR_DATA *ch, const char *argument );
void do_down( CHAR_DATA *ch, const char *argument );
void do_open( CHAR_DATA *ch, const char *argument );
void do_close( CHAR_DATA *ch, const char *argument );
void do_lock( CHAR_DATA *ch, const char *argument );
void do_unlock( CHAR_DATA *ch, const char *argument );
void do_pick( CHAR_DATA *ch, const char *argument );
void do_stand( CHAR_DATA *ch, const char *argument );
void do_rest( CHAR_DATA *ch, const char *argument );
void do_sit (CHAR_DATA *ch, const char *argument );
void do_sleep( CHAR_DATA *ch, const char *argument );
void do_wake( CHAR_DATA *ch, const char *argument );
void do_sneak( CHAR_DATA *ch, const char *argument );
void do_hide( CHAR_DATA *ch, const char *argument );
void do_visible( CHAR_DATA *ch, const char *argument );
void do_recall( CHAR_DATA *ch, const char *argument );
void do_train( CHAR_DATA *ch, const char *argument );
void do_enter( CHAR_DATA *ch, const char *argument);

/* act_obj.c */
void do_get( CHAR_DATA *ch, const char *argument );
void do_put( CHAR_DATA *ch, const char *argument );
void do_drop( CHAR_DATA *ch, const char *argument );
void do_give( CHAR_DATA *ch, const char *argument );
void do_envenom(CHAR_DATA *ch, const char *argument);
void do_fill( CHAR_DATA *ch, const char *argument );
void do_pour (CHAR_DATA *ch, const char *argument);
void do_drink( CHAR_DATA *ch, const char *argument );
void do_eat( CHAR_DATA *ch, const char *argument );
void do_wear( CHAR_DATA *ch, const char *argument );
void do_remove( CHAR_DATA *ch, const char *argument );
void do_sacrifice( CHAR_DATA *ch, const char *argument );
void do_quaff( CHAR_DATA *ch, const char *argument );
void do_recite( CHAR_DATA *ch, const char *argument );
void do_brandish( CHAR_DATA *ch, const char *argument );
void do_zap( CHAR_DATA *ch, const char *argument );
void do_steal( CHAR_DATA *ch, const char *argument );
void do_buy( CHAR_DATA *ch, const char *argument );
void do_list( CHAR_DATA *ch, const char *argument );
void do_sell( CHAR_DATA *ch, const char *argument );
void do_value( CHAR_DATA *ch, const char *argument );

/* act_wiz.c */
void do_wiznet( CHAR_DATA *ch, const char *argument );
void do_guild( CHAR_DATA *ch, const char *argument );
void do_outfit ( CHAR_DATA *ch, const char *argument );
void do_nochannels( CHAR_DATA *ch, const char *argument );
void do_smote(CHAR_DATA *ch, const char *argument );
void do_bamfin( CHAR_DATA *ch, const char *argument );
void do_bamfout( CHAR_DATA *ch, const char *argument );
void do_deny( CHAR_DATA *ch, const char *argument );
void do_disconnect( CHAR_DATA *ch, const char *argument );
void do_pardon( CHAR_DATA *ch, const char *argument );
void do_echo( CHAR_DATA *ch, const char *argument );
void do_recho( CHAR_DATA *ch, const char *argument );
void do_zecho(CHAR_DATA *ch, const char *argument);
void do_pecho( CHAR_DATA *ch, const char *argument );
void do_transfer( CHAR_DATA *ch, const char *argument );
void do_at( CHAR_DATA *ch, const char *argument );
void do_goto( CHAR_DATA *ch, const char *argument );
void do_violate( CHAR_DATA *ch, const char *argument );
void do_stat ( CHAR_DATA *ch, const char *argument );
void do_rstat( CHAR_DATA *ch, const char *argument );
void do_ostat( CHAR_DATA *ch, const char *argument );
void do_mstat( CHAR_DATA *ch, const char *argument );
void do_vnum(CHAR_DATA *ch, const char *argument);
void do_mfind( CHAR_DATA *ch, const char *argument );
void do_ofind( CHAR_DATA *ch, const char *argument );
void do_owhere(CHAR_DATA *ch, const char *argument );
void do_mwhere( CHAR_DATA *ch, const char *argument );
void do_reboo( CHAR_DATA *ch, const char *argument );
void do_reboot( CHAR_DATA *ch, const char *argument );
void do_shutdow( CHAR_DATA *ch, const char *argument );
void do_shutdown( CHAR_DATA *ch, const char *argument );
void do_protect( CHAR_DATA *ch, const char *argument);
void do_snoop( CHAR_DATA *ch, const char *argument );
void do_switch( CHAR_DATA *ch, const char *argument );
void do_return( CHAR_DATA *ch, const char *argument );
void do_clone(CHAR_DATA *ch, const char *argument );
void do_load(CHAR_DATA *ch, const char *argument );
void do_mload( CHAR_DATA *ch, const char *argument );
void do_oload( CHAR_DATA *ch, const char *argument );
void do_purge( CHAR_DATA *ch, const char *argument );
void do_advance( CHAR_DATA *ch, const char *argument );
void do_trust( CHAR_DATA *ch, const char *argument );
void do_restore( CHAR_DATA *ch, const char *argument );
void do_freeze( CHAR_DATA *ch, const char *argument );
void do_log( CHAR_DATA *ch, const char *argument );
void do_noemote( CHAR_DATA *ch, const char *argument );
void do_noshout( CHAR_DATA *ch, const char *argument );
void do_notell( CHAR_DATA *ch, const char *argument );
void do_peace( CHAR_DATA *ch, const char *argument );
void do_wizlock( CHAR_DATA *ch, const char *argument );
void do_newlock( CHAR_DATA *ch, const char *argument );
void do_slookup( CHAR_DATA *ch, const char *argument );
void do_set( CHAR_DATA *ch, const char *argument );
void do_sset( CHAR_DATA *ch, const char *argument );
void do_mset( CHAR_DATA *ch, const char *argument );
void do_string( CHAR_DATA *ch, const char *argument );
void do_oset( CHAR_DATA *ch, const char *argument );
void do_rset( CHAR_DATA *ch, const char *argument );
void do_sockets( CHAR_DATA *ch, const char *argument );
void do_force( CHAR_DATA *ch, const char *argument );
void do_invis( CHAR_DATA *ch, const char *argument );
void do_incognito( CHAR_DATA *ch, const char *argument );
void do_holylight( CHAR_DATA *ch, const char *argument );
void do_prefi (CHAR_DATA *ch, const char *argument);
void do_prefix (CHAR_DATA *ch, const char *argument);

/* alias.c */
void do_alia(CHAR_DATA *ch, const char *argument);
void do_alias(CHAR_DATA *ch, const char *argument);
void do_unalias(CHAR_DATA *ch, const char *argument);

/* ban.c */
void do_ban(CHAR_DATA *ch, const char *argument);
void do_permban(CHAR_DATA *ch, const char *argument);
void do_allow( CHAR_DATA *ch, const char *argument );

/* db.c */
void do_areas( CHAR_DATA *ch, const char *argument );
void do_memory( CHAR_DATA *ch, const char *argument );
void do_dump( CHAR_DATA *ch, const char *argument );

/* fight.c */
void do_berserk( CHAR_DATA *ch, const char *argument);
void do_bash( CHAR_DATA *ch, const char *argument );
void do_dirt( CHAR_DATA *ch, const char *argument );
void do_trip( CHAR_DATA *ch, const char *argument );
void do_kill( CHAR_DATA *ch, const char *argument );
void do_murde( CHAR_DATA *ch, const char *argument );
void do_murder( CHAR_DATA *ch, const char *argument );
void do_backstab( CHAR_DATA *ch, const char *argument );
void do_flee( CHAR_DATA *ch, const char *argument );
void do_rescue( CHAR_DATA *ch, const char *argument );
void do_kick( CHAR_DATA *ch, const char *argument );
void do_disarm( CHAR_DATA *ch, const char *argument );
void do_sla( CHAR_DATA *ch, const char *argument );
void do_slay( CHAR_DATA *ch, const char *argument );

/* healer.c */
void do_heal(CHAR_DATA *ch, const char *argument);

/* magic.c */
void do_cast( CHAR_DATA *ch, const char *argument );

/* music.c */
void do_play(CHAR_DATA *ch, const char *argument);

/* note.c */
void do_unread(CHAR_DATA *ch, const char *argument);
void do_note(CHAR_DATA *ch,const char *argument);
void do_idea(CHAR_DATA *ch,const char *argument);
void do_penalty(CHAR_DATA *ch,const char *argument);
void do_news(CHAR_DATA *ch,const char *argument);
void do_changes(CHAR_DATA *ch,const char *argument);

/* scan.c */
void do_scan(CHAR_DATA *ch, const char *argument);

/* skills.c */
void do_gain(CHAR_DATA *ch, const char *argument);
void do_spells(CHAR_DATA *ch, const char *argument);
void do_skills(CHAR_DATA *ch, const char *argument);
void do_groups(CHAR_DATA *ch, const char *argument);

/* tables.c */
void do_flag(CHAR_DATA *ch, const char *argument);