SmaugWizard/Backup/
SmaugWizard/Backup/L/
SmaugWizard/Boards/
SmaugWizard/Building/
SmaugWizard/Corpses/
SmaugWizard/Councils/
SmaugWizard/Deity/
SmaugWizard/Gods/
SmaugWizard/MudProgs/
SmaugWizard/Player/L/
SmaugWizard/Src/
SmaugWizard/Src/res/
/****************************************************************************
 * [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.    *
 * ------------------------------------------------------------------------ *
 *			    Extra Flags Interface file									*
 ***************************************************************************/

#ifndef	EXTRAFLAGS_H
#define	EXTRAFLAGS_H

#ifndef	BITVECTOR_H
	#include	"BitVector.h"
#endif


// Extra flags.
// Used in #OBJECTS.  Note that the following values are now unused:
//#define ITEM_ANTI_MAGE	BV14
//#define ITEM_ANTI_THIEF	BV15
//#define ITEM_ANTI_WARRIOR	BV16
//#define ITEM_ANTI_CLERIC	BV17
//#define ITEM_ANTI_VAMPIRE	BV23
//#define ITEM_ANTI_DRUID	BV24

enum ItemExtraFlags {
	ITEM_GLOW, ITEM_HUM, ITEM_DARK, ITEM_LOYAL, ITEM_EVIL, ITEM_INVIS,
	ITEM_MAGIC, ITEM_NODROP, ITEM_BLESS, ITEM_ANTI_GOOD, ITEM_ANTI_EVIL,
	ITEM_ANTI_NEUTRAL, ITEM_NOREMOVE, ITEM_INVENTORY,
	ITEM_ANTI_MAGE, ITEM_ANTI_THIEF, ITEM_ANTI_WARRIOR, ITEM_ANTI_CLERIC,
	ITEM_ORGANIC, ITEM_METAL, ITEM_DONATION, ITEM_CLANOBJECT,
	ITEM_CLANCORPSE,
	ITEM_ANTI_VAMPIRE, ITEM_ANTI_DRUID, 
	ITEM_HIDDEN, ITEM_POISONED, ITEM_COVERING, ITEM_DEATHROT, ITEM_BURIED, 
	ITEM_PROTOTYPE, ITEM_NOLOCATE, ITEM_GROUNDROT, MAX_ITEM_FLAGS
};


#ifdef SMAUGSERVER_CPP
const char*	ItemFlagNames [MAX_ITEM_FLAGS] =
{
"glow", "hum", "dark", "loyal", "evil", "invis", "magic", "nodrop", "bless",
"antigood", "antievil", "antineutral", "noremove", "inventory",
"antimage", "antithief", "antiwarrior", "anticleric", "organic", "metal",
"donation", "clanobject", "clancorpse", "antivampire", "antidruid", 
"hidden", "poisoned", "covering", "deathrot", "buried", "prototype", 
"nolocate", "groundrot" };
#endif

extern	const char* ItemFlagNames [MAX_ITEM_FLAGS];


class CExtraFlags : public CBitVector {
public:
	CExtraFlags	GetActFlags () { return *this; }
	void		SetActFlags (const CExtraFlags& f) { *this = f; }
	CString		PrintString ()
				{ return CBitVector::PrintString (ItemFlagNames,
				    DIM (ItemFlagNames)); }

	BOOL	IsGlowing () const { return IsSet (ITEM_GLOW); }
	void	SetGlowing () { SetBit (ITEM_GLOW); }
	void	ClrGlowing () { ClrBit (ITEM_GLOW); }

	BOOL	IsHumming () const { return IsSet (ITEM_HUM); }
	void	SetHumming () { SetBit (ITEM_HUM); }
	void	ClrHumming () { ClrBit (ITEM_HUM); }

	BOOL	IsDark () const { return IsSet (ITEM_DARK); }
	void	SetDark () { SetBit (ITEM_DARK); }
	void	ClrDark () { ClrBit (ITEM_DARK); }

