/************************************************************************** * Original Diku Mud copyright (C) 1990, 1991 by Sebastian Hammer, * * Michael Seifert, Hans Henrik St{rfeldt, Tom Madsen, and Katja Nyboe. * * * * Merc Diku Mud improvements copyright (C) 1992, 1993 by Michael * * Chastain, Michael Quan, and Mitchell Tse. * * * * In order to use any part of this Merc Diku Mud, you must comply with * * both the original Diku license in 'license.doc' as well the Merc * * license in 'license.txt'. In particular, you may not remove either of * * these copyright notices. * * * * Much time and thought has gone into this software and you are * * benefiting. 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 * *************************************************************************** * 1stMUD ROM Derivative (c) 2001-2003 by Ryan Jennings * * http://1stmud.dlmud.com/ <r-jenn@shaw.ca> * ***************************************************************************/ /*************************************************************************** * 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 */ #if !defined(OLC_H) #define OLC_H /* * 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 OLC_VERSION "ILAB Online Creation [Beta 1.0, ROM 2.3 modified]\n\r" \ " Port a ROM 2.4 v1.8\n\r" #define OLC_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" #define OLC_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" #define OLC_CREDITS " Original by Surreality(cxw197@psu.edu) and Locke(locke@lm.com)" /* * New typedefs. */ typedef bool OLC_FUN(CHAR_DATA * ch, const char *argument); typedef const struct olc_ed_type OLCED_DATA; #define DECLARE_OLC_FUN( fun ) OLC_FUN fun #define OLCED(fun) bool fun(CHAR_DATA *ch, const char *argument) /* * Connected states for editor. */ #define ED_NONE -1 #define ED_AREA 0 #define ED_ROOM 1 #define ED_OBJECT 2 #define ED_MOBILE 3 #define ED_MPCODE 4 #define ED_OPCODE 5 #define ED_RPCODE 6 #define ED_HELP 7 #define ED_SOCIAL 8 #define ED_CLAN 9 #define ED_CMD 10 #define ED_SKILL 11 #define ED_GROUP 12 #define ED_RACE 13 #define ED_CLASS 14 #define ED_DEITY 15 #define ED_CHAN 16 #define ED_MUD 17 #define ED_SONG 18 #define ED_MAX 19 /* * OLC Constants */ #define MAX_MOB 1 /* Default maximum number for resetting mobs */ /* * Structure for an OLC editor command. */ struct olc_comm_type { const char *name; void *argument; ED_FUN *function; const void *parameter; VALIDATE_FUN *validate; }; struct olc_ed_type { const char *name; const char *longname; int ed; OLC_FUN *show; DO_FUN *do_fun; const struct olc_comm_type *table; }; EXTERN const struct olc_ed_type olc_ed_table[ED_MAX]; /* * Utils. */ PROTOTYPE(AREA_DATA * get_vnum_area, (vnum_t)); PROTOTYPE(AREA_DATA * get_area_data, (int)); PROTOTYPE(CHANNEL_DATA * get_chan_data, (int)); PROTOTYPE(void add_reset, (ROOM_INDEX_DATA *, RESET_DATA *, int)); PROTOTYPE(void display_resets, (CHAR_DATA *)); PROTOTYPE(void show_olc_cmds, (CHAR_DATA *)); PROTOTYPE(bool oedit_values, (CHAR_DATA *, const char *, int)); PROTOTYPE(bool set_value, (CHAR_DATA *, OBJ_INDEX_DATA *, const char *, int)); PROTOTYPE(bool set_obj_values, (CHAR_DATA *, OBJ_INDEX_DATA *, int, const char *)); PROTOTYPE(void show_obj_values, (CHAR_DATA *, OBJ_INDEX_DATA *)); PROTOTYPE(bool change_exit, (CHAR_DATA *, const char *, int)); PROTOTYPE(bool check_range, (long, long)); PROTOTYPE(void show_spec_cmds, (CHAR_DATA *)); PROTOTYPE(void show_skill_cmds, (CHAR_DATA *, int)); PROTOTYPE(flag_t wear_bit, (wloc_t)); PROTOTYPE(wloc_t wear_loc, (flag_t, int)); PROTOTYPE(void save_area, (AREA_DATA *)); PROTOTYPE(void save_helps, (void)); PROTOTYPE(void save_shops, (FILE *, AREA_DATA *)); PROTOTYPE(void save_resets, (FILE *, AREA_DATA *)); PROTOTYPE(void save_door_resets, (FILE *, AREA_DATA *)); PROTOTYPE(void save_specials, (FILE *, AREA_DATA *)); PROTOTYPE(void save_rooms, (FILE *, AREA_DATA *)); PROTOTYPE(void save_objects, (FILE *, AREA_DATA *)); PROTOTYPE(void save_object, (FILE *, OBJ_INDEX_DATA *)); PROTOTYPE(void save_mobiles, (FILE *, AREA_DATA *)); PROTOTYPE(void save_mobile, (FILE *, MOB_INDEX_DATA *)); PROTOTYPE(void save_mobprogs, (FILE *, AREA_DATA *)); PROTOTYPE(void save_area_list, (void)); PROTOTYPE(void stop_editing, (void *)); PROTOTYPE(int calc_avedam, (int, int)); PROTOTYPE(void edit_start, (CHAR_DATA *, void *, int)); /* * Interpreter Table Prototypes */ EXTERN const struct olc_comm_type mob_olc_comm_table[]; EXTERN const struct olc_comm_type obj_olc_comm_table[]; EXTERN const struct olc_comm_type room_olc_comm_table[]; EXTERN const struct olc_comm_type area_olc_comm_table[]; EXTERN const struct olc_comm_type mprog_olc_comm_table[]; EXTERN const struct olc_comm_type oprog_olc_comm_table[]; EXTERN const struct olc_comm_type rprog_olc_comm_table[]; EXTERN const struct olc_comm_type help_olc_comm_table[]; EXTERN const struct olc_comm_type social_olc_comm_table[]; EXTERN const struct olc_comm_type clan_olc_comm_table[]; EXTERN const struct olc_comm_type cmd_olc_comm_table[]; EXTERN const struct olc_comm_type skill_olc_comm_table[]; EXTERN const struct olc_comm_type group_olc_comm_table[]; EXTERN const struct olc_comm_type race_olc_comm_table[]; EXTERN const struct olc_comm_type class_olc_comm_table[]; EXTERN const struct olc_comm_type deity_olc_comm_table[]; EXTERN const struct olc_comm_type chan_olc_comm_table[]; EXTERN const struct olc_comm_type mud_olc_comm_table[]; EXTERN const struct olc_comm_type song_olc_comm_table[]; /* * General Functions */ PROTOTYPE(bool show_commands, (CHAR_DATA *, char *)); PROTOTYPE(bool show_help, (CHAR_DATA *, const char *)); PROTOTYPE(bool edit_done, (CHAR_DATA *)); PROTOTYPE(bool show_version, (CHAR_DATA *, char *)); PROTOTYPE(bool process_olc_command, (CHAR_DATA *, const char *, const struct olc_comm_type *)); DECLARE_ED_FUN(olced_str); DECLARE_ED_FUN(olced_desc); DECLARE_ED_FUN(olced_bool); DECLARE_ED_FUN(olced_flag); DECLARE_ED_FUN(olced_number); DECLARE_ED_FUN(olced_number_long); DECLARE_ED_FUN(olced_shop); DECLARE_ED_FUN(olced_spec); DECLARE_ED_FUN(olced_ac); DECLARE_ED_FUN(olced_dice); DECLARE_ED_FUN(olced_race); DECLARE_ED_FUN(olced_olded); DECLARE_ED_FUN(olced_ed); DECLARE_ED_FUN(olced_direction); DECLARE_ED_FUN(olced_docomm); DECLARE_ED_FUN(olced_value); DECLARE_ED_FUN(olced_poslookup); DECLARE_ED_FUN(olced_neglookup); DECLARE_ED_FUN(olced_vnum); DECLARE_ED_FUN(olced_addprog); DECLARE_ED_FUN(olced_delprog); DECLARE_ED_FUN(olced_array); DECLARE_ED_FUN(olced_larray); DECLARE_ED_FUN(olced_sarray); DECLARE_ED_FUN(olced_farray); DECLARE_ED_FUN(olced_mclass); DECLARE_ED_FUN(olced_stance); DECLARE_ED_FUN(olced_stats); DECLARE_ED_FUN(olced_deity); DECLARE_ED_FUN(olced_getchar); DECLARE_ED_FUN(olced_time); DECLARE_ED_FUN(olced_vnum); DECLARE_VALIDATE_FUN(validate_align); DECLARE_VALIDATE_FUN(validate_level); DECLARE_VALIDATE_FUN(validate_groupname); DECLARE_VALIDATE_FUN(validate_weapon); DECLARE_VALIDATE_FUN(validate_adept); DECLARE_VALIDATE_FUN(validate_hmv); DECLARE_VALIDATE_FUN(validate_group); DECLARE_VALIDATE_FUN(validate_classname); /* * Area Editor Prototypes */ DECLARE_OLC_FUN(aedit_show); DECLARE_OLC_FUN(aedit_create); DECLARE_OLC_FUN(aedit_file); DECLARE_OLC_FUN(aedit_reset); DECLARE_OLC_FUN(aedit_builder); DECLARE_OLC_FUN(aedit_vnum); DECLARE_OLC_FUN(aedit_lvnum); DECLARE_OLC_FUN(aedit_uvnum); DECLARE_OLC_FUN(aedit_climate); /* * Room Editor Prototypes */ DECLARE_OLC_FUN(redit_show); DECLARE_OLC_FUN(redit_create); 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_clan); DECLARE_OLC_FUN(redit_delete); DECLARE_OLC_FUN(redit_format); /* * Object Editor Prototypes */ DECLARE_OLC_FUN(oedit_show); DECLARE_OLC_FUN(oedit_create); DECLARE_OLC_FUN(oedit_addaffect); DECLARE_OLC_FUN(oedit_addapply); DECLARE_OLC_FUN(oedit_delaffect); DECLARE_OLC_FUN(oedit_delete); DECLARE_OLC_FUN(oedit_autoweapon); DECLARE_OLC_FUN(oedit_autoarmor); /* * Mobile Editor Prototypes */ DECLARE_OLC_FUN(medit_show); DECLARE_OLC_FUN(medit_create); DECLARE_OLC_FUN(medit_delete); DECLARE_OLC_FUN(medit_group); /* ROM */ DECLARE_OLC_FUN(medit_autoset); DECLARE_OLC_FUN(medit_autoeasy); DECLARE_OLC_FUN(medit_autohard); /* Mobprog editor */ DECLARE_OLC_FUN(mpedit_create); DECLARE_OLC_FUN(mpedit_show); DECLARE_OLC_FUN(mpedit_list); DECLARE_OLC_FUN(mpedit_delete); DECLARE_OLC_FUN(opedit_create); DECLARE_OLC_FUN(opedit_show); DECLARE_OLC_FUN(opedit_list); DECLARE_OLC_FUN(opedit_delete); DECLARE_OLC_FUN(rpedit_create); DECLARE_OLC_FUN(rpedit_show); DECLARE_OLC_FUN(rpedit_list); DECLARE_OLC_FUN(rpedit_delete); /* Editor de helps */ DECLARE_OLC_FUN(hedit_new); DECLARE_OLC_FUN(hedit_delete); DECLARE_OLC_FUN(hedit_show); DECLARE_OLC_FUN(hedit_list); DECLARE_OLC_FUN(sedit_show); DECLARE_OLC_FUN(sedit_name); DECLARE_OLC_FUN(sedit_create); DECLARE_OLC_FUN(sedit_delete); DECLARE_OLC_FUN(cedit_show); DECLARE_OLC_FUN(cedit_create); DECLARE_OLC_FUN(cedit_delete); DECLARE_OLC_FUN(cedit_rank); DECLARE_OLC_FUN(cmdedit_show); DECLARE_OLC_FUN(cmdedit_create); DECLARE_OLC_FUN(cmdedit_delete); DECLARE_OLC_FUN(cmdedit_dofun); DECLARE_OLC_FUN(cmdedit_rearrange); DECLARE_OLC_FUN(cmdedit_name); DECLARE_OLC_FUN(gredit_show); DECLARE_OLC_FUN(gredit_create); DECLARE_OLC_FUN(gredit_ratings); DECLARE_OLC_FUN(gredit_spells); DECLARE_OLC_FUN(gredit_delete); DECLARE_OLC_FUN(skedit_show); DECLARE_OLC_FUN(skedit_create); DECLARE_OLC_FUN(skedit_levels); DECLARE_OLC_FUN(skedit_ratings); DECLARE_OLC_FUN(skedit_spellfun); DECLARE_OLC_FUN(skedit_gsn); DECLARE_OLC_FUN(skedit_delete); DECLARE_OLC_FUN(raedit_create); DECLARE_OLC_FUN(raedit_delete); DECLARE_OLC_FUN(raedit_show); DECLARE_OLC_FUN(raedit_list); DECLARE_OLC_FUN(raedit_stats); DECLARE_OLC_FUN(raedit_mstats); DECLARE_OLC_FUN(raedit_skills); DECLARE_OLC_FUN(raedit_classx); DECLARE_OLC_FUN(raedit_name); DECLARE_OLC_FUN(cledit_create); DECLARE_OLC_FUN(cledit_delete); DECLARE_OLC_FUN(cledit_show); DECLARE_OLC_FUN(cledit_prime); DECLARE_OLC_FUN(cledit_weapon); DECLARE_OLC_FUN(cledit_skill); DECLARE_OLC_FUN(cledit_guilds); DECLARE_OLC_FUN(dedit_show); DECLARE_OLC_FUN(dedit_list); DECLARE_OLC_FUN(dedit_delete); DECLARE_OLC_FUN(dedit_create); DECLARE_OLC_FUN(chanedit_show); DECLARE_OLC_FUN(chanedit_create); DECLARE_OLC_FUN(chanedit_gcn); DECLARE_OLC_FUN(chanedit_delete); DECLARE_OLC_FUN(chanedit_colour); DECLARE_OLC_FUN(chanedit_list); DECLARE_OLC_FUN(mudedit_show); DECLARE_OLC_FUN(songedit_show); DECLARE_OLC_FUN(songedit_lyrics); DECLARE_OLC_FUN(songedit_create); DECLARE_OLC_FUN(songedit_delete); /* * 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 = (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 ) #define EDIT_SOCIAL(ch, iSoc) (iSoc = (SOCIAL_DATA *)ch->desc->pEdit) #define EDIT_HELP(ch, help) ( help = (HELP_DATA *) ch->desc->pEdit ) #define EDIT_CLAN(ch, clan) ( clan = (CLAN_DATA *) ch->desc->pEdit ) #define EDIT_CMD(ch, cmd) ( cmd = (CMD_DATA *) ch->desc->pEdit ) #define EDIT_SKILL(ch, skill) ( skill = (SKILL_DATA *) ch->desc->pEdit ) #define EDIT_GROUP(ch, grp) ( grp = (GROUP_DATA *) ch->desc->pEdit ) #define EDIT_RACE(ch, race) ( race = (RACE_DATA *) ch->desc->pEdit ) #define EDIT_CLASS(ch, class) ( class = (CLASS_DATA *) ch->desc->pEdit ) #define EDIT_DEITY(ch, deity) (deity = (DEITY_DATA *)ch->desc->pEdit) #define EDIT_CHAN(ch, chan) (chan = (CHANNEL_DATA *)ch->desc->pEdit) #define EDIT_MUD(ch, mud) (mud = (MUD *)ch->desc->pEdit) #define EDIT_SONG(ch, song) (song = (SONG_DATA *)ch->desc->pEdit) /* * Prototypes */ /* mem.c - memory prototypes. */ #define ED EXTRA_DESCR_DATA PROTOTYPE(RESET_DATA * new_reset_data, (void)); PROTOTYPE(void free_reset_data, (RESET_DATA *)); PROTOTYPE(AREA_DATA * new_area, (void)); PROTOTYPE(void free_area, (AREA_DATA *)); PROTOTYPE(EXIT_DATA * new_exit, (void)); PROTOTYPE(void free_exit, (EXIT_DATA *)); PROTOTYPE(ROOM_INDEX_DATA * new_room_index, (void)); PROTOTYPE(void free_room_index, (ROOM_INDEX_DATA *)); PROTOTYPE(SHOP_DATA * new_shop, (void)); PROTOTYPE(void free_shop, (SHOP_DATA *)); PROTOTYPE(OBJ_INDEX_DATA * new_obj_index, (void)); PROTOTYPE(void free_obj_index, (OBJ_INDEX_DATA *)); PROTOTYPE(MOB_INDEX_DATA * new_mob_index, (void)); PROTOTYPE(void free_mob_index, (MOB_INDEX_DATA *)); #undef ED PROTOTYPE(void show_liqlist, (CHAR_DATA *)); PROTOTYPE(void show_damlist, (CHAR_DATA *)); PROTOTYPE(PROG_LIST * new_prog, (void)); PROTOTYPE(void free_prog, (PROG_LIST *)); PROTOTYPE(PROG_CODE * new_pcode, (void)); PROTOTYPE(void free_pcode, (PROG_CODE *)); PROTOTYPE(void autoset, (MOB_INDEX_DATA *)); PROTOTYPE(void autohard, (MOB_INDEX_DATA *)); PROTOTYPE(void autoeasy, (MOB_INDEX_DATA *)); PROTOTYPE(void autoarmor, (OBJ_INDEX_DATA *)); PROTOTYPE(void autoweapon, (OBJ_INDEX_DATA *)); #endif