/
area/city/
area/crypts/
area/guilds/
area/psuedowild/
area/religion/
data/documents/MPDocs/
data/html/
data/mobprogs/
data/quest/
data/world/
data/world/_utilities/
data/world/images/
design/html/
notes/
player/
/***************************************************************************
 *  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.0, ROM 2.3 modified]\n\r" \
		"     Port a ROM 2.4 v1.8\n\r"
#define AUTHOR	"     By Jason(jdinkel@mines.colorado.edu)\n\r" \
                "     Modified for use with ROM 2.3\n\r"        \
                "     By Hans Birkeland (hansbi@ifi.uio.no)\n\r" \
                "     Modificado para uso en ROM 2.4b6\n\r"	\
                "     Por Ivan Toledo (itoledo@ctcreuna.cl)\n\r"
#define DATE	"     (Apr. 7, 1995 - ROM mod, Apr 16, 1995)\n\r" \
		"     (Port a ROM 2.4 - Nov 2, 1996)\n\r" \
		"     Version actual : 1.8 - Sep 8, 1998\n\r"
#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


/* Command procedures needed ROM OLC */
DECLARE_DO_FUN(    do_help    );
DECLARE_SPELL_FUN( spell_null );


DECLARE_OLC_FUN( redit_copy );
DECLARE_OLC_FUN( medit_copy );
DECLARE_OLC_FUN( oedit_copy );


DECLARE_OLC_FUN     ( qedit_show    );
DECLARE_OLC_FUN     ( qedit_name    );
DECLARE_OLC_FUN     ( qedit_rpname  );
DECLARE_OLC_FUN     ( qedit_level   );
DECLARE_OLC_FUN     ( qedit_new     );
/*
 * 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_MPCODE	5
#define ED_HELP		6
#define ED_QUEST    7



/*
 * 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 ) );
void	hedit		    args( ( CHAR_DATA *, char * ) );
void    qedit           (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[];
extern const struct olc_cmd_type	hedit_table[];
extern const struct olc_cmd_type    qedit_table[];


/*
 * Editor Commands.
 */
DECLARE_DO_FUN( do_aedit        );
DECLARE_DO_FUN( do_redit        );
DECLARE_DO_FUN( do_oedit        );
DECLARE_DO_FUN( do_medit        );
DECLARE_DO_FUN( do_mpedit       );
DECLARE_DO_FUN( do_hedit        );
DECLARE_DO_FUN( do_qedit        );

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


/*
 * 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_mreset		);
DECLARE_OLC_FUN( redit_oreset		);
DECLARE_OLC_FUN( redit_mlist		);
DECLARE_OLC_FUN( redit_rlist		);
DECLARE_OLC_FUN( redit_olist		);
DECLARE_OLC_FUN( redit_mshow		);
DECLARE_OLC_FUN( redit_oshow		);
DECLARE_OLC_FUN( redit_heal		);
DECLARE_OLC_FUN( redit_mana		);
DECLARE_OLC_FUN( redit_clan		);
DECLARE_OLC_FUN( redit_owner		);
DECLARE_OLC_FUN( redit_room		);
DECLARE_OLC_FUN( redit_sector		);


/*
 * 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_addapply		);
DECLARE_OLC_FUN( oedit_addresistance);
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		);  /* ROM */
DECLARE_OLC_FUN( oedit_weight		);
DECLARE_OLC_FUN( oedit_cost		);
DECLARE_OLC_FUN( oedit_ed		);

DECLARE_OLC_FUN( oedit_extra            );  /* ROM */
DECLARE_OLC_FUN( oedit_wear             );  /* ROM */
DECLARE_OLC_FUN( oedit_type             );  /* ROM */
DECLARE_OLC_FUN( oedit_affect           );  /* ROM */
DECLARE_OLC_FUN( oedit_material		);  /* ROM */
DECLARE_OLC_FUN( oedit_level            );  /* ROM */
DECLARE_OLC_FUN( oedit_condition        );  /* ROM */

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

