$cd /raid/quake/id1/models/fish
$origin 0 0 24
$base base		
$skin skin

$frame attack1 attack2 attack3 attack4 attack5 attack6 
$frame attack7 attack8 attack9 attack10 attack11 attack12 attack13 
$frame attack14 attack15 attack16 attack17 attack18 

$frame death1 death2 death3 death4 death5 death6 death7 
$frame death8 death9 death10 death11 death12 death13 death14 death15 
$frame death16 death17 death18 death19 death20 death21 

$frame swim1 swim2 swim3 swim4 swim5 swim6 swim7 swim8 
$frame swim9 swim10 swim11 swim12 swim13 swim14 swim15 swim16 swim17 
$frame swim18 

$frame pain1 pain2 pain3 pain4 pain5 pain6 pain7 pain8 
$frame pain9 

void() swimmonster_start;

void() f_stand1=[      $swim1, f_stand2 ] {ai_stand();};
void() f_stand2=[      $swim2, f_stand3 ] {ai_stand();};
void() f_stand3=[      $swim3, f_stand4 ] {ai_stand();};
void() f_stand4=[      $swim4, f_stand5 ] {ai_stand();};
void() f_stand5=[      $swim5, f_stand6 ] {ai_stand();};
void() f_stand6=[      $swim6, f_stand7 ] {ai_stand();};
void() f_stand7=[      $swim7, f_stand8 ] {ai_stand();};
void() f_stand8=[      $swim8, f_stand9 ] {ai_stand();};
void() f_stand9=[      $swim9, f_stand10  ] {ai_stand();};
void() f_stand10=[      $swim10, f_stand11 ] {ai_stand();};
void() f_stand11=[      $swim11, f_stand12 ] {ai_stand();};
void() f_stand12=[      $swim12, f_stand13 ] {ai_stand();};
void() f_stand13=[      $swim13, f_stand14 ] {ai_stand();};
void() f_stand14=[      $swim14, f_stand15 ] {ai_stand();};
void() f_stand15=[      $swim15, f_stand16 ] {ai_stand();};
void() f_stand16=[      $swim16, f_stand17 ] {ai_stand();};
void() f_stand17=[      $swim17, f_stand18 ] {ai_stand();};
void() f_stand18=[      $swim18, f_stand1 ] {ai_stand();};

void() f_walk1=[      $swim1, f_walk2 ] {ai_walk(8);};
void() f_walk2=[      $swim2, f_walk3 ] {ai_walk(8);};
void() f_walk3=[      $swim3, f_walk4 ] {ai_walk(8);};
void() f_walk4=[      $swim4, f_walk5 ] {ai_walk(8);};
void() f_walk5=[      $swim5, f_walk6 ] {ai_walk(8);};
void() f_walk6=[      $swim6, f_walk7 ] {ai_walk(8);};
void() f_walk7=[      $swim7, f_walk8 ] {ai_walk(8);};
void() f_walk8=[      $swim8, f_walk9 ] {ai_walk(8);};
void() f_walk9=[      $swim9, f_walk10  ] {ai_walk(8);};
void() f_walk10=[      $swim10, f_walk11 ] {ai_walk(8);};
void() f_walk11=[      $swim11, f_walk12 ] {ai_walk(8);};
void() f_walk12=[      $swim12, f_walk13 ] {ai_walk(8);};
void() f_walk13=[      $swim13, f_walk14 ] {ai_walk(8);};
void() f_walk14=[      $swim14, f_walk15 ] {ai_walk(8);};
void() f_walk15=[      $swim15, f_walk16 ] {ai_walk(8);};
void() f_walk16=[      $swim16, f_walk17 ] {ai_walk(8);};
void() f_walk17=[      $swim17, f_walk18 ] {ai_walk(8);};
void() f_walk18=[      $swim18, f_walk1 ] {ai_walk(8);};

void() f_run1=[      $swim1, f_run2 ] {ai_run(12);
	if (random() < 0.5)
		sound (self, CHAN_VOICE, "fish/idle.wav", 1, ATTN_NORM);
};
void() f_run2=[      $swim3, f_run3 ] {ai_run(12);};
void() f_run3=[      $swim5, f_run4 ] {ai_run(12);};
void() f_run4=[      $swim7, f_run5 ] {ai_run(12);};
void() f_run5=[      $swim9, f_run6 ] {ai_run(12);};
void() f_run6=[      $swim11, f_run7 ] {ai_run(12);};
void() f_run7=[      $swim13, f_run8 ] {ai_run(12);};
void() f_run8=[      $swim15, f_run9 ] {ai_run(12);};
void() f_run9=[      $swim17, f_run1 ] {ai_run(12);};

void() fish_melee=
{
	local vector	delta;
	local float 	ldmg;

	if (!self.enemy)
		return;		// removed before stroke
		
	delta = self.enemy.origin - self.origin;

	if (vlen(delta) > 60)
		return;
		
	sound (self, CHAN_VOICE, "fish/bite.wav", 1, ATTN_NORM);
	ldmg = (random() + random()) * 3;
	T_Damage (self.enemy, self, self, ldmg);
};

