#ifndef AURA_H
#define AURA_H

#define AURA_WHITE_SKIN		0
#define AURA_GREEN_SKIN		1
#define AURA_PURPLE_SKIN	2
#define AURA_RED_SKIN		3
#define AURA_YELLOW_SKIN	4

/**
* Aura class 
* @version ?
* @author Herwin 'harSens' van Welbergen
* @author Joe
*/
class CAura:public CBaseMonster
{	
public:
	/**
	* spawns it
	*/
	void Spawn();

	/**
	* precaches the aura
	*/
	void Precache();

	/**
	* removes the aura
	*/
	void Destroy();

	/**
	* aura's thinking function
	*/
	void EXPORT RemoveThink();

	/**
	 * Take damage function, used to get the damage to the player using the aura
	 * @param entvars_t* pevInflictor: the entity doing damage
	 * @param entvars_t* pevAttacker: the attacking entity
	 * @param float flDamage: amount of damage done
	 * @param int bitsDamageType: damage type
	 */
	int	TakeDamage( entvars_t* pevInflictor, entvars_t* pevAttacker, float flDamage, int bitsDamageType );

	/**
	* creates an aura
	* @param CBasePlayer *player:the player who should get the aura
	* @param BOOL fDash: if this is a dash aura
	*/
	static CAura *Create(CBasePlayer *pevOwner, BOOL fDash=FALSE);

	/**
	 * Sets the right color for the aura
	 */
	void SetColor();

	/**
	* Pcjoe: Add Trail
	*/
	void AddTrail( void );

	/**
	* Pcjoe: Remove Trail
	*/
	void RemoveTrail( void );

	// Removed by Pcjoe
//	BOOL m_fHasTrail;
	// Added by Pcjoe
	BOOL m_fDash;
private:
	CBasePlayer *m_pPlayer;
	short m_sTrailSprite;	
};
#endif
