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

Go to the source code of this file.

Macros

#define MAX_ACTOR_NAMES   8
 

Functions

void actor_stand (edict_t *self)
 
void actor_walk (edict_t *self)
 
void actor_run (edict_t *self)
 
void actor_pain (edict_t *self, edict_t *other, float kick, int damage)
 
void actorMachineGun (edict_t *self)
 
void actor_dead (edict_t *self)
 
void actor_die (edict_t *self, edict_t *inflictor, edict_t *attacker, int damage, vec3_t point)
 
void actor_fire (edict_t *self)
 
void actor_attack (edict_t *self)
 
void actor_use (edict_t *self, edict_t *other, edict_t *activator)
 
void SP_misc_actor (edict_t *self)
 
void target_actor_touch (edict_t *self, edict_t *other, cplane_t *plane, csurface_t *surf)
 
void SP_target_actor (edict_t *self)
 

Variables

char * actor_names [MAX_ACTOR_NAMES]
 
mframe_t actor_frames_stand []
 
mmove_t actor_move_stand = {FRAME_stand101, FRAME_stand140, actor_frames_stand, NULL}
 
mframe_t actor_frames_walk []
 
mmove_t actor_move_walk = {FRAME_walk01, FRAME_walk08, actor_frames_walk, NULL}
 
mframe_t actor_frames_run []
 
mmove_t actor_move_run = {FRAME_run02, FRAME_run07, actor_frames_run, NULL}
 
mframe_t actor_frames_pain1 []
 
mmove_t actor_move_pain1 = {FRAME_pain101, FRAME_pain103, actor_frames_pain1, actor_run}
 
mframe_t actor_frames_pain2 []
 
mmove_t actor_move_pain2 = {FRAME_pain201, FRAME_pain203, actor_frames_pain2, actor_run}
 
mframe_t actor_frames_pain3 []
 
mmove_t actor_move_pain3 = {FRAME_pain301, FRAME_pain303, actor_frames_pain3, actor_run}
 
mframe_t actor_frames_flipoff []
 
mmove_t actor_move_flipoff = {FRAME_flip01, FRAME_flip14, actor_frames_flipoff, actor_run}
 
mframe_t actor_frames_taunt []
 
mmove_t actor_move_taunt = {FRAME_taunt01, FRAME_taunt17, actor_frames_taunt, actor_run}
 
char * messages []
 
mframe_t actor_frames_death1 []
 
mmove_t actor_move_death1 = {FRAME_death101, FRAME_death107, actor_frames_death1, actor_dead}
 
mframe_t actor_frames_death2 []
 
mmove_t actor_move_death2 = {FRAME_death201, FRAME_death213, actor_frames_death2, actor_dead}
 
mframe_t actor_frames_attack []
 
mmove_t actor_move_attack = {FRAME_attak01, FRAME_attak04, actor_frames_attack, actor_run}
 

Macro Definition Documentation

◆ MAX_ACTOR_NAMES

#define MAX_ACTOR_NAMES   8

Definition at line 23 of file m_actor.c.

Function Documentation

◆ actor_attack()

void actor_attack ( edict_t *  self)

Definition at line 366 of file m_actor.c.

367 {
368  int n;
369 
370  self->monsterinfo.currentmove = &actor_move_attack;
371  n = (rand() & 15) + 3 + 7;
372  self->monsterinfo.pausetime = level.time + n * FRAMETIME;
373 }

Referenced by SP_misc_actor().

◆ actor_dead()

void actor_dead ( edict_t *  self)

Definition at line 278 of file m_actor.c.

279 {
280  VectorSet(self->mins, -16, -16, -24);
281  VectorSet(self->maxs, 16, 16, -8);
282  self->movetype = MOVETYPE_TOSS;
283  self->svflags |= SVF_DEADMONSTER;
284  self->nextthink = 0;
285  gi.linkentity(self);
286 }

◆ actor_die()

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

Definition at line 316 of file m_actor.c.

