/*************************************************************************** * Original Diku Mud copyright (C) 1990, 1991 by Sebastian Hammer, * * Michael Seifert, Hans Henrik St{rfeldt, Tom Madsen, and Katja Nyboe. * * * * Merc Diku Mud improvments copyright (C) 1992, 1993 by Michael * * Chastain, Michael Quan, and Mitchell Tse. * * * * In order to use any part of this Envy Diku Mud, you must comply with * * the original Diku license in 'license.doc', the Merc license in * * 'license.txt', as well as the Envy license in 'license.nvy'. * * In particular, you may not remove either of these copyright notices. * * * * 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. * * * * ROM 2.4 is copyright 1993-1998 Russ Taylor * * ROM has been brought to you by the ROM consortium * * Russ Taylor (rtaylor@hypercube.org) * * Gabrielle Taylor (gtaylor@hypercube.org) * * Brian Moore (zump@rom.org) * * By using this code, you have agreed to follow the terms of the * * ROM license, in the file Rom24/doc/rom.license * * * * Code Adapted and Improved by Abandoned Realms Mud * * and Aabahran: The Forsaken Lands Mud by Virigoth * * * * Continued Production of this code is available at www.flcodebase.com * ***************************************************************************/ #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_MPCODE 5 #define ED_OPCODE 6 #define ED_RPCODE 7 #define ED_TRAP 8 #define ED_HELP 9 #define ED_CABAL 10 #define ED_ARMY 11 /* 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 armedit args( ( CHAR_DATA *ch, char *argument ) ); void oedit args( ( CHAR_DATA *ch, char *argument ) ); void tedit args( ( CHAR_DATA *ch, char *argument ) ); void hedit args( ( CHAR_DATA *ch, char *argument ) ); void cedit args( ( CHAR_DATA *ch, char *argument ) ); void mpedit args( ( CHAR_DATA *ch, char *argument ) ); void opedit args( ( CHAR_DATA *ch, char *argument ) ); void rpedit 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 ( ( int vnum ) ); AREA_DATA *get_area_data args ( ( int vnum ) ); AREA_DATA *get_area_data_str ( char* name ); 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 tedit_table[]; extern const struct olc_cmd_type hedit_table[]; extern const struct olc_cmd_type cedit_table[]; extern const struct olc_cmd_type mpedit_table[]; extern const struct olc_cmd_type opedit_table[]; extern const struct olc_cmd_type rpedit_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_armedit ); DECLARE_DO_FUN( do_tedit ); DECLARE_DO_FUN( do_hedit ); DECLARE_DO_FUN( do_cedit ); DECLARE_DO_FUN( do_mpedit ); DECLARE_DO_FUN( do_opedit ); DECLARE_DO_FUN( do_rpedit ); void save_area( AREA_DATA *pArea ); /* 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_crime ); DECLARE_OLC_FUN( aedit_name ); DECLARE_OLC_FUN( aedit_prefix ); DECLARE_OLC_FUN( aedit_file ); DECLARE_OLC_FUN( aedit_age ); DECLARE_OLC_FUN( aedit_bastion ); 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 ); DECLARE_OLC_FUN( aedit_flags ); DECLARE_OLC_FUN( aedit_startroom ); /* 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_ndesc ); 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_treset ); 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_watch ); DECLARE_OLC_FUN( redit_temp ); DECLARE_OLC_FUN( redit_cabal ); DECLARE_OLC_FUN( redit_owner ); DECLARE_OLC_FUN( redit_sector ); DECLARE_OLC_FUN( redit_room ); DECLARE_OLC_FUN( redit_copy ); DECLARE_OLC_FUN( redit_addrprog ); DECLARE_OLC_FUN( redit_delrprog ); /* 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_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 ); DECLARE_OLC_FUN( oedit_weight ); DECLARE_OLC_FUN( oedit_condition ); DECLARE_OLC_FUN( oedit_material ); DECLARE_OLC_FUN( oedit_cost ); DECLARE_OLC_FUN( oedit_cabal ); DECLARE_OLC_FUN( oedit_race ); DECLARE_OLC_FUN( oedit_class ); DECLARE_OLC_FUN( oedit_message ); DECLARE_OLC_FUN( oedit_ed ); DECLARE_OLC_FUN( oedit_extra ); DECLARE_OLC_FUN( oedit_wear ); DECLARE_OLC_FUN( oedit_type ); DECLARE_OLC_FUN( oedit_affect ); DECLARE_OLC_FUN( oedit_material ); DECLARE_OLC_FUN( oedit_level ); DECLARE_OLC_FUN( oedit_copy ); //DECLARE_OLC_FUN( oedit_trap ); DECLARE_OLC_FUN( oedit_addoprog ); DECLARE_OLC_FUN( oedit_deloprog ); /* 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 ); DECLARE_OLC_FUN( medit_cabal ); DECLARE_OLC_FUN( medit_act ); DECLARE_OLC_FUN( medit_act2 ); DECLARE_OLC_FUN( medit_affect ); DECLARE_OLC_FUN( medit_affect2 ); DECLARE_OLC_FUN( medit_ac ); DECLARE_OLC_FUN( medit_imm ); DECLARE_OLC_FUN( medit_res ); DECLARE_OLC_FUN( medit_vuln ); DECLARE_OLC_FUN( medit_material ); DECLARE_OLC_FUN( medit_off ); DECLARE_OLC_FUN( medit_size ); DECLARE_OLC_FUN( medit_hitdice ); DECLARE_OLC_FUN( medit_manadice ); DECLARE_OLC_FUN( medit_damdice ); DECLARE_OLC_FUN( medit_race ); DECLARE_OLC_FUN( medit_position ); DECLARE_OLC_FUN( medit_gold ); DECLARE_OLC_FUN( medit_tarifa ); DECLARE_OLC_FUN( medit_hitroll ); DECLARE_OLC_FUN( medit_camino ); DECLARE_OLC_FUN( medit_damtype ); DECLARE_OLC_FUN( medit_group ); DECLARE_OLC_FUN( medit_copy ); DECLARE_OLC_FUN( medit_addmprog ); DECLARE_OLC_FUN( medit_delmprog ); /* army functions */ DECLARE_OLC_FUN( armedit_show ); DECLARE_OLC_FUN( armedit_copy ); DECLARE_OLC_FUN( armedit_create ); DECLARE_OLC_FUN( armedit_type ); DECLARE_OLC_FUN( armedit_cost ); DECLARE_OLC_FUN( armedit_support ); DECLARE_OLC_FUN( armedit_flags ); DECLARE_OLC_FUN( armedit_offense ); DECLARE_OLC_FUN( armedit_hitpoint ); DECLARE_OLC_FUN( armedit_armor ); DECLARE_OLC_FUN( armedit_noun ); DECLARE_OLC_FUN( armedit_short ); DECLARE_OLC_FUN( armedit_long ); DECLARE_OLC_FUN( armedit_descr ); /* trap functions */ DECLARE_OLC_FUN( tedit_create ); DECLARE_OLC_FUN( tedit_show ); DECLARE_OLC_FUN( tedit_name ); DECLARE_OLC_FUN( tedit_echo ); DECLARE_OLC_FUN( tedit_oecho ); DECLARE_OLC_FUN( tedit_level ); DECLARE_OLC_FUN( tedit_type ); DECLARE_OLC_FUN( tedit_flag ); DECLARE_OLC_FUN( tedit_v0 ); DECLARE_OLC_FUN( tedit_v1 ); DECLARE_OLC_FUN( tedit_v2 ); DECLARE_OLC_FUN( tedit_v3 ); DECLARE_OLC_FUN( tedit_v4 ); /* help functions */ DECLARE_OLC_FUN( hedit_create ); DECLARE_OLC_FUN( hedit_show ); DECLARE_OLC_FUN( hedit_key ); DECLARE_OLC_FUN( hedit_level ); DECLARE_OLC_FUN( hedit_type ); DECLARE_OLC_FUN( hedit_text ); /* cabal functions */ DECLARE_OLC_FUN( cedit_create ); DECLARE_OLC_FUN( cedit_show ); DECLARE_OLC_FUN( cedit_name ); DECLARE_OLC_FUN( cedit_file_name ); DECLARE_OLC_FUN( cedit_msggate ); DECLARE_OLC_FUN( cedit_ongate ); DECLARE_OLC_FUN( cedit_offgate ); DECLARE_OLC_FUN( cedit_city ); DECLARE_OLC_FUN( cedit_anchor ); DECLARE_OLC_FUN( cedit_guard ); DECLARE_OLC_FUN( cedit_whoname ); DECLARE_OLC_FUN( cedit_imm ); DECLARE_OLC_FUN( cedit_currency ); DECLARE_OLC_FUN( cedit_clan ); DECLARE_OLC_FUN( cedit_members ); DECLARE_OLC_FUN( cedit_max_room ); DECLARE_OLC_FUN( cedit_levels ); DECLARE_OLC_FUN( cedit_rank ); DECLARE_OLC_FUN( cedit_mrank ); DECLARE_OLC_FUN( cedit_frank ); DECLARE_OLC_FUN( cedit_flag ); DECLARE_OLC_FUN( cedit_ethos ); DECLARE_OLC_FUN( cedit_align ); DECLARE_OLC_FUN( cedit_race ); DECLARE_OLC_FUN( cedit_class ); DECLARE_OLC_FUN( cedit_skill ); DECLARE_OLC_FUN( cedit_vote ); DECLARE_OLC_FUN( cedit_room ); DECLARE_OLC_FUN( cedit_avatar ); DECLARE_OLC_FUN( cedit_parent ); DECLARE_OLC_FUN( cedit_progress ); DECLARE_OLC_FUN( cedit_pit ); DECLARE_OLC_FUN( cedit_army ); DECLARE_OLC_FUN( cedit_enemy ); DECLARE_OLC_FUN( cedit_tower ); DECLARE_OLC_FUN( cedit_prefix ); DECLARE_OLC_FUN( cedit_tax ); /* MACROS */ #define IS_SWITCHED( ch ) ( ch->desc->original ) #define IS_BUILDER(ch, Area) ( !IS_SWITCHED( ch ) && (ch->pcdata->security >= Area->security || strstr( Area->builders, ch->name ) || strstr( Area->builders, "All" ) ) ) #define EDIT_MPCODE(Ch, Code) ( Code = (PROG_CODE*)Ch->desc->pEdit ) #define EDIT_OPCODE(Ch, Code) ( Code = (PROG_CODE*)Ch->desc->pEdit ) #define EDIT_RPCODE(Ch, Code) ( Code = (PROG_CODE*)Ch->desc->pEdit ) /* Return pointers to what is being edited. */ #define EDIT_MOB(Ch, Mob) ( Mob = (MOB_INDEX_DATA *)Ch->desc->pEdit ) #define EDIT_ARMY(Ch, Army) ( Army = (ARMY_INDEX_DATA *)Ch->desc->pEdit ) #define EDIT_OBJ(Ch, Obj) ( Obj = (OBJ_INDEX_DATA *)Ch->desc->pEdit ) #define EDIT_HELP(Ch, Help) ( Help = (HELP_DATA *)Ch->desc->pEdit ) #define EDIT_CABAL(Ch, Cabal) ( Cabal = (CABAL_INDEX_DATA *)Ch->desc->pEdit ) #define EDIT_TRAP(Ch, Trap) ( Trap = (TRAP_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 ) /* 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 ) ); void free_oprog args ( ( PROG_LIST *op ) ); void free_rprog args ( ( PROG_LIST *rp ) ); AFFECT_DATA *new_affect args ( ( void ) ); SKILL_DATA *new_skill 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 * prog_type_to_name args ( ( int type ) ); PROG_LIST *new_mprog args ( ( void ) ); void free_mprog args ( ( PROG_LIST *op ) ); PROG_LIST *new_oprog args ( ( void ) ); void free_oprog args ( ( PROG_LIST *op ) ); PROG_LIST *new_rprog args ( ( void ) ); void free_rprog args ( ( PROG_LIST *rp ) ); PROG_CODE *new_mpcode args ( ( void ) ); void free_mpcode args ( ( PROG_CODE *pOcode ) ); PROG_CODE *new_opcode args ( ( void ) ); void free_opcode args ( ( PROG_CODE *pOcode ) ); PROG_CODE *new_rpcode args ( ( void ) ); void free_rpcode args ( ( PROG_CODE *pRcode ) ); /* Mobprog editor */ DECLARE_OLC_FUN( mpedit_create ); DECLARE_OLC_FUN( mpedit_code ); DECLARE_OLC_FUN( mpedit_show ); DECLARE_OLC_FUN( mpedit_list ); /* Objprog editor */ DECLARE_OLC_FUN( opedit_create ); DECLARE_OLC_FUN( opedit_code ); DECLARE_OLC_FUN( opedit_show ); DECLARE_OLC_FUN( opedit_list ); /* Roomprog editor */ DECLARE_OLC_FUN( rpedit_create ); DECLARE_OLC_FUN( rpedit_code ); DECLARE_OLC_FUN( rpedit_show ); DECLARE_OLC_FUN( rpedit_list ); /* other */ void write_room ( FILE* fp, ROOM_INDEX_DATA* pRoomIndex ); void write_resets ( FILE* fp, ROOM_INDEX_DATA* pRoom ); int flag_lookup_abs (const char *name, const struct flag_type *flag_table);