atd/area/
atd/build/
atd/clans/
atd/log/
atd/player/store/
atd/site/
atd/src/bin/
#define         SEX_NONE       -1
#define         ROOM_NONE       0
#define         EX_NONE         0
#define         ITEM_NONE       0
#define         EXTRA_NONE      0
#define         ITEM_WEAR_NONE  0
#define         ACT_NONE        0
#define         AFFECT_NONE     0


#define HEDIT( fun )           bool fun(CHAR_DATA *ch, char*argument)
#define AEDIT( fun )           bool fun(CHAR_DATA *ch, char*argument)
#define MEDIT( fun )           bool fun(CHAR_DATA *ch, char*argument)
#define REDIT( fun )           bool fun(CHAR_DATA *ch, char*argument)
#define OEDIT( fun )           bool fun(CHAR_DATA *ch, char*argument)
#define CMDEDIT( fun )	       bool fun(CHAR_DATA *ch, char*argument)
#define CEDIT(fun)             bool fun( CHAR_DATA *ch, char *argument)
#define CLEDIT( fun )          bool fun(CHAR_DATA *ch, char*argument)
#define RENAME( fun )          bool fun(CHAR_DATA *ch, char *argument )
#define QSET_OBJ( fun )        bool fun(CHAR_DATA *ch, char *argument )

#define EDIT_HELP(Ch, Help)	( Help = (HELP_DATA *)Ch->desc->pEdit )
#define EDIT_AREA(Ch, Area)	( Area = (AREA_DATA *)Ch->desc->pEdit )
#define EDIT_MOB(Ch, Mob)	( Mob = (MOB_INDEX_DATA *)Ch->desc->pEdit)
#define EDIT_ROOM(Ch, Room)	( Room = (ROOM_INDEX_DATA *)Ch->desc->pEdit)
#define EDIT_OBJ(Ch, Obj)	( Obj = (OBJ_INDEX_DATA *)Ch->desc->pEdit)
#define EDIT_CMD(Ch, CMD)       ( CMD = (struct cmd_type *)Ch->desc->pEdit)
#define EDIT_SOCIAL(Ch, Soc)    (  Soc  = (struct social_type*)Ch->desc->pEdit)
#define EDIT_CLAN(Ch, Clan)     ( Clan = (CLAN_DATA *)Ch->desc->pEdit)
#define RENAME_OBJ(ch, Obj)     ( Obj = (OBJ_DATA *) ch->desc->pEdit )
#define EDIT_QSET(Ch, Obj)      ( Obj = (OBJ_DATA *) Ch->desc->pEdit )

#define SKILLSN(sn) (sn != -1 ? skill_table[sn].slot : 0)
#define IS_BUILDER(ch, Area)  (  GET_PC(ch,security,0) >= Area->security \
                             || strstr(Area->builders, ch->name) != NULL  \
                             || strstr(Area->builders, "All") != NULL\
			     || get_trust(ch) < LEVEL_HIGHJUDGE )

#define IS_BUILDER_HERE(ch) ( IS_BUILDER((ch),(ch)->in_room->area) )

/*
 * Interpreter Prototypes
 */
void    aedit           args( ( CHAR_DATA *ch, char *argument ) );
void    redit           args( ( CHAR_DATA *ch, char *argument ) );
void    medit           args( ( CHAR_DATA *ch, char *argument ) );
void    oedit           args( ( CHAR_DATA *ch, char *argument ) );
void    hedit           args( ( CHAR_DATA *ch, char *argument ) );
void    cmdedit         args( ( CHAR_DATA *ch, char *argument ) );
void    sedit           args( ( CHAR_DATA *ch, char *argument ) );
void    cedit           args( ( CHAR_DATA *ch, char *argument ) );
void    cledit          args( ( CHAR_DATA *ch, char *argument ) );
void    rename_object   args( ( CHAR_DATA *ch, char *argument ) );
void    qedit           args( ( CHAR_DATA *ch, char *arugment ) );

/*
 * OLC Constants
 */
#define MAX_MOB	1		/* Default maximum number for resetting mobs */

/*
 * Utils.
 */
AREA_DATA *	get_vnum_area	args ( ( int vnum ) );
AREA_DATA *	get_area_data	args ( ( int vnum ) );
void		add_reset	args ( ( ROOM_INDEX_DATA *,
					RESET_DATA *, int ) );
bool            show_commands   args ( ( CHAR_DATA *ch, char *argument ) );
bool            show_help       args ( ( CHAR_DATA *ch, char *argument ) );
void            set_editor      args ( ( DESCRIPTOR_DATA *, int, void * ) );
bool            edit_done       args ( ( CHAR_DATA *ch ) );
char      *     strip_cr        args ( ( char * string ) );

RESET_DATA	*new_reset_data		args ( ( void ) );
void		free_reset_data		args ( ( RESET_DATA *pReset ) );



