Quake II RTX doxygen  1.0 dev
m_parasite.c File Reference
#include "g_local.h"
#include "m_parasite.h"

Go to the source code of this file.

Functions

void parasite_stand (edict_t *self)
 
void parasite_start_run (edict_t *self)
 
void parasite_run (edict_t *self)
 
void parasite_walk (edict_t *self)
 
void parasite_start_walk (edict_t *self)
 
void parasite_end_fidget (edict_t *self)
 
void parasite_do_fidget (edict_t *self)
 
void parasite_refidget (edict_t *self)
 
void parasite_launch (edict_t *self)
 
void parasite_reel_in (edict_t *self)
 
void parasite_sight (edict_t *self, edict_t *other)
 
void parasite_tap (edict_t *self)
 
void parasite_scratch (edict_t *self)
 
void parasite_search (edict_t *self)
 
void parasite_idle (edict_t *self)
 
void parasite_pain (edict_t *self, edict_t *other, float kick, int damage)
 
static qboolean parasite_drain_attack_ok (vec3_t start, vec3_t end)
 
void parasite_drain_attack (edict_t *self)
 
void parasite_attack (edict_t *self)
 
void parasite_dead (edict_t *self)
 
void parasite_die (edict_t *self, edict_t *inflictor, edict_t *attacker, int damage, vec3_t point)
 
void SP_monster_parasite (edict_t *self)
 

Variables

static int sound_pain1
 
static int sound_pain2
 
static int sound_die
 
static int sound_launch
 
static int sound_impact
 
static int sound_suck
 
static int sound_reelin
 
static int sound_sight
 
static int sound_tap
 
static int sound_scratch
 
static int sound_search
 
mframe_t parasite_frames_start_fidget []
 
mmove_t parasite_move_start_fidget = {FRAME_stand18, FRAME_stand21, parasite_frames_start_fidget, parasite_do_fidget}
 
mframe_t parasite_frames_fidget []
 
mmove_t parasite_move_fidget = {FRAME_stand22, FRAME_stand27, parasite_frames_fidget, parasite_refidget}
 
mframe_t parasite_frames_end_fidget []
 
mmove_t parasite_move_end_fidget = {FRAME_stand28, FRAME_stand35, parasite_frames_end_fidget, parasite_stand}
 
mframe_t parasite_frames_stand []
 
mmove_t parasite_move_stand = {FRAME_stand01, FRAME_stand17, parasite_frames_stand, parasite_stand}
 
mframe_t parasite_frames_run []
 
mmove_t parasite_move_run = {FRAME_run03, FRAME_run09, parasite_frames_run, NULL}
 
mframe_t parasite_frames_start_run []
 
mmove_t parasite_move_start_run = {FRAME_run01, FRAME_run02, parasite_frames_start_run, parasite_run}
 
mframe_t parasite_frames_stop_run []
 
mmove_t parasite_move_stop_run = {FRAME_run10, FRAME_run15, parasite_frames_stop_run, NULL}
 
mframe_t parasite_frames_walk []
 
mmove_t parasite_move_walk = {FRAME_run03, FRAME_run09, parasite_frames_walk, parasite_walk}
 
mframe_t parasite_frames_start_walk []
 
mmove_t parasite_move_start_walk = {FRAME_run01, FRAME_run02, parasite_frames_start_walk, NULL}
 
mframe_t parasite_frames_stop_walk []
 
mmove_t parasite_move_stop_walk = {FRAME_run10, FRAME_run15, parasite_frames_stop_walk, NULL}
 
mframe_t parasite_frames_pain1 []
 
mmove_t parasite_move_pain1 = {FRAME_pain101, FRAME_pain111, parasite_frames_pain1, parasite_start_run}
 
mframe_t parasite_frames_drain []
 
mmove_t parasite_move_drain = {FRAME_drain01, FRAME_drain18, parasite_frames_drain, parasite_start_run}
 
mframe_t parasite_frames_death []
 
mmove_t parasite_move_death = {FRAME_death101, FRAME_death107, parasite_frames_death, parasite_dead}
 

Function Documentation

◆ parasite_attack()

void parasite_attack ( edict_t *  self)

Definition at line 413 of file m_parasite.c.

414 {
415 // if (random() <= 0.2)
416 // self->monsterinfo.currentmove = &parasite_move_break;
417 // else
418  self->monsterinfo.currentmove = &parasite_move_drain;
419 }