void() f_attack1=[      $attack1,       f_attack2 ] {ai_charge(10);};
void() f_attack2=[      $attack2,       f_attack3 ] {ai_charge(10);};
void() f_attack3=[      $attack3,       f_attack4 ] {fish_melee();};
void() f_attack4=[      $attack4,       f_attack5 ] {ai_charge(10);};
void() f_attack5=[      $attack5,       f_attack6 ] {ai_charge(10);};
void() f_attack6=[      $attack6,       f_attack7 ] {ai_charge(10);};
void() f_attack7=[      $attack7,       f_attack8 ] {ai_charge(10);};
void() f_attack8=[      $attack8,       f_attack9 ] {ai_charge(10);};
void() f_attack9=[      $attack9,       f_attack10] {fish_melee();};
void() f_attack10=[      $attack10,      f_attack11] {ai_charge(10);};
void() f_attack11=[      $attack11,      f_attack12] {ai_charge(10);};
void() f_attack12=[      $attack12,      f_attack13] {ai_charge(10);};
void() f_attack13=[      $attack13,      f_attack14] {ai_charge(10);};
void() f_attack14=[      $attack14,      f_attack15] {ai_charge(10);};
void() f_attack15=[      $attack15,      f_attack16] {fish_melee();};
void() f_attack16=[      $attack16,      f_attack17] {ai_charge(10);};
void() f_attack17=[      $attack17,      f_attack18] {ai_charge(10);};
void() f_attack18=[      $attack18,      f_run1    ] {ai_charge(10);};

void() f_death1=[      $death1,        f_death2        ] {
sound (self, CHAN_VOICE, "fish/death.wav", 1, ATTN_NORM);
};
void() f_death2=[      $death2,        f_death3        ] {};
void() f_death3=[      $death3,        f_death4        ] {};
void() f_death4=[      $death4,        f_death5        ] {};
void() f_death5=[      $death5,        f_death6        ] {};
void() f_death6=[      $death6,        f_death7        ] {};
void() f_death7=[      $death7,        f_death8        ] {};
void() f_death8=[      $death8,        f_death9        ] {};
void() f_death9=[      $death9,        f_death10       ] {};
void() f_death10=[      $death10,       f_death11       ] {};
void() f_death11=[      $death11,       f_death12       ] {};
void() f_death12=[      $death12,       f_death13       ] {};
void() f_death13=[      $death13,       f_death14       ] {};
void() f_death14=[      $death14,       f_death15       ] {};
void() f_death15=[      $death15,       f_death16       ] {};
void() f_death16=[      $death16,       f_death17       ] {};
void() f_death17=[      $death17,       f_death18       ] {};
void() f_death18=[      $death18,       f_death19       ] {};
void() f_death19=[      $death19,       f_death20       ] {};
void() f_death20=[      $death20,       f_death21       ] {};
void() f_death21=[      $death21,       f_death21       ] {self.solid = SOLID_NOT;};

void() f_pain1=[      $pain1, f_pain2 ] {};
void() f_pain2=[      $pain2, f_pain3 ] {ai_pain(6);};
void() f_pain3=[      $pain3, f_pain4 ] {ai_pain(6);};
void() f_pain4=[      $pain4, f_pain5 ] {ai_pain(6);};
void() f_pain5=[      $pain5, f_pain6 ] {ai_pain(6);};
void() f_pain6=[      $pain6, f_pain7 ] {ai_pain(6);};
void() f_pain7=[      $pain7, f_pain8 ] {ai_pain(6);};
void() f_pain8=[      $pain8, f_pain9 ] {ai_pain(6);};
void() f_pain9=[      $pain9, f_run1 ] {ai_pain(6);};

void(entity attacker, float damage) fish_pain=
{

// fish allways do pain frames
	f_pain1 ();
};



/*QUAKED monster_fish (1 0 0) (-16 -16 -24) (16 16 24) Ambush
*/

void() monster_fish=
{
	if (deathmatch)
	{
		remove(self);
		return;
	}
	precache_model2 ("progs/fish.mdl");

	precache_sound2 ("fish/death.wav");
	precache_sound2 ("fish/bite.wav");
	precache_sound2 ("fish/idle.wav");

	self.solid = SOLID_SLIDEBOX;
	self.movetype = MOVETYPE_STEP;

	setmodel (self, "progs/fish.mdl");

	setsize (self, '-16 -16 -24', '16 16 24');
	self.health = 25;
	
	self.th_stand = f_stand1;
	self.th_walk = f_walk1;
	self.th_run = f_run1;
	self.th_die = f_death1;
	self.th_pain = fish_pain;
	self.th_melee = f_attack1;
	
	swimmonster_start ();
};