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