#ifndef	AI_H
#define	AI_H

/////////////////////////////////////////////////////////////////////////////////////////////////////
//	ai.h
//
//	Nelno, May 18, 1998:  Why am I reording this stuff right before E3, anyway?
//
//	defines and structures used by all ai_ files
/////////////////////////////////////////////////////////////////////////////////////////////////////

#define	THINK_TIME	0.1

/////////////////////////////////////////////////////////////////////////////////////////////////////
//	think states
//	
//	these values describe the set of routines that have control of an entity's thinking process
//	they are not flags -- hook->ai_state can only equal one of these values at a time.
/////////////////////////////////////////////////////////////////////////////////////////////////////

#define	TH_FOLLOW		1
#define	TH_PATH_FOLLOW	2
#define	TH_STAND		3
#define	TH_NODE_WANDER	4				//	wander from node to node with no specific purpose
#define TH_ATTACK		5
#define	TH_WANDER		6
#define	TH_PATH_WANDER	7

#define	TH_TRANSITION	9				//	transitioning from one frame sequnce to another
#define	TH_NODE_RETREAT	10				//	trying to get as far away from self->enemy as possible
#define	TH_TIME_FOLLOW	11				//	following using time stamps on nodes

/////////////////////////////////////////////////////////////////////////////////////////////////////
//	these flags modify think behaviour
//
//	multiple flags can be set at once
/////////////////////////////////////////////////////////////////////////////////////////////////////

#define	AI_CONTINUE		0x00000001		//	go to continue_think when finished with current action
#define AI_SPECIAL		0x00000002		//	go to special_think when finished with current action
#define	AI_END_ATTACK	0x00000004		//	attack needs to be aborted at end of sequence for some reason
#define	AI_JUMP			0x00000008		//	set when an entity jumps.  when set an entities think will not be
										//	reset because it is assumed that it has been set in ai_jump
#define	AI_TURN			0x00000010		//	set when an entity turns.  when set an entities think will not be
										//	reset because it is assumed that it has been set in ai_turn
#define	AI_ACTION		0x00000020		//	performing a monster_path_corner_action

/////////////////////////////////////////////////////////////////////////////////////////////////////
//	goal types
/////////////////////////////////////////////////////////////////////////////////////////////////////

#define	GOAL_TEMP		1
#define	GOAL_NODE		2
#define	GOAL_ENEMY		3
#define	GOAL_PATH		4
#define	GOAL_ITEM		5
#define	GOAL_OBJECT		6
#define	GOAL_OWNER		7
#define	GOAL_NONE		99	//	placeholder for tasks without a goal

#define	REACHED_GOAL_DIST	32.0

#define	STRAFE_RIGHT	1
#define	STRAFE_LEFT 	2

#define	TURN_RIGHT		1
#define	TURN_LEFT		2

#endif