317 {
318  int n;
319 
320 // check for gib
321  if (self->health <= -80) {
322 // gi.sound (self, CHAN_VOICE, actor.sound_gib, 1, ATTN_NORM, 0);
323  for (n = 0; n < 2; n++)
324  ThrowGib(self, "models/objects/gibs/bone/tris.md2", damage, GIB_ORGANIC);
325  for (n = 0; n < 4; n++)
326  ThrowGib(self, "models/objects/gibs/sm_meat/tris.md2", damage, GIB_ORGANIC);
327  ThrowHead(self, "models/objects/gibs/head2/tris.md2", damage, GIB_ORGANIC);
328  self->deadflag = DEAD_DEAD;
329  return;
330  }
331 
332  if (self->deadflag == DEAD_DEAD)
333  return;
334 
335 // regular death
336 // gi.sound (self, CHAN_VOICE, actor.sound_die, 1, ATTN_NORM, 0);
337  self->deadflag = DEAD_DEAD;
338  self->takedamage = DAMAGE_YES;
339 
340  n = rand() % 2;
341  if (n == 0)
342  self->monsterinfo.currentmove = &actor_move_death1;
343  else
344  self->monsterinfo.currentmove = &actor_move_death2;
345 }

Referenced by SP_misc_actor().

◆ actor_fire()

void actor_fire ( edict_t *  self)

Definition at line 348 of file m_actor.c.

349 {
350  actorMachineGun(self);
351 
352  if (level.time >= self->monsterinfo.pausetime)
353  self->monsterinfo.aiflags &= ~AI_HOLD_FRAME;
354  else
355  self->monsterinfo.aiflags |= AI_HOLD_FRAME;
356 }

◆ actor_pain()

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

Definition at line 216 of file m_actor.c.

217 {
218  int n;
219 
220  if (self->health < (self->max_health / 2))
221  self->s.skinnum = 1;
222 
223  if (level.time < self->pain_debounce_time)
224  return;
225 
226  self->pain_debounce_time = level.time + 3;
227 // gi.sound (self, CHAN_VOICE, actor.sound_pain, 1, ATTN_NORM, 0);
228 
229  if ((other->client) && (random() < 0.4)) {
230  vec3_t v;
231  char *name;
232 
233  VectorSubtract(other->s.origin, self->s.origin, v);
234  self->ideal_yaw = vectoyaw(v);
235  if (random() < 0.5)
236  self->monsterinfo.currentmove = &actor_move_flipoff;
237  else
238  self->monsterinfo.currentmove = &actor_move_taunt;
239  name = actor_names[(self - g_edicts) % MAX_ACTOR_NAMES];
240  gi.cprintf(other, PRINT_CHAT, "%s: %s!\n", name, messages[rand() % 3]);
241  return;
242  }
243 
244  n = rand() % 3;
245  if (n == 0)
246  self->monsterinfo.currentmove = &actor_move_pain1;
247  else if (n == 1)
248  self->monsterinfo.currentmove = &actor_move_pain2;
249  else
250  self->monsterinfo.currentmove = &actor_move_pain3;
251 }

Referenced by SP_misc_actor().

◆ actor_run()

void actor_run ( edict_t *  self)

Definition at line 130 of file m_actor.c.

131 {
132  if ((level.time < self->pain_debounce_time) && (!self->enemy)) {
133  if (self->movetarget)
134  actor_walk(self);
135  else
136  actor_stand(self);
137  return;
138  }
139 
140  if (self->monsterinfo.aiflags & AI_STAND_GROUND) {
141  actor_stand(self);
142  return;
143  }
144 
145  self->monsterinfo.currentmove = &actor_move_run;
146 }

Referenced by SP_misc_actor(), and target_actor_touch().

◆ actor_stand()

void actor_stand ( edict_t *  self)

Definition at line 83 of file m_actor.c.

84 {
85  self->monsterinfo.currentmove = &actor_move_stand;
86 
87  // randomize on startup
88  if (level.time < 1.0)
89  self->s.frame = self->monsterinfo.currentmove->firstframe + (rand() % (self->monsterinfo.currentmove->lastframe - self->monsterinfo.currentmove->firstframe + 1));
90 }

Referenced by actor_run(), SP_misc_actor(), and target_actor_touch().

