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.    *
 * ------------------------------------------------------------------------ *
 *			    Act Flags Interface file									*
 ***************************************************************************/

#ifndef	ACTFLAGS_H
#define	ACTFLAGS_H

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


// ACT bits for players.
enum PlayerActs {
	PLR_IS_NPC,PLR_BOUGHT_PET, PLR_SHOVEDRAG, PLR_AUTOEXIT, PLR_AUTOLOOT, 
	PLR_AUTOSAC, PLR_BLANK, PLR_OUTCAST, PLR_BRIEF, PLR_COMBINE, PLR_PROMPT, 
	PLR_TELNET_GA, PLR_HOLYLIGHT, PLR_WIZINVIS, PLR_ROOMVNUM, PLR_SILENCE, 
	PLR_NO_EMOTE, PLR_ATTACKER, PLR_NO_TELL, PLR_LOG, PLR_DENY, PLR_FREEZE, 
	PLR_THIEF, PLR_KILLER, PLR_LITTERBUG, PLR_ANSI, PLR_RIP, PLR_NICE,
	PLR_FLEE, PLR_AUTOGOLD, PLR_AUTOMAP, PLR_AFK, PLR_INVISPROMPT,
	PLR_MAX };

#ifdef SMAUGSERVER_CPP
const char*	PlrActNames [PLR_MAX] = {
	"npc", "boughtpet", "shovedrag", "autoexits", "autoloot", "autosac",
	"blank", "outcast", "brief", "combine", "prompt", "telnet_ga",
	"holylight", "wizinvis", "roomvnum","silence", "noemote", "attacker",
	"notell", "log", "deny", "freeze", "thief","killer", "litterbug",
	"ansi", "rip", "nice", "flee" ,"autogold", "automap", "afk",
	"invisprompt"
};
#endif

extern	const char* PlrActNames [PLR_MAX];

// ACT bits for mobs.
enum MobActs {
	ACT_IS_NPC,			// Auto set for mobs
	ACT_SENTINEL,		// Stays in one room
	ACT_SCAVENGER,		// Picks up objects
	ACT_R3,
	ACT_R4,
	ACT_AGGRESSIVE,		// Attacks PC's
	ACT_STAY_AREA,		// Won't leave area
	ACT_WIMPY,			// Flees when hurt
	ACT_PET,			// Auto set for pets
	ACT_TRAIN,			// Can train PC's
	ACT_PRACTICE,		// Can practice PC's
	ACT_IMMORTAL,		// Cannot be killed
	ACT_DEADLY,			// Has a deadly poison
	ACT_POLYSELF,
	ACT_META_AGGR,		// Extremely aggressive
	ACT_GUARDIAN,		// Protects master
	ACT_RUNNING,		// Hunts quickly
	ACT_NOWANDER,		// Doesn't wander
	ACT_MOUNTABLE,		// Can be mounted
	ACT_MOUNTED,		// Is mounted
	ACT_SCHOLAR,		// Can teach languages
	ACT_SECRETIVE,		// actions aren't seen
	ACT_POLYMORPHED,	// Mob is a ch
	ACT_MOBINVIS,		// Like wizinvis
	ACT_NOASSIST,		// Doesn't assist mobs
	ACT_AUTONOMOUS,		// Doesn't auto switch tanks
	ACT_PACIFIST,		// Doesn't ever fight
	ACT_NOATTACK,		// No physical attacks
	ACT_ANNOYING,		// Other mobs will attack
	ACT_R29,
	ACT_PROTOTYPE,		// A prototype mob
	ACT_MAX };

#ifdef SMAUGSERVER_CPP
const char*	MobActNames [ACT_MAX] = {
	"npc", "sentinel", "scavenger", "r3", "r4", "aggressive", "stayarea",
	"wimpy", "pet", "train", "practice", "immortal", "deadly", "polyself",
	"meta_aggr", "guardian", "running", "nowander", "mountable", "mounted",
	"scholar", "secretive", "polymorphed", "mobinvis", "noassist",
	"autonomous", "pacifist", "noattack", "annoying", "r29", "prototype"
};
#endif

extern	const char* MobActNames [ACT_MAX];


class CActFlags : public CBitVector {
public:
	CActFlags	GetActFlags () { return *this; }
	void		SetActFlags (const CActFlags& f) { *this = f; }
	CString		PrintString (BOOL bNpc)
				{ return CBitVector::PrintString (
				    bNpc ? MobActNames : PlrActNames,
				    bNpc ? DIM (MobActNames) : DIM (PlrActNames)); }

