diff --git a/src/monster/soldier/soldier.c b/src/monster/soldier/soldier.c index 0e1f2a7..4bf022a 100644 --- a/src/monster/soldier/soldier.c +++ b/src/monster/soldier/soldier.c @@ -1,48 +1,67 @@ -/* -============================================================================== - -SOLDIER - -============================================================================== -*/ +/* ======================================================================= + * + * Soldier aka "Guard". This is the most complex enemy in Quake 2, since + * it uses all AI features (dodging, sight, crouching, etc) and comes + * in a myriad of variants. In Xatrix it's even more complex due to + * another 4 variants added. + * + * ======================================================================= + */ #include "../../header/local.h" #include "soldier.h" +#include "soldierh.h" +static int sound_idle; +static int sound_sight1; +static int sound_sight2; +static int sound_pain_light; +static int sound_pain; +static int sound_pain_ss; +static int sound_death_light; +static int sound_death; +static int sound_death_ss; +static int sound_cock; -static int sound_idle; -static int sound_sight1; -static int sound_sight2; -static int sound_pain_light; -static int sound_pain; -static int sound_pain_ss; -static int sound_death_light; -static int sound_death; -static int sound_death_ss; -static int sound_cock; +void soldier_stand(edict_t *self); +void soldier_run(edict_t *self); +void soldierh_stand(edict_t *self); +void soldierh_run(edict_t *self); +extern void brain_dabeam(edict_t *self); - -void soldier_idle (edict_t *self) -{ +void +soldier_idle(edict_t *self) +{ + if (!self) + { + return; + } + if (random() > 0.8) - gi.sound (self, CHAN_VOICE, sound_idle, 1, ATTN_IDLE, 0); + { + gi.sound(self, CHAN_VOICE, sound_idle, 1, ATTN_IDLE, 0); + } } -void soldier_cock (edict_t *self) -{ +void +soldier_cock(edict_t *self) +{ + if (!self) + { + return; + } + if (self->s.frame == FRAME_stand322) - gi.sound (self, CHAN_WEAPON, sound_cock, 1, ATTN_IDLE, 0); + { + gi.sound(self, CHAN_WEAPON, sound_cock, 1, ATTN_IDLE, 0); + } else - gi.sound (self, CHAN_WEAPON, sound_cock, 1, ATTN_NORM, 0); + { + gi.sound(self, CHAN_WEAPON, sound_cock, 1, ATTN_NORM, 0); + } } - -// STAND - -void soldier_stand (edict_t *self); - -mframe_t soldier_frames_stand1 [] = -{ +mframe_t soldier_frames_stand1[] = { {ai_stand, 0, soldier_idle}, {ai_stand, 0, NULL}, {ai_stand, 0, NULL}, @@ -76,10 +95,15 @@ mframe_t soldier_frames_stand1 [] = {ai_stand, 0, NULL}, {ai_stand, 0, NULL} }; -mmove_t soldier_move_stand1 = {FRAME_stand101, FRAME_stand130, soldier_frames_stand1, soldier_stand}; -mframe_t soldier_frames_stand3 [] = -{ +mmove_t soldier_move_stand1 = { + FRAME_stand101, + FRAME_stand130, + soldier_frames_stand1, + soldier_stand +}; + +mframe_t soldier_frames_stand3[] = { {ai_stand, 0, NULL}, {ai_stand, 0, NULL}, {ai_stand, 0, NULL}, @@ -123,105 +147,141 @@ mframe_t soldier_frames_stand3 [] = {ai_stand, 0, NULL}, {ai_stand, 0, NULL} }; -mmove_t soldier_move_stand3 = {FRAME_stand301, FRAME_stand339, soldier_frames_stand3, soldier_stand}; +mmove_t soldier_move_stand3 = { + FRAME_stand301, + FRAME_stand339, + soldier_frames_stand3, + soldier_stand +}; -void soldier_stand (edict_t *self) -{ - if ((self->monsterinfo.currentmove == &soldier_move_stand3) || (random() < 0.8)) +void +soldier_stand(edict_t *self) +{ + if (!self) + { + return; + } + + if ((self->monsterinfo.currentmove == &soldier_move_stand3) || + (random() < 0.8)) + { self->monsterinfo.currentmove = &soldier_move_stand1; + } else + { self->monsterinfo.currentmove = &soldier_move_stand3; + } } - -// -// WALK -// - -void soldier_walk1_random (edict_t *self) -{ +void +soldier_walk1_random(edict_t *self) +{ + if (!self) + { + return; + } + if (random() > 0.1) + { self->monsterinfo.nextframe = FRAME_walk101; + } } -mframe_t soldier_frames_walk1 [] = -{ - {ai_walk, 3, NULL}, - {ai_walk, 6, NULL}, - {ai_walk, 2, NULL}, - {ai_walk, 2, NULL}, - {ai_walk, 2, NULL}, - {ai_walk, 1, NULL}, - {ai_walk, 6, NULL}, - {ai_walk, 5, NULL}, - {ai_walk, 3, NULL}, +mframe_t soldier_frames_walk1[] = { + {ai_walk, 3, NULL}, + {ai_walk, 6, NULL}, + {ai_walk, 2, NULL}, + {ai_walk, 2, NULL}, + {ai_walk, 2, NULL}, + {ai_walk, 1, NULL}, + {ai_walk, 6, NULL}, + {ai_walk, 5, NULL}, + {ai_walk, 3, NULL}, {ai_walk, -1, soldier_walk1_random}, - {ai_walk, 0, NULL}, - {ai_walk, 0, NULL}, - {ai_walk, 0, NULL}, - {ai_walk, 0, NULL}, - {ai_walk, 0, NULL}, - {ai_walk, 0, NULL}, - {ai_walk, 0, NULL}, - {ai_walk, 0, NULL}, - {ai_walk, 0, NULL}, - {ai_walk, 0, NULL}, - {ai_walk, 0, NULL}, - {ai_walk, 0, NULL}, - {ai_walk, 0, NULL}, - {ai_walk, 0, NULL}, - {ai_walk, 0, NULL}, - {ai_walk, 0, NULL}, - {ai_walk, 0, NULL}, - {ai_walk, 0, NULL}, - {ai_walk, 0, NULL}, - {ai_walk, 0, NULL}, - {ai_walk, 0, NULL}, - {ai_walk, 0, NULL}, - {ai_walk, 0, NULL} + {ai_walk, 0, NULL}, + {ai_walk, 0, NULL}, + {ai_walk, 0, NULL}, + {ai_walk, 0, NULL}, + {ai_walk, 0, NULL}, + {ai_walk, 0, NULL}, + {ai_walk, 0, NULL}, + {ai_walk, 0, NULL}, + {ai_walk, 0, NULL}, + {ai_walk, 0, NULL}, + {ai_walk, 0, NULL}, + {ai_walk, 0, NULL}, + {ai_walk, 0, NULL}, + {ai_walk, 0, NULL}, + {ai_walk, 0, NULL}, + {ai_walk, 0, NULL}, + {ai_walk, 0, NULL}, + {ai_walk, 0, NULL}, + {ai_walk, 0, NULL}, + {ai_walk, 0, NULL}, + {ai_walk, 0, NULL}, + {ai_walk, 0, NULL}, + {ai_walk, 0, NULL} }; -mmove_t soldier_move_walk1 = {FRAME_walk101, FRAME_walk133, soldier_frames_walk1, NULL}; -mframe_t soldier_frames_walk2 [] = -{ - {ai_walk, 4, NULL}, - {ai_walk, 4, NULL}, - {ai_walk, 9, NULL}, - {ai_walk, 8, NULL}, - {ai_walk, 5, NULL}, - {ai_walk, 1, NULL}, - {ai_walk, 3, NULL}, - {ai_walk, 7, NULL}, - {ai_walk, 6, NULL}, - {ai_walk, 7, NULL} +mmove_t soldier_move_walk1 = { + FRAME_walk101, + FRAME_walk133, + soldier_frames_walk1, + NULL }; -mmove_t soldier_move_walk2 = {FRAME_walk209, FRAME_walk218, soldier_frames_walk2, NULL}; -void soldier_walk (edict_t *self) -{ +mframe_t soldier_frames_walk2[] = { + {ai_walk, 4, NULL}, + {ai_walk, 4, NULL}, + {ai_walk, 9, NULL}, + {ai_walk, 8, NULL}, + {ai_walk, 5, NULL}, + {ai_walk, 1, NULL}, + {ai_walk, 3, NULL}, + {ai_walk, 7, NULL}, + {ai_walk, 6, NULL}, + {ai_walk, 7, NULL} +}; + +mmove_t soldier_move_walk2 = { + FRAME_walk209, + FRAME_walk218, + soldier_frames_walk2, + NULL +}; + +void +soldier_walk(edict_t *self) +{ + if (!self) + { + return; + } + if (random() < 0.5) + { self->monsterinfo.currentmove = &soldier_move_walk1; + } else + { self->monsterinfo.currentmove = &soldier_move_walk2; + } } - -// -// RUN -// - -void soldier_run (edict_t *self); - -mframe_t soldier_frames_start_run [] = -{ - {ai_run, 7, NULL}, - {ai_run, 5, NULL} +mframe_t soldier_frames_start_run[] = { + {ai_run, 7, NULL}, + {ai_run, 5, NULL} }; -mmove_t soldier_move_start_run = {FRAME_run01, FRAME_run02, soldier_frames_start_run, soldier_run}; -mframe_t soldier_frames_run [] = -{ +mmove_t soldier_move_start_run = { + FRAME_run01, + FRAME_run02, + soldier_frames_start_run, + soldier_run +}; + +mframe_t soldier_frames_run[] = { {ai_run, 10, NULL}, {ai_run, 11, NULL}, {ai_run, 11, NULL}, @@ -229,19 +289,31 @@ mframe_t soldier_frames_run [] = {ai_run, 10, NULL}, {ai_run, 15, NULL} }; -mmove_t soldier_move_run = {FRAME_run03, FRAME_run08, soldier_frames_run, NULL}; -void soldier_run (edict_t *self) -{ +mmove_t soldier_move_run = { + FRAME_run03, + FRAME_run08, + soldier_frames_run, + NULL +}; + +void +soldier_run(edict_t *self) +{ + if (!self) + { + return; + } + if (self->monsterinfo.aiflags & AI_STAND_GROUND) { self->monsterinfo.currentmove = &soldier_move_stand1; return; } - if (self->monsterinfo.currentmove == &soldier_move_walk1 || - self->monsterinfo.currentmove == &soldier_move_walk2 || - self->monsterinfo.currentmove == &soldier_move_start_run) + if ((self->monsterinfo.currentmove == &soldier_move_walk1) || + (self->monsterinfo.currentmove == &soldier_move_walk2) || + (self->monsterinfo.currentmove == &soldier_move_start_run)) { self->monsterinfo.currentmove = &soldier_move_run; } @@ -251,103 +323,139 @@ void soldier_run (edict_t *self) } } - -// -// PAIN -// - -mframe_t soldier_frames_pain1 [] = -{ +mframe_t soldier_frames_pain1[] = { {ai_move, -3, NULL}, - {ai_move, 4, NULL}, - {ai_move, 1, NULL}, - {ai_move, 1, NULL}, - {ai_move, 0, NULL} + {ai_move, 4, NULL}, + {ai_move, 1, NULL}, + {ai_move, 1, NULL}, + {ai_move, 0, NULL} }; -mmove_t soldier_move_pain1 = {FRAME_pain101, FRAME_pain105, soldier_frames_pain1, soldier_run}; -mframe_t soldier_frames_pain2 [] = -{ +mmove_t soldier_move_pain1 = { + FRAME_pain101, + FRAME_pain105, + soldier_frames_pain1, + soldier_run +}; + +mframe_t soldier_frames_pain2[] = { {ai_move, -13, NULL}, - {ai_move, -1, NULL}, - {ai_move, 2, NULL}, - {ai_move, 4, NULL}, - {ai_move, 2, NULL}, - {ai_move, 3, NULL}, - {ai_move, 2, NULL} + {ai_move, -1, NULL}, + {ai_move, 2, NULL}, + {ai_move, 4, NULL}, + {ai_move, 2, NULL}, + {ai_move, 3, NULL}, + {ai_move, 2, NULL} }; -mmove_t soldier_move_pain2 = {FRAME_pain201, FRAME_pain207, soldier_frames_pain2, soldier_run}; -mframe_t soldier_frames_pain3 [] = -{ +mmove_t soldier_move_pain2 = { + FRAME_pain201, + FRAME_pain207, + soldier_frames_pain2, + soldier_run +}; + +mframe_t soldier_frames_pain3[] = { {ai_move, -8, NULL}, {ai_move, 10, NULL}, {ai_move, -4, NULL}, {ai_move, -1, NULL}, {ai_move, -3, NULL}, - {ai_move, 0, NULL}, - {ai_move, 3, NULL}, - {ai_move, 0, NULL}, - {ai_move, 0, NULL}, - {ai_move, 0, NULL}, - {ai_move, 0, NULL}, - {ai_move, 1, NULL}, - {ai_move, 0, NULL}, - {ai_move, 1, NULL}, - {ai_move, 2, NULL}, - {ai_move, 4, NULL}, - {ai_move, 3, NULL}, - {ai_move, 2, NULL} + {ai_move, 0, NULL}, + {ai_move, 3, NULL}, + {ai_move, 0, NULL}, + {ai_move, 0, NULL}, + {ai_move, 0, NULL}, + {ai_move, 0, NULL}, + {ai_move, 1, NULL}, + {ai_move, 0, NULL}, + {ai_move, 1, NULL}, + {ai_move, 2, NULL}, + {ai_move, 4, NULL}, + {ai_move, 3, NULL}, + {ai_move, 2, NULL} }; -mmove_t soldier_move_pain3 = {FRAME_pain301, FRAME_pain318, soldier_frames_pain3, soldier_run}; -mframe_t soldier_frames_pain4 [] = -{ - {ai_move, 0, NULL}, - {ai_move, 0, NULL}, - {ai_move, 0, NULL}, +mmove_t soldier_move_pain3 = { + FRAME_pain301, + FRAME_pain318, + soldier_frames_pain3, + soldier_run +}; + +mframe_t soldier_frames_pain4[] = { + {ai_move, 0, NULL}, + {ai_move, 0, NULL}, + {ai_move, 0, NULL}, {ai_move, -10, NULL}, - {ai_move, -6, NULL}, - {ai_move, 8, NULL}, - {ai_move, 4, NULL}, - {ai_move, 1, NULL}, - {ai_move, 0, NULL}, - {ai_move, 2, NULL}, - {ai_move, 5, NULL}, - {ai_move, 2, NULL}, - {ai_move, -1, NULL}, - {ai_move, -1, NULL}, - {ai_move, 3, NULL}, - {ai_move, 2, NULL}, - {ai_move, 0, NULL} + {ai_move, -6, NULL}, + {ai_move, 8, NULL}, + {ai_move, 4, NULL}, + {ai_move, 1, NULL}, + {ai_move, 0, NULL}, + {ai_move, 2, NULL}, + {ai_move, 5, NULL}, + {ai_move, 2, NULL}, + {ai_move, -1, NULL}, + {ai_move, -1, NULL}, + {ai_move, 3, NULL}, + {ai_move, 2, NULL}, + {ai_move, 0, NULL} }; -mmove_t soldier_move_pain4 = {FRAME_pain401, FRAME_pain417, soldier_frames_pain4, soldier_run}; +mmove_t soldier_move_pain4 = { + FRAME_pain401, + FRAME_pain417, + soldier_frames_pain4, + soldier_run +}; -void soldier_pain (edict_t *self, edict_t *other, float kick, int damage) +void +soldier_pain(edict_t *self, edict_t *other /* unused */, + float kick /* unused */, int damage /* unused */) { - float r; - int n; - + float r; + int n; + + if (!self) + { + return; + } + if (self->health < (self->max_health / 2)) - self->s.skinnum |= 1; + { + self->s.skinnum |= 1; + } if (level.time < self->pain_debounce_time) { - if ((self->velocity[2] > 100) && ( (self->monsterinfo.currentmove == &soldier_move_pain1) || (self->monsterinfo.currentmove == &soldier_move_pain2) || (self->monsterinfo.currentmove == &soldier_move_pain3))) + if ((self->velocity[2] > 100) && + ((self->monsterinfo.currentmove == &soldier_move_pain1) || + (self->monsterinfo.currentmove == &soldier_move_pain2) || + (self->monsterinfo.currentmove == &soldier_move_pain3))) + { self->monsterinfo.currentmove = &soldier_move_pain4; + } + return; } self->pain_debounce_time = level.time + 3; n = self->s.skinnum | 1; + if (n == 1) - gi.sound (self, CHAN_VOICE, sound_pain_light, 1, ATTN_NORM, 0); + { + gi.sound(self, CHAN_VOICE, sound_pain_light, 1, ATTN_NORM, 0); + } else if (n == 3) - gi.sound (self, CHAN_VOICE, sound_pain, 1, ATTN_NORM, 0); + { + gi.sound(self, CHAN_VOICE, sound_pain, 1, ATTN_NORM, 0); + } else - gi.sound (self, CHAN_VOICE, sound_pain_ss, 1, ATTN_NORM, 0); + { + gi.sound(self, CHAN_VOICE, sound_pain_ss, 1, ATTN_NORM, 0); + } if (self->velocity[2] > 100) { @@ -356,176 +464,293 @@ void soldier_pain (edict_t *self, edict_t *other, float kick, int damage) } if (skill->value == 3) - return; // no pain anims in nightmare + { + return; /* no pain anims in nightmare */ + } r = random(); if (r < 0.33) - self->monsterinfo.currentmove = &soldier_move_pain1; - else if (r < 0.66) - self->monsterinfo.currentmove = &soldier_move_pain2; - else - self->monsterinfo.currentmove = &soldier_move_pain3; -} - - -// -// ATTACK -// - -static int blaster_flash [] = {MZ2_SOLDIER_BLASTER_1, MZ2_SOLDIER_BLASTER_2, MZ2_SOLDIER_BLASTER_3, MZ2_SOLDIER_BLASTER_4, MZ2_SOLDIER_BLASTER_5, MZ2_SOLDIER_BLASTER_6, MZ2_SOLDIER_BLASTER_7, MZ2_SOLDIER_BLASTER_8}; -static int shotgun_flash [] = {MZ2_SOLDIER_SHOTGUN_1, MZ2_SOLDIER_SHOTGUN_2, MZ2_SOLDIER_SHOTGUN_3, MZ2_SOLDIER_SHOTGUN_4, MZ2_SOLDIER_SHOTGUN_5, MZ2_SOLDIER_SHOTGUN_6, MZ2_SOLDIER_SHOTGUN_7, MZ2_SOLDIER_SHOTGUN_8}; -static int machinegun_flash [] = {MZ2_SOLDIER_MACHINEGUN_1, MZ2_SOLDIER_MACHINEGUN_2, MZ2_SOLDIER_MACHINEGUN_3, MZ2_SOLDIER_MACHINEGUN_4, MZ2_SOLDIER_MACHINEGUN_5, MZ2_SOLDIER_MACHINEGUN_6, MZ2_SOLDIER_MACHINEGUN_7, MZ2_SOLDIER_MACHINEGUN_8}; - -void soldier_fire (edict_t *self, int flash_number) -{ - vec3_t start; - vec3_t forward, right, up; - vec3_t aim; - vec3_t dir; - vec3_t end; - float r, u; - int flash_index; - - if (self->s.skinnum < 2) - flash_index = blaster_flash[flash_number]; - else if (self->s.skinnum < 4) - flash_index = shotgun_flash[flash_number]; - else - flash_index = machinegun_flash[flash_number]; - - AngleVectors (self->s.angles, forward, right, NULL); - G_ProjectSource (self->s.origin, monster_flash_offset[flash_index], forward, right, start); - - if (flash_number == 5 || flash_number == 6) { - VectorCopy (forward, aim); + self->monsterinfo.currentmove = &soldier_move_pain1; + } + else if (r < 0.66) + { + self->monsterinfo.currentmove = &soldier_move_pain2; } else { - VectorCopy (self->enemy->s.origin, end); + self->monsterinfo.currentmove = &soldier_move_pain3; + } +} + +static int blaster_flash[] = { + MZ2_SOLDIER_BLASTER_1, + MZ2_SOLDIER_BLASTER_2, + MZ2_SOLDIER_BLASTER_3, + MZ2_SOLDIER_BLASTER_4, + MZ2_SOLDIER_BLASTER_5, + MZ2_SOLDIER_BLASTER_6, + MZ2_SOLDIER_BLASTER_7, + MZ2_SOLDIER_BLASTER_8 +}; + +static int shotgun_flash[] = { + MZ2_SOLDIER_SHOTGUN_1, + MZ2_SOLDIER_SHOTGUN_2, + MZ2_SOLDIER_SHOTGUN_3, + MZ2_SOLDIER_SHOTGUN_4, + MZ2_SOLDIER_SHOTGUN_5, + MZ2_SOLDIER_SHOTGUN_6, + MZ2_SOLDIER_SHOTGUN_7, + MZ2_SOLDIER_SHOTGUN_8 +}; + +static int machinegun_flash[] = { + MZ2_SOLDIER_MACHINEGUN_1, + MZ2_SOLDIER_MACHINEGUN_2, + MZ2_SOLDIER_MACHINEGUN_3, + MZ2_SOLDIER_MACHINEGUN_4, + MZ2_SOLDIER_MACHINEGUN_5, + MZ2_SOLDIER_MACHINEGUN_6, + MZ2_SOLDIER_MACHINEGUN_7, + MZ2_SOLDIER_MACHINEGUN_8 +}; + +void +soldier_fire(edict_t *self, int flash_number) +{ + vec3_t start; + vec3_t forward, right, up; + vec3_t aim; + vec3_t dir; + vec3_t end; + float r, u; + int flash_index; + + if (!self) + { + return; + } + + if (self->s.skinnum < 2) + { + flash_index = blaster_flash[flash_number]; + } + else if (self->s.skinnum < 4) + { + flash_index = shotgun_flash[flash_number]; + } + else + { + flash_index = machinegun_flash[flash_number]; + } + + AngleVectors(self->s.angles, forward, right, NULL); + G_ProjectSource(self->s.origin, monster_flash_offset[flash_index], + forward, right, start); + + if ((flash_number == 5) || (flash_number == 6)) + { + VectorCopy(forward, aim); + } + else + { + VectorCopy(self->enemy->s.origin, end); end[2] += self->enemy->viewheight; - VectorSubtract (end, start, aim); - vectoangles (aim, dir); - AngleVectors (dir, forward, right, up); + VectorSubtract(end, start, aim); + vectoangles(aim, dir); + AngleVectors(dir, forward, right, up); - r = crandom()*1000; - u = crandom()*500; - VectorMA (start, 8192, forward, end); - VectorMA (end, r, right, end); - VectorMA (end, u, up, end); + r = crandom() * 1000; + u = crandom() * 500; + VectorMA(start, 8192, forward, end); + VectorMA(end, r, right, end); + VectorMA(end, u, up, end); - VectorSubtract (end, start, aim); - VectorNormalize (aim); + VectorSubtract(end, start, aim); + VectorNormalize(aim); } if (self->s.skinnum <= 1) { - monster_fire_blaster (self, start, aim, 5, 600, flash_index, EF_BLASTER); + monster_fire_blaster(self, start, aim, 5, 600, flash_index, EF_BLASTER); } else if (self->s.skinnum <= 3) { - monster_fire_shotgun (self, start, aim, 2, 1, DEFAULT_SHOTGUN_HSPREAD, DEFAULT_SHOTGUN_VSPREAD, DEFAULT_SHOTGUN_COUNT, flash_index); + monster_fire_shotgun(self, start, aim, 2, 1, DEFAULT_SHOTGUN_HSPREAD, + DEFAULT_SHOTGUN_VSPREAD, DEFAULT_SHOTGUN_COUNT, flash_index); } else { if (!(self->monsterinfo.aiflags & AI_HOLD_FRAME)) + { self->monsterinfo.pausetime = level.time + (3 + rand() % 8) * FRAMETIME; + } - monster_fire_bullet (self, start, aim, 2, 4, DEFAULT_BULLET_HSPREAD, DEFAULT_BULLET_VSPREAD, flash_index); + monster_fire_bullet(self, start, aim, 2, 4, DEFAULT_BULLET_HSPREAD, + DEFAULT_BULLET_VSPREAD, flash_index); if (level.time >= self->monsterinfo.pausetime) + { self->monsterinfo.aiflags &= ~AI_HOLD_FRAME; + } else + { self->monsterinfo.aiflags |= AI_HOLD_FRAME; + } } } -// ATTACK1 (blaster/shotgun) - -void soldier_fire1 (edict_t *self) -{ - soldier_fire (self, 0); +void +soldier_fire1(edict_t *self) +{ + if (!self) + { + return; + } + + soldier_fire(self, 0); } -void soldier_attack1_refire1 (edict_t *self) -{ - if (self->s.skinnum > 1) +void +soldier_attack1_refire1(edict_t *self) +{ + if (!self) + { return; + } + + if (self->s.skinnum > 1) + { + return; + } if (self->enemy->health <= 0) + { return; + } - if ( ((skill->value == 3) && (random() < 0.5)) || (range(self, self->enemy) == RANGE_MELEE) ) + if (((skill->value == 3) && (random() < 0.5)) || (range(self, self->enemy) == RANGE_MELEE)) + { self->monsterinfo.nextframe = FRAME_attak102; + } else + { self->monsterinfo.nextframe = FRAME_attak110; + } } -void soldier_attack1_refire2 (edict_t *self) -{ - if (self->s.skinnum < 2) +void +soldier_attack1_refire2(edict_t *self) +{ + if (!self) + { return; + } + + if (self->s.skinnum < 2) + { + return; + } if (self->enemy->health <= 0) + { return; + } - if ( ((skill->value == 3) && (random() < 0.5)) || (range(self, self->enemy) == RANGE_MELEE) ) + if (((skill->value == 3) && (random() < 0.5)) || (range(self, self->enemy) == RANGE_MELEE)) + { self->monsterinfo.nextframe = FRAME_attak102; + } } -mframe_t soldier_frames_attack1 [] = -{ - {ai_charge, 0, NULL}, - {ai_charge, 0, NULL}, - {ai_charge, 0, soldier_fire1}, - {ai_charge, 0, NULL}, - {ai_charge, 0, NULL}, - {ai_charge, 0, soldier_attack1_refire1}, - {ai_charge, 0, NULL}, - {ai_charge, 0, soldier_cock}, - {ai_charge, 0, soldier_attack1_refire2}, - {ai_charge, 0, NULL}, - {ai_charge, 0, NULL}, - {ai_charge, 0, NULL} +mframe_t soldier_frames_attack1[] = { + {ai_charge, 0, NULL}, + {ai_charge, 0, NULL}, + {ai_charge, 0, soldier_fire1}, + {ai_charge, 0, NULL}, + {ai_charge, 0, NULL}, + {ai_charge, 0, soldier_attack1_refire1}, + {ai_charge, 0, NULL}, + {ai_charge, 0, soldier_cock}, + {ai_charge, 0, soldier_attack1_refire2}, + {ai_charge, 0, NULL}, + {ai_charge, 0, NULL}, + {ai_charge, 0, NULL} }; -mmove_t soldier_move_attack1 = {FRAME_attak101, FRAME_attak112, soldier_frames_attack1, soldier_run}; -// ATTACK2 (blaster/shotgun) +mmove_t soldier_move_attack1 = { + FRAME_attak101, + FRAME_attak112, + soldier_frames_attack1, + soldier_run +}; -void soldier_fire2 (edict_t *self) -{ - soldier_fire (self, 1); +void +soldier_fire2(edict_t *self) +{ + if (!self) + { + return; + } + + soldier_fire(self, 1); } -void soldier_attack2_refire1 (edict_t *self) -{ +void +soldier_attack2_refire1(edict_t *self) +{ + if (!self) + { + return; + } + if (self->s.skinnum > 1) + { return; + } if (self->enemy->health <= 0) + { return; + } - if ( ((skill->value == 3) && (random() < 0.5)) || (range(self, self->enemy) == RANGE_MELEE) ) + if (((skill->value == 3) && (random() < 0.5)) || (range(self, self->enemy) == RANGE_MELEE)) + { self->monsterinfo.nextframe = FRAME_attak204; + } else + { self->monsterinfo.nextframe = FRAME_attak216; + } } -void soldier_attack2_refire2 (edict_t *self) -{ - if (self->s.skinnum < 2) +void +soldier_attack2_refire2(edict_t *self) +{ + if (!self) + { return; + } + + if (self->s.skinnum < 2) + { + return; + } if (self->enemy->health <= 0) + { return; + } - if ( ((skill->value == 3) && (random() < 0.5)) || (range(self, self->enemy) == RANGE_MELEE) ) + if (((skill->value == 3) && (random() < 0.5)) || (range(self, self->enemy) == RANGE_MELEE)) + { self->monsterinfo.nextframe = FRAME_attak204; + } } -mframe_t soldier_frames_attack2 [] = -{ +mframe_t soldier_frames_attack2[] = { {ai_charge, 0, NULL}, {ai_charge, 0, NULL}, {ai_charge, 0, NULL}, @@ -545,43 +770,75 @@ mframe_t soldier_frames_attack2 [] = {ai_charge, 0, NULL}, {ai_charge, 0, NULL} }; -mmove_t soldier_move_attack2 = {FRAME_attak201, FRAME_attak218, soldier_frames_attack2, soldier_run}; -// ATTACK3 (duck and shoot) +mmove_t soldier_move_attack2 = { + FRAME_attak201, + FRAME_attak218, + soldier_frames_attack2, + soldier_run +}; -void soldier_duck_down (edict_t *self) -{ - if (self->monsterinfo.aiflags & AI_DUCKED) +void +soldier_duck_down(edict_t *self) +{ + if (!self) + { return; + } + + if (self->monsterinfo.aiflags & AI_DUCKED) + { + return; + } + self->monsterinfo.aiflags |= AI_DUCKED; self->maxs[2] -= 32; self->takedamage = DAMAGE_YES; self->monsterinfo.pausetime = level.time + 1; - gi.linkentity (self); + gi.linkentity(self); } -void soldier_duck_up (edict_t *self) -{ +void +soldier_duck_up(edict_t *self) +{ + if (!self) + { + return; + } + self->monsterinfo.aiflags &= ~AI_DUCKED; self->maxs[2] += 32; self->takedamage = DAMAGE_AIM; - gi.linkentity (self); + gi.linkentity(self); } -void soldier_fire3 (edict_t *self) -{ - soldier_duck_down (self); - soldier_fire (self, 2); +void +soldier_fire3(edict_t *self) +{ + if (!self) + { + return; + } + + soldier_duck_down(self); + soldier_fire(self, 2); } -void soldier_attack3_refire (edict_t *self) -{ +void +soldier_attack3_refire(edict_t *self) +{ + if (!self) + { + return; + } + if ((level.time + 0.4) < self->monsterinfo.pausetime) + { self->monsterinfo.nextframe = FRAME_attak303; + } } -mframe_t soldier_frames_attack3 [] = -{ +mframe_t soldier_frames_attack3[] = { {ai_charge, 0, NULL}, {ai_charge, 0, NULL}, {ai_charge, 0, soldier_fire3}, @@ -592,17 +849,26 @@ mframe_t soldier_frames_attack3 [] = {ai_charge, 0, NULL}, {ai_charge, 0, NULL} }; -mmove_t soldier_move_attack3 = {FRAME_attak301, FRAME_attak309, soldier_frames_attack3, soldier_run}; -// ATTACK4 (machinegun) +mmove_t soldier_move_attack3 = { + FRAME_attak301, + FRAME_attak309, + soldier_frames_attack3, + soldier_run +}; -void soldier_fire4 (edict_t *self) -{ - soldier_fire (self, 3); +void +soldier_fire4(edict_t *self) +{ + if (!self) + { + return; + } + + soldier_fire(self, 3); } -mframe_t soldier_frames_attack4 [] = -{ +mframe_t soldier_frames_attack4[] = { {ai_charge, 0, NULL}, {ai_charge, 0, NULL}, {ai_charge, 0, soldier_fire4}, @@ -610,31 +876,52 @@ mframe_t soldier_frames_attack4 [] = {ai_charge, 0, NULL}, {ai_charge, 0, NULL} }; -mmove_t soldier_move_attack4 = {FRAME_attak401, FRAME_attak406, soldier_frames_attack4, soldier_run}; -// ATTACK6 (run & shoot) +mmove_t soldier_move_attack4 = { + FRAME_attak401, + FRAME_attak406, + soldier_frames_attack4, + soldier_run +}; -void soldier_fire8 (edict_t *self) -{ - soldier_fire (self, 7); +void +soldier_fire8(edict_t *self) +{ + if (!self) + { + return; + } + + soldier_fire(self, 7); } -void soldier_attack6_refire (edict_t *self) -{ - if (self->enemy->health <= 0) +void +soldier_attack6_refire(edict_t *self) +{ + if (!self) + { return; + } + + if (self->enemy->health <= 0) + { + return; + } if (range(self, self->enemy) < RANGE_MID) + { return; + } if (skill->value == 3) + { self->monsterinfo.nextframe = FRAME_runs03; + } } -mframe_t soldier_frames_attack6 [] = -{ +mframe_t soldier_frames_attack6[] = { {ai_charge, 10, NULL}, - {ai_charge, 4, NULL}, + {ai_charge, 4, NULL}, {ai_charge, 12, NULL}, {ai_charge, 11, soldier_fire8}, {ai_charge, 13, NULL}, @@ -642,22 +929,38 @@ mframe_t soldier_frames_attack6 [] = {ai_charge, 15, NULL}, {ai_charge, 14, NULL}, {ai_charge, 11, NULL}, - {ai_charge, 8, NULL}, + {ai_charge, 8, NULL}, {ai_charge, 11, NULL}, {ai_charge, 12, NULL}, {ai_charge, 12, NULL}, {ai_charge, 17, soldier_attack6_refire} }; -mmove_t soldier_move_attack6 = {FRAME_runs01, FRAME_runs14, soldier_frames_attack6, soldier_run}; -void soldier_attack(edict_t *self) -{ +mmove_t soldier_move_attack6 = { + FRAME_runs01, + FRAME_runs14, + soldier_frames_attack6, + soldier_run +}; + +void +soldier_attack(edict_t *self) +{ + if (!self) + { + return; + } + if (self->s.skinnum < 4) { if (random() < 0.5) + { self->monsterinfo.currentmove = &soldier_move_attack1; + } else + { self->monsterinfo.currentmove = &soldier_move_attack2; + } } else { @@ -665,57 +968,86 @@ void soldier_attack(edict_t *self) } } - -// -// SIGHT -// - -void soldier_sight(edict_t *self, edict_t *other) -{ +void +soldier_sight(edict_t *self, edict_t *other /* unused */) +{ + if (!self) + { + return; + } + if (random() < 0.5) - gi.sound (self, CHAN_VOICE, sound_sight1, 1, ATTN_NORM, 0); + { + gi.sound(self, CHAN_VOICE, sound_sight1, 1, ATTN_NORM, 0); + } else - gi.sound (self, CHAN_VOICE, sound_sight2, 1, ATTN_NORM, 0); + { + gi.sound(self, CHAN_VOICE, sound_sight2, 1, ATTN_NORM, 0); + } if ((skill->value > 0) && (range(self, self->enemy) >= RANGE_MID)) { if (random() > 0.5) + { self->monsterinfo.currentmove = &soldier_move_attack6; + } } } -// -// DUCK -// - -void soldier_duck_hold (edict_t *self) -{ +void +soldier_duck_hold(edict_t *self) +{ + if (!self) + { + return; + } + if (level.time >= self->monsterinfo.pausetime) + { self->monsterinfo.aiflags &= ~AI_HOLD_FRAME; + } else + { self->monsterinfo.aiflags |= AI_HOLD_FRAME; + } } -mframe_t soldier_frames_duck [] = -{ +mframe_t soldier_frames_duck[] = { {ai_move, 5, soldier_duck_down}, {ai_move, -1, soldier_duck_hold}, - {ai_move, 1, NULL}, - {ai_move, 0, soldier_duck_up}, - {ai_move, 5, NULL} + {ai_move, 1, NULL}, + {ai_move, 0, soldier_duck_up}, + {ai_move, 5, NULL} }; -mmove_t soldier_move_duck = {FRAME_duck01, FRAME_duck05, soldier_frames_duck, soldier_run}; -void soldier_dodge (edict_t *self, edict_t *attacker, float eta) +mmove_t soldier_move_duck = { + FRAME_duck01, + FRAME_duck05, + soldier_frames_duck, + soldier_run +}; + +void +soldier_dodge(edict_t *self, edict_t *attacker, float eta) { - float r; - - r = random(); - if (r > 0.25) + float r; + + if (!self || !attacker) + { return; + } + + r = random(); + + if (r > 0.25) + { + return; + } if (!self->enemy) + { self->enemy = attacker; + } if (skill->value == 0) { @@ -729,369 +1061,453 @@ void soldier_dodge (edict_t *self, edict_t *attacker, float eta) if (skill->value == 1) { if (r > 0.33) + { self->monsterinfo.currentmove = &soldier_move_duck; + } else + { self->monsterinfo.currentmove = &soldier_move_attack3; + } + return; } if (skill->value >= 2) { if (r > 0.66) + { self->monsterinfo.currentmove = &soldier_move_duck; + } else + { self->monsterinfo.currentmove = &soldier_move_attack3; + } + return; } self->monsterinfo.currentmove = &soldier_move_attack3; } - -// -// DEATH -// - -void soldier_fire6 (edict_t *self) -{ - soldier_fire (self, 5); +void +soldier_fire6(edict_t *self) +{ + if (!self) + { + return; + } + + soldier_fire(self, 5); } -void soldier_fire7 (edict_t *self) -{ - soldier_fire (self, 6); +void +soldier_fire7(edict_t *self) +{ + if (!self) + { + return; + } + + soldier_fire(self, 6); } -void soldier_dead (edict_t *self) -{ - VectorSet (self->mins, -16, -16, -24); - VectorSet (self->maxs, 16, 16, -8); +void +soldier_dead(edict_t *self) +{ + if (!self) + { + return; + } + + VectorSet(self->mins, -16, -16, -24); + VectorSet(self->maxs, 16, 16, -8); self->movetype = MOVETYPE_TOSS; self->svflags |= SVF_DEADMONSTER; self->nextthink = 0; - gi.linkentity (self); + gi.linkentity(self); } -mframe_t soldier_frames_death1 [] = -{ - {ai_move, 0, NULL}, +mframe_t soldier_frames_death1[] = { + {ai_move, 0, NULL}, {ai_move, -10, NULL}, {ai_move, -10, NULL}, {ai_move, -10, NULL}, - {ai_move, -5, NULL}, - {ai_move, 0, NULL}, - {ai_move, 0, NULL}, - {ai_move, 0, NULL}, - {ai_move, 0, NULL}, - {ai_move, 0, NULL}, + {ai_move, -5, 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, soldier_fire6}, - {ai_move, 0, NULL}, - {ai_move, 0, NULL}, - {ai_move, 0, soldier_fire7}, - {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, soldier_fire6}, + {ai_move, 0, NULL}, + {ai_move, 0, NULL}, + {ai_move, 0, soldier_fire7}, + {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 soldier_move_death1 = {FRAME_death101, FRAME_death136, soldier_frames_death1, soldier_dead}; -mframe_t soldier_frames_death2 [] = -{ - {ai_move, -5, NULL}, - {ai_move, -5, NULL}, - {ai_move, -5, 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 soldier_move_death1 = { + FRAME_death101, + FRAME_death136, + soldier_frames_death1, + soldier_dead }; -mmove_t soldier_move_death2 = {FRAME_death201, FRAME_death235, soldier_frames_death2, soldier_dead}; -mframe_t soldier_frames_death3 [] = -{ - {ai_move, -5, NULL}, - {ai_move, -5, NULL}, - {ai_move, -5, 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}, +mframe_t soldier_frames_death2[] = { + {ai_move, -5, NULL}, + {ai_move, -5, NULL}, + {ai_move, -5, 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 soldier_move_death3 = {FRAME_death301, FRAME_death345, soldier_frames_death3, soldier_dead}; -mframe_t soldier_frames_death4 [] = -{ - {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 soldier_move_death2 = { + FRAME_death201, + FRAME_death235, + soldier_frames_death2, + soldier_dead }; -mmove_t soldier_move_death4 = {FRAME_death401, FRAME_death453, soldier_frames_death4, soldier_dead}; -mframe_t soldier_frames_death5 [] = -{ - {ai_move, -5, NULL}, - {ai_move, -5, NULL}, - {ai_move, -5, 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}, +mframe_t soldier_frames_death3[] = { + {ai_move, -5, NULL}, + {ai_move, -5, NULL}, + {ai_move, -5, 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 soldier_move_death5 = {FRAME_death501, FRAME_death524, soldier_frames_death5, soldier_dead}; -mframe_t soldier_frames_death6 [] = -{ - {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 soldier_move_death3 = { + FRAME_death301, + FRAME_death345, + soldier_frames_death3, + soldier_dead }; -mmove_t soldier_move_death6 = {FRAME_death601, FRAME_death610, soldier_frames_death6, soldier_dead}; -void soldier_die (edict_t *self, edict_t *inflictor, edict_t *attacker, int damage, vec3_t point) +mframe_t soldier_frames_death4[] = { + {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 soldier_move_death4 = { + FRAME_death401, + FRAME_death453, + soldier_frames_death4, + soldier_dead +}; + +mframe_t soldier_frames_death5[] = { + {ai_move, -5, NULL}, + {ai_move, -5, NULL}, + {ai_move, -5, 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 soldier_move_death5 = { + FRAME_death501, + FRAME_death524, + soldier_frames_death5, + soldier_dead +}; + +mframe_t soldier_frames_death6[] = { + {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 soldier_move_death6 = { + FRAME_death601, + FRAME_death610, + soldier_frames_death6, + soldier_dead +}; + +void +soldier_die(edict_t *self, edict_t *inflictor /* unused */, + edict_t *attacker /* unused */, int damage, + vec3_t point /* unused */) { - int n; - - // check for gib + int n; + + if (!self) + { + return; + } + + /* check for gib */ if (self->health <= self->gib_health) { - gi.sound (self, CHAN_VOICE, gi.soundindex ("misc/udeath.wav"), 1, ATTN_NORM, 0); - for (n= 0; n < 3; n++) - ThrowGib (self, "models/objects/gibs/sm_meat/tris.md2", damage, GIB_ORGANIC); - ThrowGib (self, "models/objects/gibs/chest/tris.md2", damage, GIB_ORGANIC); - ThrowHead (self, "models/objects/gibs/head2/tris.md2", damage, GIB_ORGANIC); + gi.sound(self, CHAN_VOICE, gi.soundindex("misc/udeath.wav"), 1, ATTN_NORM, 0); + + for (n = 0; n < 3; n++) + { + ThrowGib(self, "models/objects/gibs/sm_meat/tris.md2", damage, GIB_ORGANIC); + } + + ThrowGib(self, "models/objects/gibs/chest/tris.md2", damage, GIB_ORGANIC); + ThrowHead(self, "models/objects/gibs/head2/tris.md2", damage, GIB_ORGANIC); self->deadflag = DEAD_DEAD; return; } if (self->deadflag == DEAD_DEAD) + { return; + } - // regular death + /* regular death */ self->deadflag = DEAD_DEAD; self->takedamage = DAMAGE_YES; self->s.skinnum |= 1; if (self->s.skinnum == 1) - gi.sound (self, CHAN_VOICE, sound_death_light, 1, ATTN_NORM, 0); + { + gi.sound(self, CHAN_VOICE, sound_death_light, 1, ATTN_NORM, 0); + } else if (self->s.skinnum == 3) - gi.sound (self, CHAN_VOICE, sound_death, 1, ATTN_NORM, 0); - else - gi.sound (self, CHAN_VOICE, sound_death_ss, 1, ATTN_NORM, 0); + { + gi.sound(self, CHAN_VOICE, sound_death, 1, ATTN_NORM, 0); + } + else + { + gi.sound(self, CHAN_VOICE, sound_death_ss, 1, ATTN_NORM, 0); + } if (fabs((self->s.origin[2] + self->viewheight) - point[2]) <= 4) { - // head shot + /* head shot */ self->monsterinfo.currentmove = &soldier_move_death3; return; } n = rand() % 5; + if (n == 0) + { self->monsterinfo.currentmove = &soldier_move_death1; + } else if (n == 1) + { self->monsterinfo.currentmove = &soldier_move_death2; + } else if (n == 2) + { self->monsterinfo.currentmove = &soldier_move_death4; + } else if (n == 3) + { self->monsterinfo.currentmove = &soldier_move_death5; + } else + { self->monsterinfo.currentmove = &soldier_move_death6; + } } - -// -// SPAWN -// - -void SP_monster_soldier_x (edict_t *self) -{ - - self->s.modelindex = gi.modelindex ("models/monsters/soldier/tris.md2"); +void +SP_monster_soldier_x(edict_t *self) +{ + if (!self) + { + return; + } + + self->s.modelindex = gi.modelindex("models/monsters/soldier/tris.md2"); self->monsterinfo.scale = MODEL_SCALE; - VectorSet (self->mins, -16, -16, -24); - VectorSet (self->maxs, 16, 16, 32); + VectorSet(self->mins, -16, -16, -24); + VectorSet(self->maxs, 16, 16, 32); self->movetype = MOVETYPE_STEP; self->solid = SOLID_BBOX; - sound_idle = gi.soundindex ("soldier/solidle1.wav"); - sound_sight1 = gi.soundindex ("soldier/solsght1.wav"); - sound_sight2 = gi.soundindex ("soldier/solsrch1.wav"); - sound_cock = gi.soundindex ("infantry/infatck3.wav"); + sound_idle = gi.soundindex("soldier/solidle1.wav"); + sound_sight1 = gi.soundindex("soldier/solsght1.wav"); + sound_sight2 = gi.soundindex("soldier/solsrch1.wav"); + sound_cock = gi.soundindex("infantry/infatck3.wav"); self->mass = 100; @@ -1106,106 +1522,132 @@ void SP_monster_soldier_x (edict_t *self) self->monsterinfo.melee = NULL; self->monsterinfo.sight = soldier_sight; - gi.linkentity (self); + gi.linkentity(self); - self->monsterinfo.stand (self); + self->monsterinfo.stand(self); - walkmonster_start (self); + walkmonster_start(self); } - -/*QUAKED monster_soldier_light (1 .5 0) (-16 -16 -24) (16 16 32) Ambush Trigger_Spawn Sight -*/ -void SP_monster_soldier_light (edict_t *self) -{ +/* + * QUAKED monster_soldier_light (1 .5 0) (-16 -16 -24) (16 16 32) Ambush Trigger_Spawn Sight + */ +void +SP_monster_soldier_light(edict_t *self) +{ + if (!self) + { + return; + } + if (deathmatch->value) { - G_FreeEdict (self); + G_FreeEdict(self); return; } - SP_monster_soldier_x (self); + SP_monster_soldier_x(self); - sound_pain_light = gi.soundindex ("soldier/solpain2.wav"); - sound_death_light = gi.soundindex ("soldier/soldeth2.wav"); - gi.modelindex ("models/objects/laser/tris.md2"); - gi.soundindex ("misc/lasfly.wav"); - gi.soundindex ("soldier/solatck2.wav"); + sound_pain_light = gi.soundindex("soldier/solpain2.wav"); + sound_death_light = gi.soundindex("soldier/soldeth2.wav"); + gi.modelindex("models/objects/laser/tris.md2"); + gi.soundindex("misc/lasfly.wav"); + gi.soundindex("soldier/solatck2.wav"); self->s.skinnum = 0; self->health = 20; self->gib_health = -30; } -/*QUAKED monster_soldier (1 .5 0) (-16 -16 -24) (16 16 32) Ambush Trigger_Spawn Sight -*/ -void SP_monster_soldier (edict_t *self) -{ +/* + * QUAKED monster_soldier (1 .5 0) (-16 -16 -24) (16 16 32) Ambush Trigger_Spawn Sight + */ +void +SP_monster_soldier(edict_t *self) +{ + if (!self) + { + return; + } + if (deathmatch->value) { - G_FreeEdict (self); + G_FreeEdict(self); return; } - SP_monster_soldier_x (self); + SP_monster_soldier_x(self); - sound_pain = gi.soundindex ("soldier/solpain1.wav"); - sound_death = gi.soundindex ("soldier/soldeth1.wav"); - gi.soundindex ("soldier/solatck1.wav"); + sound_pain = gi.soundindex("soldier/solpain1.wav"); + sound_death = gi.soundindex("soldier/soldeth1.wav"); + gi.soundindex("soldier/solatck1.wav"); self->s.skinnum = 2; self->health = 30; self->gib_health = -30; } -/*QUAKED monster_soldier_ss (1 .5 0) (-16 -16 -24) (16 16 32) Ambush Trigger_Spawn Sight -*/ -void SP_monster_soldier_ss (edict_t *self) -{ +/* + * QUAKED monster_soldier_ss (1 .5 0) (-16 -16 -24) (16 16 32) Ambush Trigger_Spawn Sight + */ +void +SP_monster_soldier_ss(edict_t *self) +{ + if (!self) + { + return; + } + if (deathmatch->value) { - G_FreeEdict (self); + G_FreeEdict(self); return; } - SP_monster_soldier_x (self); + SP_monster_soldier_x(self); - sound_pain_ss = gi.soundindex ("soldier/solpain3.wav"); - sound_death_ss = gi.soundindex ("soldier/soldeth3.wav"); - gi.soundindex ("soldier/solatck3.wav"); + sound_pain_ss = gi.soundindex("soldier/solpain3.wav"); + sound_death_ss = gi.soundindex("soldier/soldeth3.wav"); + gi.soundindex("soldier/solatck3.wav"); self->s.skinnum = 4; self->health = 40; self->gib_health = -30; } - -// RAFAEL 13-APR-98 - - -#include "soldierh.h" - -void soldierh_idle (edict_t *self) -{ +void +soldierh_idle(edict_t *self) +{ + if (!self) + { + return; + } + if (random() > 0.8) - gi.sound (self, CHAN_VOICE, sound_idle, 1, ATTN_IDLE, 0); + { + gi.sound(self, CHAN_VOICE, sound_idle, 1, ATTN_IDLE, 0); + } } -void soldierh_cock (edict_t *self) -{ +void +soldierh_cock(edict_t *self) +{ + if (!self) + { + return; + } + if (self->s.frame == FRAME_stand322) - gi.sound (self, CHAN_WEAPON, sound_cock, 1, ATTN_IDLE, 0); + { + gi.sound(self, CHAN_WEAPON, sound_cock, 1, ATTN_IDLE, 0); + } else - gi.sound (self, CHAN_WEAPON, sound_cock, 1, ATTN_NORM, 0); + { + gi.sound(self, CHAN_WEAPON, sound_cock, 1, ATTN_NORM, 0); + } } - -// STAND - -void soldierh_stand (edict_t *self); - -mframe_t soldierh_frames_stand1 [] = -{ +mframe_t soldierh_frames_stand1[] = { {ai_stand, 0, soldierh_idle}, {ai_stand, 0, NULL}, {ai_stand, 0, NULL}, @@ -1239,10 +1681,15 @@ mframe_t soldierh_frames_stand1 [] = {ai_stand, 0, NULL}, {ai_stand, 0, NULL} }; -mmove_t soldierh_move_stand1 = {FRAME_stand101, FRAME_stand130, soldierh_frames_stand1, soldierh_stand}; -mframe_t soldierh_frames_stand3 [] = -{ +mmove_t soldierh_move_stand1 = { + FRAME_stand101, + FRAME_stand130, + soldierh_frames_stand1, + soldierh_stand +}; + +mframe_t soldierh_frames_stand3[] = { {ai_stand, 0, NULL}, {ai_stand, 0, NULL}, {ai_stand, 0, NULL}, @@ -1286,105 +1733,140 @@ mframe_t soldierh_frames_stand3 [] = {ai_stand, 0, NULL}, {ai_stand, 0, NULL} }; -mmove_t soldierh_move_stand3 = {FRAME_stand301, FRAME_stand339, soldierh_frames_stand3, soldierh_stand}; +mmove_t soldierh_move_stand3 = { + FRAME_stand301, + FRAME_stand339, + soldierh_frames_stand3, + soldierh_stand +}; -void soldierh_stand (edict_t *self) -{ +void +soldierh_stand(edict_t *self) +{ + if (!self) + { + return; + } + if ((self->monsterinfo.currentmove == &soldierh_move_stand3) || (random() < 0.8)) + { self->monsterinfo.currentmove = &soldierh_move_stand1; + } else + { self->monsterinfo.currentmove = &soldierh_move_stand3; + } } - -// -// WALK -// - -void soldierh_walk1_random (edict_t *self) -{ +void +soldierh_walk1_random(edict_t *self) +{ + if (!self) + { + return; + } + if (random() > 0.1) + { self->monsterinfo.nextframe = FRAME_walk101; + } } -mframe_t soldierh_frames_walk1 [] = -{ - {ai_walk, 3, NULL}, - {ai_walk, 6, NULL}, - {ai_walk, 2, NULL}, - {ai_walk, 2, NULL}, - {ai_walk, 2, NULL}, - {ai_walk, 1, NULL}, - {ai_walk, 6, NULL}, - {ai_walk, 5, NULL}, - {ai_walk, 3, NULL}, +mframe_t soldierh_frames_walk1[] = { + {ai_walk, 3, NULL}, + {ai_walk, 6, NULL}, + {ai_walk, 2, NULL}, + {ai_walk, 2, NULL}, + {ai_walk, 2, NULL}, + {ai_walk, 1, NULL}, + {ai_walk, 6, NULL}, + {ai_walk, 5, NULL}, + {ai_walk, 3, NULL}, {ai_walk, -1, soldierh_walk1_random}, - {ai_walk, 0, NULL}, - {ai_walk, 0, NULL}, - {ai_walk, 0, NULL}, - {ai_walk, 0, NULL}, - {ai_walk, 0, NULL}, - {ai_walk, 0, NULL}, - {ai_walk, 0, NULL}, - {ai_walk, 0, NULL}, - {ai_walk, 0, NULL}, - {ai_walk, 0, NULL}, - {ai_walk, 0, NULL}, - {ai_walk, 0, NULL}, - {ai_walk, 0, NULL}, - {ai_walk, 0, NULL}, - {ai_walk, 0, NULL}, - {ai_walk, 0, NULL}, - {ai_walk, 0, NULL}, - {ai_walk, 0, NULL}, - {ai_walk, 0, NULL}, - {ai_walk, 0, NULL}, - {ai_walk, 0, NULL}, - {ai_walk, 0, NULL}, - {ai_walk, 0, NULL} + {ai_walk, 0, NULL}, + {ai_walk, 0, NULL}, + {ai_walk, 0, NULL}, + {ai_walk, 0, NULL}, + {ai_walk, 0, NULL}, + {ai_walk, 0, NULL}, + {ai_walk, 0, NULL}, + {ai_walk, 0, NULL}, + {ai_walk, 0, NULL}, + {ai_walk, 0, NULL}, + {ai_walk, 0, NULL}, + {ai_walk, 0, NULL}, + {ai_walk, 0, NULL}, + {ai_walk, 0, NULL}, + {ai_walk, 0, NULL}, + {ai_walk, 0, NULL}, + {ai_walk, 0, NULL}, + {ai_walk, 0, NULL}, + {ai_walk, 0, NULL}, + {ai_walk, 0, NULL}, + {ai_walk, 0, NULL}, + {ai_walk, 0, NULL}, + {ai_walk, 0, NULL} }; -mmove_t soldierh_move_walk1 = {FRAME_walk101, FRAME_walk133, soldierh_frames_walk1, NULL}; -mframe_t soldierh_frames_walk2 [] = -{ - {ai_walk, 4, NULL}, - {ai_walk, 4, NULL}, - {ai_walk, 9, NULL}, - {ai_walk, 8, NULL}, - {ai_walk, 5, NULL}, - {ai_walk, 1, NULL}, - {ai_walk, 3, NULL}, - {ai_walk, 7, NULL}, - {ai_walk, 6, NULL}, - {ai_walk, 7, NULL} +mmove_t soldierh_move_walk1 = { + FRAME_walk101, + FRAME_walk133, + soldierh_frames_walk1, + NULL }; -mmove_t soldierh_move_walk2 = {FRAME_walk209, FRAME_walk218, soldierh_frames_walk2, NULL}; -void soldierh_walk (edict_t *self) -{ +mframe_t soldierh_frames_walk2[] = { + {ai_walk, 4, NULL}, + {ai_walk, 4, NULL}, + {ai_walk, 9, NULL}, + {ai_walk, 8, NULL}, + {ai_walk, 5, NULL}, + {ai_walk, 1, NULL}, + {ai_walk, 3, NULL}, + {ai_walk, 7, NULL}, + {ai_walk, 6, NULL}, + {ai_walk, 7, NULL} +}; + +mmove_t soldierh_move_walk2 = { + FRAME_walk209, + FRAME_walk218, + soldierh_frames_walk2, + NULL +}; + +void +soldierh_walk(edict_t *self) +{ + if (!self) + { + return; + } + if (random() < 0.5) + { self->monsterinfo.currentmove = &soldierh_move_walk1; + } else + { self->monsterinfo.currentmove = &soldierh_move_walk2; + } } - -// -// RUN -// - -void soldierh_run (edict_t *self); - -mframe_t soldierh_frames_start_run [] = -{ - {ai_run, 7, NULL}, - {ai_run, 5, NULL} +mframe_t soldierh_frames_start_run[] = { + {ai_run, 7, NULL}, + {ai_run, 5, NULL} }; -mmove_t soldierh_move_start_run = {FRAME_run01, FRAME_run02, soldierh_frames_start_run, soldierh_run}; -mframe_t soldierh_frames_run [] = -{ +mmove_t soldierh_move_start_run = { + FRAME_run01, + FRAME_run02, + soldierh_frames_start_run, + soldierh_run +}; + +mframe_t soldierh_frames_run[] = { {ai_run, 10, NULL}, {ai_run, 11, NULL}, {ai_run, 11, NULL}, @@ -1392,19 +1874,31 @@ mframe_t soldierh_frames_run [] = {ai_run, 10, NULL}, {ai_run, 15, NULL} }; -mmove_t soldierh_move_run = {FRAME_run03, FRAME_run08, soldierh_frames_run, NULL}; -void soldierh_run (edict_t *self) -{ +mmove_t soldierh_move_run = { + FRAME_run03, + FRAME_run08, + soldierh_frames_run, + NULL +}; + +void +soldierh_run(edict_t *self) +{ + if (!self) + { + return; + } + if (self->monsterinfo.aiflags & AI_STAND_GROUND) { self->monsterinfo.currentmove = &soldierh_move_stand1; return; } - if (self->monsterinfo.currentmove == &soldierh_move_walk1 || - self->monsterinfo.currentmove == &soldierh_move_walk2 || - self->monsterinfo.currentmove == &soldierh_move_start_run) + if ((self->monsterinfo.currentmove == &soldierh_move_walk1) || + (self->monsterinfo.currentmove == &soldierh_move_walk2) || + (self->monsterinfo.currentmove == &soldierh_move_start_run)) { self->monsterinfo.currentmove = &soldierh_move_run; } @@ -1414,102 +1908,139 @@ void soldierh_run (edict_t *self) } } - -// -// PAIN -// - -mframe_t soldierh_frames_pain1 [] = -{ +mframe_t soldierh_frames_pain1[] = { {ai_move, -3, NULL}, - {ai_move, 4, NULL}, - {ai_move, 1, NULL}, - {ai_move, 1, NULL}, - {ai_move, 0, NULL} + {ai_move, 4, NULL}, + {ai_move, 1, NULL}, + {ai_move, 1, NULL}, + {ai_move, 0, NULL} }; -mmove_t soldierh_move_pain1 = {FRAME_pain101, FRAME_pain105, soldierh_frames_pain1, soldierh_run}; -mframe_t soldierh_frames_pain2 [] = -{ +mmove_t soldierh_move_pain1 = { + FRAME_pain101, + FRAME_pain105, + soldierh_frames_pain1, + soldierh_run +}; + +mframe_t soldierh_frames_pain2[] = { {ai_move, -13, NULL}, - {ai_move, -1, NULL}, - {ai_move, 2, NULL}, - {ai_move, 4, NULL}, - {ai_move, 2, NULL}, - {ai_move, 3, NULL}, - {ai_move, 2, NULL} + {ai_move, -1, NULL}, + {ai_move, 2, NULL}, + {ai_move, 4, NULL}, + {ai_move, 2, NULL}, + {ai_move, 3, NULL}, + {ai_move, 2, NULL} }; -mmove_t soldierh_move_pain2 = {FRAME_pain201, FRAME_pain207, soldierh_frames_pain2, soldierh_run}; -mframe_t soldierh_frames_pain3 [] = -{ +mmove_t soldierh_move_pain2 = { + FRAME_pain201, + FRAME_pain207, + soldierh_frames_pain2, + soldierh_run +}; + +mframe_t soldierh_frames_pain3[] = { {ai_move, -8, NULL}, {ai_move, 10, NULL}, {ai_move, -4, NULL}, {ai_move, -1, NULL}, {ai_move, -3, NULL}, - {ai_move, 0, NULL}, - {ai_move, 3, NULL}, - {ai_move, 0, NULL}, - {ai_move, 0, NULL}, - {ai_move, 0, NULL}, - {ai_move, 0, NULL}, - {ai_move, 1, NULL}, - {ai_move, 0, NULL}, - {ai_move, 1, NULL}, - {ai_move, 2, NULL}, - {ai_move, 4, NULL}, - {ai_move, 3, NULL}, - {ai_move, 2, NULL} + {ai_move, 0, NULL}, + {ai_move, 3, NULL}, + {ai_move, 0, NULL}, + {ai_move, 0, NULL}, + {ai_move, 0, NULL}, + {ai_move, 0, NULL}, + {ai_move, 1, NULL}, + {ai_move, 0, NULL}, + {ai_move, 1, NULL}, + {ai_move, 2, NULL}, + {ai_move, 4, NULL}, + {ai_move, 3, NULL}, + {ai_move, 2, NULL} }; -mmove_t soldierh_move_pain3 = {FRAME_pain301, FRAME_pain318, soldierh_frames_pain3, soldierh_run}; -mframe_t soldierh_frames_pain4 [] = -{ - {ai_move, 0, NULL}, - {ai_move, 0, NULL}, - {ai_move, 0, NULL}, +mmove_t soldierh_move_pain3 = { + FRAME_pain301, + FRAME_pain318, + soldierh_frames_pain3, + soldierh_run +}; + +mframe_t soldierh_frames_pain4[] = { + {ai_move, 0, NULL}, + {ai_move, 0, NULL}, + {ai_move, 0, NULL}, {ai_move, -10, NULL}, - {ai_move, -6, NULL}, - {ai_move, 8, NULL}, - {ai_move, 4, NULL}, - {ai_move, 1, NULL}, - {ai_move, 0, NULL}, - {ai_move, 2, NULL}, - {ai_move, 5, NULL}, - {ai_move, 2, NULL}, - {ai_move, -1, NULL}, - {ai_move, -1, NULL}, - {ai_move, 3, NULL}, - {ai_move, 2, NULL}, - {ai_move, 0, NULL} + {ai_move, -6, NULL}, + {ai_move, 8, NULL}, + {ai_move, 4, NULL}, + {ai_move, 1, NULL}, + {ai_move, 0, NULL}, + {ai_move, 2, NULL}, + {ai_move, 5, NULL}, + {ai_move, 2, NULL}, + {ai_move, -1, NULL}, + {ai_move, -1, NULL}, + {ai_move, 3, NULL}, + {ai_move, 2, NULL}, + {ai_move, 0, NULL} }; -mmove_t soldierh_move_pain4 = {FRAME_pain401, FRAME_pain417, soldierh_frames_pain4, soldierh_run}; -void soldierh_pain (edict_t *self, edict_t *other, float kick, int damage) +mmove_t soldierh_move_pain4 = { + FRAME_pain401, + FRAME_pain417, + soldierh_frames_pain4, + soldierh_run +}; + +void +soldierh_pain(edict_t *self, edict_t *other /* unused */, + float kick /* unused */, int damage /* unused */) { - float r; - int n; - + float r; + int n; + + if (!self) + { + return; + } + if (self->health < (self->max_health / 2)) - self->s.skinnum |= 1; + { + self->s.skinnum |= 1; + } if (level.time < self->pain_debounce_time) { - if ((self->velocity[2] > 100) && ( (self->monsterinfo.currentmove == &soldierh_move_pain1) || (self->monsterinfo.currentmove == &soldierh_move_pain2) || (self->monsterinfo.currentmove == &soldierh_move_pain3))) + if ((self->velocity[2] > 100) && + ((self->monsterinfo.currentmove == &soldierh_move_pain1) || + (self->monsterinfo.currentmove == &soldierh_move_pain2) || + (self->monsterinfo.currentmove == &soldierh_move_pain3))) + { self->monsterinfo.currentmove = &soldierh_move_pain4; + } + return; } self->pain_debounce_time = level.time + 3; n = self->s.skinnum | 1; + if (n == 1) - gi.sound (self, CHAN_VOICE, sound_pain_light, 1, ATTN_NORM, 0); + { + gi.sound(self, CHAN_VOICE, sound_pain_light, 1, ATTN_NORM, 0); + } else if (n == 3) - gi.sound (self, CHAN_VOICE, sound_pain, 1, ATTN_NORM, 0); + { + gi.sound(self, CHAN_VOICE, sound_pain, 1, ATTN_NORM, 0); + } else - gi.sound (self, CHAN_VOICE, sound_pain_ss, 1, ATTN_NORM, 0); + { + gi.sound(self, CHAN_VOICE, sound_pain_ss, 1, ATTN_NORM, 0); + } if (self->velocity[2] > 100) { @@ -1518,284 +2049,424 @@ void soldierh_pain (edict_t *self, edict_t *other, float kick, int damage) } if (skill->value == 3) - return; // no pain anims in nightmare + { + return; /* no pain anims in nightmare */ + } r = random(); if (r < 0.33) + { self->monsterinfo.currentmove = &soldierh_move_pain1; + } else if (r < 0.66) + { self->monsterinfo.currentmove = &soldierh_move_pain2; + } else + { self->monsterinfo.currentmove = &soldierh_move_pain3; + } } - -// -// ATTACK -// - -extern void brain_dabeam (edict_t *self); - -void soldierh_laserbeam (edict_t *self, int flash_index) +void +soldierh_laserbeam(edict_t *self, int flash_index) { - vec3_t forward, right, up; vec3_t tempang, start; - vec3_t dir, angles, end; - vec3_t tempvec; + vec3_t dir, angles, end; + vec3_t tempvec; edict_t *ent; - - // RAFAEL - // this sound can't be called this frequent + + if (!self) + { + return; + } + if (random() > 0.8) + { gi.sound(self, CHAN_AUTO, gi.soundindex("misc/lasfly.wav"), 1, ATTN_STATIC, 0); + } - VectorCopy (self->s.origin, start); - VectorCopy (self->enemy->s.origin, end); - VectorSubtract (end, start, dir); - vectoangles (dir, angles); - VectorCopy (monster_flash_offset[flash_index], tempvec); - - ent = G_Spawn (); - VectorCopy (self->s.origin, ent->s.origin); - VectorCopy (angles, tempang); - AngleVectors (tempang, forward, right, up); - VectorCopy (tempang, ent->s.angles); - VectorCopy (ent->s.origin, start); + VectorCopy(self->s.origin, start); + VectorCopy(self->enemy->s.origin, end); + VectorSubtract(end, start, dir); + vectoangles(dir, angles); + VectorCopy(monster_flash_offset[flash_index], tempvec); + + ent = G_Spawn(); + VectorCopy(self->s.origin, ent->s.origin); + VectorCopy(angles, tempang); + AngleVectors(tempang, forward, right, up); + VectorCopy(tempang, ent->s.angles); + VectorCopy(ent->s.origin, start); if (flash_index == 85) { - VectorMA (start, tempvec[0]-14, right, start); - VectorMA (start, tempvec[2]+8, up, start); - VectorMA (start, tempvec[1], forward, start); + VectorMA(start, tempvec[0] - 14, right, start); + VectorMA(start, tempvec[2] + 8, up, start); + VectorMA(start, tempvec[1], forward, start); } - else + else { - VectorMA (start, tempvec[0]+2, right, start); - VectorMA (start, tempvec[2]+8, up, start); - VectorMA (start, tempvec[1], forward, start); + VectorMA(start, tempvec[0] + 2, right, start); + VectorMA(start, tempvec[2] + 8, up, start); + VectorMA(start, tempvec[1], forward, start); } - - VectorCopy (start, ent->s.origin); + + VectorCopy(start, ent->s.origin); ent->enemy = self->enemy; ent->owner = self; - + ent->dmg = 1; - monster_dabeam (ent); - + monster_dabeam(ent); } - -void soldierh_fire (edict_t *self, int flash_number) +void +soldierh_fire(edict_t *self, int flash_number) { - vec3_t start; - vec3_t forward, right, up; - vec3_t aim; - vec3_t dir; - vec3_t end; - float r, u; - int flash_index; - - if (self->s.skinnum < 2) - flash_index = blaster_flash[flash_number]; // ripper - else if (self->s.skinnum < 4) - flash_index = blaster_flash[flash_number]; // hyperblaster - else - flash_index = machinegun_flash[flash_number]; // laserbeam - - AngleVectors (self->s.angles, forward, right, NULL); - G_ProjectSource (self->s.origin, monster_flash_offset[flash_index], forward, right, start); - - if (flash_number == 5 || flash_number == 6) + vec3_t start; + vec3_t forward, right, up; + vec3_t aim; + vec3_t dir; + vec3_t end; + float r, u; + int flash_index; + + if (!self) { - VectorCopy (forward, aim); + return; + } + + if (self->s.skinnum < 2) + { + flash_index = blaster_flash[flash_number]; /* ripper */ + } + else if (self->s.skinnum < 4) + { + flash_index = blaster_flash[flash_number]; /* hyperblaster */ } else { - VectorCopy (self->enemy->s.origin, end); + flash_index = machinegun_flash[flash_number]; /* laserbeam */ + } + + AngleVectors(self->s.angles, forward, right, NULL); + G_ProjectSource(self->s.origin, monster_flash_offset[flash_index], + forward, right, start); + + if ((flash_number == 5) || (flash_number == 6)) + { + VectorCopy(forward, aim); + } + else + { + VectorCopy(self->enemy->s.origin, end); end[2] += self->enemy->viewheight; - VectorSubtract (end, start, aim); - vectoangles (aim, dir); - AngleVectors (dir, forward, right, up); + VectorSubtract(end, start, aim); + vectoangles(aim, dir); + AngleVectors(dir, forward, right, up); - r = crandom()*100; - u = crandom()*50; - VectorMA (start, 8192, forward, end); - VectorMA (end, r, right, end); - VectorMA (end, u, up, end); + r = crandom() * 100; + u = crandom() * 50; + VectorMA(start, 8192, forward, end); + VectorMA(end, r, right, end); + VectorMA(end, u, up, end); - VectorSubtract (end, start, aim); - VectorNormalize (aim); + VectorSubtract(end, start, aim); + VectorNormalize(aim); } if (self->s.skinnum <= 1) { - // RAFAEL 24-APR-98 - // droped the damage from 15 to 5 - monster_fire_ionripper (self, start, aim, 5, 600, flash_index, EF_IONRIPPER); - + monster_fire_ionripper(self, start, aim, 5, 600, + flash_index, EF_IONRIPPER); } else if (self->s.skinnum <= 3) { - - monster_fire_blueblaster (self, start, aim, 1, 600, MZ_BLUEHYPERBLASTER, EF_BLUEHYPERBLASTER); - + monster_fire_blueblaster(self, start, aim, 1, 600, + MZ_BLUEHYPERBLASTER, EF_BLUEHYPERBLASTER); } else { if (!(self->monsterinfo.aiflags & AI_HOLD_FRAME)) + { self->monsterinfo.pausetime = level.time + (3 + rand() % 8) * FRAMETIME; + } - soldierh_laserbeam (self, flash_index); + soldierh_laserbeam(self, flash_index); if (level.time >= self->monsterinfo.pausetime) + { self->monsterinfo.aiflags &= ~AI_HOLD_FRAME; + } else + { self->monsterinfo.aiflags |= AI_HOLD_FRAME; + } } } -// ATTACK1 (blaster/shotgun) - -void soldierh_hyper_refire1 (edict_t *self) -{ - if (self->s.skinnum < 2) +void +soldierh_hyper_refire1(edict_t *self) +{ + if (!self) + { return; + } + + if (self->s.skinnum < 2) + { + return; + } else if (self->s.skinnum < 4) { if (random() < 0.7) + { self->s.frame = FRAME_attak103; + } else + { gi.sound(self, CHAN_AUTO, gi.soundindex("weapons/hyprbd1a.wav"), 1, ATTN_NORM, 0); + } } } -void soldierh_ripper1 (edict_t *self) -{ +void +soldierh_ripper1(edict_t *self) +{ + if (!self) + { + return; + } + if (self->s.skinnum < 2) - soldierh_fire (self, 0); + { + soldierh_fire(self, 0); + } else if (self->s.skinnum < 4) - soldierh_fire (self, 0); + { + soldierh_fire(self, 0); + } } - -void soldierh_fire1 (edict_t *self) -{ - soldierh_fire (self, 0); +void +soldierh_fire1(edict_t *self) +{ + if (!self) + { + return; + } + + soldierh_fire(self, 0); } -void soldierh_attack1_refire1 (edict_t *self) -{ +void +soldierh_attack1_refire1(edict_t *self) +{ + if (!self) + { + return; + } + if (self->s.skinnum > 1) + { return; + } if (self->enemy->health <= 0) + { return; + } - if ( ((skill->value == 3) && (random() < 0.5)) || (range(self, self->enemy) == RANGE_MELEE) ) + if (((skill->value == 3) && (random() < 0.5)) || (range(self, self->enemy) == RANGE_MELEE)) + { self->monsterinfo.nextframe = FRAME_attak102; + } else + { self->monsterinfo.nextframe = FRAME_attak110; + } } -void soldierh_attack1_refire2 (edict_t *self) -{ - if (self->s.skinnum < 2) +void +soldierh_attack1_refire2(edict_t *self) +{ + if (!self) + { return; + } + + if (self->s.skinnum < 2) + { + return; + } if (self->enemy->health <= 0) + { return; + } - if ( ((skill->value == 3) && (random() < 0.5)) || (range(self, self->enemy) == RANGE_MELEE) ) + if (((skill->value == 3) && (random() < 0.5)) || (range(self, self->enemy) == RANGE_MELEE)) + { self->monsterinfo.nextframe = FRAME_attak102; + } } -void soldierh_hyper_sound (edict_t *self) -{ - if (self->s.skinnum < 2) +void +soldierh_hyper_sound(edict_t *self) +{ + if (!self) + { return; + } + + if (self->s.skinnum < 2) + { + return; + } else if (self->s.skinnum < 4) + { gi.sound(self, CHAN_AUTO, gi.soundindex("weapons/hyprbl1a.wav"), 1, ATTN_NORM, 0); + } else + { return; + } } -mframe_t soldierh_frames_attack1 [] = -{ - {ai_charge, 0, NULL}, - {ai_charge, 0, soldierh_hyper_sound}, - {ai_charge, 0, soldierh_fire1}, - {ai_charge, 0, soldierh_ripper1}, - {ai_charge, 0, soldierh_ripper1}, - {ai_charge, 0, soldierh_attack1_refire1}, - {ai_charge, 0, soldierh_hyper_refire1}, - {ai_charge, 0, soldierh_cock}, - {ai_charge, 0, soldierh_attack1_refire2}, - {ai_charge, 0, NULL}, - {ai_charge, 0, NULL}, - {ai_charge, 0, NULL} +mframe_t soldierh_frames_attack1[] = { + {ai_charge, 0, NULL}, + {ai_charge, 0, soldierh_hyper_sound}, + {ai_charge, 0, soldierh_fire1}, + {ai_charge, 0, soldierh_ripper1}, + {ai_charge, 0, soldierh_ripper1}, + {ai_charge, 0, soldierh_attack1_refire1}, + {ai_charge, 0, soldierh_hyper_refire1}, + {ai_charge, 0, soldierh_cock}, + {ai_charge, 0, soldierh_attack1_refire2}, + {ai_charge, 0, NULL}, + {ai_charge, 0, NULL}, + {ai_charge, 0, NULL} }; -mmove_t soldierh_move_attack1 = {FRAME_attak101, FRAME_attak112, soldierh_frames_attack1, soldierh_run}; -// ATTACK2 (blaster/shotgun) +mmove_t soldierh_move_attack1 = { + FRAME_attak101, + FRAME_attak112, + soldierh_frames_attack1, + soldierh_run +}; -void soldierh_hyper_refire2 (edict_t *self) -{ - if (self->s.skinnum < 2) +void +soldierh_hyper_refire2(edict_t *self) +{ + if (!self) + { return; + } + + if (self->s.skinnum < 2) + { + return; + } else if (self->s.skinnum < 4) { if (random() < 0.7) + { self->s.frame = FRAME_attak205; + } else + { gi.sound(self, CHAN_AUTO, gi.soundindex("weapons/hyprbd1a.wav"), 1, ATTN_NORM, 0); + } } } -void soldierh_ripper2 (edict_t *self) -{ +void +soldierh_ripper2(edict_t *self) +{ + if (!self) + { + return; + } + if (self->s.skinnum < 2) - soldierh_fire (self, 1); + { + soldierh_fire(self, 1); + } else if (self->s.skinnum < 4) - soldierh_fire (self, 1); + { + soldierh_fire(self, 1); + } } -void soldierh_fire2 (edict_t *self) -{ - soldierh_fire (self, 1); +void +soldierh_fire2(edict_t *self) +{ + if (!self) + { + return; + } + + soldierh_fire(self, 1); } - -void soldierh_attack2_refire1 (edict_t *self) -{ +void +soldierh_attack2_refire1(edict_t *self) +{ + if (!self) + { + return; + } + if (self->s.skinnum > 1) + { return; + } if (self->enemy->health <= 0) + { return; + } - if ( ((skill->value == 3) && (random() < 0.5)) || (range(self, self->enemy) == RANGE_MELEE)) + if (((skill->value == 3) && (random() < 0.5)) || (range(self, self->enemy) == RANGE_MELEE)) + { self->monsterinfo.nextframe = FRAME_attak204; + } else + { self->monsterinfo.nextframe = FRAME_attak216; + } } -void soldierh_attack2_refire2 (edict_t *self) -{ - if (self->s.skinnum < 2) +void +soldierh_attack2_refire2(edict_t *self) +{ + if (!self) + { return; + } + + if (self->s.skinnum < 2) + { + return; + } if (self->enemy->health <= 0) + { return; + } - if ( ((skill->value == 3) && (random() < 0.5)) || ((range(self, self->enemy) == RANGE_MELEE) && self->s.skinnum < 4)) + if (((skill->value == 3) && + (random() < 0.5)) || + ((range(self, self->enemy) == RANGE_MELEE) && (self->s.skinnum < 4))) + { self->monsterinfo.nextframe = FRAME_attak204; + } } -mframe_t soldierh_frames_attack2 [] = -{ +mframe_t soldierh_frames_attack2[] = { {ai_charge, 0, NULL}, {ai_charge, 0, NULL}, {ai_charge, 0, NULL}, @@ -1815,43 +2486,75 @@ mframe_t soldierh_frames_attack2 [] = {ai_charge, 0, NULL}, {ai_charge, 0, NULL} }; -mmove_t soldierh_move_attack2 = {FRAME_attak201, FRAME_attak218, soldierh_frames_attack2, soldierh_run}; -// ATTACK3 (duck and shoot) +mmove_t soldierh_move_attack2 = { + FRAME_attak201, + FRAME_attak218, + soldierh_frames_attack2, + soldierh_run +}; -void soldierh_duck_down (edict_t *self) -{ - if (self->monsterinfo.aiflags & AI_DUCKED) +void +soldierh_duck_down(edict_t *self) +{ + if (!self) + { return; + } + + if (self->monsterinfo.aiflags & AI_DUCKED) + { + return; + } + self->monsterinfo.aiflags |= AI_DUCKED; self->maxs[2] -= 32; self->takedamage = DAMAGE_YES; self->monsterinfo.pausetime = level.time + 1; - gi.linkentity (self); + gi.linkentity(self); } -void soldierh_duck_up (edict_t *self) -{ +void +soldierh_duck_up(edict_t *self) +{ + if (!self) + { + return; + } + self->monsterinfo.aiflags &= ~AI_DUCKED; self->maxs[2] += 32; self->takedamage = DAMAGE_AIM; - gi.linkentity (self); + gi.linkentity(self); } -void soldierh_fire3 (edict_t *self) -{ - soldierh_duck_down (self); - soldierh_fire (self, 2); +void +soldierh_fire3(edict_t *self) +{ + if (!self) + { + return; + } + + soldierh_duck_down(self); + soldierh_fire(self, 2); } -void soldierh_attack3_refire (edict_t *self) -{ +void +soldierh_attack3_refire(edict_t *self) +{ + if (!self) + { + return; + } + if ((level.time + 0.4) < self->monsterinfo.pausetime) + { self->monsterinfo.nextframe = FRAME_attak303; + } } -mframe_t soldierh_frames_attack3 [] = -{ +mframe_t soldierh_frames_attack3[] = { {ai_charge, 0, NULL}, {ai_charge, 0, NULL}, {ai_charge, 0, soldierh_fire3}, @@ -1862,17 +2565,26 @@ mframe_t soldierh_frames_attack3 [] = {ai_charge, 0, NULL}, {ai_charge, 0, NULL} }; -mmove_t soldierh_move_attack3 = {FRAME_attak301, FRAME_attak309, soldierh_frames_attack3, soldierh_run}; -// ATTACK4 (machinegun) +mmove_t soldierh_move_attack3 = { + FRAME_attak301, + FRAME_attak309, + soldierh_frames_attack3, + soldierh_run +}; -void soldierh_fire4 (edict_t *self) -{ - soldierh_fire (self, 3); +void +soldierh_fire4(edict_t *self) +{ + if (!self) + { + return; + } + + soldierh_fire(self, 3); } -mframe_t soldierh_frames_attack4 [] = -{ +mframe_t soldierh_frames_attack4[] = { {ai_charge, 0, NULL}, {ai_charge, 0, NULL}, {ai_charge, 0, soldierh_fire4}, @@ -1880,31 +2592,52 @@ mframe_t soldierh_frames_attack4 [] = {ai_charge, 0, NULL}, {ai_charge, 0, NULL} }; -mmove_t soldierh_move_attack4 = {FRAME_attak401, FRAME_attak406, soldierh_frames_attack4, soldierh_run}; -// ATTACK6 (run & shoot) +mmove_t soldierh_move_attack4 = { + FRAME_attak401, + FRAME_attak406, + soldierh_frames_attack4, + soldierh_run +}; -void soldierh_fire8 (edict_t *self) -{ - soldierh_fire (self, 7); +void +soldierh_fire8(edict_t *self) +{ + if (!self) + { + return; + } + + soldierh_fire(self, 7); } -void soldierh_attack6_refire (edict_t *self) -{ - if (self->enemy->health <= 0) +void +soldierh_attack6_refire(edict_t *self) +{ + if (!self) + { return; + } + + if (self->enemy->health <= 0) + { + return; + } if (range(self, self->enemy) < RANGE_MID) + { return; + } if (skill->value == 3) + { self->monsterinfo.nextframe = FRAME_runs03; + } } -mframe_t soldierh_frames_attack6 [] = -{ +mframe_t soldierh_frames_attack6[] = { {ai_charge, 10, NULL}, - {ai_charge, 4, NULL}, + {ai_charge, 4, NULL}, {ai_charge, 12, NULL}, {ai_charge, 11, soldierh_fire8}, {ai_charge, 13, NULL}, @@ -1912,22 +2645,38 @@ mframe_t soldierh_frames_attack6 [] = {ai_charge, 15, NULL}, {ai_charge, 14, NULL}, {ai_charge, 11, NULL}, - {ai_charge, 8, NULL}, + {ai_charge, 8, NULL}, {ai_charge, 11, NULL}, {ai_charge, 12, NULL}, {ai_charge, 12, NULL}, {ai_charge, 17, soldierh_attack6_refire} }; -mmove_t soldierh_move_attack6 = {FRAME_runs01, FRAME_runs14, soldierh_frames_attack6, soldierh_run}; -void soldierh_attack(edict_t *self) -{ +mmove_t soldierh_move_attack6 = { + FRAME_runs01, + FRAME_runs14, + soldierh_frames_attack6, + soldierh_run +}; + +void +soldierh_attack(edict_t *self) +{ + if (!self) + { + return; + } + if (self->s.skinnum < 4) { if (random() < 0.5) + { self->monsterinfo.currentmove = &soldierh_move_attack1; + } else + { self->monsterinfo.currentmove = &soldierh_move_attack2; + } } else { @@ -1935,62 +2684,93 @@ void soldierh_attack(edict_t *self) } } - -// -// SIGHT -// - -void soldierh_sight(edict_t *self, edict_t *other) -{ +void +soldierh_sight(edict_t *self, edict_t *other /* unused */) +{ + if (!self) + { + return; + } + if (random() < 0.5) - gi.sound (self, CHAN_VOICE, sound_sight1, 1, ATTN_NORM, 0); + { + gi.sound(self, CHAN_VOICE, sound_sight1, 1, ATTN_NORM, 0); + } else - gi.sound (self, CHAN_VOICE, sound_sight2, 1, ATTN_NORM, 0); + { + gi.sound(self, CHAN_VOICE, sound_sight2, 1, ATTN_NORM, 0); + } if ((skill->value > 0) && (range(self, self->enemy) >= RANGE_MID)) { if (random() > 0.5) { - if (self->s.skinnum < 4) + if (self->s.skinnum < 4) + { self->monsterinfo.currentmove = &soldierh_move_attack6; + } else + { self->monsterinfo.currentmove = &soldierh_move_attack4; + } } } } -// -// DUCK -// - -void soldierh_duck_hold (edict_t *self) -{ +void +soldierh_duck_hold(edict_t *self) +{ + if (!self) + { + return; + } + if (level.time >= self->monsterinfo.pausetime) + { self->monsterinfo.aiflags &= ~AI_HOLD_FRAME; + } else + { self->monsterinfo.aiflags |= AI_HOLD_FRAME; + } } -mframe_t soldierh_frames_duck [] = -{ +mframe_t soldierh_frames_duck[] = { {ai_move, 5, soldierh_duck_down}, {ai_move, -1, soldierh_duck_hold}, - {ai_move, 1, NULL}, - {ai_move, 0, soldierh_duck_up}, - {ai_move, 5, NULL} + {ai_move, 1, NULL}, + {ai_move, 0, soldierh_duck_up}, + {ai_move, 5, NULL} }; -mmove_t soldierh_move_duck = {FRAME_duck01, FRAME_duck05, soldierh_frames_duck, soldierh_run}; -void soldierh_dodge (edict_t *self, edict_t *attacker, float eta) +mmove_t soldierh_move_duck = { + FRAME_duck01, + FRAME_duck05, + soldierh_frames_duck, + soldierh_run +}; + +void +soldierh_dodge(edict_t *self, edict_t *attacker, float eta) { - float r; - - r = random(); - if (r > 0.25) + float r; + + if (!self || !attacker) + { return; + } + + r = random(); + + if (r > 0.25) + { + return; + } if (!self->enemy) + { self->enemy = attacker; + } if (skill->value == 0) { @@ -2004,378 +2784,461 @@ void soldierh_dodge (edict_t *self, edict_t *attacker, float eta) if (skill->value == 1) { if (r > 0.33) + { self->monsterinfo.currentmove = &soldierh_move_duck; + } else + { self->monsterinfo.currentmove = &soldierh_move_attack3; + } + return; } if (skill->value >= 2) { if (r > 0.66) + { self->monsterinfo.currentmove = &soldierh_move_duck; + } else + { self->monsterinfo.currentmove = &soldierh_move_attack3; + } + return; } self->monsterinfo.currentmove = &soldierh_move_attack3; } - -// -// DEATH -// - -void soldierh_fire6 (edict_t *self) -{ - - // no fire laser +void +soldierh_fire6(edict_t *self) +{ + if (!self) + { + return; + } + + /* no fire laser */ if (self->s.skinnum < 4) - soldierh_fire (self, 5); - + { + soldierh_fire(self, 5); + } } -void soldierh_fire7 (edict_t *self) -{ - - // no fire laser +void +soldierh_fire7(edict_t *self) +{ + if (!self) + { + return; + } + + /* no fire laser */ if (self->s.skinnum < 4) - soldierh_fire (self, 6); - + { + soldierh_fire(self, 6); + } } -void soldierh_dead (edict_t *self) -{ - VectorSet (self->mins, -16, -16, -24); - VectorSet (self->maxs, 16, 16, -8); +void +soldierh_dead(edict_t *self) +{ + if (!self) + { + return; + } + + VectorSet(self->mins, -16, -16, -24); + VectorSet(self->maxs, 16, 16, -8); self->movetype = MOVETYPE_TOSS; self->svflags |= SVF_DEADMONSTER; self->nextthink = 0; - gi.linkentity (self); + gi.linkentity(self); } -mframe_t soldierh_frames_death1 [] = -{ - {ai_move, 0, NULL}, +mframe_t soldierh_frames_death1[] = { + {ai_move, 0, NULL}, {ai_move, -10, NULL}, {ai_move, -10, NULL}, {ai_move, -10, NULL}, - {ai_move, -5, NULL}, - {ai_move, 0, NULL}, - {ai_move, 0, NULL}, - {ai_move, 0, NULL}, - {ai_move, 0, NULL}, - {ai_move, 0, NULL}, + {ai_move, -5, 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, soldierh_fire6}, - {ai_move, 0, NULL}, - {ai_move, 0, NULL}, - {ai_move, 0, soldierh_fire7}, - {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, soldierh_fire6}, + {ai_move, 0, NULL}, + {ai_move, 0, NULL}, + {ai_move, 0, soldierh_fire7}, + {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 soldierh_move_death1 = {FRAME_death101, FRAME_death136, soldierh_frames_death1, soldierh_dead}; -mframe_t soldierh_frames_death2 [] = -{ - {ai_move, -5, NULL}, - {ai_move, -5, NULL}, - {ai_move, -5, 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 soldierh_move_death1 = { + FRAME_death101, + FRAME_death136, + soldierh_frames_death1, + soldierh_dead }; -mmove_t soldierh_move_death2 = {FRAME_death201, FRAME_death235, soldierh_frames_death2, soldierh_dead}; -mframe_t soldierh_frames_death3 [] = -{ - {ai_move, -5, NULL}, - {ai_move, -5, NULL}, - {ai_move, -5, 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}, +mframe_t soldierh_frames_death2[] = { + {ai_move, -5, NULL}, + {ai_move, -5, NULL}, + {ai_move, -5, 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 soldierh_move_death3 = {FRAME_death301, FRAME_death345, soldierh_frames_death3, soldierh_dead}; -mframe_t soldierh_frames_death4 [] = -{ - {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 soldierh_move_death2 = { + FRAME_death201, + FRAME_death235, + soldierh_frames_death2, + soldierh_dead }; -mmove_t soldierh_move_death4 = {FRAME_death401, FRAME_death453, soldierh_frames_death4, soldierh_dead}; -mframe_t soldierh_frames_death5 [] = -{ - {ai_move, -5, NULL}, - {ai_move, -5, NULL}, - {ai_move, -5, 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}, +mframe_t soldierh_frames_death3[] = { + {ai_move, -5, NULL}, + {ai_move, -5, NULL}, + {ai_move, -5, 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 soldierh_move_death5 = {FRAME_death501, FRAME_death524, soldierh_frames_death5, soldierh_dead}; -mframe_t soldierh_frames_death6 [] = -{ - {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 soldierh_move_death3 = { + FRAME_death301, + FRAME_death345, + soldierh_frames_death3, + soldierh_dead }; -mmove_t soldierh_move_death6 = {FRAME_death601, FRAME_death610, soldierh_frames_death6, soldierh_dead}; -void soldierh_die (edict_t *self, edict_t *inflictor, edict_t *attacker, int damage, vec3_t point) +mframe_t soldierh_frames_death4[] = { + {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 soldierh_move_death4 = { + FRAME_death401, + FRAME_death453, + soldierh_frames_death4, + soldierh_dead +}; + +mframe_t soldierh_frames_death5[] = { + {ai_move, -5, NULL}, + {ai_move, -5, NULL}, + {ai_move, -5, 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 soldierh_move_death5 = { + FRAME_death501, + FRAME_death524, + soldierh_frames_death5, + soldierh_dead +}; + +mframe_t soldierh_frames_death6[] = { + {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 soldierh_move_death6 = { + FRAME_death601, + FRAME_death610, + soldierh_frames_death6, + soldierh_dead +}; + +void +soldierh_die(edict_t *self, edict_t *inflictor /* unused */, + edict_t *attacker /* unused */, int damage, vec3_t point) { - int n; - - // check for gib + int n; + + if (!self) + { + return; + } + + /* check for gib */ if (self->health <= self->gib_health) { - gi.sound (self, CHAN_VOICE, gi.soundindex ("misc/udeath.wav"), 1, ATTN_NORM, 0); - for (n= 0; n < 3; n++) - ThrowGib (self, "models/objects/gibs/sm_meat/tris.md2", damage, GIB_ORGANIC); - ThrowGib (self, "models/objects/gibs/chest/tris.md2", damage, GIB_ORGANIC); - ThrowHead (self, "models/objects/gibs/head2/tris.md2", damage, GIB_ORGANIC); - + gi.sound(self, CHAN_VOICE, gi.soundindex("misc/udeath.wav"), 1, ATTN_NORM, 0); + + for (n = 0; n < 3; n++) + { + ThrowGib(self, "models/objects/gibs/sm_meat/tris.md2", damage, GIB_ORGANIC); + } + + ThrowGib(self, "models/objects/gibs/chest/tris.md2", damage, GIB_ORGANIC); + ThrowHead(self, "models/objects/gibs/head2/tris.md2", damage, GIB_ORGANIC); + self->deadflag = DEAD_DEAD; return; } if (self->deadflag == DEAD_DEAD) + { return; + } - // regular death + /* regular death */ self->deadflag = DEAD_DEAD; self->takedamage = DAMAGE_YES; self->s.skinnum |= 1; if (self->s.skinnum == 1) - gi.sound (self, CHAN_VOICE, sound_death_light, 1, ATTN_NORM, 0); + { + gi.sound(self, CHAN_VOICE, sound_death_light, 1, ATTN_NORM, 0); + } else if (self->s.skinnum == 3) - gi.sound (self, CHAN_VOICE, sound_death, 1, ATTN_NORM, 0); - else // (self->s.skinnum == 5) - gi.sound (self, CHAN_VOICE, sound_death_ss, 1, ATTN_NORM, 0); + { + gi.sound(self, CHAN_VOICE, sound_death, 1, ATTN_NORM, 0); + } + else + { + gi.sound(self, CHAN_VOICE, sound_death_ss, 1, ATTN_NORM, 0); + } if (fabs((self->s.origin[2] + self->viewheight) - point[2]) <= 4) { - // head shot + /* head shot */ self->monsterinfo.currentmove = &soldierh_move_death3; return; } n = rand() % 5; + if (n == 0) + { self->monsterinfo.currentmove = &soldierh_move_death1; + } else if (n == 1) + { self->monsterinfo.currentmove = &soldierh_move_death2; + } else if (n == 2) + { self->monsterinfo.currentmove = &soldierh_move_death4; + } else if (n == 3) + { self->monsterinfo.currentmove = &soldierh_move_death5; + } else + { self->monsterinfo.currentmove = &soldierh_move_death6; + } } - -// -// SPAWN -// - -void SP_monster_soldier_h (edict_t *self) -{ - - self->s.modelindex = gi.modelindex ("models/monsters/soldierh/tris.md2"); +void +SP_monster_soldier_h(edict_t *self) +{ + if (!self) + { + return; + } + + self->s.modelindex = gi.modelindex("models/monsters/soldierh/tris.md2"); self->monsterinfo.scale = MODEL_SCALE; - VectorSet (self->mins, -16, -16, -24); - VectorSet (self->maxs, 16, 16, 32); + VectorSet(self->mins, -16, -16, -24); + VectorSet(self->maxs, 16, 16, 32); self->movetype = MOVETYPE_STEP; self->solid = SOLID_BBOX; - sound_idle = gi.soundindex ("soldier/solidle1.wav"); - sound_sight1 = gi.soundindex ("soldier/solsght1.wav"); - sound_sight2 = gi.soundindex ("soldier/solsrch1.wav"); - sound_cock = gi.soundindex ("infantry/infatck3.wav"); + sound_idle = gi.soundindex("soldier/solidle1.wav"); + sound_sight1 = gi.soundindex("soldier/solsght1.wav"); + sound_sight2 = gi.soundindex("soldier/solsrch1.wav"); + sound_cock = gi.soundindex("infantry/infatck3.wav"); self->mass = 100; @@ -2390,80 +3253,98 @@ void SP_monster_soldier_h (edict_t *self) self->monsterinfo.melee = NULL; self->monsterinfo.sight = soldierh_sight; - gi.linkentity (self); + gi.linkentity(self); - // self->monsterinfo.stand (self); - self->monsterinfo.currentmove = &soldierh_move_stand3; + /* self->monsterinfo.stand (self); */ + self->monsterinfo.currentmove = &soldierh_move_stand3; - walkmonster_start (self); + walkmonster_start(self); } - -/*QUAKED monster_soldier_ripper (1 .5 0) (-16 -16 -24) (16 16 32) Ambush Trigger_Spawn Sight -*/ -void SP_monster_soldier_ripper (edict_t *self) -{ +/* + * QUAKED monster_soldier_ripper (1 .5 0) (-16 -16 -24) (16 16 32) Ambush Trigger_Spawn Sight + */ +void +SP_monster_soldier_ripper(edict_t *self) +{ + if (!self) + { + return; + } + if (deathmatch->value) { - G_FreeEdict (self); + G_FreeEdict(self); return; } - SP_monster_soldier_h (self); + SP_monster_soldier_h(self); - sound_pain_light = gi.soundindex ("soldier/solpain2.wav"); - sound_death_light = gi.soundindex ("soldier/soldeth2.wav"); - - gi.modelindex ("models/objects/boomrang/tris.md2"); - gi.soundindex ("misc/lasfly.wav"); - gi.soundindex ("soldier/solatck2.wav"); + sound_pain_light = gi.soundindex("soldier/solpain2.wav"); + sound_death_light = gi.soundindex("soldier/soldeth2.wav"); + + gi.modelindex("models/objects/boomrang/tris.md2"); + gi.soundindex("misc/lasfly.wav"); + gi.soundindex("soldier/solatck2.wav"); self->s.skinnum = 0; self->health = 50; self->gib_health = -30; } -/*QUAKED monster_soldier_hypergun (1 .5 0) (-16 -16 -24) (16 16 32) Ambush Trigger_Spawn Sight -*/ -void SP_monster_soldier_hypergun (edict_t *self) -{ +/* + * QUAKED monster_soldier_hypergun (1 .5 0) (-16 -16 -24) (16 16 32) Ambush Trigger_Spawn Sight + */ +void +SP_monster_soldier_hypergun(edict_t *self) +{ + if (!self) + { + return; + } + if (deathmatch->value) { - G_FreeEdict (self); + G_FreeEdict(self); return; } - SP_monster_soldier_h (self); + SP_monster_soldier_h(self); - gi.modelindex ("models/objects/blaser/tris.md2"); - sound_pain = gi.soundindex ("soldier/solpain1.wav"); - sound_death = gi.soundindex ("soldier/soldeth1.wav"); - gi.soundindex ("soldier/solatck1.wav"); + gi.modelindex("models/objects/blaser/tris.md2"); + sound_pain = gi.soundindex("soldier/solpain1.wav"); + sound_death = gi.soundindex("soldier/soldeth1.wav"); + gi.soundindex("soldier/solatck1.wav"); self->s.skinnum = 2; self->health = 60; self->gib_health = -30; } -/*QUAKED monster_soldier_lasergun (1 .5 0) (-16 -16 -24) (16 16 32) Ambush Trigger_Spawn Sight -*/ -void SP_monster_soldier_lasergun (edict_t *self) -{ +/* + * QUAKED monster_soldier_lasergun (1 .5 0) (-16 -16 -24) (16 16 32) Ambush Trigger_Spawn Sight + */ +void +SP_monster_soldier_lasergun(edict_t *self) +{ + if (!self) + { + return; + } + if (deathmatch->value) { - G_FreeEdict (self); + G_FreeEdict(self); return; } - SP_monster_soldier_h (self); + SP_monster_soldier_h(self); - sound_pain_ss = gi.soundindex ("soldier/solpain3.wav"); - sound_death_ss = gi.soundindex ("soldier/soldeth3.wav"); - gi.soundindex ("soldier/solatck3.wav"); + sound_pain_ss = gi.soundindex("soldier/solpain3.wav"); + sound_death_ss = gi.soundindex("soldier/soldeth3.wav"); + gi.soundindex("soldier/solatck3.wav"); self->s.skinnum = 4; self->health = 70; self->gib_health = -30; - } - diff --git a/src/monster/soldier/soldier.h b/src/monster/soldier/soldier.h index a14b8cc..10acd88 100644 --- a/src/monster/soldier/soldier.h +++ b/src/monster/soldier/soldier.h @@ -1,481 +1,484 @@ -// G:\quake2\baseq2\models/monsters/soldier +/* ======================================================================= + * + * Soldier aka "Guard" animations. + * + * ======================================================================= + */ -// This file generated by ModelGen - Do NOT Modify +#define FRAME_attak101 0 +#define FRAME_attak102 1 +#define FRAME_attak103 2 +#define FRAME_attak104 3 +#define FRAME_attak105 4 +#define FRAME_attak106 5 +#define FRAME_attak107 6 +#define FRAME_attak108 7 +#define FRAME_attak109 8 +#define FRAME_attak110 9 +#define FRAME_attak111 10 +#define FRAME_attak112 11 +#define FRAME_attak201 12 +#define FRAME_attak202 13 +#define FRAME_attak203 14 +#define FRAME_attak204 15 +#define FRAME_attak205 16 +#define FRAME_attak206 17 +#define FRAME_attak207 18 +#define FRAME_attak208 19 +#define FRAME_attak209 20 +#define FRAME_attak210 21 +#define FRAME_attak211 22 +#define FRAME_attak212 23 +#define FRAME_attak213 24 +#define FRAME_attak214 25 +#define FRAME_attak215 26 +#define FRAME_attak216 27 +#define FRAME_attak217 28 +#define FRAME_attak218 29 +#define FRAME_attak301 30 +#define FRAME_attak302 31 +#define FRAME_attak303 32 +#define FRAME_attak304 33 +#define FRAME_attak305 34 +#define FRAME_attak306 35 +#define FRAME_attak307 36 +#define FRAME_attak308 37 +#define FRAME_attak309 38 +#define FRAME_attak401 39 +#define FRAME_attak402 40 +#define FRAME_attak403 41 +#define FRAME_attak404 42 +#define FRAME_attak405 43 +#define FRAME_attak406 44 +#define FRAME_duck01 45 +#define FRAME_duck02 46 +#define FRAME_duck03 47 +#define FRAME_duck04 48 +#define FRAME_duck05 49 +#define FRAME_pain101 50 +#define FRAME_pain102 51 +#define FRAME_pain103 52 +#define FRAME_pain104 53 +#define FRAME_pain105 54 +#define FRAME_pain201 55 +#define FRAME_pain202 56 +#define FRAME_pain203 57 +#define FRAME_pain204 58 +#define FRAME_pain205 59 +#define FRAME_pain206 60 +#define FRAME_pain207 61 +#define FRAME_pain301 62 +#define FRAME_pain302 63 +#define FRAME_pain303 64 +#define FRAME_pain304 65 +#define FRAME_pain305 66 +#define FRAME_pain306 67 +#define FRAME_pain307 68 +#define FRAME_pain308 69 +#define FRAME_pain309 70 +#define FRAME_pain310 71 +#define FRAME_pain311 72 +#define FRAME_pain312 73 +#define FRAME_pain313 74 +#define FRAME_pain314 75 +#define FRAME_pain315 76 +#define FRAME_pain316 77 +#define FRAME_pain317 78 +#define FRAME_pain318 79 +#define FRAME_pain401 80 +#define FRAME_pain402 81 +#define FRAME_pain403 82 +#define FRAME_pain404 83 +#define FRAME_pain405 84 +#define FRAME_pain406 85 +#define FRAME_pain407 86 +#define FRAME_pain408 87 +#define FRAME_pain409 88 +#define FRAME_pain410 89 +#define FRAME_pain411 90 +#define FRAME_pain412 91 +#define FRAME_pain413 92 +#define FRAME_pain414 93 +#define FRAME_pain415 94 +#define FRAME_pain416 95 +#define FRAME_pain417 96 +#define FRAME_run01 97 +#define FRAME_run02 98 +#define FRAME_run03 99 +#define FRAME_run04 100 +#define FRAME_run05 101 +#define FRAME_run06 102 +#define FRAME_run07 103 +#define FRAME_run08 104 +#define FRAME_run09 105 +#define FRAME_run10 106 +#define FRAME_run11 107 +#define FRAME_run12 108 +#define FRAME_runs01 109 +#define FRAME_runs02 110 +#define FRAME_runs03 111 +#define FRAME_runs04 112 +#define FRAME_runs05 113 +#define FRAME_runs06 114 +#define FRAME_runs07 115 +#define FRAME_runs08 116 +#define FRAME_runs09 117 +#define FRAME_runs10 118 +#define FRAME_runs11 119 +#define FRAME_runs12 120 +#define FRAME_runs13 121 +#define FRAME_runs14 122 +#define FRAME_runs15 123 +#define FRAME_runs16 124 +#define FRAME_runs17 125 +#define FRAME_runs18 126 +#define FRAME_runt01 127 +#define FRAME_runt02 128 +#define FRAME_runt03 129 +#define FRAME_runt04 130 +#define FRAME_runt05 131 +#define FRAME_runt06 132 +#define FRAME_runt07 133 +#define FRAME_runt08 134 +#define FRAME_runt09 135 +#define FRAME_runt10 136 +#define FRAME_runt11 137 +#define FRAME_runt12 138 +#define FRAME_runt13 139 +#define FRAME_runt14 140 +#define FRAME_runt15 141 +#define FRAME_runt16 142 +#define FRAME_runt17 143 +#define FRAME_runt18 144 +#define FRAME_runt19 145 +#define FRAME_stand101 146 +#define FRAME_stand102 147 +#define FRAME_stand103 148 +#define FRAME_stand104 149 +#define FRAME_stand105 150 +#define FRAME_stand106 151 +#define FRAME_stand107 152 +#define FRAME_stand108 153 +#define FRAME_stand109 154 +#define FRAME_stand110 155 +#define FRAME_stand111 156 +#define FRAME_stand112 157 +#define FRAME_stand113 158 +#define FRAME_stand114 159 +#define FRAME_stand115 160 +#define FRAME_stand116 161 +#define FRAME_stand117 162 +#define FRAME_stand118 163 +#define FRAME_stand119 164 +#define FRAME_stand120 165 +#define FRAME_stand121 166 +#define FRAME_stand122 167 +#define FRAME_stand123 168 +#define FRAME_stand124 169 +#define FRAME_stand125 170 +#define FRAME_stand126 171 +#define FRAME_stand127 172 +#define FRAME_stand128 173 +#define FRAME_stand129 174 +#define FRAME_stand130 175 +#define FRAME_stand301 176 +#define FRAME_stand302 177 +#define FRAME_stand303 178 +#define FRAME_stand304 179 +#define FRAME_stand305 180 +#define FRAME_stand306 181 +#define FRAME_stand307 182 +#define FRAME_stand308 183 +#define FRAME_stand309 184 +#define FRAME_stand310 185 +#define FRAME_stand311 186 +#define FRAME_stand312 187 +#define FRAME_stand313 188 +#define FRAME_stand314 189 +#define FRAME_stand315 190 +#define FRAME_stand316 191 +#define FRAME_stand317 192 +#define FRAME_stand318 193 +#define FRAME_stand319 194 +#define FRAME_stand320 195 +#define FRAME_stand321 196 +#define FRAME_stand322 197 +#define FRAME_stand323 198 +#define FRAME_stand324 199 +#define FRAME_stand325 200 +#define FRAME_stand326 201 +#define FRAME_stand327 202 +#define FRAME_stand328 203 +#define FRAME_stand329 204 +#define FRAME_stand330 205 +#define FRAME_stand331 206 +#define FRAME_stand332 207 +#define FRAME_stand333 208 +#define FRAME_stand334 209 +#define FRAME_stand335 210 +#define FRAME_stand336 211 +#define FRAME_stand337 212 +#define FRAME_stand338 213 +#define FRAME_stand339 214 +#define FRAME_walk101 215 +#define FRAME_walk102 216 +#define FRAME_walk103 217 +#define FRAME_walk104 218 +#define FRAME_walk105 219 +#define FRAME_walk106 220 +#define FRAME_walk107 221 +#define FRAME_walk108 222 +#define FRAME_walk109 223 +#define FRAME_walk110 224 +#define FRAME_walk111 225 +#define FRAME_walk112 226 +#define FRAME_walk113 227 +#define FRAME_walk114 228 +#define FRAME_walk115 229 +#define FRAME_walk116 230 +#define FRAME_walk117 231 +#define FRAME_walk118 232 +#define FRAME_walk119 233 +#define FRAME_walk120 234 +#define FRAME_walk121 235 +#define FRAME_walk122 236 +#define FRAME_walk123 237 +#define FRAME_walk124 238 +#define FRAME_walk125 239 +#define FRAME_walk126 240 +#define FRAME_walk127 241 +#define FRAME_walk128 242 +#define FRAME_walk129 243 +#define FRAME_walk130 244 +#define FRAME_walk131 245 +#define FRAME_walk132 246 +#define FRAME_walk133 247 +#define FRAME_walk201 248 +#define FRAME_walk202 249 +#define FRAME_walk203 250 +#define FRAME_walk204 251 +#define FRAME_walk205 252 +#define FRAME_walk206 253 +#define FRAME_walk207 254 +#define FRAME_walk208 255 +#define FRAME_walk209 256 +#define FRAME_walk210 257 +#define FRAME_walk211 258 +#define FRAME_walk212 259 +#define FRAME_walk213 260 +#define FRAME_walk214 261 +#define FRAME_walk215 262 +#define FRAME_walk216 263 +#define FRAME_walk217 264 +#define FRAME_walk218 265 +#define FRAME_walk219 266 +#define FRAME_walk220 267 +#define FRAME_walk221 268 +#define FRAME_walk222 269 +#define FRAME_walk223 270 +#define FRAME_walk224 271 +#define FRAME_death101 272 +#define FRAME_death102 273 +#define FRAME_death103 274 +#define FRAME_death104 275 +#define FRAME_death105 276 +#define FRAME_death106 277 +#define FRAME_death107 278 +#define FRAME_death108 279 +#define FRAME_death109 280 +#define FRAME_death110 281 +#define FRAME_death111 282 +#define FRAME_death112 283 +#define FRAME_death113 284 +#define FRAME_death114 285 +#define FRAME_death115 286 +#define FRAME_death116 287 +#define FRAME_death117 288 +#define FRAME_death118 289 +#define FRAME_death119 290 +#define FRAME_death120 291 +#define FRAME_death121 292 +#define FRAME_death122 293 +#define FRAME_death123 294 +#define FRAME_death124 295 +#define FRAME_death125 296 +#define FRAME_death126 297 +#define FRAME_death127 298 +#define FRAME_death128 299 +#define FRAME_death129 300 +#define FRAME_death130 301 +#define FRAME_death131 302 +#define FRAME_death132 303 +#define FRAME_death133 304 +#define FRAME_death134 305 +#define FRAME_death135 306 +#define FRAME_death136 307 +#define FRAME_death201 308 +#define FRAME_death202 309 +#define FRAME_death203 310 +#define FRAME_death204 311 +#define FRAME_death205 312 +#define FRAME_death206 313 +#define FRAME_death207 314 +#define FRAME_death208 315 +#define FRAME_death209 316 +#define FRAME_death210 317 +#define FRAME_death211 318 +#define FRAME_death212 319 +#define FRAME_death213 320 +#define FRAME_death214 321 +#define FRAME_death215 322 +#define FRAME_death216 323 +#define FRAME_death217 324 +#define FRAME_death218 325 +#define FRAME_death219 326 +#define FRAME_death220 327 +#define FRAME_death221 328 +#define FRAME_death222 329 +#define FRAME_death223 330 +#define FRAME_death224 331 +#define FRAME_death225 332 +#define FRAME_death226 333 +#define FRAME_death227 334 +#define FRAME_death228 335 +#define FRAME_death229 336 +#define FRAME_death230 337 +#define FRAME_death231 338 +#define FRAME_death232 339 +#define FRAME_death233 340 +#define FRAME_death234 341 +#define FRAME_death235 342 +#define FRAME_death301 343 +#define FRAME_death302 344 +#define FRAME_death303 345 +#define FRAME_death304 346 +#define FRAME_death305 347 +#define FRAME_death306 348 +#define FRAME_death307 349 +#define FRAME_death308 350 +#define FRAME_death309 351 +#define FRAME_death310 352 +#define FRAME_death311 353 +#define FRAME_death312 354 +#define FRAME_death313 355 +#define FRAME_death314 356 +#define FRAME_death315 357 +#define FRAME_death316 358 +#define FRAME_death317 359 +#define FRAME_death318 360 +#define FRAME_death319 361 +#define FRAME_death320 362 +#define FRAME_death321 363 +#define FRAME_death322 364 +#define FRAME_death323 365 +#define FRAME_death324 366 +#define FRAME_death325 367 +#define FRAME_death326 368 +#define FRAME_death327 369 +#define FRAME_death328 370 +#define FRAME_death329 371 +#define FRAME_death330 372 +#define FRAME_death331 373 +#define FRAME_death332 374 +#define FRAME_death333 375 +#define FRAME_death334 376 +#define FRAME_death335 377 +#define FRAME_death336 378 +#define FRAME_death337 379 +#define FRAME_death338 380 +#define FRAME_death339 381 +#define FRAME_death340 382 +#define FRAME_death341 383 +#define FRAME_death342 384 +#define FRAME_death343 385 +#define FRAME_death344 386 +#define FRAME_death345 387 +#define FRAME_death401 388 +#define FRAME_death402 389 +#define FRAME_death403 390 +#define FRAME_death404 391 +#define FRAME_death405 392 +#define FRAME_death406 393 +#define FRAME_death407 394 +#define FRAME_death408 395 +#define FRAME_death409 396 +#define FRAME_death410 397 +#define FRAME_death411 398 +#define FRAME_death412 399 +#define FRAME_death413 400 +#define FRAME_death414 401 +#define FRAME_death415 402 +#define FRAME_death416 403 +#define FRAME_death417 404 +#define FRAME_death418 405 +#define FRAME_death419 406 +#define FRAME_death420 407 +#define FRAME_death421 408 +#define FRAME_death422 409 +#define FRAME_death423 410 +#define FRAME_death424 411 +#define FRAME_death425 412 +#define FRAME_death426 413 +#define FRAME_death427 414 +#define FRAME_death428 415 +#define FRAME_death429 416 +#define FRAME_death430 417 +#define FRAME_death431 418 +#define FRAME_death432 419 +#define FRAME_death433 420 +#define FRAME_death434 421 +#define FRAME_death435 422 +#define FRAME_death436 423 +#define FRAME_death437 424 +#define FRAME_death438 425 +#define FRAME_death439 426 +#define FRAME_death440 427 +#define FRAME_death441 428 +#define FRAME_death442 429 +#define FRAME_death443 430 +#define FRAME_death444 431 +#define FRAME_death445 432 +#define FRAME_death446 433 +#define FRAME_death447 434 +#define FRAME_death448 435 +#define FRAME_death449 436 +#define FRAME_death450 437 +#define FRAME_death451 438 +#define FRAME_death452 439 +#define FRAME_death453 440 +#define FRAME_death501 441 +#define FRAME_death502 442 +#define FRAME_death503 443 +#define FRAME_death504 444 +#define FRAME_death505 445 +#define FRAME_death506 446 +#define FRAME_death507 447 +#define FRAME_death508 448 +#define FRAME_death509 449 +#define FRAME_death510 450 +#define FRAME_death511 451 +#define FRAME_death512 452 +#define FRAME_death513 453 +#define FRAME_death514 454 +#define FRAME_death515 455 +#define FRAME_death516 456 +#define FRAME_death517 457 +#define FRAME_death518 458 +#define FRAME_death519 459 +#define FRAME_death520 460 +#define FRAME_death521 461 +#define FRAME_death522 462 +#define FRAME_death523 463 +#define FRAME_death524 464 +#define FRAME_death601 465 +#define FRAME_death602 466 +#define FRAME_death603 467 +#define FRAME_death604 468 +#define FRAME_death605 469 +#define FRAME_death606 470 +#define FRAME_death607 471 +#define FRAME_death608 472 +#define FRAME_death609 473 +#define FRAME_death610 474 -#define FRAME_attak101 0 -#define FRAME_attak102 1 -#define FRAME_attak103 2 -#define FRAME_attak104 3 -#define FRAME_attak105 4 -#define FRAME_attak106 5 -#define FRAME_attak107 6 -#define FRAME_attak108 7 -#define FRAME_attak109 8 -#define FRAME_attak110 9 -#define FRAME_attak111 10 -#define FRAME_attak112 11 -#define FRAME_attak201 12 -#define FRAME_attak202 13 -#define FRAME_attak203 14 -#define FRAME_attak204 15 -#define FRAME_attak205 16 -#define FRAME_attak206 17 -#define FRAME_attak207 18 -#define FRAME_attak208 19 -#define FRAME_attak209 20 -#define FRAME_attak210 21 -#define FRAME_attak211 22 -#define FRAME_attak212 23 -#define FRAME_attak213 24 -#define FRAME_attak214 25 -#define FRAME_attak215 26 -#define FRAME_attak216 27 -#define FRAME_attak217 28 -#define FRAME_attak218 29 -#define FRAME_attak301 30 -#define FRAME_attak302 31 -#define FRAME_attak303 32 -#define FRAME_attak304 33 -#define FRAME_attak305 34 -#define FRAME_attak306 35 -#define FRAME_attak307 36 -#define FRAME_attak308 37 -#define FRAME_attak309 38 -#define FRAME_attak401 39 -#define FRAME_attak402 40 -#define FRAME_attak403 41 -#define FRAME_attak404 42 -#define FRAME_attak405 43 -#define FRAME_attak406 44 -#define FRAME_duck01 45 -#define FRAME_duck02 46 -#define FRAME_duck03 47 -#define FRAME_duck04 48 -#define FRAME_duck05 49 -#define FRAME_pain101 50 -#define FRAME_pain102 51 -#define FRAME_pain103 52 -#define FRAME_pain104 53 -#define FRAME_pain105 54 -#define FRAME_pain201 55 -#define FRAME_pain202 56 -#define FRAME_pain203 57 -#define FRAME_pain204 58 -#define FRAME_pain205 59 -#define FRAME_pain206 60 -#define FRAME_pain207 61 -#define FRAME_pain301 62 -#define FRAME_pain302 63 -#define FRAME_pain303 64 -#define FRAME_pain304 65 -#define FRAME_pain305 66 -#define FRAME_pain306 67 -#define FRAME_pain307 68 -#define FRAME_pain308 69 -#define FRAME_pain309 70 -#define FRAME_pain310 71 -#define FRAME_pain311 72 -#define FRAME_pain312 73 -#define FRAME_pain313 74 -#define FRAME_pain314 75 -#define FRAME_pain315 76 -#define FRAME_pain316 77 -#define FRAME_pain317 78 -#define FRAME_pain318 79 -#define FRAME_pain401 80 -#define FRAME_pain402 81 -#define FRAME_pain403 82 -#define FRAME_pain404 83 -#define FRAME_pain405 84 -#define FRAME_pain406 85 -#define FRAME_pain407 86 -#define FRAME_pain408 87 -#define FRAME_pain409 88 -#define FRAME_pain410 89 -#define FRAME_pain411 90 -#define FRAME_pain412 91 -#define FRAME_pain413 92 -#define FRAME_pain414 93 -#define FRAME_pain415 94 -#define FRAME_pain416 95 -#define FRAME_pain417 96 -#define FRAME_run01 97 -#define FRAME_run02 98 -#define FRAME_run03 99 -#define FRAME_run04 100 -#define FRAME_run05 101 -#define FRAME_run06 102 -#define FRAME_run07 103 -#define FRAME_run08 104 -#define FRAME_run09 105 -#define FRAME_run10 106 -#define FRAME_run11 107 -#define FRAME_run12 108 -#define FRAME_runs01 109 -#define FRAME_runs02 110 -#define FRAME_runs03 111 -#define FRAME_runs04 112 -#define FRAME_runs05 113 -#define FRAME_runs06 114 -#define FRAME_runs07 115 -#define FRAME_runs08 116 -#define FRAME_runs09 117 -#define FRAME_runs10 118 -#define FRAME_runs11 119 -#define FRAME_runs12 120 -#define FRAME_runs13 121 -#define FRAME_runs14 122 -#define FRAME_runs15 123 -#define FRAME_runs16 124 -#define FRAME_runs17 125 -#define FRAME_runs18 126 -#define FRAME_runt01 127 -#define FRAME_runt02 128 -#define FRAME_runt03 129 -#define FRAME_runt04 130 -#define FRAME_runt05 131 -#define FRAME_runt06 132 -#define FRAME_runt07 133 -#define FRAME_runt08 134 -#define FRAME_runt09 135 -#define FRAME_runt10 136 -#define FRAME_runt11 137 -#define FRAME_runt12 138 -#define FRAME_runt13 139 -#define FRAME_runt14 140 -#define FRAME_runt15 141 -#define FRAME_runt16 142 -#define FRAME_runt17 143 -#define FRAME_runt18 144 -#define FRAME_runt19 145 -#define FRAME_stand101 146 -#define FRAME_stand102 147 -#define FRAME_stand103 148 -#define FRAME_stand104 149 -#define FRAME_stand105 150 -#define FRAME_stand106 151 -#define FRAME_stand107 152 -#define FRAME_stand108 153 -#define FRAME_stand109 154 -#define FRAME_stand110 155 -#define FRAME_stand111 156 -#define FRAME_stand112 157 -#define FRAME_stand113 158 -#define FRAME_stand114 159 -#define FRAME_stand115 160 -#define FRAME_stand116 161 -#define FRAME_stand117 162 -#define FRAME_stand118 163 -#define FRAME_stand119 164 -#define FRAME_stand120 165 -#define FRAME_stand121 166 -#define FRAME_stand122 167 -#define FRAME_stand123 168 -#define FRAME_stand124 169 -#define FRAME_stand125 170 -#define FRAME_stand126 171 -#define FRAME_stand127 172 -#define FRAME_stand128 173 -#define FRAME_stand129 174 -#define FRAME_stand130 175 -#define FRAME_stand301 176 -#define FRAME_stand302 177 -#define FRAME_stand303 178 -#define FRAME_stand304 179 -#define FRAME_stand305 180 -#define FRAME_stand306 181 -#define FRAME_stand307 182 -#define FRAME_stand308 183 -#define FRAME_stand309 184 -#define FRAME_stand310 185 -#define FRAME_stand311 186 -#define FRAME_stand312 187 -#define FRAME_stand313 188 -#define FRAME_stand314 189 -#define FRAME_stand315 190 -#define FRAME_stand316 191 -#define FRAME_stand317 192 -#define FRAME_stand318 193 -#define FRAME_stand319 194 -#define FRAME_stand320 195 -#define FRAME_stand321 196 -#define FRAME_stand322 197 -#define FRAME_stand323 198 -#define FRAME_stand324 199 -#define FRAME_stand325 200 -#define FRAME_stand326 201 -#define FRAME_stand327 202 -#define FRAME_stand328 203 -#define FRAME_stand329 204 -#define FRAME_stand330 205 -#define FRAME_stand331 206 -#define FRAME_stand332 207 -#define FRAME_stand333 208 -#define FRAME_stand334 209 -#define FRAME_stand335 210 -#define FRAME_stand336 211 -#define FRAME_stand337 212 -#define FRAME_stand338 213 -#define FRAME_stand339 214 -#define FRAME_walk101 215 -#define FRAME_walk102 216 -#define FRAME_walk103 217 -#define FRAME_walk104 218 -#define FRAME_walk105 219 -#define FRAME_walk106 220 -#define FRAME_walk107 221 -#define FRAME_walk108 222 -#define FRAME_walk109 223 -#define FRAME_walk110 224 -#define FRAME_walk111 225 -#define FRAME_walk112 226 -#define FRAME_walk113 227 -#define FRAME_walk114 228 -#define FRAME_walk115 229 -#define FRAME_walk116 230 -#define FRAME_walk117 231 -#define FRAME_walk118 232 -#define FRAME_walk119 233 -#define FRAME_walk120 234 -#define FRAME_walk121 235 -#define FRAME_walk122 236 -#define FRAME_walk123 237 -#define FRAME_walk124 238 -#define FRAME_walk125 239 -#define FRAME_walk126 240 -#define FRAME_walk127 241 -#define FRAME_walk128 242 -#define FRAME_walk129 243 -#define FRAME_walk130 244 -#define FRAME_walk131 245 -#define FRAME_walk132 246 -#define FRAME_walk133 247 -#define FRAME_walk201 248 -#define FRAME_walk202 249 -#define FRAME_walk203 250 -#define FRAME_walk204 251 -#define FRAME_walk205 252 -#define FRAME_walk206 253 -#define FRAME_walk207 254 -#define FRAME_walk208 255 -#define FRAME_walk209 256 -#define FRAME_walk210 257 -#define FRAME_walk211 258 -#define FRAME_walk212 259 -#define FRAME_walk213 260 -#define FRAME_walk214 261 -#define FRAME_walk215 262 -#define FRAME_walk216 263 -#define FRAME_walk217 264 -#define FRAME_walk218 265 -#define FRAME_walk219 266 -#define FRAME_walk220 267 -#define FRAME_walk221 268 -#define FRAME_walk222 269 -#define FRAME_walk223 270 -#define FRAME_walk224 271 -#define FRAME_death101 272 -#define FRAME_death102 273 -#define FRAME_death103 274 -#define FRAME_death104 275 -#define FRAME_death105 276 -#define FRAME_death106 277 -#define FRAME_death107 278 -#define FRAME_death108 279 -#define FRAME_death109 280 -#define FRAME_death110 281 -#define FRAME_death111 282 -#define FRAME_death112 283 -#define FRAME_death113 284 -#define FRAME_death114 285 -#define FRAME_death115 286 -#define FRAME_death116 287 -#define FRAME_death117 288 -#define FRAME_death118 289 -#define FRAME_death119 290 -#define FRAME_death120 291 -#define FRAME_death121 292 -#define FRAME_death122 293 -#define FRAME_death123 294 -#define FRAME_death124 295 -#define FRAME_death125 296 -#define FRAME_death126 297 -#define FRAME_death127 298 -#define FRAME_death128 299 -#define FRAME_death129 300 -#define FRAME_death130 301 -#define FRAME_death131 302 -#define FRAME_death132 303 -#define FRAME_death133 304 -#define FRAME_death134 305 -#define FRAME_death135 306 -#define FRAME_death136 307 -#define FRAME_death201 308 -#define FRAME_death202 309 -#define FRAME_death203 310 -#define FRAME_death204 311 -#define FRAME_death205 312 -#define FRAME_death206 313 -#define FRAME_death207 314 -#define FRAME_death208 315 -#define FRAME_death209 316 -#define FRAME_death210 317 -#define FRAME_death211 318 -#define FRAME_death212 319 -#define FRAME_death213 320 -#define FRAME_death214 321 -#define FRAME_death215 322 -#define FRAME_death216 323 -#define FRAME_death217 324 -#define FRAME_death218 325 -#define FRAME_death219 326 -#define FRAME_death220 327 -#define FRAME_death221 328 -#define FRAME_death222 329 -#define FRAME_death223 330 -#define FRAME_death224 331 -#define FRAME_death225 332 -#define FRAME_death226 333 -#define FRAME_death227 334 -#define FRAME_death228 335 -#define FRAME_death229 336 -#define FRAME_death230 337 -#define FRAME_death231 338 -#define FRAME_death232 339 -#define FRAME_death233 340 -#define FRAME_death234 341 -#define FRAME_death235 342 -#define FRAME_death301 343 -#define FRAME_death302 344 -#define FRAME_death303 345 -#define FRAME_death304 346 -#define FRAME_death305 347 -#define FRAME_death306 348 -#define FRAME_death307 349 -#define FRAME_death308 350 -#define FRAME_death309 351 -#define FRAME_death310 352 -#define FRAME_death311 353 -#define FRAME_death312 354 -#define FRAME_death313 355 -#define FRAME_death314 356 -#define FRAME_death315 357 -#define FRAME_death316 358 -#define FRAME_death317 359 -#define FRAME_death318 360 -#define FRAME_death319 361 -#define FRAME_death320 362 -#define FRAME_death321 363 -#define FRAME_death322 364 -#define FRAME_death323 365 -#define FRAME_death324 366 -#define FRAME_death325 367 -#define FRAME_death326 368 -#define FRAME_death327 369 -#define FRAME_death328 370 -#define FRAME_death329 371 -#define FRAME_death330 372 -#define FRAME_death331 373 -#define FRAME_death332 374 -#define FRAME_death333 375 -#define FRAME_death334 376 -#define FRAME_death335 377 -#define FRAME_death336 378 -#define FRAME_death337 379 -#define FRAME_death338 380 -#define FRAME_death339 381 -#define FRAME_death340 382 -#define FRAME_death341 383 -#define FRAME_death342 384 -#define FRAME_death343 385 -#define FRAME_death344 386 -#define FRAME_death345 387 -#define FRAME_death401 388 -#define FRAME_death402 389 -#define FRAME_death403 390 -#define FRAME_death404 391 -#define FRAME_death405 392 -#define FRAME_death406 393 -#define FRAME_death407 394 -#define FRAME_death408 395 -#define FRAME_death409 396 -#define FRAME_death410 397 -#define FRAME_death411 398 -#define FRAME_death412 399 -#define FRAME_death413 400 -#define FRAME_death414 401 -#define FRAME_death415 402 -#define FRAME_death416 403 -#define FRAME_death417 404 -#define FRAME_death418 405 -#define FRAME_death419 406 -#define FRAME_death420 407 -#define FRAME_death421 408 -#define FRAME_death422 409 -#define FRAME_death423 410 -#define FRAME_death424 411 -#define FRAME_death425 412 -#define FRAME_death426 413 -#define FRAME_death427 414 -#define FRAME_death428 415 -#define FRAME_death429 416 -#define FRAME_death430 417 -#define FRAME_death431 418 -#define FRAME_death432 419 -#define FRAME_death433 420 -#define FRAME_death434 421 -#define FRAME_death435 422 -#define FRAME_death436 423 -#define FRAME_death437 424 -#define FRAME_death438 425 -#define FRAME_death439 426 -#define FRAME_death440 427 -#define FRAME_death441 428 -#define FRAME_death442 429 -#define FRAME_death443 430 -#define FRAME_death444 431 -#define FRAME_death445 432 -#define FRAME_death446 433 -#define FRAME_death447 434 -#define FRAME_death448 435 -#define FRAME_death449 436 -#define FRAME_death450 437 -#define FRAME_death451 438 -#define FRAME_death452 439 -#define FRAME_death453 440 -#define FRAME_death501 441 -#define FRAME_death502 442 -#define FRAME_death503 443 -#define FRAME_death504 444 -#define FRAME_death505 445 -#define FRAME_death506 446 -#define FRAME_death507 447 -#define FRAME_death508 448 -#define FRAME_death509 449 -#define FRAME_death510 450 -#define FRAME_death511 451 -#define FRAME_death512 452 -#define FRAME_death513 453 -#define FRAME_death514 454 -#define FRAME_death515 455 -#define FRAME_death516 456 -#define FRAME_death517 457 -#define FRAME_death518 458 -#define FRAME_death519 459 -#define FRAME_death520 460 -#define FRAME_death521 461 -#define FRAME_death522 462 -#define FRAME_death523 463 -#define FRAME_death524 464 -#define FRAME_death601 465 -#define FRAME_death602 466 -#define FRAME_death603 467 -#define FRAME_death604 468 -#define FRAME_death605 469 -#define FRAME_death606 470 -#define FRAME_death607 471 -#define FRAME_death608 472 -#define FRAME_death609 473 -#define FRAME_death610 474 - -#define MODEL_SCALE 1.200000 +#define MODEL_SCALE 1.200000 diff --git a/src/monster/soldier/soldierh.h b/src/monster/soldier/soldierh.h index ad75b2c..903505c 100644 --- a/src/monster/soldier/soldierh.h +++ b/src/monster/soldier/soldierh.h @@ -1,481 +1,485 @@ -// D:\quake2\baseq2\models/monsters/soldier +/* ======================================================================= + * + * Soldier aka "Guard" animations. This is the new model added in + * Xatrix, used for the new variants of the enemy. + * + * ======================================================================= + */ -// This file generated by qdata - Do NOT Modify +#define FRAME_attak101 0 +#define FRAME_attak102 1 +#define FRAME_attak103 2 +#define FRAME_attak104 3 +#define FRAME_attak105 4 +#define FRAME_attak106 5 +#define FRAME_attak107 6 +#define FRAME_attak108 7 +#define FRAME_attak109 8 +#define FRAME_attak110 9 +#define FRAME_attak111 10 +#define FRAME_attak112 11 +#define FRAME_attak201 12 +#define FRAME_attak202 13 +#define FRAME_attak203 14 +#define FRAME_attak204 15 +#define FRAME_attak205 16 +#define FRAME_attak206 17 +#define FRAME_attak207 18 +#define FRAME_attak208 19 +#define FRAME_attak209 20 +#define FRAME_attak210 21 +#define FRAME_attak211 22 +#define FRAME_attak212 23 +#define FRAME_attak213 24 +#define FRAME_attak214 25 +#define FRAME_attak215 26 +#define FRAME_attak216 27 +#define FRAME_attak217 28 +#define FRAME_attak218 29 +#define FRAME_attak301 30 +#define FRAME_attak302 31 +#define FRAME_attak303 32 +#define FRAME_attak304 33 +#define FRAME_attak305 34 +#define FRAME_attak306 35 +#define FRAME_attak307 36 +#define FRAME_attak308 37 +#define FRAME_attak309 38 +#define FRAME_attak401 39 +#define FRAME_attak402 40 +#define FRAME_attak403 41 +#define FRAME_attak404 42 +#define FRAME_attak405 43 +#define FRAME_attak406 44 +#define FRAME_duck01 45 +#define FRAME_duck02 46 +#define FRAME_duck03 47 +#define FRAME_duck04 48 +#define FRAME_duck05 49 +#define FRAME_pain101 50 +#define FRAME_pain102 51 +#define FRAME_pain103 52 +#define FRAME_pain104 53 +#define FRAME_pain105 54 +#define FRAME_pain201 55 +#define FRAME_pain202 56 +#define FRAME_pain203 57 +#define FRAME_pain204 58 +#define FRAME_pain205 59 +#define FRAME_pain206 60 +#define FRAME_pain207 61 +#define FRAME_pain301 62 +#define FRAME_pain302 63 +#define FRAME_pain303 64 +#define FRAME_pain304 65 +#define FRAME_pain305 66 +#define FRAME_pain306 67 +#define FRAME_pain307 68 +#define FRAME_pain308 69 +#define FRAME_pain309 70 +#define FRAME_pain310 71 +#define FRAME_pain311 72 +#define FRAME_pain312 73 +#define FRAME_pain313 74 +#define FRAME_pain314 75 +#define FRAME_pain315 76 +#define FRAME_pain316 77 +#define FRAME_pain317 78 +#define FRAME_pain318 79 +#define FRAME_pain401 80 +#define FRAME_pain402 81 +#define FRAME_pain403 82 +#define FRAME_pain404 83 +#define FRAME_pain405 84 +#define FRAME_pain406 85 +#define FRAME_pain407 86 +#define FRAME_pain408 87 +#define FRAME_pain409 88 +#define FRAME_pain410 89 +#define FRAME_pain411 90 +#define FRAME_pain412 91 +#define FRAME_pain413 92 +#define FRAME_pain414 93 +#define FRAME_pain415 94 +#define FRAME_pain416 95 +#define FRAME_pain417 96 +#define FRAME_run01 97 +#define FRAME_run02 98 +#define FRAME_run03 99 +#define FRAME_run04 100 +#define FRAME_run05 101 +#define FRAME_run06 102 +#define FRAME_run07 103 +#define FRAME_run08 104 +#define FRAME_run09 105 +#define FRAME_run10 106 +#define FRAME_run11 107 +#define FRAME_run12 108 +#define FRAME_runs01 109 +#define FRAME_runs02 110 +#define FRAME_runs03 111 +#define FRAME_runs04 112 +#define FRAME_runs05 113 +#define FRAME_runs06 114 +#define FRAME_runs07 115 +#define FRAME_runs08 116 +#define FRAME_runs09 117 +#define FRAME_runs10 118 +#define FRAME_runs11 119 +#define FRAME_runs12 120 +#define FRAME_runs13 121 +#define FRAME_runs14 122 +#define FRAME_runs15 123 +#define FRAME_runs16 124 +#define FRAME_runs17 125 +#define FRAME_runs18 126 +#define FRAME_runt01 127 +#define FRAME_runt02 128 +#define FRAME_runt03 129 +#define FRAME_runt04 130 +#define FRAME_runt05 131 +#define FRAME_runt06 132 +#define FRAME_runt07 133 +#define FRAME_runt08 134 +#define FRAME_runt09 135 +#define FRAME_runt10 136 +#define FRAME_runt11 137 +#define FRAME_runt12 138 +#define FRAME_runt13 139 +#define FRAME_runt14 140 +#define FRAME_runt15 141 +#define FRAME_runt16 142 +#define FRAME_runt17 143 +#define FRAME_runt18 144 +#define FRAME_runt19 145 +#define FRAME_stand101 146 +#define FRAME_stand102 147 +#define FRAME_stand103 148 +#define FRAME_stand104 149 +#define FRAME_stand105 150 +#define FRAME_stand106 151 +#define FRAME_stand107 152 +#define FRAME_stand108 153 +#define FRAME_stand109 154 +#define FRAME_stand110 155 +#define FRAME_stand111 156 +#define FRAME_stand112 157 +#define FRAME_stand113 158 +#define FRAME_stand114 159 +#define FRAME_stand115 160 +#define FRAME_stand116 161 +#define FRAME_stand117 162 +#define FRAME_stand118 163 +#define FRAME_stand119 164 +#define FRAME_stand120 165 +#define FRAME_stand121 166 +#define FRAME_stand122 167 +#define FRAME_stand123 168 +#define FRAME_stand124 169 +#define FRAME_stand125 170 +#define FRAME_stand126 171 +#define FRAME_stand127 172 +#define FRAME_stand128 173 +#define FRAME_stand129 174 +#define FRAME_stand130 175 +#define FRAME_stand301 176 +#define FRAME_stand302 177 +#define FRAME_stand303 178 +#define FRAME_stand304 179 +#define FRAME_stand305 180 +#define FRAME_stand306 181 +#define FRAME_stand307 182 +#define FRAME_stand308 183 +#define FRAME_stand309 184 +#define FRAME_stand310 185 +#define FRAME_stand311 186 +#define FRAME_stand312 187 +#define FRAME_stand313 188 +#define FRAME_stand314 189 +#define FRAME_stand315 190 +#define FRAME_stand316 191 +#define FRAME_stand317 192 +#define FRAME_stand318 193 +#define FRAME_stand319 194 +#define FRAME_stand320 195 +#define FRAME_stand321 196 +#define FRAME_stand322 197 +#define FRAME_stand323 198 +#define FRAME_stand324 199 +#define FRAME_stand325 200 +#define FRAME_stand326 201 +#define FRAME_stand327 202 +#define FRAME_stand328 203 +#define FRAME_stand329 204 +#define FRAME_stand330 205 +#define FRAME_stand331 206 +#define FRAME_stand332 207 +#define FRAME_stand333 208 +#define FRAME_stand334 209 +#define FRAME_stand335 210 +#define FRAME_stand336 211 +#define FRAME_stand337 212 +#define FRAME_stand338 213 +#define FRAME_stand339 214 +#define FRAME_walk101 215 +#define FRAME_walk102 216 +#define FRAME_walk103 217 +#define FRAME_walk104 218 +#define FRAME_walk105 219 +#define FRAME_walk106 220 +#define FRAME_walk107 221 +#define FRAME_walk108 222 +#define FRAME_walk109 223 +#define FRAME_walk110 224 +#define FRAME_walk111 225 +#define FRAME_walk112 226 +#define FRAME_walk113 227 +#define FRAME_walk114 228 +#define FRAME_walk115 229 +#define FRAME_walk116 230 +#define FRAME_walk117 231 +#define FRAME_walk118 232 +#define FRAME_walk119 233 +#define FRAME_walk120 234 +#define FRAME_walk121 235 +#define FRAME_walk122 236 +#define FRAME_walk123 237 +#define FRAME_walk124 238 +#define FRAME_walk125 239 +#define FRAME_walk126 240 +#define FRAME_walk127 241 +#define FRAME_walk128 242 +#define FRAME_walk129 243 +#define FRAME_walk130 244 +#define FRAME_walk131 245 +#define FRAME_walk132 246 +#define FRAME_walk133 247 +#define FRAME_walk201 248 +#define FRAME_walk202 249 +#define FRAME_walk203 250 +#define FRAME_walk204 251 +#define FRAME_walk205 252 +#define FRAME_walk206 253 +#define FRAME_walk207 254 +#define FRAME_walk208 255 +#define FRAME_walk209 256 +#define FRAME_walk210 257 +#define FRAME_walk211 258 +#define FRAME_walk212 259 +#define FRAME_walk213 260 +#define FRAME_walk214 261 +#define FRAME_walk215 262 +#define FRAME_walk216 263 +#define FRAME_walk217 264 +#define FRAME_walk218 265 +#define FRAME_walk219 266 +#define FRAME_walk220 267 +#define FRAME_walk221 268 +#define FRAME_walk222 269 +#define FRAME_walk223 270 +#define FRAME_walk224 271 +#define FRAME_death101 272 +#define FRAME_death102 273 +#define FRAME_death103 274 +#define FRAME_death104 275 +#define FRAME_death105 276 +#define FRAME_death106 277 +#define FRAME_death107 278 +#define FRAME_death108 279 +#define FRAME_death109 280 +#define FRAME_death110 281 +#define FRAME_death111 282 +#define FRAME_death112 283 +#define FRAME_death113 284 +#define FRAME_death114 285 +#define FRAME_death115 286 +#define FRAME_death116 287 +#define FRAME_death117 288 +#define FRAME_death118 289 +#define FRAME_death119 290 +#define FRAME_death120 291 +#define FRAME_death121 292 +#define FRAME_death122 293 +#define FRAME_death123 294 +#define FRAME_death124 295 +#define FRAME_death125 296 +#define FRAME_death126 297 +#define FRAME_death127 298 +#define FRAME_death128 299 +#define FRAME_death129 300 +#define FRAME_death130 301 +#define FRAME_death131 302 +#define FRAME_death132 303 +#define FRAME_death133 304 +#define FRAME_death134 305 +#define FRAME_death135 306 +#define FRAME_death136 307 +#define FRAME_death201 308 +#define FRAME_death202 309 +#define FRAME_death203 310 +#define FRAME_death204 311 +#define FRAME_death205 312 +#define FRAME_death206 313 +#define FRAME_death207 314 +#define FRAME_death208 315 +#define FRAME_death209 316 +#define FRAME_death210 317 +#define FRAME_death211 318 +#define FRAME_death212 319 +#define FRAME_death213 320 +#define FRAME_death214 321 +#define FRAME_death215 322 +#define FRAME_death216 323 +#define FRAME_death217 324 +#define FRAME_death218 325 +#define FRAME_death219 326 +#define FRAME_death220 327 +#define FRAME_death221 328 +#define FRAME_death222 329 +#define FRAME_death223 330 +#define FRAME_death224 331 +#define FRAME_death225 332 +#define FRAME_death226 333 +#define FRAME_death227 334 +#define FRAME_death228 335 +#define FRAME_death229 336 +#define FRAME_death230 337 +#define FRAME_death231 338 +#define FRAME_death232 339 +#define FRAME_death233 340 +#define FRAME_death234 341 +#define FRAME_death235 342 +#define FRAME_death301 343 +#define FRAME_death302 344 +#define FRAME_death303 345 +#define FRAME_death304 346 +#define FRAME_death305 347 +#define FRAME_death306 348 +#define FRAME_death307 349 +#define FRAME_death308 350 +#define FRAME_death309 351 +#define FRAME_death310 352 +#define FRAME_death311 353 +#define FRAME_death312 354 +#define FRAME_death313 355 +#define FRAME_death314 356 +#define FRAME_death315 357 +#define FRAME_death316 358 +#define FRAME_death317 359 +#define FRAME_death318 360 +#define FRAME_death319 361 +#define FRAME_death320 362 +#define FRAME_death321 363 +#define FRAME_death322 364 +#define FRAME_death323 365 +#define FRAME_death324 366 +#define FRAME_death325 367 +#define FRAME_death326 368 +#define FRAME_death327 369 +#define FRAME_death328 370 +#define FRAME_death329 371 +#define FRAME_death330 372 +#define FRAME_death331 373 +#define FRAME_death332 374 +#define FRAME_death333 375 +#define FRAME_death334 376 +#define FRAME_death335 377 +#define FRAME_death336 378 +#define FRAME_death337 379 +#define FRAME_death338 380 +#define FRAME_death339 381 +#define FRAME_death340 382 +#define FRAME_death341 383 +#define FRAME_death342 384 +#define FRAME_death343 385 +#define FRAME_death344 386 +#define FRAME_death345 387 +#define FRAME_death401 388 +#define FRAME_death402 389 +#define FRAME_death403 390 +#define FRAME_death404 391 +#define FRAME_death405 392 +#define FRAME_death406 393 +#define FRAME_death407 394 +#define FRAME_death408 395 +#define FRAME_death409 396 +#define FRAME_death410 397 +#define FRAME_death411 398 +#define FRAME_death412 399 +#define FRAME_death413 400 +#define FRAME_death414 401 +#define FRAME_death415 402 +#define FRAME_death416 403 +#define FRAME_death417 404 +#define FRAME_death418 405 +#define FRAME_death419 406 +#define FRAME_death420 407 +#define FRAME_death421 408 +#define FRAME_death422 409 +#define FRAME_death423 410 +#define FRAME_death424 411 +#define FRAME_death425 412 +#define FRAME_death426 413 +#define FRAME_death427 414 +#define FRAME_death428 415 +#define FRAME_death429 416 +#define FRAME_death430 417 +#define FRAME_death431 418 +#define FRAME_death432 419 +#define FRAME_death433 420 +#define FRAME_death434 421 +#define FRAME_death435 422 +#define FRAME_death436 423 +#define FRAME_death437 424 +#define FRAME_death438 425 +#define FRAME_death439 426 +#define FRAME_death440 427 +#define FRAME_death441 428 +#define FRAME_death442 429 +#define FRAME_death443 430 +#define FRAME_death444 431 +#define FRAME_death445 432 +#define FRAME_death446 433 +#define FRAME_death447 434 +#define FRAME_death448 435 +#define FRAME_death449 436 +#define FRAME_death450 437 +#define FRAME_death451 438 +#define FRAME_death452 439 +#define FRAME_death453 440 +#define FRAME_death501 441 +#define FRAME_death502 442 +#define FRAME_death503 443 +#define FRAME_death504 444 +#define FRAME_death505 445 +#define FRAME_death506 446 +#define FRAME_death507 447 +#define FRAME_death508 448 +#define FRAME_death509 449 +#define FRAME_death510 450 +#define FRAME_death511 451 +#define FRAME_death512 452 +#define FRAME_death513 453 +#define FRAME_death514 454 +#define FRAME_death515 455 +#define FRAME_death516 456 +#define FRAME_death517 457 +#define FRAME_death518 458 +#define FRAME_death519 459 +#define FRAME_death520 460 +#define FRAME_death521 461 +#define FRAME_death522 462 +#define FRAME_death523 463 +#define FRAME_death524 464 +#define FRAME_death601 465 +#define FRAME_death602 466 +#define FRAME_death603 467 +#define FRAME_death604 468 +#define FRAME_death605 469 +#define FRAME_death606 470 +#define FRAME_death607 471 +#define FRAME_death608 472 +#define FRAME_death609 473 +#define FRAME_death610 474 -#define FRAME_attak101 0 -#define FRAME_attak102 1 -#define FRAME_attak103 2 -#define FRAME_attak104 3 -#define FRAME_attak105 4 -#define FRAME_attak106 5 -#define FRAME_attak107 6 -#define FRAME_attak108 7 -#define FRAME_attak109 8 -#define FRAME_attak110 9 -#define FRAME_attak111 10 -#define FRAME_attak112 11 -#define FRAME_attak201 12 -#define FRAME_attak202 13 -#define FRAME_attak203 14 -#define FRAME_attak204 15 -#define FRAME_attak205 16 -#define FRAME_attak206 17 -#define FRAME_attak207 18 -#define FRAME_attak208 19 -#define FRAME_attak209 20 -#define FRAME_attak210 21 -#define FRAME_attak211 22 -#define FRAME_attak212 23 -#define FRAME_attak213 24 -#define FRAME_attak214 25 -#define FRAME_attak215 26 -#define FRAME_attak216 27 -#define FRAME_attak217 28 -#define FRAME_attak218 29 -#define FRAME_attak301 30 -#define FRAME_attak302 31 -#define FRAME_attak303 32 -#define FRAME_attak304 33 -#define FRAME_attak305 34 -#define FRAME_attak306 35 -#define FRAME_attak307 36 -#define FRAME_attak308 37 -#define FRAME_attak309 38 -#define FRAME_attak401 39 -#define FRAME_attak402 40 -#define FRAME_attak403 41 -#define FRAME_attak404 42 -#define FRAME_attak405 43 -#define FRAME_attak406 44 -#define FRAME_duck01 45 -#define FRAME_duck02 46 -#define FRAME_duck03 47 -#define FRAME_duck04 48 -#define FRAME_duck05 49 -#define FRAME_pain101 50 -#define FRAME_pain102 51 -#define FRAME_pain103 52 -#define FRAME_pain104 53 -#define FRAME_pain105 54 -#define FRAME_pain201 55 -#define FRAME_pain202 56 -#define FRAME_pain203 57 -#define FRAME_pain204 58 -#define FRAME_pain205 59 -#define FRAME_pain206 60 -#define FRAME_pain207 61 -#define FRAME_pain301 62 -#define FRAME_pain302 63 -#define FRAME_pain303 64 -#define FRAME_pain304 65 -#define FRAME_pain305 66 -#define FRAME_pain306 67 -#define FRAME_pain307 68 -#define FRAME_pain308 69 -#define FRAME_pain309 70 -#define FRAME_pain310 71 -#define FRAME_pain311 72 -#define FRAME_pain312 73 -#define FRAME_pain313 74 -#define FRAME_pain314 75 -#define FRAME_pain315 76 -#define FRAME_pain316 77 -#define FRAME_pain317 78 -#define FRAME_pain318 79 -#define FRAME_pain401 80 -#define FRAME_pain402 81 -#define FRAME_pain403 82 -#define FRAME_pain404 83 -#define FRAME_pain405 84 -#define FRAME_pain406 85 -#define FRAME_pain407 86 -#define FRAME_pain408 87 -#define FRAME_pain409 88 -#define FRAME_pain410 89 -#define FRAME_pain411 90 -#define FRAME_pain412 91 -#define FRAME_pain413 92 -#define FRAME_pain414 93 -#define FRAME_pain415 94 -#define FRAME_pain416 95 -#define FRAME_pain417 96 -#define FRAME_run01 97 -#define FRAME_run02 98 -#define FRAME_run03 99 -#define FRAME_run04 100 -#define FRAME_run05 101 -#define FRAME_run06 102 -#define FRAME_run07 103 -#define FRAME_run08 104 -#define FRAME_run09 105 -#define FRAME_run10 106 -#define FRAME_run11 107 -#define FRAME_run12 108 -#define FRAME_runs01 109 -#define FRAME_runs02 110 -#define FRAME_runs03 111 -#define FRAME_runs04 112 -#define FRAME_runs05 113 -#define FRAME_runs06 114 -#define FRAME_runs07 115 -#define FRAME_runs08 116 -#define FRAME_runs09 117 -#define FRAME_runs10 118 -#define FRAME_runs11 119 -#define FRAME_runs12 120 -#define FRAME_runs13 121 -#define FRAME_runs14 122 -#define FRAME_runs15 123 -#define FRAME_runs16 124 -#define FRAME_runs17 125 -#define FRAME_runs18 126 -#define FRAME_runt01 127 -#define FRAME_runt02 128 -#define FRAME_runt03 129 -#define FRAME_runt04 130 -#define FRAME_runt05 131 -#define FRAME_runt06 132 -#define FRAME_runt07 133 -#define FRAME_runt08 134 -#define FRAME_runt09 135 -#define FRAME_runt10 136 -#define FRAME_runt11 137 -#define FRAME_runt12 138 -#define FRAME_runt13 139 -#define FRAME_runt14 140 -#define FRAME_runt15 141 -#define FRAME_runt16 142 -#define FRAME_runt17 143 -#define FRAME_runt18 144 -#define FRAME_runt19 145 -#define FRAME_stand101 146 -#define FRAME_stand102 147 -#define FRAME_stand103 148 -#define FRAME_stand104 149 -#define FRAME_stand105 150 -#define FRAME_stand106 151 -#define FRAME_stand107 152 -#define FRAME_stand108 153 -#define FRAME_stand109 154 -#define FRAME_stand110 155 -#define FRAME_stand111 156 -#define FRAME_stand112 157 -#define FRAME_stand113 158 -#define FRAME_stand114 159 -#define FRAME_stand115 160 -#define FRAME_stand116 161 -#define FRAME_stand117 162 -#define FRAME_stand118 163 -#define FRAME_stand119 164 -#define FRAME_stand120 165 -#define FRAME_stand121 166 -#define FRAME_stand122 167 -#define FRAME_stand123 168 -#define FRAME_stand124 169 -#define FRAME_stand125 170 -#define FRAME_stand126 171 -#define FRAME_stand127 172 -#define FRAME_stand128 173 -#define FRAME_stand129 174 -#define FRAME_stand130 175 -#define FRAME_stand301 176 -#define FRAME_stand302 177 -#define FRAME_stand303 178 -#define FRAME_stand304 179 -#define FRAME_stand305 180 -#define FRAME_stand306 181 -#define FRAME_stand307 182 -#define FRAME_stand308 183 -#define FRAME_stand309 184 -#define FRAME_stand310 185 -#define FRAME_stand311 186 -#define FRAME_stand312 187 -#define FRAME_stand313 188 -#define FRAME_stand314 189 -#define FRAME_stand315 190 -#define FRAME_stand316 191 -#define FRAME_stand317 192 -#define FRAME_stand318 193 -#define FRAME_stand319 194 -#define FRAME_stand320 195 -#define FRAME_stand321 196 -#define FRAME_stand322 197 -#define FRAME_stand323 198 -#define FRAME_stand324 199 -#define FRAME_stand325 200 -#define FRAME_stand326 201 -#define FRAME_stand327 202 -#define FRAME_stand328 203 -#define FRAME_stand329 204 -#define FRAME_stand330 205 -#define FRAME_stand331 206 -#define FRAME_stand332 207 -#define FRAME_stand333 208 -#define FRAME_stand334 209 -#define FRAME_stand335 210 -#define FRAME_stand336 211 -#define FRAME_stand337 212 -#define FRAME_stand338 213 -#define FRAME_stand339 214 -#define FRAME_walk101 215 -#define FRAME_walk102 216 -#define FRAME_walk103 217 -#define FRAME_walk104 218 -#define FRAME_walk105 219 -#define FRAME_walk106 220 -#define FRAME_walk107 221 -#define FRAME_walk108 222 -#define FRAME_walk109 223 -#define FRAME_walk110 224 -#define FRAME_walk111 225 -#define FRAME_walk112 226 -#define FRAME_walk113 227 -#define FRAME_walk114 228 -#define FRAME_walk115 229 -#define FRAME_walk116 230 -#define FRAME_walk117 231 -#define FRAME_walk118 232 -#define FRAME_walk119 233 -#define FRAME_walk120 234 -#define FRAME_walk121 235 -#define FRAME_walk122 236 -#define FRAME_walk123 237 -#define FRAME_walk124 238 -#define FRAME_walk125 239 -#define FRAME_walk126 240 -#define FRAME_walk127 241 -#define FRAME_walk128 242 -#define FRAME_walk129 243 -#define FRAME_walk130 244 -#define FRAME_walk131 245 -#define FRAME_walk132 246 -#define FRAME_walk133 247 -#define FRAME_walk201 248 -#define FRAME_walk202 249 -#define FRAME_walk203 250 -#define FRAME_walk204 251 -#define FRAME_walk205 252 -#define FRAME_walk206 253 -#define FRAME_walk207 254 -#define FRAME_walk208 255 -#define FRAME_walk209 256 -#define FRAME_walk210 257 -#define FRAME_walk211 258 -#define FRAME_walk212 259 -#define FRAME_walk213 260 -#define FRAME_walk214 261 -#define FRAME_walk215 262 -#define FRAME_walk216 263 -#define FRAME_walk217 264 -#define FRAME_walk218 265 -#define FRAME_walk219 266 -#define FRAME_walk220 267 -#define FRAME_walk221 268 -#define FRAME_walk222 269 -#define FRAME_walk223 270 -#define FRAME_walk224 271 -#define FRAME_death101 272 -#define FRAME_death102 273 -#define FRAME_death103 274 -#define FRAME_death104 275 -#define FRAME_death105 276 -#define FRAME_death106 277 -#define FRAME_death107 278 -#define FRAME_death108 279 -#define FRAME_death109 280 -#define FRAME_death110 281 -#define FRAME_death111 282 -#define FRAME_death112 283 -#define FRAME_death113 284 -#define FRAME_death114 285 -#define FRAME_death115 286 -#define FRAME_death116 287 -#define FRAME_death117 288 -#define FRAME_death118 289 -#define FRAME_death119 290 -#define FRAME_death120 291 -#define FRAME_death121 292 -#define FRAME_death122 293 -#define FRAME_death123 294 -#define FRAME_death124 295 -#define FRAME_death125 296 -#define FRAME_death126 297 -#define FRAME_death127 298 -#define FRAME_death128 299 -#define FRAME_death129 300 -#define FRAME_death130 301 -#define FRAME_death131 302 -#define FRAME_death132 303 -#define FRAME_death133 304 -#define FRAME_death134 305 -#define FRAME_death135 306 -#define FRAME_death136 307 -#define FRAME_death201 308 -#define FRAME_death202 309 -#define FRAME_death203 310 -#define FRAME_death204 311 -#define FRAME_death205 312 -#define FRAME_death206 313 -#define FRAME_death207 314 -#define FRAME_death208 315 -#define FRAME_death209 316 -#define FRAME_death210 317 -#define FRAME_death211 318 -#define FRAME_death212 319 -#define FRAME_death213 320 -#define FRAME_death214 321 -#define FRAME_death215 322 -#define FRAME_death216 323 -#define FRAME_death217 324 -#define FRAME_death218 325 -#define FRAME_death219 326 -#define FRAME_death220 327 -#define FRAME_death221 328 -#define FRAME_death222 329 -#define FRAME_death223 330 -#define FRAME_death224 331 -#define FRAME_death225 332 -#define FRAME_death226 333 -#define FRAME_death227 334 -#define FRAME_death228 335 -#define FRAME_death229 336 -#define FRAME_death230 337 -#define FRAME_death231 338 -#define FRAME_death232 339 -#define FRAME_death233 340 -#define FRAME_death234 341 -#define FRAME_death235 342 -#define FRAME_death301 343 -#define FRAME_death302 344 -#define FRAME_death303 345 -#define FRAME_death304 346 -#define FRAME_death305 347 -#define FRAME_death306 348 -#define FRAME_death307 349 -#define FRAME_death308 350 -#define FRAME_death309 351 -#define FRAME_death310 352 -#define FRAME_death311 353 -#define FRAME_death312 354 -#define FRAME_death313 355 -#define FRAME_death314 356 -#define FRAME_death315 357 -#define FRAME_death316 358 -#define FRAME_death317 359 -#define FRAME_death318 360 -#define FRAME_death319 361 -#define FRAME_death320 362 -#define FRAME_death321 363 -#define FRAME_death322 364 -#define FRAME_death323 365 -#define FRAME_death324 366 -#define FRAME_death325 367 -#define FRAME_death326 368 -#define FRAME_death327 369 -#define FRAME_death328 370 -#define FRAME_death329 371 -#define FRAME_death330 372 -#define FRAME_death331 373 -#define FRAME_death332 374 -#define FRAME_death333 375 -#define FRAME_death334 376 -#define FRAME_death335 377 -#define FRAME_death336 378 -#define FRAME_death337 379 -#define FRAME_death338 380 -#define FRAME_death339 381 -#define FRAME_death340 382 -#define FRAME_death341 383 -#define FRAME_death342 384 -#define FRAME_death343 385 -#define FRAME_death344 386 -#define FRAME_death345 387 -#define FRAME_death401 388 -#define FRAME_death402 389 -#define FRAME_death403 390 -#define FRAME_death404 391 -#define FRAME_death405 392 -#define FRAME_death406 393 -#define FRAME_death407 394 -#define FRAME_death408 395 -#define FRAME_death409 396 -#define FRAME_death410 397 -#define FRAME_death411 398 -#define FRAME_death412 399 -#define FRAME_death413 400 -#define FRAME_death414 401 -#define FRAME_death415 402 -#define FRAME_death416 403 -#define FRAME_death417 404 -#define FRAME_death418 405 -#define FRAME_death419 406 -#define FRAME_death420 407 -#define FRAME_death421 408 -#define FRAME_death422 409 -#define FRAME_death423 410 -#define FRAME_death424 411 -#define FRAME_death425 412 -#define FRAME_death426 413 -#define FRAME_death427 414 -#define FRAME_death428 415 -#define FRAME_death429 416 -#define FRAME_death430 417 -#define FRAME_death431 418 -#define FRAME_death432 419 -#define FRAME_death433 420 -#define FRAME_death434 421 -#define FRAME_death435 422 -#define FRAME_death436 423 -#define FRAME_death437 424 -#define FRAME_death438 425 -#define FRAME_death439 426 -#define FRAME_death440 427 -#define FRAME_death441 428 -#define FRAME_death442 429 -#define FRAME_death443 430 -#define FRAME_death444 431 -#define FRAME_death445 432 -#define FRAME_death446 433 -#define FRAME_death447 434 -#define FRAME_death448 435 -#define FRAME_death449 436 -#define FRAME_death450 437 -#define FRAME_death451 438 -#define FRAME_death452 439 -#define FRAME_death453 440 -#define FRAME_death501 441 -#define FRAME_death502 442 -#define FRAME_death503 443 -#define FRAME_death504 444 -#define FRAME_death505 445 -#define FRAME_death506 446 -#define FRAME_death507 447 -#define FRAME_death508 448 -#define FRAME_death509 449 -#define FRAME_death510 450 -#define FRAME_death511 451 -#define FRAME_death512 452 -#define FRAME_death513 453 -#define FRAME_death514 454 -#define FRAME_death515 455 -#define FRAME_death516 456 -#define FRAME_death517 457 -#define FRAME_death518 458 -#define FRAME_death519 459 -#define FRAME_death520 460 -#define FRAME_death521 461 -#define FRAME_death522 462 -#define FRAME_death523 463 -#define FRAME_death524 464 -#define FRAME_death601 465 -#define FRAME_death602 466 -#define FRAME_death603 467 -#define FRAME_death604 468 -#define FRAME_death605 469 -#define FRAME_death606 470 -#define FRAME_death607 471 -#define FRAME_death608 472 -#define FRAME_death609 473 -#define FRAME_death610 474 - -#define MODEL_SCALE 1.200000 +#define MODEL_SCALE 1.200000