◆ actor_use()

void actor_use ( edict_t *  self,
edict_t *  other,
edict_t *  activator 
)

Definition at line 376 of file m_actor.c.

377 {
378  vec3_t v;
379 
380  self->goalentity = self->movetarget = G_PickTarget(self->target);
381  if ((!self->movetarget) || (strcmp(self->movetarget->classname, "target_actor") != 0)) {
382  gi.dprintf("%s has bad target %s at %s\n", self->classname, self->target, vtos(self->s.origin));
383  self->target = NULL;
384  self->monsterinfo.pausetime = 100000000;
385  self->monsterinfo.stand(self);
386  return;
387  }
388 
389  VectorSubtract(self->goalentity->s.origin, self->s.origin, v);
390  self->ideal_yaw = self->s.angles[YAW] = vectoyaw(v);
391  self->monsterinfo.walk(self);
392  self->target = NULL;
393 }

Referenced by SP_misc_actor().

◆ actor_walk()

void actor_walk ( edict_t *  self)

Definition at line 108 of file m_actor.c.

109 {
110  self->monsterinfo.currentmove = &actor_move_walk;
111 }

Referenced by actor_run(), and SP_misc_actor().

◆ actorMachineGun()

void actorMachineGun ( edict_t *  self)

Definition at line 254 of file m_actor.c.

255 {
256  vec3_t start, target;
257  vec3_t forward, right;
258 
259  AngleVectors(self->s.angles, forward, right, NULL);
260  G_ProjectSource(self->s.origin, monster_flash_offset[MZ2_ACTOR_MACHINEGUN_1], forward, right, start);
261  if (self->enemy) {
262  if (self->enemy->health > 0) {
263  VectorMA(self->enemy->s.origin, -0.2, self->enemy->velocity, target);
264  target[2] += self->enemy->viewheight;
265  } else {
266  VectorCopy(self->enemy->absmin, target);
267  target[2] += (self->enemy->size[2] / 2);
268  }
269  VectorSubtract(target, start, forward);
271  } else {
272  AngleVectors(self->s.angles, forward, NULL, NULL);
273  }
274  monster_fire_bullet(self, start, forward, 3, 4, DEFAULT_BULLET_HSPREAD, DEFAULT_BULLET_VSPREAD, MZ2_ACTOR_MACHINEGUN_1);
275 }

Referenced by actor_fire().

◆ SP_misc_actor()

void SP_misc_actor ( edict_t *  self)

Definition at line 399 of file m_actor.c.

400 {
401  if (deathmatch->value) {
402  G_FreeEdict(self);
403  return;
404  }
405 
406  if (!self->targetname) {
407  gi.dprintf("untargeted %s at %s\n", self->classname, vtos(self->s.origin));
408  G_FreeEdict(self);
409  return;
410  }
411 
412  if (!self->target) {
413  gi.dprintf("%s with no target at %s\n", self->classname, vtos(self->s.origin));
414  G_FreeEdict(self);
415  return;
416  }
417 
418  self->movetype = MOVETYPE_STEP;
419  self->solid = SOLID_BBOX;
420  self->s.modelindex = gi.modelindex("players/male/tris.md2");
421  VectorSet(self->mins, -16, -16, -24);
422  VectorSet(self->maxs, 16, 16, 32);
423 
424  if (!self->health)
425  self->health = 100;
426  self->mass = 200;
427 
428  self->pain = actor_pain;
429  self->die = actor_die;
430 
431  self->monsterinfo.stand = actor_stand;
432  self->monsterinfo.walk = actor_walk;
433  self->monsterinfo.run = actor_run;
434  self->monsterinfo.attack = actor_attack;
435  self->monsterinfo.melee = NULL;
436  self->monsterinfo.sight = NULL;
437 
438  self->monsterinfo.aiflags |= AI_GOOD_GUY;
439 
440  gi.linkentity(self);
441 
442  self->monsterinfo.currentmove = &actor_move_stand;
443  self->monsterinfo.scale = MODEL_SCALE;
444 
445  walkmonster_start(self);
446 
447  // actors always start in a dormant state, they *must* be used to get going
448  self->use = actor_use;
449 }

◆ SP_target_actor()

void SP_target_actor ( edict_t *  self)

Definition at line 541 of file m_actor.c.

542 {
543  if (!self->targetname)
544  gi.dprintf("%s with no targetname at %s\n", self->classname, vtos(self->s.origin));
545 
546  self->solid = SOLID_TRIGGER;
547  self->touch = target_actor_touch;
548  VectorSet(self->mins, -8, -8, -8);
549  VectorSet(self->maxs, 8, 8, 8);
550  self->svflags = SVF_NOCLIENT;
551 
552  if (self->spawnflags & 1) {
553  if (!self->speed)
554  self->speed = 200;
555  if (!st.height)
556  st.height = 200;
557  if (self->s.angles[YAW] == 0)
558  self->s.angles[YAW] = 360;
559  G_SetMovedir(self->s.angles, self->movedir);
560  self->movedir[2] = st.height;
561  }
562 
563  gi.linkentity(self);
564 }

◆ target_actor_touch()

void target_actor_touch ( edict_t *  self,
edict_t *  other,
cplane_t *  plane,
csurface_t *  surf 
)

Definition at line 467 of file m_actor.c.

468 {
469  vec3_t v;
470 
471  if (other->movetarget != self)
472  return;
473 
474  if (other->enemy)
475  return;
476 
477  other->goalentity = other->movetarget = NULL;
478 
479  if (self->message) {
480  int n;
481  edict_t *ent;
482 
483  for (n = 1; n <= game.maxclients; n++) {
484  ent = &g_edicts[n];
485  if (!ent->inuse)
486  continue;
487  gi.cprintf(ent, PRINT_CHAT, "%s: %s\n", actor_names[(other - g_edicts) % MAX_ACTOR_NAMES], self->message);
488  }
489  }
490 
491  if (self->spawnflags & 1) { //jump
492  other->velocity[0] = self->movedir[0] * self->speed;
493  other->velocity[1] = self->movedir[1] * self->speed;
494 
495  if (other->groundentity) {
496  other->groundentity = NULL;
497  other->velocity[2] = self->movedir[2];
498  gi.sound(other, CHAN_VOICE, gi.soundindex("player/male/jump1.wav"), 1, ATTN_NORM, 0);
499  }
500  }
501 
502  if (self->spawnflags & 2) { //shoot
503  } else if (self->spawnflags & 4) { //attack
504  other->enemy = G_PickTarget(self->pathtarget);
505  if (other->enemy) {
506  other->goalentity = other->enemy;
507  if (self->spawnflags & 32)
508  other->monsterinfo.aiflags |= AI_BRUTAL;
509  if (self->spawnflags & 16) {
510  other->monsterinfo.aiflags |= AI_STAND_GROUND;
512  } else {
513  actor_run(other);
514  }
515  }
516  }
517 
518  if (!(self->spawnflags & 6) && (self->pathtarget)) {
519  char *savetarget;
520 
521  savetarget = self->target;
522  self->target = self->pathtarget;
523  G_UseTargets(self, other);
524  self->target = savetarget;
525  }
526 
527  other->movetarget = G_PickTarget(self->target);
528 
529  if (!other->goalentity)
530  other->goalentity = other->movetarget;
531 
532  if (!other->movetarget && !other->enemy) {
533  other->monsterinfo.pausetime = level.time + 100000000;
534  other->monsterinfo.stand(other);
535  } else if (other->movetarget == other->goalentity) {
536  VectorSubtract(other->movetarget->s.origin, other->s.origin, v);
537  other->ideal_yaw = vectoyaw(v);
538  }
539 }

Referenced by SP_target_actor().

Variable Documentation

◆ actor_frames_attack

mframe_t actor_frames_attack[]
Initial value:
= {
{ ai_charge, -2, NULL },
{ ai_charge, 3, NULL },
{ ai_charge, 2, NULL }
}

Definition at line 358 of file m_actor.c.

◆ actor_frames_death1

