Mutant und Parasite

This commit is contained in:
Yamagi Burmeister 2009-10-07 09:43:38 +00:00
parent 3d80fd35eb
commit 60af02fc6d
2 changed files with 146 additions and 153 deletions

View file

@ -642,3 +642,4 @@ void SP_monster_mutant (edict_t *self)
self->monsterinfo.scale = MODEL_SCALE;
walkmonster_start (self);
}

View file

@ -66,34 +66,34 @@ void parasite_search (edict_t *self)
mframe_t parasite_frames_start_fidget [] =
{
ai_stand, 0, NULL,
ai_stand, 0, NULL,
ai_stand, 0, NULL,
ai_stand, 0, NULL
{ai_stand, 0, NULL},
{ai_stand, 0, NULL},
{ai_stand, 0, NULL},
{ai_stand, 0, NULL}
};
mmove_t parasite_move_start_fidget = {FRAME_stand18, FRAME_stand21, parasite_frames_start_fidget, parasite_do_fidget};
mframe_t parasite_frames_fidget [] =
{
ai_stand, 0, parasite_scratch,
ai_stand, 0, NULL,
ai_stand, 0, NULL,
ai_stand, 0, parasite_scratch,
ai_stand, 0, NULL,
ai_stand, 0, NULL
{ai_stand, 0, parasite_scratch},
{ai_stand, 0, NULL},
{ai_stand, 0, NULL},
{ai_stand, 0, parasite_scratch},
{ai_stand, 0, NULL},
{ai_stand, 0, NULL}
};
mmove_t parasite_move_fidget = {FRAME_stand22, FRAME_stand27, parasite_frames_fidget, parasite_refidget};
mframe_t parasite_frames_end_fidget [] =
{
ai_stand, 0, parasite_scratch,
ai_stand, 0, NULL,
ai_stand, 0, NULL,
ai_stand, 0, NULL,
ai_stand, 0, NULL,
ai_stand, 0, NULL,
ai_stand, 0, NULL,
ai_stand, 0, NULL
{ai_stand, 0, parasite_scratch},
{ai_stand, 0, NULL},
{ai_stand, 0, NULL},
{ai_stand, 0, NULL},
{ai_stand, 0, NULL},
{ai_stand, 0, NULL},
{ai_stand, 0, NULL},
{ai_stand, 0, NULL}
};
mmove_t parasite_move_end_fidget = {FRAME_stand28, FRAME_stand35, parasite_frames_end_fidget, parasite_stand};
@ -123,23 +123,23 @@ void parasite_idle (edict_t *self)
mframe_t parasite_frames_stand [] =
{
ai_stand, 0, NULL,
ai_stand, 0, NULL,
ai_stand, 0, parasite_tap,
ai_stand, 0, NULL,
ai_stand, 0, parasite_tap,
ai_stand, 0, NULL,
ai_stand, 0, NULL,
ai_stand, 0, NULL,
ai_stand, 0, parasite_tap,
ai_stand, 0, NULL,
ai_stand, 0, parasite_tap,
ai_stand, 0, NULL,
ai_stand, 0, NULL,
ai_stand, 0, NULL,
ai_stand, 0, parasite_tap,
ai_stand, 0, NULL,
ai_stand, 0, parasite_tap
{ai_stand, 0, NULL},
{ai_stand, 0, NULL},
{ai_stand, 0, parasite_tap},
{ai_stand, 0, NULL},
{ai_stand, 0, parasite_tap},
{ai_stand, 0, NULL},
{ai_stand, 0, NULL},
{ai_stand, 0, NULL},
{ai_stand, 0, parasite_tap},
{ai_stand, 0, NULL},
{ai_stand, 0, parasite_tap},
{ai_stand, 0, NULL},
{ai_stand, 0, NULL},
{ai_stand, 0, NULL},
{ai_stand, 0, parasite_tap},
{ai_stand, 0, NULL},
{ai_stand, 0, parasite_tap}
};
mmove_t parasite_move_stand = {FRAME_stand01, FRAME_stand17, parasite_frames_stand, parasite_stand};
@ -151,31 +151,31 @@ void parasite_stand (edict_t *self)
mframe_t parasite_frames_run [] =
{
ai_run, 30, NULL,
ai_run, 30, NULL,
ai_run, 22, NULL,
ai_run, 19, NULL,
ai_run, 24, NULL,
ai_run, 28, NULL,
ai_run, 25, NULL
{ai_run, 30, NULL},
{ai_run, 30, NULL},
{ai_run, 22, NULL},
{ai_run, 19, NULL},
{ai_run, 24, NULL},
{ai_run, 28, NULL},
{ai_run, 25, NULL}
};
mmove_t parasite_move_run = {FRAME_run03, FRAME_run09, parasite_frames_run, NULL};
mframe_t parasite_frames_start_run [] =
{
ai_run, 0, NULL,
ai_run, 30, NULL,
{ai_run, 0, NULL},
{ai_run, 30, NULL},
};
mmove_t parasite_move_start_run = {FRAME_run01, FRAME_run02, parasite_frames_start_run, parasite_run};
mframe_t parasite_frames_stop_run [] =
{
ai_run, 20, NULL,
ai_run, 20, NULL,
ai_run, 12, NULL,
ai_run, 10, NULL,
ai_run, 0, NULL,
ai_run, 0, NULL
{ai_run, 20, NULL},
{ai_run, 20, NULL},
{ai_run, 12, NULL},
{ai_run, 10, NULL},
{ai_run, 0, NULL},
{ai_run, 0, NULL}
};
mmove_t parasite_move_stop_run = {FRAME_run10, FRAME_run15, parasite_frames_stop_run, NULL};
@ -198,31 +198,31 @@ void parasite_run (edict_t *self)
mframe_t parasite_frames_walk [] =
{
ai_walk, 30, NULL,
ai_walk, 30, NULL,
ai_walk, 22, NULL,
ai_walk, 19, NULL,
ai_walk, 24, NULL,
ai_walk, 28, NULL,
ai_walk, 25, NULL
{ai_walk, 30, NULL},
{ai_walk, 30, NULL},
{ai_walk, 22, NULL},
{ai_walk, 19, NULL},
{ai_walk, 24, NULL},
{ai_walk, 28, NULL},
{ai_walk, 25, NULL}
};
mmove_t parasite_move_walk = {FRAME_run03, FRAME_run09, parasite_frames_walk, parasite_walk};
mframe_t parasite_frames_start_walk [] =
{
ai_walk, 0, NULL,
ai_walk, 30, parasite_walk
{ai_walk, 0, NULL},
{ai_walk, 30, parasite_walk}
};
mmove_t parasite_move_start_walk = {FRAME_run01, FRAME_run02, parasite_frames_start_walk, NULL};
mframe_t parasite_frames_stop_walk [] =
{
ai_walk, 20, NULL,
ai_walk, 20, NULL,
ai_walk, 12, NULL,
ai_walk, 10, NULL,
ai_walk, 0, NULL,
ai_walk, 0, NULL
{ai_walk, 20, NULL},
{ai_walk, 20, NULL},
{ai_walk, 12, NULL},
{ai_walk, 10, NULL},
{ai_walk, 0, NULL},
{ai_walk, 0, NULL}
};
mmove_t parasite_move_stop_walk = {FRAME_run10, FRAME_run15, parasite_frames_stop_walk, NULL};
@ -239,17 +239,17 @@ void parasite_walk (edict_t *self)
mframe_t parasite_frames_pain1 [] =
{
ai_move, 0, NULL,
ai_move, 0, NULL,
ai_move, 0, NULL,
ai_move, 0, NULL,
ai_move, 0, NULL,
ai_move, 0, NULL,
ai_move, 6, NULL,
ai_move, 16, NULL,
ai_move, -6, NULL,
ai_move, -7, NULL,
ai_move, 0, NULL
{ai_move, 0, NULL},
{ai_move, 0, NULL},
{ai_move, 0, NULL},
{ai_move, 0, NULL},
{ai_move, 0, NULL},
{ai_move, 0, NULL},
{ai_move, 6, NULL},
{ai_move, 16, NULL},
{ai_move, -6, NULL},
{ai_move, -7, NULL},
{ai_move, 0, NULL}
};
mmove_t parasite_move_pain1 = {FRAME_pain101, FRAME_pain111, parasite_frames_pain1, parasite_start_run};
@ -346,62 +346,62 @@ void parasite_drain_attack (edict_t *self)
mframe_t parasite_frames_drain [] =
{
ai_charge, 0, parasite_launch,
ai_charge, 0, NULL,
ai_charge, 15, parasite_drain_attack, // Target hits
ai_charge, 0, parasite_drain_attack, // drain
ai_charge, 0, parasite_drain_attack, // drain
ai_charge, 0, parasite_drain_attack, // drain
ai_charge, 0, parasite_drain_attack, // drain
ai_charge, -2, parasite_drain_attack, // drain
ai_charge, -2, parasite_drain_attack, // drain
ai_charge, -3, parasite_drain_attack, // drain
ai_charge, -2, parasite_drain_attack, // drain
ai_charge, 0, parasite_drain_attack, // drain
ai_charge, -1, parasite_drain_attack, // drain
ai_charge, 0, parasite_reel_in, // let go
ai_charge, -2, NULL,
ai_charge, -2, NULL,
ai_charge, -3, NULL,
ai_charge, 0, NULL
{ai_charge, 0, parasite_launch},
{ai_charge, 0, NULL},
{ai_charge, 15, parasite_drain_attack}, // Target hits
{ai_charge, 0, parasite_drain_attack}, // drain
{ai_charge, 0, parasite_drain_attack}, // drain
{ai_charge, 0, parasite_drain_attack}, // drain
{ai_charge, 0, parasite_drain_attack}, // drain
{ai_charge, -2, parasite_drain_attack}, // drain
{ai_charge, -2, parasite_drain_attack}, // drain
{ai_charge, -3, parasite_drain_attack}, // drain
{ai_charge, -2, parasite_drain_attack}, // drain
{ai_charge, 0, parasite_drain_attack}, // drain
{ai_charge, -1, parasite_drain_attack}, // drain
{ai_charge, 0, parasite_reel_in}, // let go
{ai_charge, -2, NULL},
{ai_charge, -2, NULL},
{ai_charge, -3, NULL},
{ai_charge, 0, NULL}
};
mmove_t parasite_move_drain = {FRAME_drain01, FRAME_drain18, parasite_frames_drain, parasite_start_run};
mframe_t parasite_frames_break [] =
{
ai_charge, 0, NULL,
ai_charge, -3, NULL,
ai_charge, 1, NULL,
ai_charge, 2, NULL,
ai_charge, -3, NULL,
ai_charge, 1, NULL,
ai_charge, 1, NULL,
ai_charge, 3, NULL,
ai_charge, 0, NULL,
ai_charge, -18, NULL,
ai_charge, 3, NULL,
ai_charge, 9, NULL,
ai_charge, 6, NULL,
ai_charge, 0, NULL,
ai_charge, -18, NULL,
ai_charge, 0, NULL,
ai_charge, 8, NULL,
ai_charge, 9, NULL,
ai_charge, 0, NULL,
ai_charge, -18, NULL,
ai_charge, 0, NULL,
ai_charge, 0, NULL, // airborne
ai_charge, 0, NULL, // airborne
ai_charge, 0, NULL, // slides
ai_charge, 0, NULL, // slides
ai_charge, 0, NULL, // slides
ai_charge, 0, NULL, // slides
ai_charge, 4, NULL,
ai_charge, 11, NULL,
ai_charge, -2, NULL,
ai_charge, -5, NULL,
ai_charge, 1, NULL
{ai_charge, 0, NULL},
{ai_charge, -3, NULL},
{ai_charge, 1, NULL},
{ai_charge, 2, NULL},
{ai_charge, -3, NULL},
{ai_charge, 1, NULL},
{ai_charge, 1, NULL},
{ai_charge, 3, NULL},
{ai_charge, 0, NULL},
{ai_charge, -18, NULL},
{ai_charge, 3, NULL},
{ai_charge, 9, NULL},
{ai_charge, 6, NULL},
{ai_charge, 0, NULL},
{ai_charge, -18, NULL},
{ai_charge, 0, NULL},
{ai_charge, 8, NULL},
{ai_charge, 9, NULL},
{ai_charge, 0, NULL},
{ai_charge, -18, NULL},
{ai_charge, 0, NULL},
{ai_charge, 0, NULL}, // airborne
{ai_charge, 0, NULL}, // airborne
{ai_charge, 0, NULL}, // slides
{ai_charge, 0, NULL}, // slides
{ai_charge, 0, NULL}, // slides
{ai_charge, 0, NULL}, // slides
{ai_charge, 4, NULL},
{ai_charge, 11, NULL},
{ai_charge, -2, NULL},
{ai_charge, -5, NULL},
{ai_charge, 1, NULL}
};
mmove_t parasite_move_break = {FRAME_break01, FRAME_break32, parasite_frames_break, parasite_start_run};
@ -413,9 +413,6 @@ Break Stuff Ends
void parasite_attack (edict_t *self)
{
// if (random() <= 0.2)
// self->monsterinfo.currentmove = &parasite_move_break;
// else
self->monsterinfo.currentmove = &parasite_move_drain;
}
@ -439,13 +436,13 @@ void parasite_dead (edict_t *self)
mframe_t parasite_frames_death [] =
{
ai_move, 0, NULL,
ai_move, 0, NULL,
ai_move, 0, NULL,
ai_move, 0, NULL,
ai_move, 0, NULL,
ai_move, 0, NULL,
ai_move, 0, NULL
{ai_move, 0, NULL},
{ai_move, 0, NULL},
{ai_move, 0, NULL},
{ai_move, 0, NULL},
{ai_move, 0, NULL},
{ai_move, 0, NULL},
{ai_move, 0, NULL}
};
mmove_t parasite_move_death = {FRAME_death101, FRAME_death107, parasite_frames_death, parasite_dead};
@ -453,7 +450,7 @@ void parasite_die (edict_t *self, edict_t *inflictor, edict_t *attacker, int dam
{
int n;
// check for gib
// check for gib
if (self->health <= self->gib_health)
{
gi.sound (self, CHAN_VOICE, gi.soundindex ("misc/udeath.wav"), 1, ATTN_NORM, 0);
@ -469,7 +466,7 @@ void parasite_die (edict_t *self, edict_t *inflictor, edict_t *attacker, int dam
if (self->deadflag == DEAD_DEAD)
return;
// regular death
// regular death
gi.sound (self, CHAN_VOICE, sound_die, 1, ATTN_NORM, 0);
self->deadflag = DEAD_DEAD;
self->takedamage = DAMAGE_YES;
@ -482,8 +479,16 @@ End Death Stuff
===
*/
void SP_monster_parasite_precache(void)
/*QUAKED monster_parasite (1 .5 0) (-16 -16 -24) (16 16 32) Ambush Trigger_Spawn Sight
*/
void SP_monster_parasite (edict_t *self)
{
if (deathmatch->value)
{
G_FreeEdict (self);
return;
}
sound_pain1 = gi.soundindex ("parasite/parpain1.wav");
sound_pain2 = gi.soundindex ("parasite/parpain2.wav");
sound_die = gi.soundindex ("parasite/pardeth1.wav");
@ -495,20 +500,6 @@ void SP_monster_parasite_precache(void)
sound_tap = gi.soundindex("parasite/paridle1.wav");
sound_scratch = gi.soundindex("parasite/paridle2.wav");
sound_search = gi.soundindex("parasite/parsrch1.wav");
}
/*QUAKED monster_parasite (1 .5 0) (-16 -16 -24) (16 16 32) Ambush Trigger_Spawn Sight
*/
void SP_monster_parasite (edict_t *self)
{
if (deathmatch->value)
{
G_FreeEdict (self);
return;
}
SP_monster_parasite_precache();
self->s.modelindex = gi.modelindex ("models/monsters/parasite/tris.md2");
VectorSet (self->mins, -16, -16, -24);
@ -537,3 +528,4 @@ void SP_monster_parasite (edict_t *self)
walkmonster_start (self);
}