/****************************************************************************
* *
* zedit.h (c) by Georg Essl in 1993 *
* *
****************************************************************************/
/*** DEFINES ***/
#define ZE_NOPURGEDOOR 0
#define ZE_PURGEDOOR 1
/* Zone-Editing + Simulating Structs */
struct ze_mob_eq
{
int pos;
int obj;
};
struct ze_mob
{
int nr;
int maxexist;
int eq_count;
struct ze_mob_eq *eq;
int inv_count;
int *inv;
};
struct ze_obj
{
int nr;
int maxexist;
int inv_count;
int *inv;
};
struct ze_zone
{
int room_nr;
int door[6];
int mob_count;
int obj_count;
struct ze_mob *mobs;
struct ze_obj *objs;
};
/****** STRUCTS from "db.h" *****/
/* structure for the reset commands */
struct reset_com
{
char command; /* current command */
int if_flag; /* if TRUE: exe only if preceding exe'd */
int arg1; /* */
int arg2; /* Arguments to the command */
int arg3; /* */
/*
* Commands: *
* 'M': Read a mobile *
* 'O': Read an object *
* 'G': Give obj to mob *
* 'P': Put obj in obj *
* 'G': Obj to char *
* 'E': Obj to char equip *
* 'D': Set state of door *
*/
};
/* zone definition structure. for the 'zone-table' */
struct zone_data
{
char *name; /* name of this zone */
int virt_number;
int lifespan; /* how long between resets (minutes) */
int age; /* current age of this zone (minutes) */
int top; /* upper limit for rooms in this zone */
int reset_mode; /* conditions for reset (see below) */
struct reset_com *cmd; /* command table for reset */
int zonemax;
struct ze_zone *zone;
/*
* Reset mode: *
* 0: Don't reset, and don't update age. *
* 1: Reset if no PC's are located in zone. *
* 2: Just reset. *
*/
};
/*** PROTOTYPES ***/
void ze_FindZones(char *);
void ze_InitIEdit(void);
void ze_CloseIEdit(void);
int ze_GetRealNumber(int);
void ze_GiveItemMob(int,int);
void ze_GiveItemItem(int,int);
void ze_WearItemMob(int,int,int);
int ze_FindNrZone(int,char *);
int ze_FindNrMobRoom(int,int,struct ze_zone *);
int ze_FindMobRoom(int,char *,struct ze_zone *);
int ze_FindNrItemRoom(int,int,struct ze_zone *);
int ze_FindItemRoom(int,char *,struct ze_zone *);
void ze_ShowZone(int);
void ze_EditZone(int);
void ze_PurgeZone(int);
void ze_PurgeMobile(int);
void ze_PurgeItem(int);
void ze_PurgeAll(void);
void ze_CloneZone(int,int);
void ze_DoorState(int,int);
void ze_SetFile(char *);
void ze_SetTemp(char *);
void ze_SetDBPath(char *);
void ze_InitZEdit(void);
void ze_CloseZEdit(void);
void ze_LoadZone(int);
void ze_LoadMobile(int);
void ze_LoadItem(int);
void ze_free_zoneroom(struct zone_data *,int,int);
int ze_GetRealNumber(int);
struct ze_zone *ze_getroom(struct zone_data *,int);