daleken/
daleken/data/notes/
daleken/data/player/
daleken/data/system/poses/
daleken/doc/Homepage/images/
daleken/log/
/*___________________________________________________________________________*
   )()(			  DalekenMUD 1.12 (C) 2000			)()(
   `]['		       by Martin Thomson, Lee Brooks,			`]['
    ||		       Ken Herbert and David Jacques			 ||
    || ----------------------------------------------------------------- ||
    || Envy Diku Mud improvements copyright (C) 1994 by Michael Quan,	 ||
    || David Love, Guilherme 'Willie' Arnold, and Mitchell Tse.		 ||
    || Merc Diku Mud improvments copyright (C) 1992, 1993 by Michael	 ||
    || Chastain, Michael Quan, and Mitchell Tse.			 ||
    || Original Diku Mud copyright (C) 1990, 1991			 ||
    || by Sebastian Hammer, Michael Seifert, Hans Henrik St{rfeldt,	 ||
    || Tom Madsen, and Katja Nyboe.					 ||
    || ----------------------------------------------------------------- ||
    || Any use of this software must follow the licenses of the		 ||
    || creators.  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.					 ||
    || ----------------------------------------------------------------- ||
    ||                             olc.h                                 ||
    || OLC header file.                                                  ||
 *_/<>\_________________________________________________________________/<>\_*/


/*
 * The version info.  Please use this info when reporting bugs.
 * It is displayed in the game by typing 'version' while editing.
 * Do not remove these from the code - by request of Jason Dinkel
 */
#define VERSION	"&WILAB &BOnline Creation&n [Beta 1.1]"
#define AUTHOR	"     By Jason(jdinkel@mines.colorado.edu)"
#define DATE	"     (May. 15, 1995)"
#define CREDITS "     Original by Surreality(cxw197@psu.edu) and Locke(locke@lm.com)"


/*
 * New typedefs.
 */
typedef	bool OLC_FUN	args( ( CHAR_DATA *ch, const char *argument ) );
#define DECLARE_OLC_FUN( fun )	OLC_FUN    fun


/*
 * 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_SOCIAL	5
#define ED_HELP		6
#define ED_RELIGION	7
#define ED_CLAN		8
#define ED_POSE		9
#define ED_PLANE	10
#define ED_GMPROG	11


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


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


/*
 * Structure for an OLC editor startup command.
 */
struct editor_cmd_type
{
    char *const		name;
    DO_FUN		*do_fun;
};

/*
 * Structure for the OLC helps.
 */
struct bit_table_type
{
    const char *command;
    const void *structure;
    int flags;
    const char *desc;
};

#define BIT_FLAG	1
#define BIT_STAT	2
#define BIT_VECTOR	3
#define BIT_TYPE_MASK	(1|2|4)
#define BIT_INVISIBLE	8

/*
 * Utils.
 */
AREA_DATA *get_vnum_area	args ( ( int vnum ) );
AREA_DATA *get_area_data	args ( ( int vnum ) );
void add_reset			args ( ( ROOM_INDEX_DATA *room,
					 RESET_DATA *pReset, int index ) );

/*
 * Interpreter Table Prototypes
 */
extern const struct olc_cmd_type	aedit_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	sedit_table[];
extern const struct olc_cmd_type	hedit_table[];
extern const struct olc_cmd_type	reledit_table[];
extern const struct olc_cmd_type	cedit_table[];
extern const struct olc_cmd_type	poseedit_table[];
extern const struct olc_cmd_type	pledit_table[];
extern const struct olc_cmd_type	gmpedit_table[];

/*
 * Flag help table.
 */
extern const struct bit_table_type bit_table[];

/*
 * General Functions
 */
bool edit_done			args( ( CHAR_DATA *ch ) );
AREA_DATA *get_editing_area	args( ( CHAR_DATA *ch ) );
DECLARE_OLC_FUN( show_commands		);
DECLARE_OLC_FUN( show_help		);
DECLARE_OLC_FUN( show_version		);
DECLARE_OLC_FUN( edit_delet		);
DECLARE_OLC_FUN( edit_delete		);
DECLARE_OLC_FUN( edit_gmplist		);


/*
 * Area Editor Prototypes
 */
