/* * RAM $Id: olc.h 66 2009-01-05 00:18:53Z quixadhal $ */ /*************************************************************************** * 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]\r\n" \ " Port a ROM 2.4 v1.8\r\n" #define AUTHOR " By Jason(jdinkel@mines.colorado.edu)\r\n" \ " Modified for use with ROM 2.3\r\n" \ " By Hans Birkeland (hansbi@ifi.uio.no)\r\n" \ " Modificado para uso en ROM 2.4b6\r\n" \ " Por Ivan Toledo (itoledo@ctcreuna.cl)\r\n" \ " Modified for use with RaM Fire\r\n" \ " By Nick Phillips (eudoxus@fastmail.fm)\r\n" #define DATE " (Apr. 7, 1995 - ROM mod, Apr 16, 1995)\r\n" \ " (Port a ROM 2.4 - Nov 2, 1996)\r\n" \ " Version actual : 1.8 - Sep 8, 1998\r\n" \ " (Ported to RaM Fire - Dec 9, 2008\r\n" #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 ); void add_reset( ROOM_INDEX_DATA *room, RESET_DATA *pReset, int reset_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 run_olc_editor args( ( DESCRIPTOR_DATA *d ) ); char *olc_ed_name args( ( CHAR_DATA *ch ) ); char *olc_ed_vnum args( ( CHAR_DATA *ch ) ); void show_olc_cmds( CHAR_DATA *ch, const struct olc_cmd_type *olc_table ); void display_resets( CHAR_DATA *ch ); 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 ); void show_flag_cmds( CHAR_DATA *ch, const struct flag_type *flag_table ); void show_skill_cmds( CHAR_DATA *ch, int tar ); void show_spec_cmds( CHAR_DATA *ch ); bool check_range( int lower, int upper ); bool change_exit( CHAR_DATA *ch, const char *argument, int door ); int wear_loc( int bits, int count ); int wear_bit( int loc ); void show_obj_values( CHAR_DATA *ch, OBJ_INDEX_DATA *obj ); bool set_obj_values( CHAR_DATA *ch, OBJ_INDEX_DATA *pObj, int value_num, const char *argument ); bool set_value( CHAR_DATA *ch, OBJ_INDEX_DATA *pObj, const char *argument, int value ); bool oedit_values( CHAR_DATA *ch, const char *argument, int value ); /* * OLC Save */ char *fix_string( const char *str ); void save_area_list( void ); char *fwrite_flag( int flags, char buf[] ); void save_mobprogs( FILE * fp, AREA_DATA *pArea ); void save_mobile( FILE * fp, MOB_INDEX_DATA *pMobIndex ); void save_mobiles( FILE * fp, AREA_DATA *pArea ); void save_object( FILE * fp, OBJ_INDEX_DATA *pObjIndex ); void save_objects( FILE * fp, AREA_DATA *pArea ); void save_rooms( FILE * fp, AREA_DATA *pArea ); void save_specials( FILE * fp, AREA_DATA *pArea ); void save_door_resets( FILE * fp, AREA_DATA *pArea ); void save_resets( FILE * fp, AREA_DATA *pArea ); void save_shops( FILE * fp, AREA_DATA *pArea ); void save_helps( FILE * fp, HELP_AREA *ha ); void save_other_helps( CHAR_DATA *ch ); void save_area( AREA_DATA *pArea ); /* * String Editing Functions */ void string_edit( CHAR_DATA *ch, char **pString ); void string_append( CHAR_DATA *ch, char **pString ); char *string_replace( char *orig, const char *pOld, const char *pNew ); void string_add( CHAR_DATA *ch, const char *argument ); char *format_string( char *oldstring /* , bool fSpace */ ); const char *first_arg( const char *argument, char *arg_first, bool fCase ); char *string_unpad( char *argument ); char *string_proper( char *argument ); char *string_linedel( char *string, int line ); char *string_lineadd( char *string, char *newstr, int line ); char *getline( char *str, char *buf ); char *numlineas( char *string ); /* * 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_armor( 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 */ HELP_AREA *get_help_area( HELP_DATA *help ); 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 */ void show_liqlist( CHAR_DATA *ch ); void show_damlist( CHAR_DATA *ch ); const char *mprog_type_to_name( int type );