	BOOL	IsLoyal () const { return IsSet (ITEM_LOYAL); }
	void	SetLoyal () { SetBit (ITEM_LOYAL); }
	void	ClrLoyal () { ClrBit (ITEM_LOYAL); }

	BOOL	IsEvil () const { return IsSet (ITEM_EVIL); }
	void	SetEvil () { SetBit (ITEM_EVIL); }
	void	ClrEvil () { ClrBit (ITEM_EVIL); }

	BOOL	IsInvisible () const { return IsSet (ITEM_INVIS); }
	void	SetInvisible () { SetBit (ITEM_INVIS); }
	void	ClrInvisible () { ClrBit (ITEM_INVIS); }

	BOOL	IsMagic () const { return IsSet (ITEM_MAGIC); }
	void	SetMagic () { SetBit (ITEM_MAGIC); }
	void	ClrMagic () { ClrBit (ITEM_MAGIC); }

	BOOL	IsNoDrop () const { return IsSet (ITEM_NODROP); }
	void	SetNoDrop () { SetBit (ITEM_NODROP); }
	void	ClrNoDrop () { ClrBit (ITEM_NODROP); }

	BOOL	IsBlessed () const { return IsSet (ITEM_BLESS); }
	void	SetBlessed () { SetBit (ITEM_BLESS); }
	void	ClrBlessed () { ClrBit (ITEM_BLESS); }

	BOOL	IsAntiGood () const { return IsSet (ITEM_ANTI_GOOD); }
	void	SetAntiGood () { SetBit (ITEM_ANTI_GOOD); }
	void	ClrAntiGood () { ClrBit (ITEM_ANTI_GOOD); }

	BOOL	IsAntiEvil () const { return IsSet (ITEM_ANTI_EVIL); }
	void	SetAntiEvil () { SetBit (ITEM_ANTI_EVIL); }
	void	ClrAntiEvil () { ClrBit (ITEM_ANTI_EVIL); }

	BOOL	IsAntiNeutral () const { return IsSet (ITEM_ANTI_NEUTRAL); }
	void	SetAntiNeutral () { SetBit (ITEM_ANTI_NEUTRAL); }
	void	ClrAntiNeutral () { ClrBit (ITEM_ANTI_NEUTRAL); }

	BOOL	IsNoRemove () const { return IsSet (ITEM_NOREMOVE); }
	void	SetNoRemove () { SetBit (ITEM_NOREMOVE); }
	void	ClrNoRemove () { ClrBit (ITEM_NOREMOVE); }

	BOOL	IsInventory () const { return IsSet (ITEM_INVENTORY); }
	void	SetInventory () { SetBit (ITEM_INVENTORY); }
	void	ClrInventory () { ClrBit (ITEM_INVENTORY); }

	BOOL	IsAntiMage () const { return IsSet (ITEM_ANTI_MAGE); }
	void	SetAntiMage () { SetBit (ITEM_ANTI_MAGE); }
	void	ClrAntiMage () { ClrBit (ITEM_ANTI_MAGE); }

	BOOL	IsAntiThief () const { return IsSet (ITEM_ANTI_THIEF); }
	void	SetAntiThief () { SetBit (ITEM_ANTI_THIEF); }
	void	ClrAntiThief () { ClrBit (ITEM_ANTI_THIEF); }

	BOOL	IsAntiWarrior () const { return IsSet (ITEM_ANTI_WARRIOR); }
	void	SetAntiWarrior () { SetBit (ITEM_ANTI_WARRIOR); }
	void	ClrAntiWarrior () { ClrBit (ITEM_ANTI_WARRIOR); }

	BOOL	IsAntiCleric () const { return IsSet (ITEM_ANTI_CLERIC); }
	void	SetAntiCleric () { SetBit (ITEM_ANTI_CLERIC); }
	void	ClrAntiCleric () { ClrBit (ITEM_ANTI_CLERIC); }