Referenced by SP_monster_parasite().

◆ parasite_dead()

void parasite_dead ( edict_t *  self)

Definition at line 429 of file m_parasite.c.

430 {
431  VectorSet(self->mins, -16, -16, -24);
432  VectorSet(self->maxs, 16, 16, -8);
433  self->movetype = MOVETYPE_TOSS;
434  self->svflags |= SVF_DEADMONSTER;
435  self->nextthink = 0;
436  gi.linkentity(self);
437 }

◆ parasite_die()

void parasite_die ( edict_t *  self,
edict_t *  inflictor,
edict_t *  attacker,
int  damage,
vec3_t  point 
)

Definition at line 450 of file m_parasite.c.

451 {
452  int n;
453 
454 // check for gib
455  if (self->health <= self->gib_health) {
456  gi.sound(self, CHAN_VOICE, gi.soundindex("misc/udeath.wav"), 1, ATTN_NORM, 0);
457  for (n = 0; n < 2; n++)
458  ThrowGib(self, "models/objects/gibs/bone/tris.md2", damage, GIB_ORGANIC);
459  for (n = 0; n < 4; n++)
460  ThrowGib(self, "models/objects/gibs/sm_meat/tris.md2", damage, GIB_ORGANIC);
461  ThrowHead(self, "models/objects/gibs/head2/tris.md2", damage, GIB_ORGANIC);
462  self->deadflag = DEAD_DEAD;
463  return;
464  }
465 
466  if (self->deadflag == DEAD_DEAD)
467  return;
468 
469 // regular death
470  gi.sound(self, CHAN_VOICE, sound_die, 1, ATTN_NORM, 0);
471  self->deadflag = DEAD_DEAD;
472  self->takedamage = DAMAGE_YES;
473  self->monsterinfo.currentmove = &parasite_move_death;
474 }

Referenced by SP_monster_parasite().

◆ parasite_do_fidget()

void parasite_do_fidget ( edict_t *  self)

Definition at line 119 of file m_parasite.c.

120 {
121  self->monsterinfo.currentmove = &parasite_move_fidget;
122 }

◆ parasite_drain_attack()

void parasite_drain_attack ( edict_t *  self)

Definition at line 303 of file m_parasite.c.

304 {
305  vec3_t offset, start, f, r, end, dir;
306  trace_t tr;
307  int damage;
308 
309  AngleVectors(self->s.angles, f, r, NULL);
310  VectorSet(offset, 24, 0, 6);
311  G_ProjectSource(self->s.origin, offset, f, r, start);
312 
313  VectorCopy(self->enemy->s.origin, end);
314  if (!parasite_drain_attack_ok(start, end)) {
315  end[2] = self->enemy->s.origin[2] + self->enemy->maxs[2] - 8;
316  if (!parasite_drain_attack_ok(start, end)) {
317  end[2] = self->enemy->s.origin[2] + self->enemy->mins[2] + 8;
318  if (!parasite_drain_attack_ok(start, end))
319  return;
320  }
321  }
322  VectorCopy(self->enemy->s.origin, end);
323 
324  tr = gi.trace(start, NULL, NULL, end, self, MASK_SHOT);
325  if (tr.ent != self->enemy)
326  return;
327 
328  if (self->s.frame == FRAME_drain03) {
329  damage = 5;
330  gi.sound(self->enemy, CHAN_AUTO, sound_impact, 1, ATTN_NORM, 0);
331  } else {
332  if (self->s.frame == FRAME_drain04)
333  gi.sound(self, CHAN_WEAPON, sound_suck, 1, ATTN_NORM, 0);
334  damage = 2;
335  }
336 
337  gi.WriteByte(svc_temp_entity);
338  gi.WriteByte(TE_PARASITE_ATTACK);
339  gi.WriteShort(self - g_edicts);
340  gi.WritePosition(start);
341  gi.WritePosition(end);
342  gi.multicast(self->s.origin, MULTICAST_PVS);
343 
344  VectorSubtract(start, end, dir);
345  T_Damage(self->enemy, self, self, dir, self->enemy->s.origin, vec3_origin, damage, 0, DAMAGE_NO_KNOCKBACK, MOD_UNKNOWN);
346 }

◆ parasite_drain_attack_ok()

