mirror of
https://github.com/yquake2/zaero.git
synced 2024-11-21 19:41:07 +00:00
Mutant und Parasite
This commit is contained in:
parent
3d80fd35eb
commit
60af02fc6d
2 changed files with 146 additions and 153 deletions
|
@ -642,3 +642,4 @@ void SP_monster_mutant (edict_t *self)
|
|||
self->monsterinfo.scale = MODEL_SCALE;
|
||||
walkmonster_start (self);
|
||||
}
|
||||
|
||||
|
|
298
src/m_parasite.c
298
src/m_parasite.c
|
@ -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 = ¶site_move_break;
|
||||
// else
|
||||
self->monsterinfo.currentmove = ¶site_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);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue