/
UltraEnvy/
UltraEnvy/log/
UltraEnvy/newdocs/
UltraEnvy/newdocs/MobProg2.1/
UltraEnvy/newdocs/OLC11/
UltraEnvy/newdocs/OLC11/area/
UltraEnvy/newdocs/OLC11/doc/
UltraEnvy/newdocs/OLC11/options/
UltraEnvy/player/
UltraEnvy/src/Contributions/
/***************************************************************************
 *  File: olc.h                                                            *
 *                                                                         *
 *  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.                                                  *
 *                                                                         *
 *  This code was freely distributed with the The Isles 1.1 source code,   *
 *  and has been used here for OLC - OLC would not be what it is without   *
 *  all the previous coders who released their source code.                *
 *                                                                         *
 ***************************************************************************/

/*
 * This is a header file for all the OLC files.  Feel free to copy it into
 * merc.h if you wish.  Many of these routines may be handy elsewhere in
 * the code.  - Jason Dinkel
 */



/*
 * 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	"ILAB Online Creation [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, char *argument ) );
#define DECLARE_OLC_FUN( fun )	OLC_FUN    fun


/*
 * Connected states for editor.
 */
#define ED_AREA 1
#define ED_ROOM 2
#define ED_OBJECT 3
#define ED_MOBILE 4
#define ED_MPROG  5


/*
 * 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 mpedit 	args( ( CHAR_DATA * ch, char *argument ) );


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


/*
 * Structure for an OLC editor command.
 */
struct olc_cmd_type
{
    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;
};


/*
 * Utils.
 */
AREA_DATA *get_vnum_area 	args( ( int vnum ) );
AREA_DATA *get_area_data 	args( ( int vnum ) );
int flag_value 			args( ( const struct flag_type * flag_table,
		     			char *argument ) );
char *flag_string 		args( ( const struct flag_type * flag_table,
					int bits ) );
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 mpedit_table[];


/*
 * General Functions
 */
bool show_commands 	args( ( CHAR_DATA * ch, char *argument ) );
bool show_help 		args( ( CHAR_DATA * ch, char *argument ) );
bool edit_done 		args( ( CHAR_DATA * ch, char *argument ) );
bool show_version 	args( ( CHAR_DATA * ch, char *argument ) );


/*
 * Area Editor Prototypes
 */
DECLARE_OLC_FUN( aedit_show	);
DECLARE_OLC_FUN( aedit_create	);
DECLARE_OLC_FUN( aedit_name	);
DECLARE_OLC_FUN( aedit_file	);
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	);


/*
 * 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	);


/*
 * 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		);


/*
 * 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	);


/*
 * MobProg Editor Prototypes
 */
DECLARE_OLC_FUN( mpedit_show	);
DECLARE_OLC_FUN( mpedit_add	);
DECLARE_OLC_FUN( mpedit_delete	);
DECLARE_OLC_FUN( mpedit_create	);
DECLARE_OLC_FUN( mpedit_copy	);
DECLARE_OLC_FUN( mpedit_trigger	);
DECLARE_OLC_FUN( mpedit_program	);


/*
 * Macros
 */
#define TOGGLE_BIT(var, bit)    ((var) ^= (bit))



/*
 * Prototypes
 */


/* mem.c - memory prototypes */
#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 ) );
EXIT_DATA *		new_exit 	args( ( void ) );
void 			free_exit 	args( ( EXIT_DATA * pExit ) );
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 ) );
#undef	ED

/* olc.c - miscellaneous prototypes */
int 		mprog_count args( ( MOB_INDEX_DATA * pMob ) );
MPROG_DATA *	edit_mprog args( ( CHAR_DATA * ch, MOB_INDEX_DATA * pMob ) );
void 		show_mprog args( ( CHAR_DATA * ch, MPROG_DATA * pMobProg ) );
void 		delete_mprog args( ( CHAR_DATA * ch, int pnum ) );

/* olc_act.c - miscellaneous prototypes */
MOB_INDEX_DATA *	edit_mob args( ( CHAR_DATA * ch ) );
OBJ_INDEX_DATA *	edit_obj args( ( CHAR_DATA * ch ) );
ROOM_INDEX_DATA *	edit_room args( ( CHAR_DATA * ch ) );
AREA_DATA *	edit_area args( ( CHAR_DATA * ch ) );
bool	is_builder args( ( CHAR_DATA * ch, AREA_DATA * area ) );