/**************************************************************************** * [S]imulated [M]edieval [A]dventure multi[U]ser [G]ame | * * -----------------------------------------------------------| \\._.// * * SmaugWizard (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. * * ------------------------------------------------------------------------ * * Clans header file * ****************************************************************************/ #ifndef CLAN_H #define CLAN_H enum ClanTypes { CLAN_PLAIN, CLAN_VAMPIRE, CLAN_WARRIOR, CLAN_DRUID, CLAN_MAGE, CLAN_CELTIC, CLAN_THIEF, CLAN_CLERIC, CLAN_UNDEAD, CLAN_CHAOTIC, CLAN_NEUTRAL, CLAN_LAWFUL, CLAN_NOKILL, CLAN_ORDER, CLAN_GUILD, CLAN_ALL }; class CClanData { public: CClanData () { Clear (); } CClanData (const char* name, const char* fname, ClanTypes type); ~CClanData (); void Clear () { memset (this, 0, sizeof (CClanData)); } void Read (FILE *fp); void Save (); void SaveStoreroom (CCharacter *ch); char *GetName () { return m_pName; } void SetName (const char* n) { m_pName = STRALLOC (n); } const char *GetDescription () { return m_pDescription; } void SetDescription (const char* n) { STRFREE (m_pDescription); m_pDescription = STRALLOC (n); } char *GetFilename () { return m_pFilename; } void SetFilename (const char* n) { m_pFilename = str_dup (n); } ClanTypes GetType () { return m_Type; } void SetType (ClanTypes t) { m_Type = t; } short GetMembers () { return m_Members; } void SetMembers (short n) { m_Members = n; } void AddMembers (short n) { m_Members = max (0, m_Members + n); } private: char *m_pFilename; // Clan filename char *m_pName; // Clan name ClanTypes m_Type; // See clan type defines char *m_pDescription; // A brief description of the clan public: char *motto; // Clan motto char *deity; // Clan's deity char *leader; // Head clan leader char *number1; // First officer char *number2; // Second officer int pkills; // Number of pkills on behalf of clan int pdeaths; // Number of pkills against clan int mkills; // Number of mkills on behalf of clan int mdeaths; // Number of clan deaths due to mobs int illegal_pk; // Number of illegal pk's by clan int score; // Overall score short favour; // Deities favour upon the clan short strikes; // Number of strikes against the clan short m_Members; // Number of clan members short alignment; // Clan's general alignment int board; // Vnum of clan board int clanobj1; // Vnum of first clan obj (ring) int clanobj2; // Vnum of second clan obj (shield) int clanobj3; // Vnum of third clan obj (weapon) int recall; // Vnum of clan's recall room int storeroom; // Vnum of clan's store room int guard1; // Vnum of clan guard type 1 int guard2; // Vnum of clan guard type 2 int m_Class; // For guilds }; class CClanList : public CPtrList { public: char* GetTypeName (ClanTypes type); CClanData* Find (const char *name, ClanTypes type); void Write (); CClanData* GetNext (POSITION& pos) { return (CClanData*) CPtrList::GetNext (pos); } void Remove (CClanData* clan); void RemoveAll (); }; #ifdef SMAUGSERVER_CPP CClanList ClanList; #endif extern CClanList ClanList; #endif