static qboolean parasite_drain_attack_ok ( vec3_t  start,
vec3_t  end 
)
static

Definition at line 284 of file m_parasite.c.

285 {
286  vec3_t dir, angles;
287 
288  // check for max distance
289  VectorSubtract(start, end, dir);
290  if (VectorLength(dir) > 256)
291  return qfalse;
292 
293  // check for min/max pitch
294  vectoangles(dir, angles);
295  if (angles[0] < -180)
296  angles[0] += 360;
297  if (fabs(angles[0]) > 30)
298  return qfalse;
299 
300  return qtrue;
301 }

Referenced by parasite_drain_attack().

◆ parasite_end_fidget()

void parasite_end_fidget ( edict_t *  self)

Definition at line 114 of file m_parasite.c.

115 {
116  self->monsterinfo.currentmove = &parasite_move_end_fidget;
117 }

◆ parasite_idle()

void parasite_idle ( edict_t *  self)

Definition at line 132 of file m_parasite.c.

133 {
134  self->monsterinfo.currentmove = &parasite_move_start_fidget;
135 }

Referenced by SP_monster_parasite().

◆ parasite_launch()

void parasite_launch ( edict_t *  self)

Definition at line 53 of file m_parasite.c.

54 {
55  gi.sound(self, CHAN_WEAPON, sound_launch, 1, ATTN_NORM, 0);
56 }

◆ parasite_pain()

void parasite_pain ( edict_t *  self,
edict_t *  other,
float  kick,
int  damage 
)

Definition at line 262 of file m_parasite.c.

263 {
264  if (self->health < (self->max_health / 2))
265  self->s.skinnum = 1;
266 
267  if (level.time < self->pain_debounce_time)
268  return;
269 
270  self->pain_debounce_time = level.time + 3;
271 
272  if (skill->value == 3)
273  return; // no pain anims in nightmare
274 
275  if (random() < 0.5)
276  gi.sound(self, CHAN_VOICE, sound_pain1, 1, ATTN_NORM, 0);
277  else
278  gi.sound(self, CHAN_VOICE, sound_pain2, 1, ATTN_NORM, 0);
279 
280  self->monsterinfo.currentmove = &parasite_move_pain1;
281 }

Referenced by SP_monster_parasite().

◆ parasite_reel_in()

void parasite_reel_in ( edict_t *  self)

Definition at line 58 of file m_parasite.c.

59 {
60  gi.sound(self, CHAN_WEAPON, sound_reelin, 1, ATTN_NORM, 0);
61 }

◆ parasite_refidget()

void parasite_refidget ( edict_t *  self)

Definition at line 124 of file m_parasite.c.

125 {
126  if (random() <= 0.8)
127  self->monsterinfo.currentmove = &parasite_move_fidget;
128  else
129  self->monsterinfo.currentmove = &parasite_move_end_fidget;
130 }

◆ parasite_run()

void parasite_run ( edict_t *  self)

Definition at line 200 of file m_parasite.c.

201 {
202  if (self->monsterinfo.aiflags & AI_STAND_GROUND)
203  self->monsterinfo.currentmove = &parasite_move_stand;
204  else
205  self->monsterinfo.currentmove = &parasite_move_run;
206 }

◆ parasite_scratch()

void parasite_scratch ( edict_t *  self)

Definition at line 73 of file m_parasite.c.

74 {
75  gi.sound(self, CHAN_WEAPON, sound_scratch, 1, ATTN_IDLE, 0);
76 }

◆ parasite_search()

void parasite_search ( edict_t *  self)

Definition at line 78 of file m_parasite.c.

79 {
80  gi.sound(self, CHAN_WEAPON, sound_search, 1, ATTN_IDLE, 0);
81 }

◆ parasite_sight()

void parasite_sight ( edict_t *  self,
edict_t *  other 
)

Definition at line 63 of file m_parasite.c.

64 {
65  gi.sound(self, CHAN_WEAPON, sound_sight, 1, ATTN_NORM, 0);
66 }

Referenced by SP_monster_parasite().

◆ parasite_stand()

void parasite_stand ( edict_t *  self)

Definition at line 159 of file m_parasite.c.

160 {
161  self->monsterinfo.currentmove = &parasite_move_stand;
162 }

Referenced by SP_monster_parasite().

◆ parasite_start_run()

