/*
....[@@@..[@@@..............[@.................. MUD++ is a written from
....[@..[@..[@..[@..[@..[@@@@@....[@......[@.... scratch multi-user swords and
....[@..[@..[@..[@..[@..[@..[@..[@@@@@..[@@@@@.. sorcery game written in C++.
....[@......[@..[@..[@..[@..[@....[@......[@.... This server is an ongoing
....[@......[@..[@@@@@..[@@@@@.................. development project.  All 
................................................ contributions are welcome. 
....Copyright(C).1995.Melvin.Smith.............. Enjoy. 
------------------------------------------------------------------------------
Melvin Smith (aka Fusion)         msmith@falcon.mercer.peachnet.edu 
MUD++ development mailing list    mudpp-list@spice.com
------------------------------------------------------------------------------
combat.h
*/

#ifndef _COMBAT_H
#define _COMBAT_H

#include "bit.h"

const char * damRangeName( int, bool );
const char * damTypeName( int );

extern const bitType	dam_types[];


const int DAM_RANGES 	=	7;

const int NONE			=	0;
const int PUNCH			=	1;
const int KICK			=	2;
const int CRUSH			=	3;
const int PIERCE		=	4;
const int SLASH			=	5;
const int WHIP			=	6;

const int FUMBLE		=	0;
const int MISSED		=	1;
const int DODGED		=	2;
const int HIT			=	3;
const int CRIT_HIT		=	4;


class Attack
{
	private:
		int  type;
		int  min_dam;
		int  max_dam;
		int  hit_mod;
		int  dam_mod;

	public:
		Attack()
		:	type(PUNCH),
			min_dam(1), max_dam(6),
			hit_mod(0), dam_mod(0)
		{
		}

		Attack( int t, int min, int max, int hit, int dam )
		:	type(t),
			min_dam(min), max_dam(max),
			hit_mod(hit), dam_mod(dam)
		{
		}

		int getType() { return type;    }
		int getHit()  { return hit_mod; }
		int getDam()  { return dam_mod; }
		int getMin()  { return min_dam; }
		int getMax()  { return max_dam; }
};


inline const char * getDamTypeName( int val )
{
	return getBitName( dam_types, val );
}

inline int getDamType( const char * name )
{
	return getBit( dam_types, name );
}

#endif