DECLARE_OLC_FUN( aedit_age		);
DECLARE_OLC_FUN( aedit_builder		);
DECLARE_OLC_FUN( aedit_clear		);	/* Daleken */
DECLARE_OLC_FUN( aedit_count		);	/* Daleken */
DECLARE_OLC_FUN( aedit_create		);
DECLARE_OLC_FUN( aedit_desc		);	/* Daleken */
DECLARE_OLC_FUN( aedit_economy		);
DECLARE_OLC_FUN( aedit_file		);
DECLARE_OLC_FUN( aedit_lvnum		);
DECLARE_OLC_FUN( aedit_name		);
DECLARE_OLC_FUN( aedit_order		);	/* Daleken */
DECLARE_OLC_FUN( aedit_plane		);	/* Daleken */
DECLARE_OLC_FUN( aedit_recall		);
DECLARE_OLC_FUN( aedit_repop		);	/* Daleken */
DECLARE_OLC_FUN( aedit_reset		);
DECLARE_OLC_FUN( aedit_security		);
DECLARE_OLC_FUN( aedit_show		);
DECLARE_OLC_FUN( aedit_temp		);	/* Daleken */
DECLARE_OLC_FUN( aedit_uvnum		);
DECLARE_OLC_FUN( aedit_vnum		);


/*
 * Room Editor Prototypes
 */
DECLARE_OLC_FUN( redit_clone		);	/* Daleken */
DECLARE_OLC_FUN( redit_create		);
DECLARE_OLC_FUN( redit_desc		);
DECLARE_OLC_FUN( redit_down		);
DECLARE_OLC_FUN( redit_east		);
DECLARE_OLC_FUN( redit_ed		);
DECLARE_OLC_FUN( redit_format		);
DECLARE_OLC_FUN( redit_move		);
DECLARE_OLC_FUN( redit_mlist		);
DECLARE_OLC_FUN( redit_mpadd		);	/* Daleken */
DECLARE_OLC_FUN( redit_mpdelete		);	/* Daleken */
DECLARE_OLC_FUN( redit_mpedit		);	/* Daleken */
DECLARE_OLC_FUN( redit_mpshow		);	/* Daleken */
DECLARE_OLC_FUN( redit_mreset		);
DECLARE_OLC_FUN( redit_mshow		);
DECLARE_OLC_FUN( redit_name		);
DECLARE_OLC_FUN( redit_north		);
DECLARE_OLC_FUN( redit_olist		);
DECLARE_OLC_FUN( redit_oreset		);
DECLARE_OLC_FUN( redit_oshow		);
DECLARE_OLC_FUN( redit_show		);
DECLARE_OLC_FUN( redit_south		);
DECLARE_OLC_FUN( redit_up		);
DECLARE_OLC_FUN( redit_west		);


/*
 * Object Editor Prototypes
 */
DECLARE_OLC_FUN( oedit_action		);	/* Daleken */
DECLARE_OLC_FUN( oedit_addaffect	);
DECLARE_OLC_FUN( oedit_addperm		);	/* Daleken */
DECLARE_OLC_FUN( oedit_addspell         );	/* Daleken */
DECLARE_OLC_FUN( oedit_clone		);	/* Daleken */
DECLARE_OLC_FUN( oedit_condition	);	/* Daleken */
DECLARE_OLC_FUN( oedit_cost		);	/* Daleken */
DECLARE_OLC_FUN( oedit_create		);
DECLARE_OLC_FUN( oedit_delaffect	);
DECLARE_OLC_FUN( oedit_ed		);
DECLARE_OLC_FUN( oedit_level            );
DECLARE_OLC_FUN( oedit_long		);
DECLARE_OLC_FUN( oedit_mpadd		);	/* Daleken */
DECLARE_OLC_FUN( oedit_mpdelete		);	/* Daleken */
DECLARE_OLC_FUN( oedit_mpedit		);	/* Daleken */
DECLARE_OLC_FUN( oedit_mpshow		);	/* Daleken */
DECLARE_OLC_FUN( oedit_name		);
DECLARE_OLC_FUN( oedit_repop		);
DECLARE_OLC_FUN( oedit_required		);	/* Daleken */
DECLARE_OLC_FUN( oedit_rsfind		);	/* Daleken */
DECLARE_OLC_FUN( oedit_short		);
DECLARE_OLC_FUN( oedit_show		);
DECLARE_OLC_FUN( oedit_value0		);
DECLARE_OLC_FUN( oedit_value1		);
DECLARE_OLC_FUN( oedit_value2		);
DECLARE_OLC_FUN( oedit_value3		);
DECLARE_OLC_FUN( oedit_weight		);