void parasite_start_run ( edict_t *  self)

Definition at line 192 of file m_parasite.c.

193 {
194  if (self->monsterinfo.aiflags & AI_STAND_GROUND)
195  self->monsterinfo.currentmove = &parasite_move_stand;
196  else
197  self->monsterinfo.currentmove = &parasite_move_start_run;
198 }

Referenced by SP_monster_parasite().

◆ parasite_start_walk()

void parasite_start_walk ( edict_t *  self)

Definition at line 236 of file m_parasite.c.

237 {
238  self->monsterinfo.currentmove = &parasite_move_start_walk;
239 }

Referenced by SP_monster_parasite().

◆ parasite_tap()

void parasite_tap ( edict_t *  self)

Definition at line 68 of file m_parasite.c.

69 {
70  gi.sound(self, CHAN_WEAPON, sound_tap, 1, ATTN_IDLE, 0);
71 }

◆ parasite_walk()

void parasite_walk ( edict_t *  self)

Definition at line 241 of file m_parasite.c.

242 {
243  self->monsterinfo.currentmove = &parasite_move_walk;
244 }

◆ SP_monster_parasite()

void SP_monster_parasite ( edict_t *  self)

Definition at line 484 of file m_parasite.c.

485 {
486  if (deathmatch->value) {
487  G_FreeEdict(self);
488  return;
489  }
490 
491  sound_pain1 = gi.soundindex("parasite/parpain1.wav");
492  sound_pain2 = gi.soundindex("parasite/parpain2.wav");
493  sound_die = gi.soundindex("parasite/pardeth1.wav");
494  sound_launch = gi.soundindex("parasite/paratck1.wav");
495  sound_impact = gi.soundindex("parasite/paratck2.wav");
496  sound_suck = gi.soundindex("parasite/paratck3.wav");
497  sound_reelin = gi.soundindex("parasite/paratck4.wav");
498  sound_sight = gi.soundindex("parasite/parsght1.wav");
499  sound_tap = gi.soundindex("parasite/paridle1.wav");
500  sound_scratch = gi.soundindex("parasite/paridle2.wav");
501  sound_search = gi.soundindex("parasite/parsrch1.wav");
502 
503  self->s.modelindex = gi.modelindex("models/monsters/parasite/tris.md2");
504  VectorSet(self->mins, -16, -16, -24);
505  VectorSet(self->maxs, 16, 16, 24);
506  self->movetype = MOVETYPE_STEP;
507  self->solid = SOLID_BBOX;
508 
509  self->health = 175;
510  self->gib_health = -50;
511  self->mass = 250;
512 
513  self->pain = parasite_pain;
514  self->die = parasite_die;
515 
516  self->monsterinfo.stand = parasite_stand;
517  self->monsterinfo.walk = parasite_start_walk;
518  self->monsterinfo.run = parasite_start_run;
519  self->monsterinfo.attack = parasite_attack;
520  self->monsterinfo.sight = parasite_sight;
521  self->monsterinfo.idle = parasite_idle;
522 
523  gi.linkentity(self);
524 
525  self->monsterinfo.currentmove = &parasite_move_stand;
526  self->monsterinfo.scale = MODEL_SCALE;
527 
528  walkmonster_start(self);
529 }

Variable Documentation

◆ parasite_frames_death

mframe_t parasite_frames_death[]
Initial value:
= {
{ ai_move, 0, NULL },
{ ai_move, 0, NULL },
{ ai_move, 0, NULL },
{ ai_move, 0, NULL },
{ ai_move, 0, NULL },
{ ai_move, 0, NULL },
{ ai_move, 0, NULL }
}

Definition at line 439 of file m_parasite.c.

◆ parasite_frames_drain

mframe_t parasite_frames_drain[]

◆ parasite_frames_end_fidget

mframe_t parasite_frames_end_fidget[]
Initial value:
= {
{ 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 }
}

Definition at line 102 of file m_parasite.c.

◆ parasite_frames_fidget

mframe_t parasite_frames_fidget[]
Initial value:
= {
{ ai_stand, 0, NULL },
{ ai_stand, 0, NULL },
{ ai_stand, 0, NULL },
{ ai_stand, 0, NULL }
}

Definition at line 92 of file m_parasite.c.

◆ parasite_frames_pain1