mframe_t actor_frames_death1[]
Initial value:
= {
{ ai_move, 0, NULL },
{ ai_move, 0, NULL },
{ ai_move, -13, NULL },
{ ai_move, 14, NULL },
{ ai_move, 3, NULL },
{ ai_move, -2, NULL },
{ ai_move, 1, NULL }
}

Definition at line 288 of file m_actor.c.

◆ actor_frames_death2

mframe_t actor_frames_death2[]
Initial value:
= {
{ ai_move, 0, NULL },
{ ai_move, 7, NULL },
{ ai_move, -6, NULL },
{ ai_move, -5, NULL },
{ ai_move, 1, NULL },
{ ai_move, 0, NULL },
{ ai_move, -1, NULL },
{ ai_move, -2, NULL },
{ ai_move, -1, NULL },
{ ai_move, -9, NULL },
{ ai_move, -13, NULL },
{ ai_move, -13, NULL },
{ ai_move, 0, NULL }
}

Definition at line 299 of file m_actor.c.

◆ actor_frames_flipoff

mframe_t actor_frames_flipoff[]
Initial value:
= {
{ ai_turn, 0, NULL },
{ ai_turn, 0, NULL },
{ ai_turn, 0, NULL },
{ ai_turn, 0, NULL },
{ ai_turn, 0, NULL },
{ ai_turn, 0, NULL },
{ ai_turn, 0, NULL },
{ ai_turn, 0, NULL },
{ ai_turn, 0, NULL },
{ ai_turn, 0, NULL },
{ ai_turn, 0, NULL },
{ ai_turn, 0, NULL },
{ ai_turn, 0, NULL },
{ ai_turn, 0, NULL }
}

Definition at line 170 of file m_actor.c.

◆ actor_frames_pain1

mframe_t actor_frames_pain1[]
Initial value:
= {
{ ai_move, -5, NULL },
{ ai_move, 4, NULL },
{ ai_move, 1, NULL }
}

Definition at line 149 of file m_actor.c.

◆ actor_frames_pain2

mframe_t actor_frames_pain2[]
Initial value:
= {
{ ai_move, -4, NULL },
{ ai_move, 4, NULL },
{ ai_move, 0, NULL }
}

Definition at line 156 of file m_actor.c.

◆ actor_frames_pain3

mframe_t actor_frames_pain3[]
Initial value:
= {
{ ai_move, -1, NULL },
{ ai_move, 1, NULL },
{ ai_move, 0, NULL }
}

Definition at line 163 of file m_actor.c.

◆ actor_frames_run

mframe_t actor_frames_run[]
Initial value:
= {
{ ai_run, 4, NULL },
{ ai_run, 15, NULL },
{ ai_run, 15, NULL },
{ ai_run, 8, NULL },
{ ai_run, 20, NULL },
{ ai_run, 15, NULL },
{ ai_run, 8, NULL },
{ ai_run, 17, NULL },
{ ai_run, 12, NULL },
{ ai_run, -2, NULL },
{ ai_run, -2, NULL },
{ ai_run, -1, NULL }
}

Definition at line 114 of file m_actor.c.

◆ actor_frames_stand

mframe_t actor_frames_stand[]

Definition at line 36 of file m_actor.c.

◆ actor_frames_taunt

mframe_t actor_frames_taunt[]
Initial value:
= {
{ ai_turn, 0, NULL },
{ ai_turn, 0, NULL },
{ ai_turn, 0, NULL },
{ ai_turn, 0, NULL },
{ ai_turn, 0, NULL },
{ ai_turn, 0, NULL },
{ ai_turn, 0, NULL },
{ ai_turn, 0, NULL },
{ ai_turn, 0, NULL },
{ ai_turn, 0, NULL },
{ ai_turn, 0, NULL },
{ ai_turn, 0, NULL },
{ ai_turn, 0, NULL },
{ ai_turn, 0, NULL },
{ ai_turn, 0, NULL },
{ ai_turn, 0, NULL },
{ ai_turn, 0, NULL }
}

Definition at line 188 of file m_actor.c.

◆ actor_frames_walk