struct olc_help_type
{
    char *command;
    const void *structure;
    sh_int  trust;
    char *desc;
};

/*
 * For commands
 */
typedef	bool OLC_FUN		args( ( CHAR_DATA *ch, char *argument ) );
#define DECLARE_OLC_FUN( fun )	OLC_FUN    fun


/*
 * Structure for an OLC editor command.
 */
struct olc_cmd_type
{
    char * const	name;
    OLC_FUN *		olc_fun;
};


DECLARE_OLC_FUN( hedit_show		);
DECLARE_OLC_FUN( hedit_keyword		);
DECLARE_OLC_FUN( hedit_text		);
DECLARE_OLC_FUN( hedit_new		);
DECLARE_OLC_FUN( hedit_level		);
DECLARE_OLC_FUN( hedit_delete		);
DECLARE_OLC_FUN( hedit_list		);


/*
 * Area Editor Prototypes
 */
DECLARE_OLC_FUN( aedit_show		);
DECLARE_OLC_FUN( aedit_create		);
DECLARE_OLC_FUN( aedit_name		);
DECLARE_OLC_FUN( aedit_filename		);
DECLARE_OLC_FUN( aedit_age		);
DECLARE_OLC_FUN( aedit_recall		);
DECLARE_OLC_FUN( aedit_reset		);
DECLARE_OLC_FUN( aedit_security		);
DECLARE_OLC_FUN( aedit_builder		);
DECLARE_OLC_FUN( aedit_vnum		);
DECLARE_OLC_FUN( aedit_lvnum		);
DECLARE_OLC_FUN( aedit_uvnum		);
DECLARE_OLC_FUN( aedit_mod		);
DECLARE_OLC_FUN( aedit_connected        );

/*
 * Room Editor Prototypes
 */
DECLARE_OLC_FUN( redit_show		);
DECLARE_OLC_FUN( redit_create		);
DECLARE_OLC_FUN( redit_name		);
DECLARE_OLC_FUN( redit_desc		);
DECLARE_OLC_FUN( redit_ed		);
DECLARE_OLC_FUN( redit_format		);
DECLARE_OLC_FUN( redit_north		);
DECLARE_OLC_FUN( redit_south		);
DECLARE_OLC_FUN( redit_east		);
DECLARE_OLC_FUN( redit_west		);
DECLARE_OLC_FUN( redit_up		);
DECLARE_OLC_FUN( redit_down		);
DECLARE_OLC_FUN( redit_move		);
DECLARE_OLC_FUN( redit_mreset		);
DECLARE_OLC_FUN( redit_oreset		);
DECLARE_OLC_FUN( redit_mlist		);
DECLARE_OLC_FUN( redit_olist		);
DECLARE_OLC_FUN( redit_mshow		);
DECLARE_OLC_FUN( redit_oshow		);
DECLARE_OLC_FUN( redit_copy             );
DECLARE_OLC_FUN( redit_roomtext         );
DECLARE_OLC_FUN( redit_findreset        );

/*
 * Mobile Editor Prototypes
 */
DECLARE_OLC_FUN( medit_show		);
DECLARE_OLC_FUN( medit_create		);
DECLARE_OLC_FUN( medit_name		);
DECLARE_OLC_FUN( medit_short		);
DECLARE_OLC_FUN( medit_long		);
DECLARE_OLC_FUN( medit_shop		);
DECLARE_OLC_FUN( medit_desc		);
DECLARE_OLC_FUN( medit_level		);
DECLARE_OLC_FUN( medit_align		);
DECLARE_OLC_FUN( medit_spec		);

/*
 * Object Editor Prototypes
 */
DECLARE_OLC_FUN( oedit_show		);
DECLARE_OLC_FUN( oedit_create		);
DECLARE_OLC_FUN( oedit_name		);
DECLARE_OLC_FUN( oedit_short		);
DECLARE_OLC_FUN( oedit_long		);
DECLARE_OLC_FUN( oedit_addaffect	);
DECLARE_OLC_FUN( oedit_delaffect	);
DECLARE_OLC_FUN( oedit_value0		);
DECLARE_OLC_FUN( oedit_value1		);
DECLARE_OLC_FUN( oedit_value2		);
DECLARE_OLC_FUN( oedit_value3		);
DECLARE_OLC_FUN( oedit_value4		);
DECLARE_OLC_FUN( oedit_weight		);
DECLARE_OLC_FUN( oedit_cost		);
DECLARE_OLC_FUN( oedit_ed		);
DECLARE_OLC_FUN( oedit_artifact		);

DECLARE_OLC_FUN( cmdedit_show		);
DECLARE_OLC_FUN( cmdedit_name		);
DECLARE_OLC_FUN( cmdedit_function	);
DECLARE_OLC_FUN( cmdedit_level		);
DECLARE_OLC_FUN( cmdedit_list		);
DECLARE_OLC_FUN( cmdedit_new		);
DECLARE_OLC_FUN( cmdedit_position	);
DECLARE_OLC_FUN( cmdedit_log		);
DECLARE_OLC_FUN( cmdedit_delete		);