DECLARE_OLC_FUN( medit_sex		);  /* ROM */
DECLARE_OLC_FUN( medit_act		);  /* ROM */
DECLARE_OLC_FUN( medit_affect		);  /* ROM */
DECLARE_OLC_FUN( medit_affect2		);  /* ROM */
DECLARE_OLC_FUN( medit_ac		);  /* ROM */
DECLARE_OLC_FUN( medit_form		);  /* ROM */
DECLARE_OLC_FUN( medit_part		);  /* ROM */
DECLARE_OLC_FUN( medit_imm		);  /* ROM */
DECLARE_OLC_FUN( medit_res		);  /* ROM */
DECLARE_OLC_FUN( medit_vuln		);  /* ROM */
DECLARE_OLC_FUN( medit_material		);  /* ROM */
DECLARE_OLC_FUN( medit_off		);  /* ROM */
DECLARE_OLC_FUN( medit_size		);  /* ROM */
DECLARE_OLC_FUN( medit_hitdice		);  /* ROM */
DECLARE_OLC_FUN( medit_manadice		);  /* ROM */
DECLARE_OLC_FUN( medit_damdice		);  /* ROM */
DECLARE_OLC_FUN( medit_race		);  /* ROM */
DECLARE_OLC_FUN( medit_position		);  /* ROM */
DECLARE_OLC_FUN( medit_gold		);  /* ROM */
DECLARE_OLC_FUN( medit_hitroll		);  /* ROM */
DECLARE_OLC_FUN( medit_damtype		);  /* ROM */
DECLARE_OLC_FUN( medit_group		);  /* ROM */
DECLARE_OLC_FUN( medit_addmprog		);  /* ROM */
DECLARE_OLC_FUN( medit_delmprog		);  /* ROM */

/* Mobprog editor */
DECLARE_OLC_FUN( mpedit_create		);
DECLARE_OLC_FUN( mpedit_code		);
DECLARE_OLC_FUN( mpedit_show		);
DECLARE_OLC_FUN( mpedit_list		);

/* Editor de helps */
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_show		);
DECLARE_OLC_FUN( hedit_list		);

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