mframe_t actor_frames_walk[]
Initial value:
= {
{ ai_walk, 0, NULL },
{ ai_walk, 6, NULL },
{ ai_walk, 10, NULL },
{ ai_walk, 3, NULL },
{ ai_walk, 2, NULL },
{ ai_walk, 7, NULL },
{ ai_walk, 10, NULL },
{ ai_walk, 1, NULL },
{ ai_walk, 4, NULL },
{ ai_walk, 0, NULL },
{ ai_walk, 0, NULL }
}

Definition at line 93 of file m_actor.c.

◆ actor_move_attack

Definition at line 364 of file m_actor.c.

Referenced by actor_attack().

◆ actor_move_death1

Definition at line 297 of file m_actor.c.

Referenced by actor_die().

◆ actor_move_death2

Definition at line 314 of file m_actor.c.

Referenced by actor_die().

◆ actor_move_flipoff

Definition at line 186 of file m_actor.c.

Referenced by actor_pain().

◆ actor_move_pain1

Definition at line 154 of file m_actor.c.

Referenced by actor_pain().

◆ actor_move_pain2

Definition at line 161 of file m_actor.c.

Referenced by actor_pain().

◆ actor_move_pain3

Definition at line 168 of file m_actor.c.

Referenced by actor_pain().

◆ actor_move_run

mmove_t actor_move_run = {FRAME_run02, FRAME_run07, actor_frames_run, NULL}

Definition at line 128 of file m_actor.c.

Referenced by actor_run().

◆ actor_move_stand

Definition at line 81 of file m_actor.c.

Referenced by actor_stand(), and SP_misc_actor().

◆ actor_move_taunt

Definition at line 207 of file m_actor.c.

Referenced by actor_pain().

◆ actor_move_walk

mmove_t actor_move_walk = {FRAME_walk01, FRAME_walk08, actor_frames_walk, NULL}

Definition at line 106 of file m_actor.c.

Referenced by actor_walk().

◆ actor_names

char* actor_names[MAX_ACTOR_NAMES]
Initial value:
= {
"Hellrot",
"Tokay",
"Killme",
"Disruptor",
"Adrianator",
"Rambear",
"Titus",
"Bitterman"
}

Definition at line 24 of file m_actor.c.

Referenced by actor_pain(), and target_actor_touch().

◆ messages

char* messages[]
Initial value:
= {
"Watch it",
"#$@*&",
"Idiot",
"Check your targets"
}

Definition at line 209 of file m_actor.c.

Referenced by actor_pain().

