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

#ifndef	ATCKFLAGS_H
#define	ATCKFLAGS_H

#include	"BitVector.h"


// Damage types from the attack_table []
enum DamageTypes {
   DAM_HIT, DAM_SLICE, DAM_STAB, DAM_SLASH, DAM_WHIP, DAM_CLAW,
   DAM_BLAST, DAM_POUND, DAM_CRUSH, DAM_GREP, DAM_BITE, DAM_PIERCE,
   DAM_SUCTION, DAM_BOLT, DAM_ARROW, DAM_DART, DAM_STONE, DAM_PEA,
   DAM_MAX };

// ATTACK bits
enum AttackBits {
	ATCK_BITE, ATCK_CLAWS, ATCK_TAIL, ATCK_STING, ATCK_PUNCH, ATCK_KICK,
	ATCK_TRIP, ATCK_BASH, ATCK_STUN, ATCK_GOUGE, ATCK_BACKSTAB, ATCK_FEED,
	ATCK_DRAIN,  ATCK_FIREBREATH, ATCK_FROSTBREATH, ATCK_ACIDBREATH,
	ATCK_LIGHTNBREATH, ATCK_GASBREATH, ATCK_POISON, ATCK_NASTYPOISON, ATCK_GAZE,
	ATCK_BLINDNESS, ATCK_CAUSESERIOUS, ATCK_EARTHQUAKE, ATCK_CAUSECRITICAL,
	ATCK_CURSE, ATCK_FLAMESTRIKE, ATCK_HARM, ATCK_FIREBALL, ATCK_COLORSPRAY,
	ATCK_WEAKEN, ATCK_SPIRALBLAST,
	MAX_ATTACK_TYPE };

#ifdef SMAUGSERVER_CPP
const char*	AttackNames [MAX_ATTACK_TYPE] = {
	"bite", "claws", "tail", "sting", "punch", "kick",
	"trip", "bash", "stun", "gouge", "backstab", "feed",
	"drain", "firebreath", "frostbreath", "acidbreath",
	"lightnbreath", "gasbreath", "poison", "nastypoison", "gaze",
	"blindness", "causeserious", "earthquake", "causecritical",
	"curse", "flamestrike", "harm", "fireball", "colorspray",
	"weaken", "spiralblast"
};
#endif

extern	const char* AttackNames [MAX_ATTACK_TYPE];

class CAttackFlags : public CBitVector {
public:
	const CAttackFlags&	GetAttackFlags () { return *this; }

	void	SetAttackFlags (const CAttackFlags& f) { *this = f; }
	CString	PrintString () const
			{ return CBitVector::PrintString (AttackNames, MAX_ATTACK_TYPE); }

	BOOL	CanBite () { return IsSet (ATCK_BITE); }
	void	SetBite () { SetBit (ATCK_BITE); }
	void	ClrBite () { ClrBit (ATCK_BITE); }

	BOOL	CanUseClaws () { return IsSet (ATCK_CLAWS); }
	void	SetClaws () { SetBit (ATCK_CLAWS); }
	void	ClrClaws () { ClrBit (ATCK_CLAWS); }

	BOOL	CanUseTail () { return IsSet (ATCK_TAIL); }
	void	SetTail () { SetBit (ATCK_TAIL); }
	void	ClrTail () { ClrBit (ATCK_TAIL); }

	BOOL	CanSting () { return IsSet (ATCK_STING); }
	void	SetSting () { SetBit (ATCK_STING); }
	void	ClrSting () { ClrBit (ATCK_STING); }

	BOOL	CanPunch () { return IsSet (ATCK_PUNCH); }
	void	SetPunch () { SetBit (ATCK_PUNCH); }
	void	ClrPunch () { ClrBit (ATCK_PUNCH); }

	BOOL	CanKick () { return IsSet (ATCK_KICK); }
	void	SetKick () { SetBit (ATCK_KICK); }
	void	ClrKick () { ClrBit (ATCK_KICK); }

	BOOL	CanTrip () { return IsSet (ATCK_TRIP); }
	void	SetTrip () { SetBit (ATCK_TRIP); }
	void	ClrTrip () { ClrBit (ATCK_TRIP); }

	BOOL	CanBash () { return IsSet (ATCK_BASH); }
	void	SetBash () { SetBit (ATCK_BASH); }
	void	ClrBash () { ClrBit (ATCK_BASH); }

	BOOL	CanStun () { return IsSet (ATCK_STUN); }
	void	SetStun () { SetBit (ATCK_STUN); }
	void	ClrStun () { ClrBit (ATCK_STUN); }

	BOOL	CanGouge () { return IsSet (ATCK_GOUGE); }
	void	SetGouge () { SetBit (ATCK_GOUGE); }
	void	ClrGouge () { ClrBit (ATCK_GOUGE); }

	BOOL	CanBackStab () { return IsSet (ATCK_BACKSTAB); }
	void	SetBackStab () { SetBit (ATCK_BACKSTAB); }
	void	ClrBackStab () { ClrBit (ATCK_BACKSTAB); }

	BOOL	CanFeed () { return IsSet (ATCK_FEED); }
	void	SetFeed () { SetBit (ATCK_FEED); }
	void	ClrFeed () { ClrBit (ATCK_FEED); }