/*
 * Social editor prototypes
 */
DECLARE_OLC_FUN( sedit_show		);	/* Daleken */
DECLARE_OLC_FUN( sedit_name		);	/* Daleken */
DECLARE_OLC_FUN( sedit_create		);	/* Daleken */
DECLARE_OLC_FUN( sedit_delete           );
DECLARE_OLC_FUN( sedit_cna		);	/* Daleken */
DECLARE_OLC_FUN( sedit_ona		);	/* Daleken */
DECLARE_OLC_FUN( sedit_cf		);	/* Daleken */
DECLARE_OLC_FUN( sedit_of		);	/* Daleken */
DECLARE_OLC_FUN( sedit_vf		);	/* Daleken */
DECLARE_OLC_FUN( sedit_ca		);	/* Daleken */
DECLARE_OLC_FUN( sedit_oa		);	/* Daleken */

DECLARE_OLC_FUN( cedit_show             );
DECLARE_OLC_FUN( mudstat_show		);
DECLARE_OLC_FUN( cedit_savefreq         );
DECLARE_OLC_FUN( cedit_dodgemod         );
DECLARE_OLC_FUN( cedit_parrymod         );
DECLARE_OLC_FUN( cedit_dam_pvp          );
DECLARE_OLC_FUN( cedit_dam_pvm          );
DECLARE_OLC_FUN( cedit_dam_mvp          );
DECLARE_OLC_FUN( cedit_dam_mvm          );
DECLARE_OLC_FUN( cedit_bui_sec          );
DECLARE_OLC_FUN( cedit_plr_mset         );
DECLARE_OLC_FUN( cedit_forcepc          );
DECLARE_OLC_FUN( cedit_ban_class        );
DECLARE_OLC_FUN( cedit_ban_site         );
DECLARE_OLC_FUN( cedit_pfiles           );
DECLARE_OLC_FUN( cedit_newbie_purge     );
DECLARE_OLC_FUN( cedit_regular_purge    );

/*
 * Clan editor protoytypes
 */
DECLARE_OLC_FUN( cledit_create		);	/* Daleken */
DECLARE_OLC_FUN( cledit_filename        );    
DECLARE_OLC_FUN( cledit_desc		);	/* Daleken */
DECLARE_OLC_FUN( cledit_display		);	/* Daleken */
DECLARE_OLC_FUN( cledit_leader		);	/* Daleken */
DECLARE_OLC_FUN( cledit_motto		);	/* Daleken */
DECLARE_OLC_FUN( cledit_name		);	/* Daleken */
DECLARE_OLC_FUN( cledit_recall		);	/* Daleken */
DECLARE_OLC_FUN( cledit_show		);	/* Daleken */
DECLARE_OLC_FUN( cledit_donation        );
DECLARE_OLC_FUN( cledit_obj1            );
DECLARE_OLC_FUN( cledit_obj2            );
DECLARE_OLC_FUN( cledit_obj3            );

/*
 * Rename functions
 */
DECLARE_OLC_FUN( rename_show 		);
DECLARE_OLC_FUN( rename_keyword		);
DECLARE_OLC_FUN( rename_short		);
DECLARE_OLC_FUN( rename_long		);

/*
 * Qset editor
 */
DECLARE_OLC_FUN( qset_show		);
DECLARE_OLC_FUN( qset_ow		);
DECLARE_OLC_FUN( qset_aw		);
DECLARE_OLC_FUN( qset_or		);
DECLARE_OLC_FUN( qset_ar		);
DECLARE_OLC_FUN( qset_ou		);
DECLARE_OLC_FUN( qset_au		);

extern const struct olc_cmd_type	hedit_table[];
extern const struct olc_cmd_type	redit_table[];
extern const struct olc_cmd_type	oedit_table[];
extern const struct olc_cmd_type	medit_table[];
extern const struct olc_cmd_type	aedit_table[];
extern const struct olc_cmd_type	cmdedit_table[];
extern const struct olc_cmd_type        sedit_table[];
extern const struct olc_cmd_type        cedit_table[];
extern const struct olc_cmd_type        rename_obj_table[];
extern const struct olc_cmd_type        qset_table[];

int flag_value			args ( ( const struct flag_type *flag_table,
				         char *argument) );
char *flag_string		args ( ( const struct flag_type *flag_table,
				         int bits ) );

/*
 * Connected states for editor.
 */
#define ED_NONE         0
#define ED_AREA         1
#define ED_ROOM         2
#define ED_OBJECT       3
#define ED_MOBILE       4
#define ED_HELP         5
#define ED_CMD          6
#define ED_SOCIAL       7
#define ED_CONTROL      8
#define ED_CLAN         9
#define ED_RENAME      10
#define ED_QSET        11