#ifndef	_AI_FRAMES
#define	_AI_FRAMES

///////////////////////////////////////////////////////////////////////////////
//
// routines for managing frames in monsters/bots
//
///////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////
//	gib names
///////////////////////////////////////////////////////////////////////////////

extern	char	*gib_names [];

///////////////////////////////////////////////////////////////////////////////
// monster numbers
///////////////////////////////////////////////////////////////////////////////

#define TYPE_CLIENT			1		
#define	TYPE_MIKIKO			2
#define	TYPE_SUPERFLY		3
#define	TYPE_BOT			4		//	deathmatch bot
//
// Episode 1
//
#define	TYPE_ROBOCROC		10
#define	TYPE_SL_SKEET		11
#define	TYPE_TH_SKEET		12
#define	TYPE_FROGINATOR		13
#define	TYPE_VERMIN			14
#define	TYPE_SLUDGEMINION	15
#define	TYPE_TENTACLOR		16
#define	TYPE_INMATER		17
#define	TYPE_PRISONER		18
#define	TYPE_BATTLEBOAR		19
#define	TYPE_RAGEMASTER		20
#define	TYPE_TRACKATTACK	21
#define	TYPE_TRACKDADDY		22
#define	TYPE_LASERGAT		23
#define	TYPE_CAMBOT			24
#define	TYPE_PSYCLAW		25
//
// Episode 2
//
#define	TYPE_FERRYMAN		30
#define	TYPE_SKELETON		31
#define	TYPE_SPIDER			32
#define	TYPE_SATYR			33
#define	TYPE_CENTURION		34
#define	TYPE_HARPY			35
#define	TYPE_COLUMN			36
#define	TYPE_SIREN			37
#define	TYPE_GRIFFON		38
#define	TYPE_CEREBUS		39
#define	TYPE_MEDUSA			40
#define	TYPE_CYCLOPS		41
//
// Episode 3
//
#define	TYPE_PRIEST			50
#define	TYPE_BUBOID			51
#define	TYPE_DOOMBAT		52
#define	TYPE_ROTWORM		53
#define	TYPE_PLAGUERAT		54
#define	TYPE_DWARF			55
#define	TYPE_FLETCHER		56
#define	TYPE_DRAGONEGG		57
#define	TYPE_BABYDRAGON		58
#define	TYPE_LYCANTHIR		59
#define	TYPE_CELESTRIL		60
#define	TYPE_WYNDRAX		61
#define	TYPE_NHARRE			62
#define	TYPE_GARROTH		63
#define	TYPE_DRAGON			64
//
// Episode 4
//
#define	TYPE_BLACKPRIS		70
#define	TYPE_WHITEPRIS		71
#define	TYPE_CHAINGANG		72
#define	TYPE_FEMGANG		73
#define	TYPE_PIPEGANG		74
#define	TYPE_ROCKETGANG		75
#define	TYPE_UZIGANG		76
#define	TYPE_LABMONKEY		77
#define	TYPE_LABWORKER		78
#define	TYPE_NAVYSEAL		79
#define	TYPE_SHARK			80
#define	TYPE_SQUID			81
#define	TYPE_GOLDFISH		82


/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// prototypes
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

int		ai_get_frames			(userEntity_t *self, char *seq_name, int *startFrame, int *endFrame);
int		ai_get_sequence			(userEntity_t *self, char *name, frameData_t **sequence);
void	ai_get_sequences		(userEntity_t *self);
void	ai_set_sequence_sounds	(userEntity_t *self, int frame1, char *sound1, int frame2, char *sound2);
void	ai_set_trans			(userEntity_t *self, int start, int main, int main_num, int end);
void	ai_post_trans			(userEntity_t *self, unsigned long flags);
void	ai_set_sequence_data	(userEntity_t *self, frameData_t *data, int sf1, char *name1, int sf2, 
								char *name2, int pret_type, int pret, int post_type, int postt, unsigned long int flags);
void	ai_init_sequence		(userEntity_t *self, frameData_t *data, int seq_type, int seq_num);
void	ai_set_frames			(userEntity_t *self, int cur_seq_type, int cur_seq_num);
void	ai_force_sequence		(userEntity_t *self, int seq_type, int seq_num, int trans_pre_type, int trans_pre, 
								int trans_post_type, int trans_post, int sf1, char *sname1, int sf2, char *sname2);

void	ai_die_sound			(userEntity_t *self);
void	ai_wander_sound			(userEntity_t *self);
void	ai_sight_sound			(userEntity_t *self);
void	ai_pain_sound			(userEntity_t *self);

void	ai_frame_update			(userEntity_t *self);

userEntity_t	*ai_throw_gib	(userEntity_t *self, char *model, Vector offset);


#endif