	BOOL	CanDrain () { return IsSet (ATCK_DRAIN); }
	void	SetDrain () { SetBit (ATCK_DRAIN); }
	void	ClrDrain () { ClrBit (ATCK_DRAIN); }

	BOOL	CanBreatheFire () { return IsSet (ATCK_FIREBREATH); }
	void	SetBreatheFire () { SetBit (ATCK_FIREBREATH); }
	void	ClrBreatheFire () { ClrBit (ATCK_FIREBREATH); }

	BOOL	CanBreatheFrost () { return IsSet (ATCK_FROSTBREATH); }
	void	SetBreatheFrost () { SetBit (ATCK_FROSTBREATH); }
	void	ClrBreatheFrost () { ClrBit (ATCK_FROSTBREATH); }

	BOOL	CanBreatheAcid () { return IsSet (ATCK_ACIDBREATH); }
	void	SetBreatheAcid () { SetBit (ATCK_ACIDBREATH); }
	void	ClrBreatheAcid () { ClrBit (ATCK_ACIDBREATH); }

	BOOL	CanBreatheLightning () { return IsSet (ATCK_LIGHTNBREATH); }
	void	SetBreatheLightning () { SetBit (ATCK_LIGHTNBREATH); }
	void	ClrBreatheLightning () { ClrBit (ATCK_LIGHTNBREATH); }

	BOOL	CanBreatheGas () { return IsSet (ATCK_GASBREATH); }
	void	SetBreatheGas () { SetBit (ATCK_GASBREATH); }
	void	ClrBreatheGas () { ClrBit (ATCK_GASBREATH); }

	BOOL	CanPoison () { return IsSet (ATCK_POISON); }
	void	SetPoison () { SetBit (ATCK_POISON); }
	void	ClrPoison () { ClrBit (ATCK_POISON); }

	BOOL	CanNastyPoison () { return IsSet (ATCK_NASTYPOISON); }
	void	SetNastyPoison () { SetBit (ATCK_NASTYPOISON); }
	void	ClrNastyPoison () { ClrBit (ATCK_NASTYPOISON); }

	BOOL	CanGaze () { return IsSet (ATCK_GAZE); }
	void	SetGaze () { SetBit (ATCK_GAZE); }
	void	ClrGaze () { ClrBit (ATCK_GAZE); }

	BOOL	CanBlind () { return IsSet (ATCK_BLINDNESS); }
	void	SetBlind () { SetBit (ATCK_BLINDNESS); }
	void	ClrBlind () { ClrBit (ATCK_BLINDNESS); }

	BOOL	CanCauseSerious () { return IsSet (ATCK_CAUSESERIOUS); }
	void	SetCauseSerious () { SetBit (ATCK_CAUSESERIOUS); }
	void	ClrCauseSerious () { ClrBit (ATCK_CAUSESERIOUS); }

	BOOL	CanQuake () { return IsSet (ATCK_EARTHQUAKE); }
	void	SetQuake () { SetBit (ATCK_EARTHQUAKE); }
	void	ClrQuake () { ClrBit (ATCK_EARTHQUAKE); }

	BOOL	CanCauseCritical () { return IsSet (ATCK_CAUSECRITICAL); }
	void	SetCauseCritical () { SetBit (ATCK_CAUSECRITICAL); }
	void	ClrCauseCritical () { ClrBit (ATCK_CAUSECRITICAL); }

	BOOL	CanCurse () { return IsSet (ATCK_CURSE); }
	void	SetCurse () { SetBit (ATCK_CURSE); }
	void	ClrCurse () { ClrBit (ATCK_CURSE); }

	BOOL	CanFlameStrike () { return IsSet (ATCK_FLAMESTRIKE); }
	void	SetFlameStrike () { SetBit (ATCK_FLAMESTRIKE); }
	void	ClrFlameStrike () { ClrBit (ATCK_FLAMESTRIKE); }

	BOOL	CanHarm () { return IsSet (ATCK_HARM); }
	void	SetHarm () { SetBit (ATCK_HARM); }
	void	ClrHarm () { ClrBit (ATCK_HARM); }

	BOOL	CanFireball () { return IsSet (ATCK_FIREBALL); }
	void	SetFireball () { SetBit (ATCK_FIREBALL); }
	void	ClrFireball () { ClrBit (ATCK_FIREBALL); }

	BOOL	CanColorSpray () { return IsSet (ATCK_COLORSPRAY); }
	void	SetColorSpray () { SetBit (ATCK_COLORSPRAY); }
	void	ClrColorSpray () { ClrBit (ATCK_COLORSPRAY); }

	BOOL	CanWeaken () { return IsSet (ATCK_WEAKEN); }
	void	SetWeaken () { SetBit (ATCK_WEAKEN); }
	void	ClrWeaken () { ClrBit (ATCK_WEAKEN); }

	BOOL	CanSpiralBlast () { return IsSet (ATCK_SPIRALBLAST); }
	void	SetSpiralBlast () { SetBit (ATCK_SPIRALBLAST); }
	void	ClrSpiralBlast () { ClrBit (ATCK_SPIRALBLAST); }
};

#endif