	BOOL	IsOrganic () const { return IsSet (ITEM_ORGANIC); }
	void	SetOrganic () { SetBit (ITEM_ORGANIC); }
	void	ClrOrganic () { ClrBit (ITEM_ORGANIC); }

	BOOL	IsMetal () const { return IsSet (ITEM_METAL); }
	void	SetMetal () { SetBit (ITEM_METAL); }
	void	ClrMetal () { ClrBit (ITEM_METAL); }

	BOOL	IsDonation () const { return IsSet (ITEM_DONATION); }
	void	SetDonation () { SetBit (ITEM_DONATION); }
	void	ClrDonation () { ClrBit (ITEM_DONATION); }

	BOOL	IsClanObject () const { return IsSet (ITEM_CLANOBJECT); }
	void	SetClanObject () { SetBit (ITEM_CLANOBJECT); }
	void	ClrClanObject () { ClrBit (ITEM_CLANOBJECT); }

	BOOL	IsClanCorpse () const { return IsSet (ITEM_CLANCORPSE); }
	void	SetClanCorpse () { SetBit (ITEM_CLANCORPSE); }
	void	ClrClanCorpse () { ClrBit (ITEM_CLANCORPSE); }

	BOOL	IsAntiVampire () const { return IsSet (ITEM_ANTI_VAMPIRE); }
	void	SetAntiVampire () { SetBit (ITEM_ANTI_VAMPIRE); }
	void	ClrAntiVampire () { ClrBit (ITEM_ANTI_VAMPIRE); }

	BOOL	IsAntiDruid () const { return IsSet (ITEM_ANTI_DRUID); }
	void	SetAntiDruid () { SetBit (ITEM_ANTI_DRUID); }
	void	ClrAntiDruid () { ClrBit (ITEM_ANTI_DRUID); }

	BOOL	IsHidden () const { return IsSet (ITEM_HIDDEN); }
	void	SetHidden () { SetBit (ITEM_HIDDEN); }
	void	ClrHidden () { ClrBit (ITEM_HIDDEN); }

	BOOL	IsPoisoned () const { return IsSet (ITEM_POISONED); }
	void	SetPoisoned () { SetBit (ITEM_POISONED); }
	void	ClrPoisoned () { ClrBit (ITEM_POISONED); }

	BOOL	IsCovering () const { return IsSet (ITEM_COVERING); }
	void	SetCovering () { SetBit (ITEM_COVERING); }
	void	ClrCovering () { ClrBit (ITEM_COVERING); }

	BOOL	IsDeathrot () const { return IsSet (ITEM_DEATHROT); }
	void	SetDeathrot () { SetBit (ITEM_DEATHROT); }
	void	ClrDeathrot () { ClrBit (ITEM_DEATHROT); }

	BOOL	IsBuried () const { return IsSet (ITEM_BURIED); }
	void	SetBuried () { SetBit (ITEM_BURIED); }
	void	ClrBuried () { ClrBit (ITEM_BURIED); }

	BOOL	IsPrototype () const { return IsSet (ITEM_PROTOTYPE); }
	void	SetPrototype () { SetBit (ITEM_PROTOTYPE); }
	void	ClrPrototype () { ClrBit (ITEM_PROTOTYPE); }

	BOOL	IsNoLocate () const { return IsSet (ITEM_NOLOCATE); }
	void	SetNoLocate () { SetBit (ITEM_NOLOCATE); }
	void	ClrNoLocate () { ClrBit (ITEM_NOLOCATE); }

	BOOL	IsGroundRot () const { return IsSet (ITEM_GROUNDROT); }
	void	SetGroundRot () { SetBit (ITEM_GROUNDROT); }
	void	ClrGroundRot () { ClrBit (ITEM_GROUNDROT); }
};

#endif