mframe_t parasite_frames_pain1[]
Initial value:
= {
{ ai_move, 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 }
}

Definition at line 247 of file m_parasite.c.

◆ parasite_frames_run

mframe_t parasite_frames_run[]
Initial value:
= {
{ 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 }
}

Definition at line 165 of file m_parasite.c.

◆ parasite_frames_stand

mframe_t parasite_frames_stand[]
Initial value:
= {
{ ai_stand, 0, NULL },
{ ai_stand, 0, NULL },
{ ai_stand, 0, NULL },
{ ai_stand, 0, NULL },
{ ai_stand, 0, NULL },
{ ai_stand, 0, NULL },
{ ai_stand, 0, NULL },
{ ai_stand, 0, NULL },
{ ai_stand, 0, NULL },
{ ai_stand, 0, NULL },
{ ai_stand, 0, NULL },
}

Definition at line 138 of file m_parasite.c.

◆ parasite_frames_start_fidget

mframe_t parasite_frames_start_fidget[]
Initial value:
= {
{ ai_stand, 0, NULL },
{ ai_stand, 0, NULL },
{ ai_stand, 0, NULL },
{ ai_stand, 0, NULL }
}

Definition at line 84 of file m_parasite.c.

◆ parasite_frames_start_run

mframe_t parasite_frames_start_run[]
Initial value:
= {
{ ai_run, 0, NULL },
{ ai_run, 30, NULL },
}

Definition at line 176 of file m_parasite.c.

◆ parasite_frames_start_walk

mframe_t parasite_frames_start_walk[]
Initial value:
= {
{ ai_walk, 0, NULL },
}

Definition at line 220 of file m_parasite.c.

◆ parasite_frames_stop_run

mframe_t parasite_frames_stop_run[]
Initial value:
= {
{ ai_run, 20, NULL },
{ ai_run, 20, NULL },
{ ai_run, 12, NULL },
{ ai_run, 10, NULL },
{ ai_run, 0, NULL },
{ ai_run, 0, NULL }
}

Definition at line 182 of file m_parasite.c.

◆ parasite_frames_stop_walk

mframe_t parasite_frames_stop_walk[]
Initial value:
= {
{ ai_walk, 20, NULL },
{ ai_walk, 20, NULL },
{ ai_walk, 12, NULL },
{ ai_walk, 10, NULL },
{ ai_walk, 0, NULL },
{ ai_walk, 0, NULL }
}

Definition at line 226 of file m_parasite.c.

◆ parasite_frames_walk

mframe_t parasite_frames_walk[]
Initial value:
= {
{ 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 }
}

Definition at line 209 of file m_parasite.c.

◆ parasite_move_death

Definition at line 448 of file m_parasite.c.

Referenced by parasite_die().

◆ parasite_move_drain

Definition at line 368 of file m_parasite.c.

Referenced by parasite_attack().

◆ parasite_move_end_fidget

Definition at line 112 of file m_parasite.c.

Referenced by parasite_end_fidget(), and parasite_refidget().

◆ parasite_move_fidget

Definition at line 100 of file m_parasite.c.

Referenced by parasite_do_fidget(), and parasite_refidget().

◆ parasite_move_pain1

Definition at line 260 of file m_parasite.c.

Referenced by parasite_pain().

◆ parasite_move_run

mmove_t parasite_move_run = {FRAME_run03, FRAME_run09, parasite_frames_run, NULL}

Definition at line 174 of file m_parasite.c.

Referenced by parasite_run().

◆ parasite_move_stand

◆ parasite_move_start_fidget

Definition at line 90 of file m_parasite.c.

Referenced by parasite_idle().

◆ parasite_move_start_run

Definition at line 180 of file m_parasite.c.

Referenced by parasite_start_run().

◆ parasite_move_start_walk

mmove_t parasite_move_start_walk = {FRAME_run01, FRAME_run02, parasite_frames_start_walk, NULL}

Definition at line 224 of file m_parasite.c.

Referenced by parasite_start_walk().

◆ parasite_move_stop_run

mmove_t parasite_move_stop_run = {FRAME_run10, FRAME_run15, parasite_frames_stop_run, NULL}

Definition at line 190 of file m_parasite.c.

◆ parasite_move_stop_walk

mmove_t parasite_move_stop_walk = {FRAME_run10, FRAME_run15, parasite_frames_stop_walk, NULL}

