********************************************************************************** This is VERY easy and will show you how to add a *PLANET* flag to your areas. It is a small part of a big project to make planets *destroyable* by a certain nuclear weapon. deadcsa@hotmail.com. NOTE: +++ means add this line. *********************************************************************************** ********* merc.h ********* Add this anywhere in the #defines, I put it after the SECT #defines. /* Planet flags */ #define PLANET_ROM 0 #define PLANET_EARTH 1 NOTE: This is where you define your new planets. Anytime you create a new planet, make sure you add it here. /* * Area definition. */ struct area_data { AREA_DATA * next; RESET_DATA * reset_first; RESET_DATA * reset_last; HELP_AREA * helps; char * file_name; char * name; char * credits; sh_int age; sh_int nplayer; sh_int low_range; sh_int high_range; sh_int min_vnum; sh_int max_vnum; bool empty; char * builders; /* OLC */ /* Listing of */ int vnum; /* OLC */ /* Area vnum */ int area_flags; /* OLC */ +++ sh_int planet; ********* olc.h ********* add this in the /* Area Editor Prototypes DECLARE_OLC_FUN( aedit_planet ); ********* bit.c ********* const struct flag_stat_type flag_stat_table[] = { /* { structure stat }, */ { area_flags, FALSE }, +++ { planet_flags, FALSE }, ********* db.c ********* /* * Snarf an 'area' header line. */ void load_area( FILE *fp ) { AREA_DATA *pArea; pArea = alloc_perm( sizeof(*pArea) ); /* pArea->reset_first = NULL; pArea->reset_last = NULL; */ pArea->file_name = fread_string( fp ); pArea->area_flags = AREA_LOADING; /* OLC */ +++ pArea->planet = fread_flag( fp ); void new_load_area( FILE *fp ) { AREA_DATA *pArea; char *word; bool fMatch; pArea = alloc_perm( sizeof(*pArea) ); pArea->age = 15; pArea->nplayer = 0; pArea->file_name = str_dup( strArea ); pArea->vnum = top_area; pArea->name = str_dup( "New Area" ); pArea->builders = str_dup( "" ); pArea->security = 9; /* 9 -- Hugin */ pArea->min_vnum = 0; pArea->max_vnum = 0; pArea->area_flags = 0; +++ pArea->planet = 0; ********* mem.c ********* AREA_DATA *new_area( void ) { AREA_DATA *pArea; char buf[MAX_INPUT_LENGTH]; if ( !area_free ) { pArea = alloc_perm( sizeof(*pArea) ); top_area++; } else { pArea = area_free; area_free = area_free->next; } pArea->next = NULL; pArea->name = str_dup( "New area" ); /* pArea->recall = ROOM_VNUM_TEMPLE; ROM OLC */ pArea->area_flags = AREA_ADDED; +++ pArea->planet = 0; ********* olc.c ********* const struct olc_cmd_type aedit_table[] = { /* { command function }, */ { "age", aedit_age }, { "builder", aedit_builder }, /* s removed -- Hugin */ { "commands", show_commands }, { "create", aedit_create }, { "filename", aedit_file }, { "name", aedit_name }, /* { "recall", aedit_recall }, ROM OLC */ { "reset", aedit_reset }, { "security", aedit_security }, +++ { "planet", aedit_planet }, ********* olc_act.c ********* /* * This table contains help commands and a brief description of each. * ------------------------------------------------------------------ */ const struct olc_help_type help_table[] = { { "area", area_flags, "Area attributes." }, +++ { "planet", planet_flags, "Planet the Area is on." }, ___________________in the AEDIT(aedit_show) function:_______________________________ sprintf( buf, "Planet: [%s]\n\r", flag_string( planet_flags, pArea->planet ) ); send_to_char( buf, ch ); _______________add this anywhere in the AEDIT functions:_____________________________ AEDIT( aedit_planet ) { AREA_DATA *pArea; int value; EDIT_AREA(ch, pArea); if ( (value = flag_value( planet_flags, argument )) == NO_FLAG ) { send_to_char( "Syntax: planet [flags]\n\r", ch ); return FALSE; } TOGGLE_BIT(pArea->planet, value); send_to_char( "Planet set.\n\r", ch ); return TRUE; } ********* tables.c ********* const struct flag_type planet_flags[] = { { "ROM", PLANET_ROM, TRUE }, { "Earth", PLANET_EARTH, TRUE }, { NULL, 0, 0 } }; ********* tables.h ********* ________________add in the /* flag tables________________________ extern const struct flag_type planet_flags[];