	BOOL	IsNpc () { return IsSet (ACT_IS_NPC); }
	void	SetNpc () { SetBit (ACT_IS_NPC); }
	void	ClrNpc () { ClrBit (ACT_IS_NPC); }

	BOOL	IsAggressive () { return IsSet (ACT_AGGRESSIVE); }
	void	SetAggressive () { SetBit (ACT_AGGRESSIVE); }
	void	ClrAggressive () { ClrBit (ACT_AGGRESSIVE); }

	BOOL	IsWimpy () { return IsSet (ACT_WIMPY); }
	void	SetWimpy () { SetBit (ACT_WIMPY); }
	void	ClrWimpy () { ClrBit (ACT_WIMPY); }

	BOOL	IsSilent () { return IsSet (PLR_SILENCE); }
	void	SetSilent () { SetBit (PLR_SILENCE); }
	void	ClrSilent () { ClrBit (PLR_SILENCE); }

	BOOL	IsDenied () { return IsSet (PLR_DENY); }
	void	SetDeny () { SetBit (PLR_DENY); }
	void	ClrDeny () { ClrBit (PLR_DENY); }

	BOOL	IsNice () { return IsSet (PLR_NICE); }
	void	SetNice () { SetBit (PLR_NICE); }
	void	ClrNice () { ClrBit (PLR_NICE); }

	BOOL	IsAttacker () { return IsSet (PLR_ATTACKER); }
	void	SetAttacker () { SetBit (PLR_ATTACKER); }
	void	ClrAttacker () { ClrBit (PLR_ATTACKER); }

	BOOL	IsKiller () { return IsSet (PLR_KILLER); }
	void	SetKiller () { SetBit (PLR_KILLER); }
	void	ClrKiller () { ClrBit (PLR_KILLER); }

	BOOL	IsThief () { return IsSet (PLR_THIEF); }
	void	SetThief () { SetBit (PLR_THIEF); }
	void	ClrThief () { ClrBit (PLR_THIEF); }

	BOOL	IsLitterBug () { return IsSet (PLR_LITTERBUG); }
	void	SetLitterBug () { SetBit (PLR_LITTERBUG); }
	void	ClrLitterBug () { ClrBit (PLR_LITTERBUG); }

	BOOL	IsFrozen () { return IsSet (PLR_FREEZE); }
	void	SetFrozen () { SetBit (PLR_FREEZE); }
	void	ClrFrozen () { ClrBit (PLR_FREEZE); }

	BOOL	IsLogged () { return IsSet (PLR_LOG); }
	void	SetLogged () { SetBit (PLR_LOG); }
	void	ClrLogged () { ClrBit (PLR_LOG); }

	BOOL	IsNoEmote () { return IsSet (PLR_NO_EMOTE); }
	void	SetNoEmote () { SetBit (PLR_NO_EMOTE); }
	void	ClrNoEmote () { ClrBit (PLR_NO_EMOTE); }

	BOOL	IsNoTell () { return IsSet (PLR_NO_TELL); }
	void	SetNoTell () { SetBit (PLR_NO_TELL); }
	void	ClrNoTell () { ClrBit (PLR_NO_TELL); }

	BOOL	IsWizInvis () { return IsSet (PLR_WIZINVIS); }
	void	SetWizInvis () { SetBit (PLR_WIZINVIS); }
	void	ClrWizInvis () { ClrBit (PLR_WIZINVIS); }

	BOOL	IsMobInvis () { return IsSet (ACT_MOBINVIS); }
	void	SetMobInvis () { SetBit (ACT_MOBINVIS); }
	void	ClrMobInvis () { ClrBit (ACT_MOBINVIS); }

	BOOL	IsSecretive () { return IsSet (ACT_SECRETIVE); }
	void	SetSecretive () { SetBit (ACT_SECRETIVE); }
	void	ClrSecretive () { ClrBit (ACT_SECRETIVE); }

	BOOL	IsHolyLight () { return IsSet (PLR_HOLYLIGHT); }
	void	SetHolyLight () { SetBit (PLR_HOLYLIGHT); }
	void	ClrHolyLight () { ClrBit (PLR_HOLYLIGHT); }

