/*************************************************************************** * 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.00\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.4v4\n\r" \ " Por Birdie (itoledo@ramses.centic.utem.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" #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); /* * Connected states for editor. */ #define ED_AREA 1 #define ED_ROOM 2 #define ED_OBJECT 3 #define ED_MOBILE 4 #define ED_HELP 5 #define ED_RACE 6 /* * 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 hedit args((CHAR_DATA * ch, char *argument)); void raedit 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((long vnum)); AREA_DATA *get_area_data args((long 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 hedit_table[]; extern const struct olc_cmd_type raedit_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_hedit); DECLARE_DO_FUN(do_raedit); /* * 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)); bool check_range args((int lower, int upper)); void show_obj_values args((CHAR_DATA * ch, OBJ_INDEX_DATA * obj)); bool set_obj_values args((CHAR_DATA * ch, OBJ_INDEX_DATA * pObj, int value_num, char *argument)); int wear_bit args((int loc)); /* * Race Editor Protos */ DECLARE_OLC_FUN(raedit_act); DECLARE_OLC_FUN(raedit_aff); DECLARE_OLC_FUN(raedit_create); DECLARE_OLC_FUN(raedit_delete); DECLARE_OLC_FUN(raedit_feeds); DECLARE_OLC_FUN(raedit_form); DECLARE_OLC_FUN(raedit_gname); DECLARE_OLC_FUN(raedit_imm); DECLARE_OLC_FUN(raedit_life); DECLARE_OLC_FUN(raedit_max); DECLARE_OLC_FUN(raedit_min); DECLARE_OLC_FUN(raedit_name); DECLARE_OLC_FUN(raedit_off); DECLARE_OLC_FUN(raedit_parts); DECLARE_OLC_FUN(raedit_pc); DECLARE_OLC_FUN(raedit_points); DECLARE_OLC_FUN(raedit_res); DECLARE_OLC_FUN(raedit_senses); DECLARE_OLC_FUN(raedit_sex); DECLARE_OLC_FUN(raedit_show); DECLARE_OLC_FUN(raedit_size); DECLARE_OLC_FUN(raedit_skills); DECLARE_OLC_FUN(raedit_stats); DECLARE_OLC_FUN(raedit_ver); DECLARE_OLC_FUN(raedit_vuln); DECLARE_OLC_FUN(raedit_wname); /* * 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_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_delete); /* * 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); /* 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 */ DECLARE_OLC_FUN(oedit_timer); /* ROM */ DECLARE_OLC_FUN(oedit_delete); /* 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_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_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_tarifa); /* ROM */ DECLARE_OLC_FUN(medit_hitroll); /* ROM */ DECLARE_OLC_FUN(medit_camino); /* ROM */ DECLARE_OLC_FUN(medit_damtype); /* ROM */ DECLARE_OLC_FUN(medit_delete); /* ROM */ /* Help Editor - kermit 1/98 */ DECLARE_OLC_FUN(hedit_show); DECLARE_OLC_FUN(hedit_make); DECLARE_OLC_FUN(hedit_desc); DECLARE_OLC_FUN(hedit_level); DECLARE_OLC_FUN(hedit_keywords); DECLARE_OLC_FUN(hedit_delete); /* * Macros */ #define IS_SWITCHED( ch ) ( ch->desc->original ) /* ROM OLC */ #define IS_BUILDER(ch, Area) ( !IS_SWITCHED( ch ) && \ ( ch->pcdata->security >= 2 \ || !str_infix( Area->builders, ch->name ) \ || !str_infix( Area->builders, "All" ) ) ) #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_RACE(Ch, Race) ( Race = (RACE_DATA *)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)); #define EDIT_HELP(Ch, Help) ( Help = (HELP_DATA *)Ch->desc->pEdit ) HELP_DATA *new_help args((void)); RACE_DATA *new_race args((void)); void free_help args((HELP_DATA * pHelp)); void save_helps args((void)); #define REDIT( fun ) bool fun( CHAR_DATA *ch, char *argument ) #define OEDIT( fun ) bool fun( CHAR_DATA *ch, char *argument ) #define MEDIT( fun ) bool fun( CHAR_DATA *ch, char *argument ) #define AEDIT( fun ) bool fun( CHAR_DATA *ch, char *argument ) #define HEDIT( fun ) bool fun( CHAR_DATA *ch, char *argument ) #define RAEDIT( fun ) bool fun( CHAR_DATA *ch, char *argument ) struct olc_help_type { char *command; const void *structure; char *desc; }; extern const struct olc_cmd_type mpedit_table[]; DECLARE_DO_FUN( do_mpedit ); DECLARE_OLC_FUN( redit_mpshow ); MPROG_CODE *new_mpcode args ( (void) ); void free_mpcode args ( ( MPROG_CODE *pMcode)); DECLARE_OLC_FUN( medit_addmprog ); /* Lordrom */ DECLARE_OLC_FUN( medit_delmprog ); /* Lordrom */ MPROG_LIST *new_mprog args ( ( void ) ); void free_mprog args ( ( MPROG_LIST *mp ) );