/**************************************************************************** * [S]imulated [M]edieval [A]dventure multi[U]ser [G]ame | * * -----------------------------------------------------------| \\._.// * * SmaugWiz (C) 1998 by Russ Pillsbury (Windows NT version) | (0...0) * * -----------------------------------------------------------| ).:.( * * SMAUG (C) 1994, 1995, 1996 by Derek Snider | {o o} * * -----------------------------------------------------------| / ' ' \ * * SMAUG code team: Thoric, Altrag, Blodkai, Narn, Haus, |~'~.VxvxV.~'~* * Scryn, Swordbearer, Rennard, Tricops, and Gorog. | * * ------------------------------------------------------------------------ * * Merc 2.1 Diku Mud improvments copyright (C) 1992, 1993 by Michael * * Chastain, Michael Quan, and Mitchell Tse. * * Original Diku Mud copyright (C) 1990, 1991 by Sebastian Hammer, * * Michael Seifert, Hans Henrik Staerfeldt, Tom Madsen, and Katja Nyboe. * * ------------------------------------------------------------------------ * * Area Interface file * ****************************************************************************/ #ifndef AREA_H #define AREA_H // Defines for Area File versions. #define SM_V0 0 // Smaug 1.02a version files #define SM_V1 1 // Smaug 1.4 #define SW_AV1 1000 // SmaugWizard 2.0 #define SW_CURRENT_AV SW_AV1 // SmaugWizard Current Area Version // Defines for the LoadArea routine #define NOBOOT FALSE #define BOOT TRUE #define NOBUILD FALSE #define BUILD TRUE // Area definition. class CAreaData { public: CAreaData (const char* Fname, const char* Aname, int Ver); ~CAreaData (); const CString& GetName () { return m_Name; } void SetName (const char* n) { m_Name = n; } int GetVersion () { return m_Version; } void SetVersion (int v) { m_Version = v; } BOOL Load (FILE *fp, int& LineCount); void LoadFlags (FILE* fp); void LoadRanges (FILE* fp); void LoadEconomy (char* pLine); void LoadMobiles (FILE* fp); void LoadObjects (FILE* fp); void LoadResets (FILE* fp); void LoadRooms (FILE* fp); void LoadShops (FILE* fp); void LoadRepairs (FILE* fp); void LoadSpecials (FILE* fp); void Reset (); void FixExits (BOOL bBoot = FALSE); int GetFlags () { return flags; } BOOL TestFlag (int bit) { return (flags & bit) != 0; } void SetFlag (int bit) { flags |= bit; } void ClrFlag (int bit) { flags &= ~bit; } BOOL IsLoaded () { return (m_status & AREA_LOADED) != 0; } void SetLoaded () { m_status |= AREA_LOADED; } void ClrLoaded () { m_status &= ~AREA_LOADED; } BOOL IsDeleted () { return (m_status & AREA_DELETED) != 0; } void SetDeleted () { m_status |= AREA_DELETED; } void ClrDeleted () { m_status &= ~AREA_DELETED; } BOOL IsNoPkill () { return (flags & AFLAG_NOPKILL) != 0; } void SetNoPkill () { flags |= AFLAG_NOPKILL; } void ClrNoPkill () { flags &= ~AFLAG_NOPKILL; } BOOL IsNoTeleport () { return (flags & AFLAG_NOTELEPORT) != 0; } void SetNoTeleport () { flags |= AFLAG_NOTELEPORT; } void ClrNoTeleport () { flags &= ~AFLAG_NOTELEPORT; } void BoostEconomy (int gold); void LowerEconomy (int gold); BOOL CheckGold (int gold); private: int m_Version; short m_status; int flags; public: short age; short nplayer; short reset_frequency; int low_r_vnum; int hi_r_vnum; int low_o_vnum; int hi_o_vnum; int low_m_vnum; int hi_m_vnum; int low_soft_range; int hi_soft_range; int low_hard_range; int hi_hard_range; CResetData *last_mob_reset; CResetData *last_obj_reset; short max_players; int mkills; int mdeaths; int pkills; int pdeaths; int gold_looted; int illegal_pk; int high_economy; int low_economy; // last simple CString m_Name; CString m_Filename; CString m_Author; CString m_Resetmsg; CString m_Climate; CPtrList RoomList; CPtrList MobList; CPtrList m_ObjIdxList; }; class CAreaList : public CPtrList { public: CAreaData *GetNext (POSITION& pos) { return (CAreaData*) CPtrList::GetNext (pos); } CAreaData *FindByFileName (const char* fname); CAreaData *FindByName (const char* name); CAreaData *FindByAuthor (const char* name); CAreaData *RemoveTail () { return (CAreaData*) CPtrList::RemoveTail (); } void Remove (CAreaData* pArea); void RemoveAll (); // Delete an area and all its resources (rooms, mobs, objs, strings..) void Delete (CAreaData* pArea); CPtrList SortList; }; extern CAreaList AreaList, BuildList; extern CPtrList AllAreasList; #ifdef SMAUGSERVER_CPP CAreaList AreaList, BuildList; CPtrList AllAreasList; #endif #endif