	BOOL	IsCombined () { return IsSet (PLR_COMBINE); }
	void	SetCombine () { SetBit (PLR_COMBINE); }
	void	ClrCombine () { ClrBit (PLR_COMBINE); }

	BOOL	IsBrief () { return IsSet (PLR_BRIEF); }
	void	SetBrief () { SetBit (PLR_BRIEF); }
	void	ClrBrief () { ClrBit (PLR_BRIEF); }

	BOOL	IsBlank () { return IsSet (PLR_BLANK); }
	void	SetBlank () { SetBit (PLR_BLANK); }
	void	ClrBlank () { ClrBit (PLR_BLANK); }

	BOOL	HasPrompt () { return IsSet (PLR_PROMPT); }
	void	SetHasPrompt () { SetBit (PLR_PROMPT); }
	void	ClrHasPrompt () { ClrBit (PLR_PROMPT); }

	BOOL	IsTelenet () { return IsSet (PLR_TELNET_GA); }
	void	SetTelenet () { SetBit (PLR_TELNET_GA); }
	void	ClrTelenet () { ClrBit (PLR_TELNET_GA); }

	BOOL	IsRip () { return IsSet (PLR_RIP); }
	void	SetRip () { SetBit (PLR_RIP); }
	void	ClrRip () { ClrBit (PLR_RIP); }

	BOOL	IsPacifist () { return IsSet (ACT_PACIFIST); }
	void	SetPacifist () { SetBit (ACT_PACIFIST); }
	void	ClrPacifist () { ClrBit (ACT_PACIFIST); }

	BOOL	IsAutoExit () { return IsSet (PLR_AUTOEXIT); }
	void	SetAutoExit () { SetBit (PLR_AUTOEXIT); }
	void	ClrAutoExit () { ClrBit (PLR_AUTOEXIT); }

	BOOL	IsAutoLoot () { return IsSet (PLR_AUTOLOOT); }
	void	SetAutoLoot () { SetBit (PLR_AUTOLOOT); }
	void	ClrAutoLoot () { ClrBit (PLR_AUTOLOOT); }

	BOOL	IsAutoSac () { return IsSet (PLR_AUTOSAC); }
	void	SetAutoSac () { SetBit (PLR_AUTOSAC); }
	void	ClrAutoSac () { ClrBit (PLR_AUTOSAC); }

	BOOL	CanPractice () { return IsSet (ACT_PRACTICE); }
	void	SetPractice () { SetBit (ACT_PRACTICE); }
	void	ClrPractice () { ClrBit (ACT_PRACTICE); }

	BOOL	BoughtPet () { return IsSet (PLR_BOUGHT_PET); }
	void	SetBoughtPet () { SetBit (PLR_BOUGHT_PET); }
	void	ClrBoughtPet () { ClrBit (PLR_BOUGHT_PET); }

	BOOL	IsPet () { return IsSet (ACT_PET); }
	void	SetPet () { SetBit (ACT_PET); }
	void	ClrPet () { ClrBit (ACT_PET); }

	BOOL	IsAnsi () { return IsSet (PLR_ANSI); }
	void	SetAnsi () { SetBit (PLR_ANSI); }
	void	ClrAnsi () { ClrBit (PLR_ANSI); }

	BOOL	IsVnums () { return IsSet (PLR_ROOMVNUM); }
	void	SetVnums () { SetBit (PLR_ROOMVNUM); }
	void	ClrVnums () { ClrBit (PLR_ROOMVNUM); }

	BOOL	IsPolymorphed () { return IsSet (ACT_POLYMORPHED); }
	void	SetPolymorphed () { SetBit (ACT_POLYMORPHED); }
	void	ClrPolymorphed () { ClrBit (ACT_POLYMORPHED); }

	BOOL	IsNoAssist () { return IsSet (ACT_NOASSIST); }
	void	SetNoAssist () { SetBit (ACT_NOASSIST); }
	void	ClrNoAssist () { ClrBit (ACT_NOASSIST); }

	BOOL	IsAfk () { return IsSet (PLR_AFK); }
	void	SetAfk () { SetBit (PLR_AFK); }
	void	ClrAfk () { ClrBit (PLR_AFK); }

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

	BOOL	IsAutonomous () { return IsSet (ACT_AUTONOMOUS); }
	void	SetAutonomous () { SetBit (ACT_AUTONOMOUS); }
	void	ClrAutonomous () { ClrBit (ACT_AUTONOMOUS); }

};

#endif