Hover, Gladiator und Gunner

This commit is contained in:
Yamagi Burmeister 2009-10-07 09:32:19 +00:00
parent 85b52bc522
commit 7b568379ef
3 changed files with 592 additions and 614 deletions

View file

@ -44,13 +44,13 @@ void gladiator_cleaver_swing (edict_t *self)
mframe_t gladiator_frames_stand [] = mframe_t gladiator_frames_stand [] =
{ {
ai_stand, 0, NULL, {ai_stand, 0, NULL},
ai_stand, 0, NULL, {ai_stand, 0, NULL},
ai_stand, 0, NULL, {ai_stand, 0, NULL},
ai_stand, 0, NULL, {ai_stand, 0, NULL},
ai_stand, 0, NULL, {ai_stand, 0, NULL},
ai_stand, 0, NULL, {ai_stand, 0, NULL},
ai_stand, 0, NULL {ai_stand, 0, NULL}
}; };
mmove_t gladiator_move_stand = {FRAME_stand1, FRAME_stand7, gladiator_frames_stand, NULL}; mmove_t gladiator_move_stand = {FRAME_stand1, FRAME_stand7, gladiator_frames_stand, NULL};
@ -62,22 +62,22 @@ void gladiator_stand (edict_t *self)
mframe_t gladiator_frames_walk [] = mframe_t gladiator_frames_walk [] =
{ {
ai_walk, 15, NULL, {ai_walk, 15, NULL},
ai_walk, 7, NULL, {ai_walk, 7, NULL},
ai_walk, 6, NULL, {ai_walk, 6, NULL},
ai_walk, 5, NULL, {ai_walk, 5, NULL},
ai_walk, 2, NULL, {ai_walk, 2, NULL},
ai_walk, 0, NULL, {ai_walk, 0, NULL},
ai_walk, 2, NULL, {ai_walk, 2, NULL},
ai_walk, 8, NULL, {ai_walk, 8, NULL},
ai_walk, 12, NULL, {ai_walk, 12, NULL},
ai_walk, 8, NULL, {ai_walk, 8, NULL},
ai_walk, 5, NULL, {ai_walk, 5, NULL},
ai_walk, 5, NULL, {ai_walk, 5, NULL},
ai_walk, 2, NULL, {ai_walk, 2, NULL},
ai_walk, 2, NULL, {ai_walk, 2, NULL},
ai_walk, 1, NULL, {ai_walk, 1, NULL},
ai_walk, 8, NULL {ai_walk, 8, NULL}
}; };
mmove_t gladiator_move_walk = {FRAME_walk1, FRAME_walk16, gladiator_frames_walk, NULL}; mmove_t gladiator_move_walk = {FRAME_walk1, FRAME_walk16, gladiator_frames_walk, NULL};
@ -89,12 +89,12 @@ void gladiator_walk (edict_t *self)
mframe_t gladiator_frames_run [] = mframe_t gladiator_frames_run [] =
{ {
ai_run, 23, NULL, {ai_run, 23, NULL},
ai_run, 14, NULL, {ai_run, 14, NULL},
ai_run, 14, NULL, {ai_run, 14, NULL},
ai_run, 21, NULL, {ai_run, 21, NULL},
ai_run, 12, NULL, {ai_run, 12, NULL},
ai_run, 13, NULL {ai_run, 13, NULL}
}; };
mmove_t gladiator_move_run = {FRAME_run1, FRAME_run6, gladiator_frames_run, NULL}; mmove_t gladiator_move_run = {FRAME_run1, FRAME_run6, gladiator_frames_run, NULL};
@ -120,23 +120,23 @@ void GaldiatorMelee (edict_t *self)
mframe_t gladiator_frames_attack_melee [] = mframe_t gladiator_frames_attack_melee [] =
{ {
ai_charge, 0, NULL, {ai_charge, 0, NULL},
ai_charge, 0, NULL, {ai_charge, 0, NULL},
ai_charge, 0, NULL, {ai_charge, 0, NULL},
ai_charge, 0, NULL, {ai_charge, 0, NULL},
ai_charge, 0, gladiator_cleaver_swing, {ai_charge, 0, gladiator_cleaver_swing},
ai_charge, 0, NULL, {ai_charge, 0, NULL},
ai_charge, 0, GaldiatorMelee, {ai_charge, 0, GaldiatorMelee},
ai_charge, 0, NULL, {ai_charge, 0, NULL},
ai_charge, 0, NULL, {ai_charge, 0, NULL},
ai_charge, 0, NULL, {ai_charge, 0, NULL},
ai_charge, 0, gladiator_cleaver_swing, {ai_charge, 0, gladiator_cleaver_swing},
ai_charge, 0, NULL, {ai_charge, 0, NULL},
ai_charge, 0, NULL, {ai_charge, 0, NULL},
ai_charge, 0, GaldiatorMelee, {ai_charge, 0, GaldiatorMelee},
ai_charge, 0, NULL, {ai_charge, 0, NULL},
ai_charge, 0, NULL, {ai_charge, 0, NULL},
ai_charge, 0, NULL {ai_charge, 0, NULL}
}; };
mmove_t gladiator_move_attack_melee = {FRAME_melee1, FRAME_melee17, gladiator_frames_attack_melee, gladiator_run}; mmove_t gladiator_move_attack_melee = {FRAME_melee1, FRAME_melee17, gladiator_frames_attack_melee, gladiator_run};
@ -164,15 +164,15 @@ void GladiatorGun (edict_t *self)
mframe_t gladiator_frames_attack_gun [] = mframe_t gladiator_frames_attack_gun [] =
{ {
ai_charge, 0, NULL, {ai_charge, 0, NULL},
ai_charge, 0, NULL, {ai_charge, 0, NULL},
ai_charge, 0, NULL, {ai_charge, 0, NULL},
ai_charge, 0, GladiatorGun, {ai_charge, 0, GladiatorGun},
ai_charge, 0, NULL, {ai_charge, 0, NULL},
ai_charge, 0, NULL, {ai_charge, 0, NULL},
ai_charge, 0, NULL, {ai_charge, 0, NULL},
ai_charge, 0, NULL, {ai_charge, 0, NULL},
ai_charge, 0, NULL {ai_charge, 0, NULL}
}; };
mmove_t gladiator_move_attack_gun = {FRAME_attack1, FRAME_attack9, gladiator_frames_attack_gun, gladiator_run}; mmove_t gladiator_move_attack_gun = {FRAME_attack1, FRAME_attack9, gladiator_frames_attack_gun, gladiator_run};
@ -197,24 +197,24 @@ void gladiator_attack(edict_t *self)
mframe_t gladiator_frames_pain [] = mframe_t gladiator_frames_pain [] =
{ {
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL {ai_move, 0, NULL}
}; };
mmove_t gladiator_move_pain = {FRAME_pain1, FRAME_pain6, gladiator_frames_pain, gladiator_run}; mmove_t gladiator_move_pain = {FRAME_pain1, FRAME_pain6, gladiator_frames_pain, gladiator_run};
mframe_t gladiator_frames_pain_air [] = mframe_t gladiator_frames_pain_air [] =
{ {
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL {ai_move, 0, NULL}
}; };
mmove_t gladiator_move_pain_air = {FRAME_painup1, FRAME_painup7, gladiator_frames_pain_air, gladiator_run}; mmove_t gladiator_move_pain_air = {FRAME_painup1, FRAME_painup7, gladiator_frames_pain_air, gladiator_run};
@ -261,28 +261,28 @@ void gladiator_dead (edict_t *self)
mframe_t gladiator_frames_death [] = mframe_t gladiator_frames_death [] =
{ {
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL {ai_move, 0, NULL}
}; };
mmove_t gladiator_move_death = {FRAME_death1, FRAME_death22, gladiator_frames_death, gladiator_dead}; mmove_t gladiator_move_death = {FRAME_death1, FRAME_death22, gladiator_frames_death, gladiator_dead};
@ -290,7 +290,7 @@ void gladiator_die (edict_t *self, edict_t *inflictor, edict_t *attacker, int da
{ {
int n; int n;
// check for gib // check for gib
if (self->health <= self->gib_health) if (self->health <= self->gib_health)
{ {
gi.sound (self, CHAN_VOICE, gi.soundindex ("misc/udeath.wav"), 1, ATTN_NORM, 0); gi.sound (self, CHAN_VOICE, gi.soundindex ("misc/udeath.wav"), 1, ATTN_NORM, 0);
@ -306,7 +306,7 @@ void gladiator_die (edict_t *self, edict_t *inflictor, edict_t *attacker, int da
if (self->deadflag == DEAD_DEAD) if (self->deadflag == DEAD_DEAD)
return; return;
// regular death // regular death
gi.sound (self, CHAN_VOICE, sound_die, 1, ATTN_NORM, 0); gi.sound (self, CHAN_VOICE, sound_die, 1, ATTN_NORM, 0);
self->deadflag = DEAD_DEAD; self->deadflag = DEAD_DEAD;
self->takedamage = DAMAGE_YES; self->takedamage = DAMAGE_YES;
@ -315,21 +315,6 @@ void gladiator_die (edict_t *self, edict_t *inflictor, edict_t *attacker, int da
} }
void SP_monster_gladiator_precache(void)
{
sound_pain1 = gi.soundindex ("gladiator/pain.wav");
sound_pain2 = gi.soundindex ("gladiator/gldpain2.wav");
sound_die = gi.soundindex ("gladiator/glddeth2.wav");
sound_gun = gi.soundindex ("gladiator/railgun.wav");
sound_cleaver_swing = gi.soundindex ("gladiator/melee1.wav");
sound_cleaver_hit = gi.soundindex ("gladiator/melee2.wav");
sound_cleaver_miss = gi.soundindex ("gladiator/melee3.wav");
sound_idle = gi.soundindex ("gladiator/gldidle1.wav");
sound_search = gi.soundindex ("gladiator/gldsrch1.wav");
sound_sight = gi.soundindex ("gladiator/sight.wav");
}
/*QUAKED monster_gladiator (1 .5 0) (-32 -32 -24) (32 32 64) Ambush Trigger_Spawn Sight /*QUAKED monster_gladiator (1 .5 0) (-32 -32 -24) (32 32 64) Ambush Trigger_Spawn Sight
*/ */
void SP_monster_gladiator (edict_t *self) void SP_monster_gladiator (edict_t *self)
@ -340,7 +325,17 @@ void SP_monster_gladiator (edict_t *self)
return; return;
} }
SP_monster_gladiator_precache();
sound_pain1 = gi.soundindex ("gladiator/pain.wav");
sound_pain2 = gi.soundindex ("gladiator/gldpain2.wav");
sound_die = gi.soundindex ("gladiator/glddeth2.wav");
sound_gun = gi.soundindex ("gladiator/railgun.wav");
sound_cleaver_swing = gi.soundindex ("gladiator/melee1.wav");
sound_cleaver_hit = gi.soundindex ("gladiator/melee2.wav");
sound_cleaver_miss = gi.soundindex ("gladiator/melee3.wav");
sound_idle = gi.soundindex ("gladiator/gldidle1.wav");
sound_search = gi.soundindex ("gladiator/gldsrch1.wav");
sound_sight = gi.soundindex ("gladiator/sight.wav");
self->movetype = MOVETYPE_STEP; self->movetype = MOVETYPE_STEP;
self->solid = SOLID_BBOX; self->solid = SOLID_BBOX;
@ -371,3 +366,4 @@ void SP_monster_gladiator (edict_t *self)
walkmonster_start (self); walkmonster_start (self);
} }

View file

@ -46,59 +46,59 @@ void gunner_stand (edict_t *self);
mframe_t gunner_frames_fidget [] = mframe_t gunner_frames_fidget [] =
{ {
ai_stand, 0, NULL, {ai_stand, 0, NULL},
ai_stand, 0, NULL, {ai_stand, 0, NULL},
ai_stand, 0, NULL, {ai_stand, 0, NULL},
ai_stand, 0, NULL, {ai_stand, 0, NULL},
ai_stand, 0, NULL, {ai_stand, 0, NULL},
ai_stand, 0, NULL, {ai_stand, 0, NULL},
ai_stand, 0, NULL, {ai_stand, 0, NULL},
ai_stand, 0, gunner_idlesound, {ai_stand, 0, gunner_idlesound},
ai_stand, 0, NULL, {ai_stand, 0, NULL},
ai_stand, 0, NULL, {ai_stand, 0, NULL},
ai_stand, 0, NULL, {ai_stand, 0, NULL},
ai_stand, 0, NULL, {ai_stand, 0, NULL},
ai_stand, 0, NULL, {ai_stand, 0, NULL},
ai_stand, 0, NULL, {ai_stand, 0, NULL},
ai_stand, 0, NULL, {ai_stand, 0, NULL},
ai_stand, 0, NULL, {ai_stand, 0, NULL},
ai_stand, 0, NULL, {ai_stand, 0, NULL},
ai_stand, 0, NULL, {ai_stand, 0, NULL},
ai_stand, 0, NULL, {ai_stand, 0, NULL},
ai_stand, 0, NULL, {ai_stand, 0, NULL},
ai_stand, 0, NULL, {ai_stand, 0, NULL},
ai_stand, 0, NULL, {ai_stand, 0, NULL},
ai_stand, 0, NULL, {ai_stand, 0, NULL},
ai_stand, 0, NULL, {ai_stand, 0, NULL},
ai_stand, 0, NULL, {ai_stand, 0, NULL},
ai_stand, 0, NULL, {ai_stand, 0, NULL},
ai_stand, 0, NULL, {ai_stand, 0, NULL},
ai_stand, 0, NULL, {ai_stand, 0, NULL},
ai_stand, 0, NULL, {ai_stand, 0, NULL},
ai_stand, 0, NULL, {ai_stand, 0, NULL},
ai_stand, 0, NULL, {ai_stand, 0, NULL},
ai_stand, 0, NULL, {ai_stand, 0, NULL},
ai_stand, 0, NULL, {ai_stand, 0, NULL},
ai_stand, 0, NULL, {ai_stand, 0, NULL},
ai_stand, 0, NULL, {ai_stand, 0, NULL},
ai_stand, 0, NULL, {ai_stand, 0, NULL},
ai_stand, 0, NULL, {ai_stand, 0, NULL},
ai_stand, 0, NULL, {ai_stand, 0, NULL},
ai_stand, 0, NULL, {ai_stand, 0, NULL},
ai_stand, 0, NULL, {ai_stand, 0, NULL},
ai_stand, 0, NULL, {ai_stand, 0, NULL},
ai_stand, 0, NULL, {ai_stand, 0, NULL},
ai_stand, 0, NULL, {ai_stand, 0, NULL},
ai_stand, 0, NULL, {ai_stand, 0, NULL},
ai_stand, 0, NULL, {ai_stand, 0, NULL},
ai_stand, 0, NULL, {ai_stand, 0, NULL},
ai_stand, 0, NULL, {ai_stand, 0, NULL},
ai_stand, 0, NULL, {ai_stand, 0, NULL},
ai_stand, 0, NULL {ai_stand, 0, NULL}
}; };
mmove_t gunner_move_fidget = {FRAME_stand31, FRAME_stand70, gunner_frames_fidget, gunner_stand}; mmove_t gunner_move_fidget = {FRAME_stand31, FRAME_stand70, gunner_frames_fidget, gunner_stand};
@ -112,38 +112,38 @@ void gunner_fidget (edict_t *self)
mframe_t gunner_frames_stand [] = mframe_t gunner_frames_stand [] =
{ {
ai_stand, 0, NULL, {ai_stand, 0, NULL},
ai_stand, 0, NULL, {ai_stand, 0, NULL},
ai_stand, 0, NULL, {ai_stand, 0, NULL},
ai_stand, 0, NULL, {ai_stand, 0, NULL},
ai_stand, 0, NULL, {ai_stand, 0, NULL},
ai_stand, 0, NULL, {ai_stand, 0, NULL},
ai_stand, 0, NULL, {ai_stand, 0, NULL},
ai_stand, 0, NULL, {ai_stand, 0, NULL},
ai_stand, 0, NULL, {ai_stand, 0, NULL},
ai_stand, 0, gunner_fidget, {ai_stand, 0, gunner_fidget},
ai_stand, 0, NULL, {ai_stand, 0, NULL},
ai_stand, 0, NULL, {ai_stand, 0, NULL},
ai_stand, 0, NULL, {ai_stand, 0, NULL},
ai_stand, 0, NULL, {ai_stand, 0, NULL},
ai_stand, 0, NULL, {ai_stand, 0, NULL},
ai_stand, 0, NULL, {ai_stand, 0, NULL},
ai_stand, 0, NULL, {ai_stand, 0, NULL},
ai_stand, 0, NULL, {ai_stand, 0, NULL},
ai_stand, 0, NULL, {ai_stand, 0, NULL},
ai_stand, 0, gunner_fidget, {ai_stand, 0, gunner_fidget},
ai_stand, 0, NULL, {ai_stand, 0, NULL},
ai_stand, 0, NULL, {ai_stand, 0, NULL},
ai_stand, 0, NULL, {ai_stand, 0, NULL},
ai_stand, 0, NULL, {ai_stand, 0, NULL},
ai_stand, 0, NULL, {ai_stand, 0, NULL},
ai_stand, 0, NULL, {ai_stand, 0, NULL},
ai_stand, 0, NULL, {ai_stand, 0, NULL},
ai_stand, 0, NULL, {ai_stand, 0, NULL},
ai_stand, 0, NULL, {ai_stand, 0, NULL},
ai_stand, 0, gunner_fidget {ai_stand, 0, gunner_fidget}
}; };
mmove_t gunner_move_stand = {FRAME_stand01, FRAME_stand30, gunner_frames_stand, NULL}; mmove_t gunner_move_stand = {FRAME_stand01, FRAME_stand30, gunner_frames_stand, NULL};
@ -155,19 +155,19 @@ void gunner_stand (edict_t *self)
mframe_t gunner_frames_walk [] = mframe_t gunner_frames_walk [] =
{ {
ai_walk, 0, NULL, {ai_walk, 0, NULL},
ai_walk, 3, NULL, {ai_walk, 3, NULL},
ai_walk, 4, NULL, {ai_walk, 4, NULL},
ai_walk, 5, NULL, {ai_walk, 5, NULL},
ai_walk, 7, NULL, {ai_walk, 7, NULL},
ai_walk, 2, NULL, {ai_walk, 2, NULL},
ai_walk, 6, NULL, {ai_walk, 6, NULL},
ai_walk, 4, NULL, {ai_walk, 4, NULL},
ai_walk, 2, NULL, {ai_walk, 2, NULL},
ai_walk, 7, NULL, {ai_walk, 7, NULL},
ai_walk, 5, NULL, {ai_walk, 5, NULL},
ai_walk, 7, NULL, {ai_walk, 7, NULL},
ai_walk, 4, NULL {ai_walk, 4, NULL}
}; };
mmove_t gunner_move_walk = {FRAME_walk07, FRAME_walk19, gunner_frames_walk, NULL}; mmove_t gunner_move_walk = {FRAME_walk07, FRAME_walk19, gunner_frames_walk, NULL};
@ -178,14 +178,14 @@ void gunner_walk (edict_t *self)
mframe_t gunner_frames_run [] = mframe_t gunner_frames_run [] =
{ {
ai_run, 26, NULL, {ai_run, 26, NULL},
ai_run, 9, NULL, {ai_run, 9, NULL},
ai_run, 9, NULL, {ai_run, 9, NULL},
ai_run, 9, NULL, {ai_run, 9, NULL},
ai_run, 15, NULL, {ai_run, 15, NULL},
ai_run, 10, NULL, {ai_run, 10, NULL},
ai_run, 13, NULL, {ai_run, 13, NULL},
ai_run, 6, NULL {ai_run, 6, NULL}
}; };
mmove_t gunner_move_run = {FRAME_run01, FRAME_run08, gunner_frames_run, NULL}; mmove_t gunner_move_run = {FRAME_run01, FRAME_run08, gunner_frames_run, NULL};
@ -200,12 +200,12 @@ void gunner_run (edict_t *self)
mframe_t gunner_frames_runandshoot [] = mframe_t gunner_frames_runandshoot [] =
{ {
ai_run, 32, NULL, {ai_run, 32, NULL},
ai_run, 15, NULL, {ai_run, 15, NULL},
ai_run, 10, NULL, {ai_run, 10, NULL},
ai_run, 18, NULL, {ai_run, 18, NULL},
ai_run, 8, NULL, {ai_run, 8, NULL},
ai_run, 20, NULL {ai_run, 20, NULL}
}; };
mmove_t gunner_move_runandshoot = {FRAME_runs01, FRAME_runs06, gunner_frames_runandshoot, NULL}; mmove_t gunner_move_runandshoot = {FRAME_runs01, FRAME_runs06, gunner_frames_runandshoot, NULL};
@ -217,47 +217,47 @@ void gunner_runandshoot (edict_t *self)
mframe_t gunner_frames_pain3 [] = mframe_t gunner_frames_pain3 [] =
{ {
ai_move, -3, NULL, {ai_move, -3, NULL},
ai_move, 1, NULL, {ai_move, 1, NULL},
ai_move, 1, NULL, {ai_move, 1, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 1, NULL {ai_move, 1, NULL}
}; };
mmove_t gunner_move_pain3 = {FRAME_pain301, FRAME_pain305, gunner_frames_pain3, gunner_run}; mmove_t gunner_move_pain3 = {FRAME_pain301, FRAME_pain305, gunner_frames_pain3, gunner_run};
mframe_t gunner_frames_pain2 [] = mframe_t gunner_frames_pain2 [] =
{ {
ai_move, -2, NULL, {ai_move, -2, NULL},
ai_move, 11, NULL, {ai_move, 11, NULL},
ai_move, 6, NULL, {ai_move, 6, NULL},
ai_move, 2, NULL, {ai_move, 2, NULL},
ai_move, -1, NULL, {ai_move, -1, NULL},
ai_move, -7, NULL, {ai_move, -7, NULL},
ai_move, -2, NULL, {ai_move, -2, NULL},
ai_move, -7, NULL {ai_move, -7, NULL}
}; };
mmove_t gunner_move_pain2 = {FRAME_pain201, FRAME_pain208, gunner_frames_pain2, gunner_run}; mmove_t gunner_move_pain2 = {FRAME_pain201, FRAME_pain208, gunner_frames_pain2, gunner_run};
mframe_t gunner_frames_pain1 [] = mframe_t gunner_frames_pain1 [] =
{ {
ai_move, 2, NULL, {ai_move, 2, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, -5, NULL, {ai_move, -5, NULL},
ai_move, 3, NULL, {ai_move, 3, NULL},
ai_move, -1, NULL, {ai_move, -1, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 1, NULL, {ai_move, 1, NULL},
ai_move, 1, NULL, {ai_move, 1, NULL},
ai_move, 2, NULL, {ai_move, 2, NULL},
ai_move, 1, NULL, {ai_move, 1, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, -2, NULL, {ai_move, -2, NULL},
ai_move, -2, NULL, {ai_move, -2, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL {ai_move, 0, NULL}
}; };
mmove_t gunner_move_pain1 = {FRAME_pain101, FRAME_pain118, gunner_frames_pain1, gunner_run}; mmove_t gunner_move_pain1 = {FRAME_pain101, FRAME_pain118, gunner_frames_pain1, gunner_run};
@ -299,17 +299,17 @@ void gunner_dead (edict_t *self)
mframe_t gunner_frames_death [] = mframe_t gunner_frames_death [] =
{ {
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, -7, NULL, {ai_move, -7, NULL},
ai_move, -3, NULL, {ai_move, -3, NULL},
ai_move, -5, NULL, {ai_move, -5, NULL},
ai_move, 8, NULL, {ai_move, 8, NULL},
ai_move, 6, NULL, {ai_move, 6, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL {ai_move, 0, NULL}
}; };
mmove_t gunner_move_death = {FRAME_death01, FRAME_death11, gunner_frames_death, gunner_dead}; mmove_t gunner_move_death = {FRAME_death01, FRAME_death11, gunner_frames_death, gunner_dead};
@ -317,7 +317,7 @@ void gunner_die (edict_t *self, edict_t *inflictor, edict_t *attacker, int damag
{ {
int n; int n;
// check for gib // check for gib
if (self->health <= self->gib_health) if (self->health <= self->gib_health)
{ {
gi.sound (self, CHAN_VOICE, gi.soundindex ("misc/udeath.wav"), 1, ATTN_NORM, 0); gi.sound (self, CHAN_VOICE, gi.soundindex ("misc/udeath.wav"), 1, ATTN_NORM, 0);
@ -333,7 +333,7 @@ void gunner_die (edict_t *self, edict_t *inflictor, edict_t *attacker, int damag
if (self->deadflag == DEAD_DEAD) if (self->deadflag == DEAD_DEAD)
return; return;
// regular death // regular death
gi.sound (self, CHAN_VOICE, sound_death, 1, ATTN_NORM, 0); gi.sound (self, CHAN_VOICE, sound_death, 1, ATTN_NORM, 0);
self->deadflag = DEAD_DEAD; self->deadflag = DEAD_DEAD;
self->takedamage = DAMAGE_YES; self->takedamage = DAMAGE_YES;
@ -376,14 +376,14 @@ void gunner_duck_up (edict_t *self)
mframe_t gunner_frames_duck [] = mframe_t gunner_frames_duck [] =
{ {
ai_move, 1, gunner_duck_down, {ai_move, 1, gunner_duck_down},
ai_move, 1, NULL, {ai_move, 1, NULL},
ai_move, 1, gunner_duck_hold, {ai_move, 1, gunner_duck_hold},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, -1, NULL, {ai_move, -1, NULL},
ai_move, -1, NULL, {ai_move, -1, NULL},
ai_move, 0, gunner_duck_up, {ai_move, 0, gunner_duck_up},
ai_move, -1, NULL {ai_move, -1, NULL}
}; };
mmove_t gunner_move_duck = {FRAME_duck01, FRAME_duck08, gunner_frames_duck, gunner_run}; mmove_t gunner_move_duck = {FRAME_duck01, FRAME_duck08, gunner_frames_duck, gunner_run};
@ -440,7 +440,7 @@ void GunnerGrenade (edict_t *self)
flash_number = MZ2_GUNNER_GRENADE_2; flash_number = MZ2_GUNNER_GRENADE_2;
else if (self->s.frame == FRAME_attak111) else if (self->s.frame == FRAME_attak111)
flash_number = MZ2_GUNNER_GRENADE_3; flash_number = MZ2_GUNNER_GRENADE_3;
else // (self->s.frame == FRAME_attak114) else
flash_number = MZ2_GUNNER_GRENADE_4; flash_number = MZ2_GUNNER_GRENADE_4;
AngleVectors (self->s.angles, forward, right, NULL); AngleVectors (self->s.angles, forward, right, NULL);
@ -454,74 +454,64 @@ void GunnerGrenade (edict_t *self)
mframe_t gunner_frames_attack_chain [] = mframe_t gunner_frames_attack_chain [] =
{ {
/* {ai_charge, 0, gunner_opengun},
ai_charge, 0, NULL, {ai_charge, 0, NULL},
ai_charge, 0, NULL, {ai_charge, 0, NULL},
ai_charge, 0, NULL, {ai_charge, 0, NULL},
ai_charge, 0, NULL, {ai_charge, 0, NULL},
ai_charge, 0, NULL, {ai_charge, 0, NULL},
ai_charge, 0, NULL, {ai_charge, 0, NULL}
ai_charge, 0, NULL,
ai_charge, 0, NULL,
*/
ai_charge, 0, gunner_opengun,
ai_charge, 0, NULL,
ai_charge, 0, NULL,
ai_charge, 0, NULL,
ai_charge, 0, NULL,
ai_charge, 0, NULL,
ai_charge, 0, NULL
}; };
mmove_t gunner_move_attack_chain = {FRAME_attak209, FRAME_attak215, gunner_frames_attack_chain, gunner_fire_chain}; mmove_t gunner_move_attack_chain = {FRAME_attak209, FRAME_attak215, gunner_frames_attack_chain, gunner_fire_chain};
mframe_t gunner_frames_fire_chain [] = mframe_t gunner_frames_fire_chain [] =
{ {
ai_charge, 0, GunnerFire, {ai_charge, 0, GunnerFire},
ai_charge, 0, GunnerFire, {ai_charge, 0, GunnerFire},
ai_charge, 0, GunnerFire, {ai_charge, 0, GunnerFire},
ai_charge, 0, GunnerFire, {ai_charge, 0, GunnerFire},
ai_charge, 0, GunnerFire, {ai_charge, 0, GunnerFire},
ai_charge, 0, GunnerFire, {ai_charge, 0, GunnerFire},
ai_charge, 0, GunnerFire, {ai_charge, 0, GunnerFire},
ai_charge, 0, GunnerFire {ai_charge, 0, GunnerFire}
}; };
mmove_t gunner_move_fire_chain = {FRAME_attak216, FRAME_attak223, gunner_frames_fire_chain, gunner_refire_chain}; mmove_t gunner_move_fire_chain = {FRAME_attak216, FRAME_attak223, gunner_frames_fire_chain, gunner_refire_chain};
mframe_t gunner_frames_endfire_chain [] = mframe_t gunner_frames_endfire_chain [] =
{ {
ai_charge, 0, NULL, {ai_charge, 0, NULL},
ai_charge, 0, NULL, {ai_charge, 0, NULL},
ai_charge, 0, NULL, {ai_charge, 0, NULL},
ai_charge, 0, NULL, {ai_charge, 0, NULL},
ai_charge, 0, NULL, {ai_charge, 0, NULL},
ai_charge, 0, NULL, {ai_charge, 0, NULL},
ai_charge, 0, NULL {ai_charge, 0, NULL}
}; };
mmove_t gunner_move_endfire_chain = {FRAME_attak224, FRAME_attak230, gunner_frames_endfire_chain, gunner_run}; mmove_t gunner_move_endfire_chain = {FRAME_attak224, FRAME_attak230, gunner_frames_endfire_chain, gunner_run};
mframe_t gunner_frames_attack_grenade [] = mframe_t gunner_frames_attack_grenade [] =
{ {
ai_charge, 0, NULL, {ai_charge, 0, NULL},
ai_charge, 0, NULL, {ai_charge, 0, NULL},
ai_charge, 0, NULL, {ai_charge, 0, NULL},
ai_charge, 0, NULL, {ai_charge, 0, NULL},
ai_charge, 0, GunnerGrenade, {ai_charge, 0, GunnerGrenade},
ai_charge, 0, NULL, {ai_charge, 0, NULL},
ai_charge, 0, NULL, {ai_charge, 0, NULL},
ai_charge, 0, GunnerGrenade, {ai_charge, 0, GunnerGrenade},
ai_charge, 0, NULL, {ai_charge, 0, NULL},
ai_charge, 0, NULL, {ai_charge, 0, NULL},
ai_charge, 0, GunnerGrenade, {ai_charge, 0, GunnerGrenade},
ai_charge, 0, NULL, {ai_charge, 0, NULL},
ai_charge, 0, NULL, {ai_charge, 0, NULL},
ai_charge, 0, GunnerGrenade, {ai_charge, 0, GunnerGrenade},
ai_charge, 0, NULL, {ai_charge, 0, NULL},
ai_charge, 0, NULL, {ai_charge, 0, NULL},
ai_charge, 0, NULL, {ai_charge, 0, NULL},
ai_charge, 0, NULL, {ai_charge, 0, NULL},
ai_charge, 0, NULL, {ai_charge, 0, NULL},
ai_charge, 0, NULL, {ai_charge, 0, NULL},
ai_charge, 0, NULL {ai_charge, 0, NULL}
}; };
mmove_t gunner_move_attack_grenade = {FRAME_attak101, FRAME_attak121, gunner_frames_attack_grenade, gunner_run}; mmove_t gunner_move_attack_grenade = {FRAME_attak101, FRAME_attak121, gunner_frames_attack_grenade, gunner_run};
@ -557,19 +547,6 @@ void gunner_refire_chain(edict_t *self)
self->monsterinfo.currentmove = &gunner_move_endfire_chain; self->monsterinfo.currentmove = &gunner_move_endfire_chain;
} }
void SP_monster_gunner_precache(void)
{
sound_death = gi.soundindex ("gunner/death1.wav");
sound_pain = gi.soundindex ("gunner/gunpain2.wav");
sound_pain2 = gi.soundindex ("gunner/gunpain1.wav");
sound_idle = gi.soundindex ("gunner/gunidle1.wav");
sound_open = gi.soundindex ("gunner/gunatck1.wav");
sound_search = gi.soundindex ("gunner/gunsrch1.wav");
sound_sight = gi.soundindex ("gunner/sight1.wav");
}
/*QUAKED monster_gunner (1 .5 0) (-16 -16 -24) (16 16 32) Ambush Trigger_Spawn Sight /*QUAKED monster_gunner (1 .5 0) (-16 -16 -24) (16 16 32) Ambush Trigger_Spawn Sight
*/ */
void SP_monster_gunner (edict_t *self) void SP_monster_gunner (edict_t *self)
@ -580,7 +557,13 @@ void SP_monster_gunner (edict_t *self)
return; return;
} }
SP_monster_gunner_precache(); sound_death = gi.soundindex ("gunner/death1.wav");
sound_pain = gi.soundindex ("gunner/gunpain2.wav");
sound_pain2 = gi.soundindex ("gunner/gunpain1.wav");
sound_idle = gi.soundindex ("gunner/gunidle1.wav");
sound_open = gi.soundindex ("gunner/gunatck1.wav");
sound_search = gi.soundindex ("gunner/gunsrch1.wav");
sound_sight = gi.soundindex ("gunner/sight1.wav");
gi.soundindex ("gunner/gunatck2.wav"); gi.soundindex ("gunner/gunatck2.wav");
gi.soundindex ("gunner/gunatck3.wav"); gi.soundindex ("gunner/gunatck3.wav");
@ -614,3 +597,4 @@ void SP_monster_gunner (edict_t *self)
walkmonster_start (self); walkmonster_start (self);
} }

View file

@ -45,357 +45,357 @@ void hover_die (edict_t *self, edict_t *inflictor, edict_t *attacker, int damage
mframe_t hover_frames_stand [] = mframe_t hover_frames_stand [] =
{ {
ai_stand, 0, NULL, {ai_stand, 0, NULL},
ai_stand, 0, NULL, {ai_stand, 0, NULL},
ai_stand, 0, NULL, {ai_stand, 0, NULL},
ai_stand, 0, NULL, {ai_stand, 0, NULL},
ai_stand, 0, NULL, {ai_stand, 0, NULL},
ai_stand, 0, NULL, {ai_stand, 0, NULL},
ai_stand, 0, NULL, {ai_stand, 0, NULL},
ai_stand, 0, NULL, {ai_stand, 0, NULL},
ai_stand, 0, NULL, {ai_stand, 0, NULL},
ai_stand, 0, NULL, {ai_stand, 0, NULL},
ai_stand, 0, NULL, {ai_stand, 0, NULL},
ai_stand, 0, NULL, {ai_stand, 0, NULL},
ai_stand, 0, NULL, {ai_stand, 0, NULL},
ai_stand, 0, NULL, {ai_stand, 0, NULL},
ai_stand, 0, NULL, {ai_stand, 0, NULL},
ai_stand, 0, NULL, {ai_stand, 0, NULL},
ai_stand, 0, NULL, {ai_stand, 0, NULL},
ai_stand, 0, NULL, {ai_stand, 0, NULL},
ai_stand, 0, NULL, {ai_stand, 0, NULL},
ai_stand, 0, NULL, {ai_stand, 0, NULL},
ai_stand, 0, NULL, {ai_stand, 0, NULL},
ai_stand, 0, NULL, {ai_stand, 0, NULL},
ai_stand, 0, NULL, {ai_stand, 0, NULL},
ai_stand, 0, NULL, {ai_stand, 0, NULL},
ai_stand, 0, NULL, {ai_stand, 0, NULL},
ai_stand, 0, NULL, {ai_stand, 0, NULL},
ai_stand, 0, NULL, {ai_stand, 0, NULL},
ai_stand, 0, NULL, {ai_stand, 0, NULL},
ai_stand, 0, NULL, {ai_stand, 0, NULL},
ai_stand, 0, NULL {ai_stand, 0, NULL}
}; };
mmove_t hover_move_stand = {FRAME_stand01, FRAME_stand30, hover_frames_stand, NULL}; mmove_t hover_move_stand = {FRAME_stand01, FRAME_stand30, hover_frames_stand, NULL};
mframe_t hover_frames_stop1 [] = mframe_t hover_frames_stop1 [] =
{ {
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL {ai_move, 0, NULL}
}; };
mmove_t hover_move_stop1 = {FRAME_stop101, FRAME_stop109, hover_frames_stop1, NULL}; mmove_t hover_move_stop1 = {FRAME_stop101, FRAME_stop109, hover_frames_stop1, NULL};
mframe_t hover_frames_stop2 [] = mframe_t hover_frames_stop2 [] =
{ {
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL {ai_move, 0, NULL}
}; };
mmove_t hover_move_stop2 = {FRAME_stop201, FRAME_stop208, hover_frames_stop2, NULL}; mmove_t hover_move_stop2 = {FRAME_stop201, FRAME_stop208, hover_frames_stop2, NULL};
mframe_t hover_frames_takeoff [] = mframe_t hover_frames_takeoff [] =
{ {
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, -2, NULL, {ai_move, -2, NULL},
ai_move, 5, NULL, {ai_move, 5, NULL},
ai_move, -1, NULL, {ai_move, -1, NULL},
ai_move, 1, NULL, {ai_move, 1, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, -1, NULL, {ai_move, -1, NULL},
ai_move, -1, NULL, {ai_move, -1, NULL},
ai_move, -1, NULL, {ai_move, -1, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 2, NULL, {ai_move, 2, NULL},
ai_move, 2, NULL, {ai_move, 2, NULL},
ai_move, 1, NULL, {ai_move, 1, NULL},
ai_move, 1, NULL, {ai_move, 1, NULL},
ai_move, -6, NULL, {ai_move, -6, NULL},
ai_move, -9, NULL, {ai_move, -9, NULL},
ai_move, 1, NULL, {ai_move, 1, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 2, NULL, {ai_move, 2, NULL},
ai_move, 2, NULL, {ai_move, 2, NULL},
ai_move, 1, NULL, {ai_move, 1, NULL},
ai_move, 1, NULL, {ai_move, 1, NULL},
ai_move, 1, NULL, {ai_move, 1, NULL},
ai_move, 2, NULL, {ai_move, 2, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 2, NULL, {ai_move, 2, NULL},
ai_move, 3, NULL, {ai_move, 3, NULL},
ai_move, 2, NULL, {ai_move, 2, NULL},
ai_move, 0, NULL {ai_move, 0, NULL}
}; };
mmove_t hover_move_takeoff = {FRAME_takeof01, FRAME_takeof30, hover_frames_takeoff, NULL}; mmove_t hover_move_takeoff = {FRAME_takeof01, FRAME_takeof30, hover_frames_takeoff, NULL};
mframe_t hover_frames_pain3 [] = mframe_t hover_frames_pain3 [] =
{ {
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL {ai_move, 0, NULL}
}; };
mmove_t hover_move_pain3 = {FRAME_pain301, FRAME_pain309, hover_frames_pain3, hover_run}; mmove_t hover_move_pain3 = {FRAME_pain301, FRAME_pain309, hover_frames_pain3, hover_run};
mframe_t hover_frames_pain2 [] = mframe_t hover_frames_pain2 [] =
{ {
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL {ai_move, 0, NULL}
}; };
mmove_t hover_move_pain2 = {FRAME_pain201, FRAME_pain212, hover_frames_pain2, hover_run}; mmove_t hover_move_pain2 = {FRAME_pain201, FRAME_pain212, hover_frames_pain2, hover_run};
mframe_t hover_frames_pain1 [] = mframe_t hover_frames_pain1 [] =
{ {
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 2, NULL, {ai_move, 2, NULL},
ai_move, -8, NULL, {ai_move, -8, NULL},
ai_move, -4, NULL, {ai_move, -4, NULL},
ai_move, -6, NULL, {ai_move, -6, NULL},
ai_move, -4, NULL, {ai_move, -4, NULL},
ai_move, -3, NULL, {ai_move, -3, NULL},
ai_move, 1, NULL, {ai_move, 1, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 3, NULL, {ai_move, 3, NULL},
ai_move, 1, NULL, {ai_move, 1, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 2, NULL, {ai_move, 2, NULL},
ai_move, 3, NULL, {ai_move, 3, NULL},
ai_move, 2, NULL, {ai_move, 2, NULL},
ai_move, 7, NULL, {ai_move, 7, NULL},
ai_move, 1, NULL, {ai_move, 1, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 2, NULL, {ai_move, 2, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 5, NULL, {ai_move, 5, NULL},
ai_move, 3, NULL, {ai_move, 3, NULL},
ai_move, 4, NULL {ai_move, 4, NULL}
}; };
mmove_t hover_move_pain1 = {FRAME_pain101, FRAME_pain128, hover_frames_pain1, hover_run}; mmove_t hover_move_pain1 = {FRAME_pain101, FRAME_pain128, hover_frames_pain1, hover_run};
mframe_t hover_frames_land [] = mframe_t hover_frames_land [] =
{ {
ai_move, 0, NULL {ai_move, 0, NULL}
}; };
mmove_t hover_move_land = {FRAME_land01, FRAME_land01, hover_frames_land, NULL}; mmove_t hover_move_land = {FRAME_land01, FRAME_land01, hover_frames_land, NULL};
mframe_t hover_frames_forward [] = mframe_t hover_frames_forward [] =
{ {
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL {ai_move, 0, NULL}
}; };
mmove_t hover_move_forward = {FRAME_forwrd01, FRAME_forwrd35, hover_frames_forward, NULL}; mmove_t hover_move_forward = {FRAME_forwrd01, FRAME_forwrd35, hover_frames_forward, NULL};
mframe_t hover_frames_walk [] = mframe_t hover_frames_walk [] =
{ {
ai_walk, 4, NULL, {ai_walk, 4, NULL},
ai_walk, 4, NULL, {ai_walk, 4, NULL},
ai_walk, 4, NULL, {ai_walk, 4, NULL},
ai_walk, 4, NULL, {ai_walk, 4, NULL},
ai_walk, 4, NULL, {ai_walk, 4, NULL},
ai_walk, 4, NULL, {ai_walk, 4, NULL},
ai_walk, 4, NULL, {ai_walk, 4, NULL},
ai_walk, 4, NULL, {ai_walk, 4, NULL},
ai_walk, 4, NULL, {ai_walk, 4, NULL},
ai_walk, 4, NULL, {ai_walk, 4, NULL},
ai_walk, 4, NULL, {ai_walk, 4, NULL},
ai_walk, 4, NULL, {ai_walk, 4, NULL},
ai_walk, 4, NULL, {ai_walk, 4, NULL},
ai_walk, 4, NULL, {ai_walk, 4, NULL},
ai_walk, 4, NULL, {ai_walk, 4, NULL},
ai_walk, 4, NULL, {ai_walk, 4, NULL},
ai_walk, 4, NULL, {ai_walk, 4, NULL},
ai_walk, 4, NULL, {ai_walk, 4, NULL},
ai_walk, 4, NULL, {ai_walk, 4, NULL},
ai_walk, 4, NULL, {ai_walk, 4, NULL},
ai_walk, 4, NULL, {ai_walk, 4, NULL},
ai_walk, 4, NULL, {ai_walk, 4, NULL},
ai_walk, 4, NULL, {ai_walk, 4, NULL},
ai_walk, 4, NULL, {ai_walk, 4, NULL},
ai_walk, 4, NULL, {ai_walk, 4, NULL},
ai_walk, 4, NULL, {ai_walk, 4, NULL},
ai_walk, 4, NULL, {ai_walk, 4, NULL},
ai_walk, 4, NULL, {ai_walk, 4, NULL},
ai_walk, 4, NULL, {ai_walk, 4, NULL},
ai_walk, 4, NULL, {ai_walk, 4, NULL},
ai_walk, 4, NULL, {ai_walk, 4, NULL},
ai_walk, 4, NULL, {ai_walk, 4, NULL},
ai_walk, 4, NULL, {ai_walk, 4, NULL},
ai_walk, 4, NULL, {ai_walk, 4, NULL},
ai_walk, 4, NULL {ai_walk, 4, NULL}
}; };
mmove_t hover_move_walk = {FRAME_forwrd01, FRAME_forwrd35, hover_frames_walk, NULL}; mmove_t hover_move_walk = {FRAME_forwrd01, FRAME_forwrd35, hover_frames_walk, NULL};
mframe_t hover_frames_run [] = mframe_t hover_frames_run [] =
{ {
ai_run, 10, NULL, {ai_run, 10, NULL},
ai_run, 10, NULL, {ai_run, 10, NULL},
ai_run, 10, NULL, {ai_run, 10, NULL},
ai_run, 10, NULL, {ai_run, 10, NULL},
ai_run, 10, NULL, {ai_run, 10, NULL},
ai_run, 10, NULL, {ai_run, 10, NULL},
ai_run, 10, NULL, {ai_run, 10, NULL},
ai_run, 10, NULL, {ai_run, 10, NULL},
ai_run, 10, NULL, {ai_run, 10, NULL},
ai_run, 10, NULL, {ai_run, 10, NULL},
ai_run, 10, NULL, {ai_run, 10, NULL},
ai_run, 10, NULL, {ai_run, 10, NULL},
ai_run, 10, NULL, {ai_run, 10, NULL},
ai_run, 10, NULL, {ai_run, 10, NULL},
ai_run, 10, NULL, {ai_run, 10, NULL},
ai_run, 10, NULL, {ai_run, 10, NULL},
ai_run, 10, NULL, {ai_run, 10, NULL},
ai_run, 10, NULL, {ai_run, 10, NULL},
ai_run, 10, NULL, {ai_run, 10, NULL},
ai_run, 10, NULL, {ai_run, 10, NULL},
ai_run, 10, NULL, {ai_run, 10, NULL},
ai_run, 10, NULL, {ai_run, 10, NULL},
ai_run, 10, NULL, {ai_run, 10, NULL},
ai_run, 10, NULL, {ai_run, 10, NULL},
ai_run, 10, NULL, {ai_run, 10, NULL},
ai_run, 10, NULL, {ai_run, 10, NULL},
ai_run, 10, NULL, {ai_run, 10, NULL},
ai_run, 10, NULL, {ai_run, 10, NULL},
ai_run, 10, NULL, {ai_run, 10, NULL},
ai_run, 10, NULL, {ai_run, 10, NULL},
ai_run, 10, NULL, {ai_run, 10, NULL},
ai_run, 10, NULL, {ai_run, 10, NULL},
ai_run, 10, NULL, {ai_run, 10, NULL},
ai_run, 10, NULL, {ai_run, 10, NULL},
ai_run, 10, NULL {ai_run, 10, NULL}
}; };
mmove_t hover_move_run = {FRAME_forwrd01, FRAME_forwrd35, hover_frames_run, NULL}; mmove_t hover_move_run = {FRAME_forwrd01, FRAME_forwrd35, hover_frames_run, NULL};
mframe_t hover_frames_death1 [] = mframe_t hover_frames_death1 [] =
{ {
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, -10,NULL, {ai_move, -10,NULL},
ai_move, 3, NULL, {ai_move, 3, NULL},
ai_move, 5, NULL, {ai_move, 5, NULL},
ai_move, 4, NULL, {ai_move, 4, NULL},
ai_move, 7, NULL {ai_move, 7, NULL}
}; };
mmove_t hover_move_death1 = {FRAME_death101, FRAME_death111, hover_frames_death1, hover_dead}; mmove_t hover_move_death1 = {FRAME_death101, FRAME_death111, hover_frames_death1, hover_dead};
mframe_t hover_frames_backward [] = mframe_t hover_frames_backward [] =
{ {
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL, {ai_move, 0, NULL},
ai_move, 0, NULL {ai_move, 0, NULL}
}; };
mmove_t hover_move_backward = {FRAME_backwd01, FRAME_backwd24, hover_frames_backward, NULL}; mmove_t hover_move_backward = {FRAME_backwd01, FRAME_backwd24, hover_frames_backward, NULL};
mframe_t hover_frames_start_attack [] = mframe_t hover_frames_start_attack [] =
{ {
ai_charge, 1, NULL, {ai_charge, 1, NULL},
ai_charge, 1, NULL, {ai_charge, 1, NULL},
ai_charge, 1, NULL {ai_charge, 1, NULL}
}; };
mmove_t hover_move_start_attack = {FRAME_attak101, FRAME_attak103, hover_frames_start_attack, hover_attack}; mmove_t hover_move_start_attack = {FRAME_attak101, FRAME_attak103, hover_frames_start_attack, hover_attack};
mframe_t hover_frames_attack1 [] = mframe_t hover_frames_attack1 [] =
{ {
ai_charge, -10, hover_fire_blaster, {ai_charge, -10, hover_fire_blaster},
ai_charge, -10, hover_fire_blaster, {ai_charge, -10, hover_fire_blaster},
ai_charge, 0, hover_reattack, {ai_charge, 0, hover_reattack},
}; };
mmove_t hover_move_attack1 = {FRAME_attak104, FRAME_attak106, hover_frames_attack1, NULL}; mmove_t hover_move_attack1 = {FRAME_attak104, FRAME_attak106, hover_frames_attack1, NULL};
mframe_t hover_frames_end_attack [] = mframe_t hover_frames_end_attack [] =
{ {
ai_charge, 1, NULL, {ai_charge, 1, NULL},
ai_charge, 1, NULL {ai_charge, 1, NULL}
}; };
mmove_t hover_move_end_attack = {FRAME_attak107, FRAME_attak108, hover_frames_end_attack, hover_run}; mmove_t hover_move_end_attack = {FRAME_attak107, FRAME_attak108, hover_frames_end_attack, hover_run};
@ -523,7 +523,7 @@ void hover_die (edict_t *self, edict_t *inflictor, edict_t *attacker, int damage
{ {
int n; int n;
// check for gib // check for gib
if (self->health <= self->gib_health) if (self->health <= self->gib_health)
{ {
gi.sound (self, CHAN_VOICE, gi.soundindex ("misc/udeath.wav"), 1, ATTN_NORM, 0); gi.sound (self, CHAN_VOICE, gi.soundindex ("misc/udeath.wav"), 1, ATTN_NORM, 0);
@ -539,7 +539,7 @@ void hover_die (edict_t *self, edict_t *inflictor, edict_t *attacker, int damage
if (self->deadflag == DEAD_DEAD) if (self->deadflag == DEAD_DEAD)
return; return;
// regular death // regular death
if (random() < 0.5) if (random() < 0.5)
gi.sound (self, CHAN_VOICE, sound_death1, 1, ATTN_NORM, 0); gi.sound (self, CHAN_VOICE, sound_death1, 1, ATTN_NORM, 0);
else else
@ -594,9 +594,6 @@ void hover_dodge (edict_t *self, edict_t *attacker, float eta)
} }
self->monsterinfo.flyStrafeTimeout = level.time + /*eta + */ 1.0; self->monsterinfo.flyStrafeTimeout = level.time + /*eta + */ 1.0;
//if (random() < 0.5)
// self->monsterinfo.currentmove = &hover_move_run;
} }
void SP_monster_hover_precache(void) void SP_monster_hover_precache(void)
@ -654,3 +651,4 @@ void SP_monster_hover (edict_t *self)
flymonster_start (self); flymonster_start (self);
} }