gi
game_import_t gi
Definition: g_main.c:23
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
AI_BRUTAL
#define AI_BRUTAL
Definition: g_local.h:135
DEFAULT_BULLET_HSPREAD
#define DEFAULT_BULLET_HSPREAD
Definition: g_local.h:654
ThrowGib
void ThrowGib(edict_t *self, char *gibname, int damage, int type)
Definition: g_misc.c:130
ai_charge
void ai_charge(edict_t *self, float dist)
Definition: g_ai.c:175
AI_GOOD_GUY
#define AI_GOOD_GUY
Definition: g_local.h:134
actor_pain
void actor_pain(edict_t *self, edict_t *other, float kick, int damage)
Definition: m_actor.c:216
FRAMETIME
#define FRAMETIME
Definition: g_local.h:75
messages
char * messages[]
Definition: m_actor.c:209
st
spawn_temp_t st
Definition: g_main.c:25
actor_run
void actor_run(edict_t *self)
Definition: m_actor.c:130
actor_move_pain3
mmove_t actor_move_pain3
Definition: m_actor.c:168
actor_walk
void actor_walk(edict_t *self)
Definition: m_actor.c:108
actor_move_flipoff
mmove_t actor_move_flipoff
Definition: m_actor.c:186
mmove_t::frame
mframe_t * frame
Definition: g_local.h:403
actor_move_death2
mmove_t actor_move_death2
Definition: m_actor.c:314
AI_STAND_GROUND
#define AI_STAND_GROUND
Definition: g_local.h:126
actor_move_attack
mmove_t actor_move_attack
Definition: m_actor.c:364
MODEL_SCALE
#define MODEL_SCALE
Definition: m_actor.h:504
DAMAGE_YES
@ DAMAGE_YES
Definition: g_local.h:88
actor_move_run
mmove_t actor_move_run
Definition: m_actor.c:128
actor_attack
void actor_attack(edict_t *self)
Definition: m_actor.c:366
vectoyaw
float vectoyaw(vec3_t vec)
Definition: g_utils.c:310
actor_fire
void actor_fire(edict_t *self)
Definition: m_actor.c:348
g_edicts
edict_t * g_edicts
Definition: g_main.c:31
other
@ other
Definition: ogg.c:63
actor_move_pain2
mmove_t actor_move_pain2
Definition: m_actor.c:161
ai_turn
void ai_turn(edict_t *self, float dist)
Definition: g_ai.c:196
walkmonster_start
void walkmonster_start(edict_t *self)
Definition: g_monster.c:630
MOVETYPE_STEP
@ MOVETYPE_STEP
Definition: g_local.h:192
actor_names
char * actor_names[MAX_ACTOR_NAMES]
Definition: m_actor.c:24
DEFAULT_BULLET_VSPREAD
#define DEFAULT_BULLET_VSPREAD
Definition: g_local.h:655
spawn_temp_t::height
int height
Definition: g_local.h:351
G_FreeEdict
void G_FreeEdict(edict_t *e)
Definition: g_utils.c:421
actor_move_stand
mmove_t actor_move_stand
Definition: m_actor.c:81
forward
static vec3_t forward
Definition: p_view.c:27
actor_move_walk
mmove_t actor_move_walk
Definition: m_actor.c:106
AI_HOLD_FRAME
#define AI_HOLD_FRAME
Definition: g_local.h:133
actor_move_pain1
mmove_t actor_move_pain1
Definition: m_actor.c:154
actorMachineGun
void actorMachineGun(edict_t *self)
Definition: m_actor.c:254
actor_die
void actor_die(edict_t *self, edict_t *inflictor, edict_t *attacker, int damage, vec3_t point)
Definition: m_actor.c:316
vtos
char * vtos(vec3_t v)
Definition: g_utils.c:275
game
game_locals_t game
Definition: g_main.c:21
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
actor_use
void actor_use(edict_t *self, edict_t *other, edict_t *activator)
Definition: m_actor.c:376
actor_move_death1
mmove_t actor_move_death1
Definition: m_actor.c:297
monster_fire_bullet
void monster_fire_bullet(edict_t *self, vec3_t start, vec3_t dir, int damage, int kick, int hspread, int vspread, int flashtype)
Definition: g_monster.c:29
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
MAX_ACTOR_NAMES
#define MAX_ACTOR_NAMES
Definition: m_actor.c:23
right
static vec3_t right
Definition: p_view.c:27
ai_run
void ai_run(edict_t *self, float dist)
Definition: g_ai.c:821
G_UseTargets
void G_UseTargets(edict_t *ent, edict_t *activator)
Definition: g_utils.c:166
GIB_ORGANIC
#define GIB_ORGANIC
Definition: g_local.h:122
level
level_locals_t level
Definition: g_main.c:22
monster_flash_offset
const vec3_t monster_flash_offset[256]
Definition: m_flash.c:25
G_SetMovedir
void G_SetMovedir(vec3_t angles, vec3_t movedir)
Definition: g_utils.c:296
ThrowHead
void ThrowHead(edict_t *self, char *gibname, int damage, int type)
Definition: g_misc.c:175
MOVETYPE_TOSS
@ MOVETYPE_TOSS
Definition: g_local.h:194
actor_move_taunt
mmove_t actor_move_taunt
Definition: m_actor.c:207
G_PickTarget
edict_t * G_PickTarget(char *targetname)
Definition: g_utils.c:114
actor_stand
void actor_stand(edict_t *self)
Definition: m_actor.c:83
VectorNormalize
vec_t VectorNormalize(vec3_t v)
Definition: shared.c:55
target_actor_touch
void target_actor_touch(edict_t *self, edict_t *other, cplane_t *plane, csurface_t *surf)
Definition: m_actor.c:467
game_locals_t::maxclients
int maxclients
Definition: g_local.h:280