/***************************************************************************
* 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" \
" Modified for use with RaM Fire\n\r" \
" By Nick Phillips (eudoxus@fastmail.fm)\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" \
" (Ported to RaM Fire - Dec 9, 2008\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 */
/*
void do_help( CHAR_DATA *ch, const char *argument );
void spell_null( int sn, int level, CHAR_DATA *ch, void *vo, int target );
*/
/*
* 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
/*
* Interpreter Prototypes
*/
void aedit( CHAR_DATA *ch, const char *argument );
void redit( CHAR_DATA *ch, const char *argument );
void medit( CHAR_DATA *ch, const char *argument );
void oedit( CHAR_DATA *ch, const char *argument );
void mpedit( CHAR_DATA *ch, const char *argument );
void hedit( CHAR_DATA *ch, const char *argument );
/*
* 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;
bool (*olc_fun)( CHAR_DATA *ch, const char *argument );
};
/*
* Structure for an OLC editor startup command.
*/
struct editor_cmd_type
{
const char * const name;
void (*do_fun)( CHAR_DATA *ch, const char *argument );
};
/*
* Utils.
*/
AREA_DATA *get_vnum_area( int vnum );
AREA_DATA *get_area_data( int vnum );
int flag_value( const struct flag_type *flag_table, const char *argument );
const char *flag_string( const struct flag_type *flag_table, int bits );
void add_reset( 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[];
/*
* Editor Commands.
*/
/*
void do_aedit( CHAR_DATA *ch, const char *argument );
void do_redit( CHAR_DATA *ch, const char *argument );
void do_oedit( CHAR_DATA *ch, const char *argument );
void do_medit( CHAR_DATA *ch, const char *argument );
void do_mpedit( CHAR_DATA *ch, const char *argument );
void do_hedit( CHAR_DATA *ch, const char *argument );
*/
/*
* General Functions
*/
bool show_commands( CHAR_DATA *ch, const char *argument );
bool show_help( CHAR_DATA *ch, const char *argument );
bool edit_done( CHAR_DATA *ch );
bool show_version( CHAR_DATA *ch, const char *argument );
/*
* Area Editor Prototypes
*/
bool aedit_show( CHAR_DATA *ch, const char *argument );
bool aedit_create( CHAR_DATA *ch, const char *argument );
bool aedit_name( CHAR_DATA *ch, const char *argument );
bool aedit_file( CHAR_DATA *ch, const char *argument );
bool aedit_age( CHAR_DATA *ch, const char *argument );
/* DECLARE_OLC_FUN( aedit_recall ); ROM OLC */
bool aedit_reset( CHAR_DATA *ch, const char *argument );
bool aedit_security( CHAR_DATA *ch, const char *argument );
bool aedit_builder( CHAR_DATA *ch, const char *argument );
bool aedit_vnum( CHAR_DATA *ch, const char *argument );
bool aedit_lvnum( CHAR_DATA *ch, const char *argument );
bool aedit_uvnum( CHAR_DATA *ch, const char *argument );
bool aedit_credits( CHAR_DATA *ch, const char *argument );
/*
* Room Editor Prototypes
*/
bool redit_show( CHAR_DATA *ch, const char *argument );
bool redit_create( CHAR_DATA *ch, const char *argument );
bool redit_name( CHAR_DATA *ch, const char *argument );
bool redit_desc( CHAR_DATA *ch, const char *argument );
bool redit_ed( CHAR_DATA *ch, const char *argument );
bool redit_format( CHAR_DATA *ch, const char *argument );
bool redit_north( CHAR_DATA *ch, const char *argument );
bool redit_south( CHAR_DATA *ch, const char *argument );
bool redit_east( CHAR_DATA *ch, const char *argument );
bool redit_west( CHAR_DATA *ch, const char *argument );
bool redit_up( CHAR_DATA *ch, const char *argument );
bool redit_down( CHAR_DATA *ch, const char *argument );
bool redit_mreset( CHAR_DATA *ch, const char *argument );
bool redit_oreset( CHAR_DATA *ch, const char *argument );
bool redit_mlist( CHAR_DATA *ch, const char *argument );
bool redit_rlist( CHAR_DATA *ch, const char *argument );
bool redit_olist( CHAR_DATA *ch, const char *argument );
bool redit_mshow( CHAR_DATA *ch, const char *argument );
bool redit_oshow( CHAR_DATA *ch, const char *argument );
bool redit_heal( CHAR_DATA *ch, const char *argument );
bool redit_mana( CHAR_DATA *ch, const char *argument );
bool redit_clan( CHAR_DATA *ch, const char *argument );
bool redit_owner( CHAR_DATA *ch, const char *argument );
bool redit_room( CHAR_DATA *ch, const char *argument );
bool redit_sector( CHAR_DATA *ch, const char *argument );
/*
* Object Editor Prototypes
*/
bool oedit_show( CHAR_DATA *ch, const char *argument );
bool oedit_create( CHAR_DATA *ch, const char *argument );
bool oedit_name( CHAR_DATA *ch, const char *argument );
bool oedit_short( CHAR_DATA *ch, const char *argument );
bool oedit_long( CHAR_DATA *ch, const char *argument );
bool oedit_addaffect( CHAR_DATA *ch, const char *argument );
bool oedit_addapply( CHAR_DATA *ch, const char *argument );
bool oedit_delaffect( CHAR_DATA *ch, const char *argument );
bool oedit_value0( CHAR_DATA *ch, const char *argument );
bool oedit_value1( CHAR_DATA *ch, const char *argument );
bool oedit_value2( CHAR_DATA *ch, const char *argument );
bool oedit_value3( CHAR_DATA *ch, const char *argument );
bool oedit_value4( CHAR_DATA *ch, const char *argument );
bool oedit_weight( CHAR_DATA *ch, const char *argument );
bool oedit_cost( CHAR_DATA *ch, const char *argument );
bool oedit_ed( CHAR_DATA *ch, const char *argument );
/* ROM */
bool oedit_extra( CHAR_DATA *ch, const char *argument );
bool oedit_wear( CHAR_DATA *ch, const char *argument );
bool oedit_type( CHAR_DATA *ch, const char *argument );
bool oedit_affect( CHAR_DATA *ch, const char *argument );
bool oedit_material( CHAR_DATA *ch, const char *argument );
bool oedit_level( CHAR_DATA *ch, const char *argument );
bool oedit_condition( CHAR_DATA *ch, const char *argument );
/*
* Mobile Editor Prototypes
*/
bool medit_show( CHAR_DATA *ch, const char *argument );
bool medit_create( CHAR_DATA *ch, const char *argument );
bool medit_name( CHAR_DATA *ch, const char *argument );
bool medit_short( CHAR_DATA *ch, const char *argument );
bool medit_long( CHAR_DATA *ch, const char *argument );
bool medit_shop( CHAR_DATA *ch, const char *argument );
bool medit_desc( CHAR_DATA *ch, const char *argument );
bool medit_level( CHAR_DATA *ch, const char *argument );
bool medit_align( CHAR_DATA *ch, const char *argument );
bool medit_spec( CHAR_DATA *ch, const char *argument );
/* ROM */
bool medit_sex( CHAR_DATA *ch, const char *argument );
bool medit_act( CHAR_DATA *ch, const char *argument );
bool medit_affect( CHAR_DATA *ch, const char *argument );
bool medit_ac( CHAR_DATA *ch, const char *argument );
bool medit_form( CHAR_DATA *ch, const char *argument );
bool medit_part( CHAR_DATA *ch, const char *argument );
bool medit_imm( CHAR_DATA *ch, const char *argument );
bool medit_res( CHAR_DATA *ch, const char *argument );
bool medit_vuln( CHAR_DATA *ch, const char *argument );
bool medit_material( CHAR_DATA *ch, const char *argument );
bool medit_off( CHAR_DATA *ch, const char *argument );
bool medit_size( CHAR_DATA *ch, const char *argument );
bool medit_hitdice( CHAR_DATA *ch, const char *argument );
bool medit_manadice( CHAR_DATA *ch, const char *argument );
bool medit_damdice( CHAR_DATA *ch, const char *argument );
bool medit_race( CHAR_DATA *ch, const char *argument );
bool medit_position( CHAR_DATA *ch, const char *argument );
bool medit_gold( CHAR_DATA *ch, const char *argument );
bool medit_hitroll( CHAR_DATA *ch, const char *argument );
bool medit_damtype( CHAR_DATA *ch, const char *argument );
bool medit_group( CHAR_DATA *ch, const char *argument );
bool medit_addmprog( CHAR_DATA *ch, const char *argument );
bool medit_delmprog( CHAR_DATA *ch, const char *argument );
/* Mobprog editor */
bool mpedit_create( CHAR_DATA *ch, const char *argument );
bool mpedit_code( CHAR_DATA *ch, const char *argument );
bool mpedit_show( CHAR_DATA *ch, const char *argument );
bool mpedit_list( CHAR_DATA *ch, const char *argument );
/* Help editors */
bool hedit_keyword( CHAR_DATA *ch, const char *argument );
bool hedit_text( CHAR_DATA *ch, const char *argument );
bool hedit_new( CHAR_DATA *ch, const char *argument );
bool hedit_level( CHAR_DATA *ch, const char *argument );
bool hedit_delete( CHAR_DATA *ch, const char *argument );
bool hedit_show( CHAR_DATA *ch, const char *argument );
bool hedit_list( CHAR_DATA *ch, const char *argument );
/*
* 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( void );
void free_reset_data( RESET_DATA *pReset );
AREA_DATA *new_area( void );
void free_area( AREA_DATA *pArea );
EXIT_DATA *new_exit( void );
void free_exit( EXIT_DATA *pExit );
/*
ED *new_extra_descr( void );
void free_extra_descr( ED *pExtra );
*/
ROOM_INDEX_DATA *new_room_index( void );
void free_room_index( ROOM_INDEX_DATA *pRoom );
/*
AFFECT_DATA *new_affect( void );
void free_affect( AFFECT_DATA* pAf );
*/
SHOP_DATA *new_shop( void );
void free_shop( SHOP_DATA *pShop );
OBJ_INDEX_DATA *new_obj_index( void );
void free_obj_index( OBJ_INDEX_DATA *pObj );
MOB_INDEX_DATA *new_mob_index( void );
void free_mob_index( MOB_INDEX_DATA *pMob );
#undef ED
void show_liqlist( CHAR_DATA *ch );
void show_damlist( CHAR_DATA *ch );
const char * mprog_type_to_name( int type );
MPROG_LIST *new_mprog( void );
void free_mprog( MPROG_LIST *mp );
MPROG_CODE *new_mpcode(void);
void free_mpcode( MPROG_CODE *pMcode);