/*
 * Mobile Editor Prototypes
 */
DECLARE_OLC_FUN( medit_align		);
DECLARE_OLC_FUN( medit_class            );	/* Daleken */
DECLARE_OLC_FUN( medit_clone		);	/* Daleken */
DECLARE_OLC_FUN( medit_create		);
DECLARE_OLC_FUN( medit_desc		);
DECLARE_OLC_FUN( medit_level		);
DECLARE_OLC_FUN( medit_long		);
DECLARE_OLC_FUN( medit_mpadd		);	/* Daleken */
DECLARE_OLC_FUN( medit_mpdelete		);	/* Daleken */
DECLARE_OLC_FUN( medit_mpedit		);	/* Daleken */
DECLARE_OLC_FUN( medit_mpshow		);	/* Daleken */
DECLARE_OLC_FUN( medit_name		);
DECLARE_OLC_FUN( medit_repop		);	/* Daleken */
DECLARE_OLC_FUN( medit_rsfind		);	/* Daleken */
DECLARE_OLC_FUN( medit_short		);
DECLARE_OLC_FUN( medit_show		);
DECLARE_OLC_FUN( medit_shop		);
DECLARE_OLC_FUN( medit_spec		);


/*
 * 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_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 */


/*
 * Help editor prototypes
 */
DECLARE_OLC_FUN( hedit_create           );	/* Daleken */
DECLARE_OLC_FUN( hedit_harea            );	/* Daleken */
DECLARE_OLC_FUN( hedit_hlist            );	/* Daleken */
DECLARE_OLC_FUN( hedit_keyword		);	/* Daleken */
DECLARE_OLC_FUN( hedit_show             );	/* Daleken */
DECLARE_OLC_FUN( hedit_text             );	/* Daleken */
DECLARE_OLC_FUN( hedit_trust            );	/* Daleken */


/*
 * Religion editor prototypes
 */
DECLARE_OLC_FUN( reledit_addskill	);	/* Daleken */
DECLARE_OLC_FUN( reledit_align		);	/* Daleken */
DECLARE_OLC_FUN( reledit_create		);	/* Daleken */
DECLARE_OLC_FUN( reledit_delskill	);	/* Daleken */
DECLARE_OLC_FUN( reledit_display	);	/* Daleken */
DECLARE_OLC_FUN( reledit_god		);	/* Daleken */
DECLARE_OLC_FUN( reledit_name		);	/* Daleken */
DECLARE_OLC_FUN( reledit_show		);	/* Daleken */
DECLARE_OLC_FUN( reledit_token		);	/* Daleken */


/*
 * Clan editor protoytypes
 */
DECLARE_OLC_FUN( cedit_addskill		);	/* Daleken */
DECLARE_OLC_FUN( cedit_class		);	/* Daleken */
DECLARE_OLC_FUN( cedit_create		);	/* Daleken */
DECLARE_OLC_FUN( cedit_delskill		);	/* Daleken */
DECLARE_OLC_FUN( cedit_desc		);	/* Daleken */
DECLARE_OLC_FUN( cedit_display		);	/* Daleken */
DECLARE_OLC_FUN( cedit_enemies		);	/* Daleken */
DECLARE_OLC_FUN( cedit_leader		);	/* Daleken */
DECLARE_OLC_FUN( cedit_motto		);	/* Daleken */
DECLARE_OLC_FUN( cedit_name		);	/* Daleken */
DECLARE_OLC_FUN( cedit_recall		);	/* Daleken */
DECLARE_OLC_FUN( cedit_religion		);	/* Daleken */
DECLARE_OLC_FUN( cedit_rules		);	/* Daleken */
DECLARE_OLC_FUN( cedit_show		);	/* Daleken */


/*
 * Pose editor functions.
 */
DECLARE_OLC_FUN( poseedit_create	);	/* Daleken */
DECLARE_OLC_FUN( poseedit_show		);	/* Daleken */
DECLARE_OLC_FUN( poseedit_tochar	);	/* Daleken */
DECLARE_OLC_FUN( poseedit_toroom	);	/* Daleken */


