/****************************************************************************
* [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