Definition at line 234 of file m_parasite.c.

◆ parasite_move_walk

Definition at line 218 of file m_parasite.c.

Referenced by parasite_walk().

◆ sound_die

int sound_die
static

Definition at line 32 of file m_parasite.c.

Referenced by parasite_die(), and SP_monster_parasite().

◆ sound_impact

int sound_impact
static

Definition at line 34 of file m_parasite.c.

Referenced by parasite_drain_attack(), and SP_monster_parasite().

◆ sound_launch

int sound_launch
static

Definition at line 33 of file m_parasite.c.

Referenced by parasite_launch(), and SP_monster_parasite().

◆ sound_pain1

int sound_pain1
static

Definition at line 30 of file m_parasite.c.

Referenced by parasite_pain(), and SP_monster_parasite().

◆ sound_pain2

int sound_pain2
static

Definition at line 31 of file m_parasite.c.

Referenced by parasite_pain(), and SP_monster_parasite().

◆ sound_reelin

int sound_reelin
static

Definition at line 36 of file m_parasite.c.

Referenced by parasite_reel_in(), and SP_monster_parasite().

◆ sound_scratch

int sound_scratch
static

Definition at line 39 of file m_parasite.c.

Referenced by parasite_scratch(), and SP_monster_parasite().

◆ sound_search

int sound_search
static

Definition at line 40 of file m_parasite.c.

Referenced by parasite_search(), and SP_monster_parasite().

◆ sound_sight

int sound_sight
static

Definition at line 37 of file m_parasite.c.

Referenced by parasite_sight(), and SP_monster_parasite().

◆ sound_suck

int sound_suck
static

Definition at line 35 of file m_parasite.c.

Referenced by parasite_drain_attack(), and SP_monster_parasite().

◆ sound_tap

int sound_tap
static

Definition at line 38 of file m_parasite.c.

Referenced by parasite_tap(), and SP_monster_parasite().