/*
 * Plane editor functions.
 */
DECLARE_OLC_FUN( pledit_create		);	/* Daleken */
DECLARE_OLC_FUN( pledit_show		);	/* Daleken */
DECLARE_OLC_FUN( pledit_name		);	/* Daleken */
DECLARE_OLC_FUN( pledit_minimum		);	/* Daleken */


/*
 * Global Mud Program editor functions.
 */
DECLARE_OLC_FUN( gmpedit_create		);	/* Daleken */
DECLARE_OLC_FUN( gmpedit_show		);	/* Daleken */
DECLARE_OLC_FUN( gmpedit_area		);	/* Daleken */
DECLARE_OLC_FUN( gmpedit_arglist	);	/* Daleken */
DECLARE_OLC_FUN( gmpedit_comlist	);	/* Daleken */


/*
 * Macros
 */
/* Return pointers to what is being edited. */
#define EDIT_MOB(Ch, Mob)	( Mob = (MOB_INDEX_DATA *)Ch->desc->pEdit )
#define EDIT_OBJ(Ch, Obj)	( Obj = (OBJ_INDEX_DATA *)Ch->desc->pEdit )
#define EDIT_ROOM(Ch, Room)	( Room = Ch->in_room )
#define EDIT_AREA(Ch, Area)	( Area = (AREA_DATA *)Ch->desc->pEdit )
#define EDIT_SOCIAL(Ch, Social)	( Social = (SOCIAL_DATA *)Ch->desc->pEdit )
#define EDIT_HELP(Ch, Help)	( Help = (HELP_DATA *)Ch->desc->pEdit )
#define EDIT_RELIGION(Ch, Rel)	( Rel = (RELIGION_DATA *)Ch->desc->pEdit )
#define EDIT_CLAN(Ch, Clan)	( Clan = (CLAN_DATA *)Ch->desc->pEdit )
#define EDIT_POSE(Ch, Pose)	( Pose = (POSE_DATA *)Ch->desc->pEdit )
#define EDIT_PLANE(Ch, Plane)	( Plane = (PLANE_DATA *)Ch->desc->pEdit )
#define EDIT_GMPROG(Ch, GMprg)	( GMprg = (MPROG_GLOBAL *)Ch->desc->pEdit )


/*
 * Memory Prototypes (mem.c)
 */
#define ED	EXTRA_DESCR_DATA
RESET_DATA	*new_reset_data		args( ( void ) );
void		free_reset_data		args( ( RESET_DATA *pReset ) );
AREA_DATA	*new_area		args( ( void ) );
void		free_area		args( ( AREA_DATA *pArea ) );
ED		*new_extra_descr	args( ( void ) );
void		free_extra_descr	args( ( ED *pExtra ) );
ROOM_INDEX_DATA *new_room_index		args( ( void ) );
void		free_room_index		args( ( ROOM_INDEX_DATA *pRoom ) );
AFFECT_DATA	*new_affect		args( ( void ) );
void		free_affect		args( ( AFFECT_DATA* pAf ) );
SHOP_DATA	*new_shop		args( ( void ) );
void		free_shop		args( ( SHOP_DATA *pShop ) );
OBJ_INDEX_DATA	*new_obj_index		args( ( void ) );
void		free_obj_index		args( ( OBJ_INDEX_DATA *pObj ) );
MOB_INDEX_DATA	*new_mob_index		args( ( void ) );
void		free_mob_index		args( ( MOB_INDEX_DATA *pMob ) );
MPROG_DATA      *new_mprog              args( ( void ) );
void            free_mprog              args( ( MPROG_DATA *mprg ) );
SOCIAL_DATA     *new_social             args( ( char *name ) );
void            free_social             args( ( SOCIAL_DATA *pSocial ) );
HELP_DATA       *new_help               args( ( void ) );
void            free_help               args( ( HELP_DATA *pHelp ) );
ALIAS_DATA	*new_alias		args( ( void ) );
void		free_alias		args( ( ALIAS_DATA *al ) );
MPROG_GLOBAL	*new_mprog_global	args( ( void ) );
void		free_mprog_global	args( ( MPROG_GLOBAL *mprg ) );
#undef	ED