/* 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_MPCODE(Ch, Code)   ( Code = (MPROG_CODE*)Ch->desc->pEdit )


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

void		show_liqlist		args ( ( CHAR_DATA *ch ) );
void		show_damlist		args ( ( CHAR_DATA *ch ) );

char *		mprog_type_to_name	args ( ( int type ) );
MPROG_LIST      *new_mprog              args ( ( void ) );
void            free_mprog              args ( ( MPROG_LIST *mp ) );
MPROG_CODE	*new_mpcode		args ( (void) );
void		free_mpcode		args ( ( MPROG_CODE *pMcode));


void do_set_wilderness_new        args ((CHAR_DATA * ch, char *argument));

#define FOREST_NAME                 9
#define FOREST_MOOD                 4
#define FOREST_TERRAIN              4
#define FOREST_WIND                 4

#define SWAMP_NAME                  5
#define SWAMP_TERRAIN               4
#define SWAMP_WIND                  5
#define SWAMP_MOOD                  5

#define PLAINS_NAME                 3
#define PLAINS_TERRAIN              4
#define PLAINS_WIND                 4
#define PLAINS_MOOD                 5

#define MOUNTIANS_NAME              5
#define MOUNTIANS_TERRAIN           4
#define MOUNTIANS_WIND              3
#define MOUNTIANS_MOOD              4

#define DESERT_NAME                6
#define DESERT_TERRAIN        5
#define DESERT_WIND                6
#define DESERT_MOOD                8

#define SHALLOW_NAME                3
#define SHALLOW_TERRAIN        3
#define SHALLOW_WIND                3
#define SHALLOW_MOOD                3

#define DEEP_OCEAN_NAME        3
#define DEEP_OCEAN_TERRAIN        3
#define DEEP_OCEAN_WIND        3
#define DEEP_OCEAN_MOOD        3

#define CAVE_NAME       3
#define CAVE_TERRAIN    3
#define CAVE_WIND       3
#define CAVE_MOOD       3

char * sector_by_number_name            args ((int sector));
char * sector_by_number_wind            args ((int sector));
char * sector_by_number_mood            args ((int sector));
char * sector_by_number_terrain         args ((int sector));


struct sector_cave_name_type
{
        char *         name;
};

struct sector_cave_wind_type
{
        char *         name;
};

struct sector_cave_mood_type
{
        char *         name;
};

struct sector_cave_terrain_type
{
        char *         name;
};

struct sector_forest_name_type
{
        char *         name;
};

struct sector_forest_wind_type
{
        char *         name;
};

struct sector_forest_mood_type
{
        char *         name;
};

struct sector_forest_terrain_type
{
        char *         name;
};

struct sector_swamp_name_type
{
        char *         name;
};

struct sector_swamp_wind_type
{
        char *         name;
};

struct sector_swamp_mood_type
{
        char *         name;
};

struct sector_swamp_terrain_type
{
        char *         name;
};


struct sector_plains_name_type
{
        char *         name;
};

struct sector_plains_wind_type
{
        char *         name;
};

struct sector_plains_mood_type
{
        char *         name;
};

struct sector_plains_terrain_type
{
        char *         name;
};


struct sector_mountians_name_type
{
        char *         name;
};

struct sector_mountians_wind_type
{
        char *         name;
};

struct sector_mountians_mood_type
{
        char *         name;
};

struct sector_mountians_terrain_type
{
        char *         name;
};


struct sector_desert_name_type
{
        char *         name;
};

struct sector_desert_wind_type
{
        char *         name;
};

struct sector_desert_mood_type
{
        char *         name;
};

struct sector_desert_terrain_type
{
        char *         name;
};

struct sector_shallow_water_name_type
{
        char *         name;
};

struct sector_shallow_water_wind_type
{
        char *         name;
};

struct sector_shallow_water_mood_type
{
        char *         name;
};

struct sector_shallow_water_terrain_type
{
        char *         name;
};

struct sector_deep_water_name_type
{
        char *         name;
};

struct sector_deep_water_wind_type
{
        char *         name;
};

struct sector_deep_water_mood_type
{
        char *         name;
};

struct sector_deep_water_terrain_type
{
        char *         name;
};




extern const struct sector_swamp_name_type              sector_swamp_name_table              [];
extern const struct sector_swamp_mood_type              sector_swamp_mood_table              [];
extern const struct sector_swamp_terrain_type           sector_swamp_terrain_table              [];
extern const struct sector_swamp_wind_type              sector_swamp_wind_table              [];
extern const struct sector_forest_name_type             sector_forest_name_table              [];
extern const struct sector_forest_mood_type             sector_forest_mood_table              [];
extern const struct sector_forest_terrain_type          sector_forest_terrain_table              [];
extern const struct sector_forest_wind_type             sector_forest_wind_table              [];
extern const struct sector_plains_name_type             sector_plains_name_table              [];
extern const struct sector_plains_mood_type             sector_plains_mood_table              [];
extern const struct sector_plains_terrain_type          sector_plains_terrain_table              [];
extern const struct sector_plains_wind_type             sector_plains_wind_table              [];
extern const struct sector_mountians_name_type          sector_mountians_name_table              [];
extern const struct sector_mountians_mood_type          sector_mountians_mood_table              [];
extern const struct sector_mountians_terrain_type       sector_mountians_terrain_table     [];
extern const struct sector_mountians_wind_type          sector_mountians_wind_table              [];
extern const struct sector_desert_name_type             sector_desert_name_table                      [];
extern const struct sector_desert_mood_type             sector_desert_mood_table                [];
extern const struct sector_desert_terrain_type          sector_desert_terrain_table             [];
extern const struct sector_desert_wind_type             sector_desert_wind_table                [];
extern const struct sector_shallow_water_name_type      sector_shallow_water_name_table         [];
extern const struct sector_shallow_water_mood_type      sector_shallow_water_mood_table         [];
extern const struct sector_shallow_water_terrain_type   sector_shallow_water_terrain_table      [];
extern const struct sector_shallow_water_wind_type      sector_shallow_water_wind_table         [];
extern const struct sector_deep_water_name_type         sector_deep_water_name_table            [];
extern const struct sector_deep_water_mood_type         sector_deep_water_mood_table            [];
extern const struct sector_deep_water_terrain_type      sector_deep_water_terrain_table         [];
extern const struct sector_deep_water_wind_type         sector_deep_water_wind_table            [];
extern const struct sector_cave_name_type               sector_cave_name_table                 [];
extern const struct sector_cave_mood_type               sector_cave_mood_table                  [];
extern const struct sector_cave_terrain_type            sector_cave_terrain_table               [];
extern const struct sector_cave_wind_type               sector_cave_wind_table                  [];