**********************************************************************************
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[];