/*___________________________________________________________________________*
)()( 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