parasite_walk
void parasite_walk(edict_t *self)
Definition: m_parasite.c:241
parasite_move_death
mmove_t parasite_move_death
Definition: m_parasite.c:448
gi
game_import_t gi
Definition: g_main.c:23
parasite_move_fidget
mmove_t parasite_move_fidget
Definition: m_parasite.c:100
deathmatch
cvar_t * deathmatch
Definition: g_main.c:33
G_ProjectSource
void G_ProjectSource(const vec3_t point, const vec3_t distance, const vec3_t forward, const vec3_t right, vec3_t result)
Definition: g_utils.c:23
DEAD_DEAD
#define DEAD_DEAD
Definition: g_local.h:112
parasite_scratch
void parasite_scratch(edict_t *self)
Definition: m_parasite.c:73
ThrowGib
void ThrowGib(edict_t *self, char *gibname, int damage, int type)
Definition: g_misc.c:130
sound_reelin
static int sound_reelin
Definition: m_parasite.c:36
ai_charge
void ai_charge(edict_t *self, float dist)
Definition: g_ai.c:175
parasite_idle
void parasite_idle(edict_t *self)
Definition: m_parasite.c:132
sound_pain2
static int sound_pain2
Definition: m_parasite.c:31
FRAME_drain04
#define FRAME_drain04
Definition: m_parasite.h:64
parasite_move_start_run
mmove_t parasite_move_start_run
Definition: m_parasite.c:180
AI_STAND_GROUND
#define AI_STAND_GROUND
Definition: g_local.h:126
sound_launch
static int sound_launch
Definition: m_parasite.c:33
MODEL_SCALE
#define MODEL_SCALE
Definition: m_actor.h:504
DAMAGE_YES
@ DAMAGE_YES
Definition: g_local.h:88
parasite_move_end_fidget
mmove_t parasite_move_end_fidget
Definition: m_parasite.c:112
sound_impact
static int sound_impact
Definition: m_parasite.c:34
parasite_sight
void parasite_sight(edict_t *self, edict_t *other)
Definition: m_parasite.c:63
g_edicts
edict_t * g_edicts
Definition: g_main.c:31
T_Damage
void T_Damage(edict_t *targ, edict_t *inflictor, edict_t *attacker, vec3_t dir, vec3_t point, vec3_t normal, int damage, int knockback, int dflags, int mod)
Definition: g_combat.c:358
walkmonster_start
void walkmonster_start(edict_t *self)
Definition: g_monster.c:630
MOVETYPE_STEP
@ MOVETYPE_STEP
Definition: g_local.h:192
DAMAGE_NO_KNOCKBACK
#define DAMAGE_NO_KNOCKBACK
Definition: g_local.h:650
FRAME_drain03
#define FRAME_drain03
Definition: m_parasite.h:63
parasite_reel_in
void parasite_reel_in(edict_t *self)
Definition: m_parasite.c:58
vec3_origin
vec3_t vec3_origin
Definition: shared.c:21
vectoangles
void vectoangles(vec3_t vec, vec3_t angles)
Definition: g_utils.c:330
G_FreeEdict
void G_FreeEdict(edict_t *e)
Definition: g_utils.c:421
parasite_move_drain
mmove_t parasite_move_drain
Definition: m_parasite.c:368
parasite_move_walk
mmove_t parasite_move_walk
Definition: m_parasite.c:218
svc_temp_entity
#define svc_temp_entity
Definition: g_local.h:38
parasite_launch
void parasite_launch(edict_t *self)
Definition: m_parasite.c:53
parasite_drain_attack
void parasite_drain_attack(edict_t *self)
Definition: m_parasite.c:303
sound_die
static int sound_die
Definition: m_parasite.c:32
parasite_attack
void parasite_attack(edict_t *self)
Definition: m_parasite.c:413
parasite_move_stand
mmove_t parasite_move_stand
Definition: m_parasite.c:157
sound_scratch
static int sound_scratch
Definition: m_parasite.c:39
ai_walk
void ai_walk(edict_t *self, float dist)
Definition: g_ai.c:148
random
#define random()
Definition: g_local.h:504
AngleVectors
void AngleVectors(vec3_t angles, vec3_t forward, vec3_t right, vec3_t up)
Definition: shared.c:23
sound_pain1
static int sound_pain1
Definition: m_parasite.c:30
sound_sight
static int sound_sight
Definition: m_parasite.c:37
parasite_stand
void parasite_stand(edict_t *self)
Definition: m_parasite.c:159
sound_tap
static int sound_tap
Definition: m_parasite.c:38
parasite_start_walk
void parasite_start_walk(edict_t *self)
Definition: m_parasite.c:236
skill
cvar_t * skill
Definition: g_main.c:36
parasite_drain_attack_ok
static qboolean parasite_drain_attack_ok(vec3_t start, vec3_t end)
Definition: m_parasite.c:284
ai_move
void ai_move(edict_t *self, float dist)
Definition: g_ai.c:86
level_locals_t::time
float time
Definition: g_local.h:299
parasite_tap
void parasite_tap(edict_t *self)
Definition: m_parasite.c:68
parasite_move_start_fidget
mmove_t parasite_move_start_fidget
Definition: m_parasite.c:90
ai_run
void ai_run(edict_t *self, float dist)
Definition: g_ai.c:821
GIB_ORGANIC
#define GIB_ORGANIC
Definition: g_local.h:122
level
level_locals_t level
Definition: g_main.c:22
MOD_UNKNOWN
#define MOD_UNKNOWN
Definition: g_local.h:457
ThrowHead
void ThrowHead(edict_t *self, char *gibname, int damage, int type)
Definition: g_misc.c:175
parasite_die
void parasite_die(edict_t *self, edict_t *inflictor, edict_t *attacker, int damage, vec3_t point)
Definition: m_parasite.c:450
MOVETYPE_TOSS
@ MOVETYPE_TOSS
Definition: g_local.h:194
parasite_move_pain1
mmove_t parasite_move_pain1
Definition: m_parasite.c:260
sound_search
static int sound_search
Definition: m_parasite.c:40
sound_suck
static int sound_suck
Definition: m_parasite.c:35
parasite_move_start_walk
mmove_t parasite_move_start_walk
Definition: m_parasite.c:224
parasite_move_run
mmove_t parasite_move_run
Definition: m_parasite.c:174
parasite_start_run
void parasite_start_run(edict_t *self)
Definition: m_parasite.c:192
ai_stand
void ai_stand(edict_t *self, float dist)
Definition: g_ai.c:100
parasite_pain
void parasite_pain(edict_t *self, edict_t *other, float kick, int damage)
Definition: m_parasite.c:262