icculus quake2 doxygen  1.0 dev
g_spawn.c File Reference
#include "g_local.h"

Go to the source code of this file.

Classes

struct  spawn_t
 

Functions

void SP_item_health (edict_t *self)
 
void SP_item_health_small (edict_t *self)
 
void SP_item_health_large (edict_t *self)
 
void SP_item_health_mega (edict_t *self)
 
void SP_info_player_start (edict_t *ent)
 
void SP_info_player_deathmatch (edict_t *ent)
 
void SP_info_player_coop (edict_t *ent)
 
void SP_info_player_intermission (edict_t *ent)
 
void SP_func_plat (edict_t *ent)
 
void SP_func_rotating (edict_t *ent)
 
void SP_func_button (edict_t *ent)
 
void SP_func_door (edict_t *ent)
 
void SP_func_door_secret (edict_t *ent)
 
void SP_func_door_rotating (edict_t *ent)
 
void SP_func_water (edict_t *ent)
 
void SP_func_train (edict_t *ent)
 
void SP_func_conveyor (edict_t *self)
 
void SP_func_wall (edict_t *self)
 
void SP_func_object (edict_t *self)
 
void SP_func_explosive (edict_t *self)
 
void SP_func_timer (edict_t *self)
 
void SP_func_areaportal (edict_t *ent)
 
void SP_func_clock (edict_t *ent)
 
void SP_func_killbox (edict_t *ent)
 
void SP_trigger_always (edict_t *ent)
 
void SP_trigger_once (edict_t *ent)
 
void SP_trigger_multiple (edict_t *ent)
 
void SP_trigger_relay (edict_t *ent)
 
void SP_trigger_push (edict_t *ent)
 
void SP_trigger_hurt (edict_t *ent)
 
void SP_trigger_key (edict_t *ent)
 
void SP_trigger_counter (edict_t *ent)
 
void SP_trigger_elevator (edict_t *ent)
 
void SP_trigger_gravity (edict_t *ent)
 
void SP_trigger_monsterjump (edict_t *ent)
 
void SP_target_temp_entity (edict_t *ent)
 
void SP_target_speaker (edict_t *ent)
 
void SP_target_explosion (edict_t *ent)
 
void SP_target_changelevel (edict_t *ent)
 
void SP_target_secret (edict_t *ent)
 
void SP_target_goal (edict_t *ent)
 
void SP_target_splash (edict_t *ent)
 
void SP_target_spawner (edict_t *ent)
 
void SP_target_blaster (edict_t *ent)
 
void SP_target_crosslevel_trigger (edict_t *ent)
 
void SP_target_crosslevel_target (edict_t *ent)
 
void SP_target_laser (edict_t *self)
 
void SP_target_help (edict_t *ent)
 
void SP_target_actor (edict_t *ent)
 
void SP_target_lightramp (edict_t *self)
 
void SP_target_earthquake (edict_t *ent)
 
void SP_target_character (edict_t *ent)
 
void SP_target_string (edict_t *ent)
 
void SP_worldspawn (edict_t *ent)
 
void SP_viewthing (edict_t *ent)
 
void SP_light (edict_t *self)
 
void SP_light_mine1 (edict_t *ent)
 
void SP_light_mine2 (edict_t *ent)
 
void SP_info_null (edict_t *self)
 
void SP_info_notnull (edict_t *self)
 
void SP_path_corner (edict_t *self)
 
void SP_point_combat (edict_t *self)
 
void SP_misc_explobox (edict_t *self)
 
void SP_misc_banner (edict_t *self)
 
void SP_misc_satellite_dish (edict_t *self)
 
void SP_misc_actor (edict_t *self)
 
void SP_misc_gib_arm (edict_t *self)
 
void SP_misc_gib_leg (edict_t *self)
 
void SP_misc_gib_head (edict_t *self)
 
void SP_misc_insane (edict_t *self)
 
void SP_misc_deadsoldier (edict_t *self)
 
void SP_misc_viper (edict_t *self)
 
void SP_misc_viper_bomb (edict_t *self)
 
void SP_misc_bigviper (edict_t *self)
 
void SP_misc_strogg_ship (edict_t *self)
 
void SP_misc_teleporter (edict_t *self)
 
void SP_misc_teleporter_dest (edict_t *self)
 
void SP_misc_blackhole (edict_t *self)
 
void SP_misc_eastertank (edict_t *self)
 
void SP_misc_easterchick (edict_t *self)
 
void SP_misc_easterchick2 (edict_t *self)
 
void SP_monster_berserk (edict_t *self)
 
void SP_monster_gladiator (edict_t *self)
 
void SP_monster_gunner (edict_t *self)
 
void SP_monster_infantry (edict_t *self)
 
void SP_monster_soldier_light (edict_t *self)
 
void SP_monster_soldier (edict_t *self)
 
void SP_monster_soldier_ss (edict_t *self)
 
void SP_monster_tank (edict_t *self)
 
void SP_monster_medic (edict_t *self)
 
void SP_monster_flipper (edict_t *self)
 
void SP_monster_chick (edict_t *self)
 
void SP_monster_parasite (edict_t *self)
 
void SP_monster_flyer (edict_t *self)
 
void SP_monster_brain (edict_t *self)
 
void SP_monster_floater (edict_t *self)
 
void SP_monster_hover (edict_t *self)
 
void SP_monster_mutant (edict_t *self)
 
void SP_monster_supertank (edict_t *self)
 
void SP_monster_boss2 (edict_t *self)
 
void SP_monster_jorg (edict_t *self)
 
void SP_monster_boss3_stand (edict_t *self)
 
void SP_monster_commander_body (edict_t *self)
 
void SP_turret_breach (edict_t *self)
 
void SP_turret_base (edict_t *self)
 
void SP_turret_driver (edict_t *self)
 
void ED_CallSpawn (edict_t *ent)
 
char * ED_NewString (char *string)
 
void ED_ParseField (char *key, char *value, edict_t *ent)
 
char * ED_ParseEdict (char *data, edict_t *ent)
 
void G_FindTeams (void)
 
void SpawnEntities (char *mapname, char *entities, char *spawnpoint)
 

Variables

spawn_t spawns []
 
char * single_statusbar
 
char * dm_statusbar
 

Function Documentation

◆ ED_CallSpawn()

void ED_CallSpawn ( edict_t ent)

Definition at line 278 of file g_spawn.c.

279 {
280  spawn_t *s;
281  gitem_t *item;
282  int i;
283 
284  if (!ent->classname)
285  {
286  gi.dprintf ("ED_CallSpawn: NULL classname\n");
287  return;
288  }
289 
290  // check item spawn functions
291  for (i=0,item=itemlist ; i<game.num_items ; i++,item++)
292  {
293  if (!item->classname)
294  continue;
295  if (!strcmp(item->classname, ent->classname))
296  { // found it
297  SpawnItem (ent, item);
298  return;
299  }
300  }
301 
302  // check normal spawn functions
303  for (s=spawns ; s->name ; s++)
304  {
305  if (!strcmp(s->name, ent->classname))
306  { // found it
307  s->spawn (ent);
308  return;
309  }
310  }
311  gi.dprintf ("%s doesn't have a spawn function\n", ent->classname);
312 }

Referenced by medic_cable_attack(), SpawnEntities(), and use_target_spawner().

◆ ED_NewString()

char* ED_NewString ( char *  string)

Definition at line 319 of file g_spawn.c.

320 {
321  char *newb, *new_p;
322  int i,l;
323 
324  l = strlen(string) + 1;
325 
326  newb = gi.TagMalloc (l, TAG_LEVEL);
327 
328  new_p = newb;
329 
330  for (i=0 ; i< l ; i++)
331  {
332  if (string[i] == '\\' && i < l-1)
333  {
334  i++;
335  if (string[i] == 'n')
336  *new_p++ = '\n';
337  else
338  *new_p++ = '\\';
339  }
340  else
341  *new_p++ = string[i];
342  }
343 
344  return newb;
345 }

Referenced by ED_ParseField().

◆ ED_ParseEdict()

char* ED_ParseEdict ( char *  data,
edict_t ent 
)

Definition at line 416 of file g_spawn.c.

417 {
418  qboolean init;
419  char keyname[256];
420  char *com_token;
421 
422  init = false;
423  memset (&st, 0, sizeof(st));
424 
425 // go through all the dictionary pairs
426  while (1)
427  {
428  // parse key
429  com_token = COM_Parse (&data);
430  if (com_token[0] == '}')
431  break;
432  if (!data)
433  gi.error ("ED_ParseEntity: EOF without closing brace");
434 
435  strncpy (keyname, com_token, sizeof(keyname)-1);
436 
437  // parse value
438  com_token = COM_Parse (&data);
439  if (!data)
440  gi.error ("ED_ParseEntity: EOF without closing brace");
441 
442  if (com_token[0] == '}')
443  gi.error ("ED_ParseEntity: closing brace without data");
444 
445  init = true;
446 
447  // keynames with a leading underscore are used for utility comments,
448  // and are immediately discarded by quake
449  if (keyname[0] == '_')
450  continue;
451 
452  ED_ParseField (keyname, com_token, ent);
453  }
454 
455  if (!init)
456  memset (ent, 0, sizeof(*ent));
457 
458  return data;
459 }

Referenced by SpawnEntities().

◆ ED_ParseField()

void ED_ParseField ( char *  key,
char *  value,
edict_t ent 
)

Definition at line 358 of file g_spawn.c.

359 {
360  field_t *f;
361  byte *b;
362  float v;
363  vec3_t vec;
364 
365  for (f=fields ; f->name ; f++)
366  {
367  if (!(f->flags & FFL_NOSPAWN) && !Q_stricmp(f->name, key))
368  { // found it
369  if (f->flags & FFL_SPAWNTEMP)
370  b = (byte *)&st;
371  else
372  b = (byte *)ent;
373 
374  switch (f->type)
375  {
376  case F_LSTRING:
377  *(char **)(b+f->ofs) = ED_NewString (value);
378  break;
379  case F_VECTOR:
380  sscanf (value, "%f %f %f", &vec[0], &vec[1], &vec[2]);
381  ((float *)(b+f->ofs))[0] = vec[0];
382  ((float *)(b+f->ofs))[1] = vec[1];
383  ((float *)(b+f->ofs))[2] = vec[2];
384  break;
385  case F_INT:
386  *(int *)(b+f->ofs) = atoi(value);
387  break;
388  case F_FLOAT:
389  *(float *)(b+f->ofs) = atof(value);
390  break;
391  case F_ANGLEHACK:
392  v = atof(value);
393  ((float *)(b+f->ofs))[0] = 0;
394  ((float *)(b+f->ofs))[1] = v;
395  ((float *)(b+f->ofs))[2] = 0;
396  break;
397  case F_IGNORE:
398  break;
399  default:
400  break;
401  }
402  return;
403  }
404  }
405  gi.dprintf ("%s is not a field\n", key);
406 }

Referenced by ED_ParseEdict().

◆ G_FindTeams()

void G_FindTeams ( void  )

Definition at line 472 of file g_spawn.c.

473 {
474  edict_t *e, *e2, *chain;
475  int i, j;
476  int c, c2;
477 
478  c = 0;
479  c2 = 0;
480  for (i=1, e=g_edicts+i ; i < globals.num_edicts ; i++,e++)
481  {
482  if (!e->inuse)
483  continue;
484  if (!e->team)
485  continue;
486  if (e->flags & FL_TEAMSLAVE)
487  continue;
488  chain = e;
489  e->teammaster = e;
490  c++;
491  c2++;
492  for (j=i+1, e2=e+1 ; j < globals.num_edicts ; j++,e2++)
493  {
494  if (!e2->inuse)
495  continue;
496  if (!e2->team)
497  continue;
498  if (e2->flags & FL_TEAMSLAVE)
499  continue;
500  if (!strcmp(e->team, e2->team))
501  {
502  c2++;
503  chain->teamchain = e2;
504  e2->teammaster = e;
505  chain = e2;
506  e2->flags |= FL_TEAMSLAVE;
507  }
508  }
509  }
510 
511  gi.dprintf ("%i teams with %i entities\n", c, c2);
512 }

Referenced by SpawnEntities().

◆ SP_func_areaportal()

void SP_func_areaportal ( edict_t ent)

Definition at line 44 of file g_misc.c.

45 {
46  ent->use = Use_Areaportal;
47  ent->count = 0; // always start closed;
48 }

◆ SP_func_button()

void SP_func_button ( edict_t ent)

Definition at line 763 of file g_func.c.

764 {
765  vec3_t abs_movedir;
766  float dist;
767 
768  G_SetMovedir (ent->s.angles, ent->movedir);
769  ent->movetype = MOVETYPE_STOP;
770  ent->solid = SOLID_BSP;
771  gi.setmodel (ent, ent->model);
772 
773  if (ent->sounds != 1)
774  ent->moveinfo.sound_start = gi.soundindex ("switches/butn2.wav");
775 
776  if (!ent->speed)
777  ent->speed = 40;
778  if (!ent->accel)
779  ent->accel = ent->speed;
780  if (!ent->decel)
781  ent->decel = ent->speed;
782 
783  if (!ent->wait)
784  ent->wait = 3;
785  if (!st.lip)
786  st.lip = 4;
787 
788  VectorCopy (ent->s.origin, ent->pos1);
789  abs_movedir[0] = fabs(ent->movedir[0]);
790  abs_movedir[1] = fabs(ent->movedir[1]);
791  abs_movedir[2] = fabs(ent->movedir[2]);
792  dist = abs_movedir[0] * ent->size[0] + abs_movedir[1] * ent->size[1] + abs_movedir[2] * ent->size[2] - st.lip;
793  VectorMA (ent->pos1, dist, ent->movedir, ent->pos2);
794 
795  ent->use = button_use;
796  ent->s.effects |= EF_ANIM01;
797 
798  if (ent->health)
799  {
800  ent->max_health = ent->health;
801  ent->die = button_killed;
802  ent->takedamage = DAMAGE_YES;
803  }
804  else if (! ent->targetname)
805  ent->touch = button_touch;
806 
807  ent->moveinfo.state = STATE_BOTTOM;
808 
809  ent->moveinfo.speed = ent->speed;
810  ent->moveinfo.accel = ent->accel;
811  ent->moveinfo.decel = ent->decel;
812  ent->moveinfo.wait = ent->wait;
813  VectorCopy (ent->pos1, ent->moveinfo.start_origin);
814  VectorCopy (ent->s.angles, ent->moveinfo.start_angles);
815  VectorCopy (ent->pos2, ent->moveinfo.end_origin);
816  VectorCopy (ent->s.angles, ent->moveinfo.end_angles);
817 
818  gi.linkentity (ent);
819 }

◆ SP_func_clock()

void SP_func_clock ( edict_t ent)

Definition at line 1750 of file g_misc.c.

1751 {
1752  if (!self->target)
1753  {
1754  gi.dprintf("%s with no target at %s\n", self->classname, vtos(self->s.origin));
1755  G_FreeEdict (self);
1756  return;
1757  }
1758 
1759  if ((self->spawnflags & 2) && (!self->count))
1760  {
1761  gi.dprintf("%s with no count at %s\n", self->classname, vtos(self->s.origin));
1762  G_FreeEdict (self);
1763  return;
1764  }
1765 
1766  if ((self->spawnflags & 1) && (!self->count))
1767  self->count = 60*60;;
1768 
1769  func_clock_reset (self);
1770 
1771  self->message = gi.TagMalloc (CLOCK_MESSAGE_SIZE, TAG_LEVEL);
1772 
1773  self->think = func_clock_think;
1774 
1775  if (self->spawnflags & 4)
1776  self->use = func_clock_use;
1777  else
1778  self->nextthink = level.time + 1;
1779 }

◆ SP_func_conveyor()

void SP_func_conveyor ( edict_t self)

Definition at line 1842 of file g_func.c.

1843 {
1844  if (!self->speed)
1845  self->speed = 100;
1846 
1847  if (!(self->spawnflags & 1))
1848  {
1849  self->count = self->speed;
1850  self->speed = 0;
1851  }
1852 
1853  self->use = func_conveyor_use;
1854 
1855  gi.setmodel (self, self->model);
1856  self->solid = SOLID_BSP;
1857  gi.linkentity (self);
1858 }

◆ SP_func_door()

void SP_func_door ( edict_t ent)

Definition at line 1138 of file g_func.c.

1139 {
1140  vec3_t abs_movedir;
1141 
1142  if (ent->sounds != 1)
1143  {
1144  ent->moveinfo.sound_start = gi.soundindex ("doors/dr1_strt.wav");
1145  ent->moveinfo.sound_middle = gi.soundindex ("doors/dr1_mid.wav");
1146  ent->moveinfo.sound_end = gi.soundindex ("doors/dr1_end.wav");
1147  }
1148 
1149  G_SetMovedir (ent->s.angles, ent->movedir);
1150  ent->movetype = MOVETYPE_PUSH;
1151  ent->solid = SOLID_BSP;
1152  gi.setmodel (ent, ent->model);
1153 
1154  ent->blocked = door_blocked;
1155  ent->use = door_use;
1156 
1157  if (!ent->speed)
1158  ent->speed = 100;
1159  if (deathmatch->value)
1160  ent->speed *= 2;
1161 
1162  if (!ent->accel)
1163  ent->accel = ent->speed;
1164  if (!ent->decel)
1165  ent->decel = ent->speed;
1166 
1167  if (!ent->wait)
1168  ent->wait = 3;
1169  if (!st.lip)
1170  st.lip = 8;
1171  if (!ent->dmg)
1172  ent->dmg = 2;
1173 
1174  // calculate second position
1175  VectorCopy (ent->s.origin, ent->pos1);
1176  abs_movedir[0] = fabs(ent->movedir[0]);
1177  abs_movedir[1] = fabs(ent->movedir[1]);
1178  abs_movedir[2] = fabs(ent->movedir[2]);
1179  ent->moveinfo.distance = abs_movedir[0] * ent->size[0] + abs_movedir[1] * ent->size[1] + abs_movedir[2] * ent->size[2] - st.lip;
1180  VectorMA (ent->pos1, ent->moveinfo.distance, ent->movedir, ent->pos2);
1181 
1182  // if it starts open, switch the positions
1183  if (ent->spawnflags & DOOR_START_OPEN)
1184  {
1185  VectorCopy (ent->pos2, ent->s.origin);
1186  VectorCopy (ent->pos1, ent->pos2);
1187  VectorCopy (ent->s.origin, ent->pos1);
1188  }
1189 
1190  ent->moveinfo.state = STATE_BOTTOM;
1191 
1192  if (ent->health)
1193  {
1194  ent->takedamage = DAMAGE_YES;
1195  ent->die = door_killed;
1196  ent->max_health = ent->health;
1197  }
1198  else if (ent->targetname && ent->message)
1199  {
1200  gi.soundindex ("misc/talk.wav");
1201  ent->touch = door_touch;
1202  }
1203 
1204  ent->moveinfo.speed = ent->speed;
1205  ent->moveinfo.accel = ent->accel;
1206  ent->moveinfo.decel = ent->decel;
1207  ent->moveinfo.wait = ent->wait;
1208  VectorCopy (ent->pos1, ent->moveinfo.start_origin);
1209  VectorCopy (ent->s.angles, ent->moveinfo.start_angles);
1210  VectorCopy (ent->pos2, ent->moveinfo.end_origin);
1211  VectorCopy (ent->s.angles, ent->moveinfo.end_angles);
1212 
1213  if (ent->spawnflags & 16)
1214  ent->s.effects |= EF_ANIM_ALL;
1215  if (ent->spawnflags & 64)
1216  ent->s.effects |= EF_ANIM_ALLFAST;
1217 
1218  // to simplify logic elsewhere, make non-teamed doors into a team of one
1219  if (!ent->team)
1220  ent->teammaster = ent;
1221 
1222  gi.linkentity (ent);
1223 
1224  ent->nextthink = level.time + FRAMETIME;
1225  if (ent->health || ent->targetname)
1226  ent->think = Think_CalcMoveSpeed;
1227  else
1229 }

◆ SP_func_door_rotating()

void SP_func_door_rotating ( edict_t ent)

Definition at line 1261 of file g_func.c.

1262 {
1263  VectorClear (ent->s.angles);
1264 
1265  // set the axis of rotation
1266  VectorClear(ent->movedir);
1267  if (ent->spawnflags & DOOR_X_AXIS)
1268  ent->movedir[2] = 1.0;
1269  else if (ent->spawnflags & DOOR_Y_AXIS)
1270  ent->movedir[0] = 1.0;
1271  else // Z_AXIS
1272  ent->movedir[1] = 1.0;
1273 
1274  // check for reverse rotation
1275  if (ent->spawnflags & DOOR_REVERSE)
1276  VectorNegate (ent->movedir, ent->movedir);
1277 
1278  if (!st.distance)
1279  {
1280  gi.dprintf("%s at %s with no distance set\n", ent->classname, vtos(ent->s.origin));
1281  st.distance = 90;
1282  }
1283 
1284  VectorCopy (ent->s.angles, ent->pos1);
1285  VectorMA (ent->s.angles, st.distance, ent->movedir, ent->pos2);
1286  ent->moveinfo.distance = st.distance;
1287 
1288  ent->movetype = MOVETYPE_PUSH;
1289  ent->solid = SOLID_BSP;
1290  gi.setmodel (ent, ent->model);
1291 
1292  ent->blocked = door_blocked;
1293  ent->use = door_use;
1294 
1295  if (!ent->speed)
1296  ent->speed = 100;
1297  if (!ent->accel)
1298  ent->accel = ent->speed;
1299  if (!ent->decel)
1300  ent->decel = ent->speed;
1301 
1302  if (!ent->wait)
1303  ent->wait = 3;
1304  if (!ent->dmg)
1305  ent->dmg = 2;
1306 
1307  if (ent->sounds != 1)
1308  {
1309  ent->moveinfo.sound_start = gi.soundindex ("doors/dr1_strt.wav");
1310  ent->moveinfo.sound_middle = gi.soundindex ("doors/dr1_mid.wav");
1311  ent->moveinfo.sound_end = gi.soundindex ("doors/dr1_end.wav");
1312  }
1313 
1314  // if it starts open, switch the positions
1315  if (ent->spawnflags & DOOR_START_OPEN)
1316  {
1317  VectorCopy (ent->pos2, ent->s.angles);
1318  VectorCopy (ent->pos1, ent->pos2);
1319  VectorCopy (ent->s.angles, ent->pos1);
1320  VectorNegate (ent->movedir, ent->movedir);
1321  }
1322 
1323  if (ent->health)
1324  {
1325  ent->takedamage = DAMAGE_YES;
1326  ent->die = door_killed;
1327  ent->max_health = ent->health;
1328  }
1329 
1330  if (ent->targetname && ent->message)
1331  {
1332  gi.soundindex ("misc/talk.wav");
1333  ent->touch = door_touch;
1334  }
1335 
1336  ent->moveinfo.state = STATE_BOTTOM;
1337  ent->moveinfo.speed = ent->speed;
1338  ent->moveinfo.accel = ent->accel;
1339  ent->moveinfo.decel = ent->decel;
1340  ent->moveinfo.wait = ent->wait;
1341  VectorCopy (ent->s.origin, ent->moveinfo.start_origin);
1342  VectorCopy (ent->pos1, ent->moveinfo.start_angles);
1343  VectorCopy (ent->s.origin, ent->moveinfo.end_origin);
1344  VectorCopy (ent->pos2, ent->moveinfo.end_angles);
1345 
1346  if (ent->spawnflags & 16)
1347  ent->s.effects |= EF_ANIM_ALL;
1348 
1349  // to simplify logic elsewhere, make non-teamed doors into a team of one
1350  if (!ent->team)
1351  ent->teammaster = ent;
1352 
1353  gi.linkentity (ent);
1354 
1355  ent->nextthink = level.time + FRAMETIME;
1356  if (ent->health || ent->targetname)
1357  ent->think = Think_CalcMoveSpeed;
1358  else
1360 }

◆ SP_func_door_secret()

void SP_func_door_secret ( edict_t ent)

Definition at line 1966 of file g_func.c.

1967 {
1968  vec3_t forward, right, up;
1969  float side;
1970  float width;
1971  float length;
1972 
1973  ent->moveinfo.sound_start = gi.soundindex ("doors/dr1_strt.wav");
1974  ent->moveinfo.sound_middle = gi.soundindex ("doors/dr1_mid.wav");
1975  ent->moveinfo.sound_end = gi.soundindex ("doors/dr1_end.wav");
1976 
1977  ent->movetype = MOVETYPE_PUSH;
1978  ent->solid = SOLID_BSP;
1979  gi.setmodel (ent, ent->model);
1980 
1982  ent->use = door_secret_use;
1983 
1984  if (!(ent->targetname) || (ent->spawnflags & SECRET_ALWAYS_SHOOT))
1985  {
1986  ent->health = 0;
1987  ent->takedamage = DAMAGE_YES;
1988  ent->die = door_secret_die;
1989  }
1990 
1991  if (!ent->dmg)
1992  ent->dmg = 2;
1993 
1994  if (!ent->wait)
1995  ent->wait = 5;
1996 
1997  ent->moveinfo.accel =
1998  ent->moveinfo.decel =
1999  ent->moveinfo.speed = 50;
2000 
2001  // calculate positions
2002  AngleVectors (ent->s.angles, forward, right, up);
2003  VectorClear (ent->s.angles);
2004  side = 1.0 - (ent->spawnflags & SECRET_1ST_LEFT);
2005  if (ent->spawnflags & SECRET_1ST_DOWN)
2006  width = fabs(DotProduct(up, ent->size));
2007  else
2008  width = fabs(DotProduct(right, ent->size));
2009  length = fabs(DotProduct(forward, ent->size));
2010  if (ent->spawnflags & SECRET_1ST_DOWN)
2011  VectorMA (ent->s.origin, -1 * width, up, ent->pos1);
2012  else
2013  VectorMA (ent->s.origin, side * width, right, ent->pos1);
2014  VectorMA (ent->pos1, length, forward, ent->pos2);
2015 
2016  if (ent->health)
2017  {
2018  ent->takedamage = DAMAGE_YES;
2019  ent->die = door_killed;
2020  ent->max_health = ent->health;
2021  }
2022  else if (ent->targetname && ent->message)
2023  {
2024  gi.soundindex ("misc/talk.wav");
2025  ent->touch = door_touch;
2026  }
2027 
2028  ent->classname = "func_door";
2029 
2030  gi.linkentity (ent);
2031 }

◆ SP_func_explosive()

void SP_func_explosive ( edict_t self)

Definition at line 823 of file g_misc.c.

824 {
825  if (deathmatch->value)
826  { // auto-remove for deathmatch
827  G_FreeEdict (self);
828  return;
829  }
830 
831  self->movetype = MOVETYPE_PUSH;
832 
833  gi.modelindex ("models/objects/debris1/tris.md2");
834  gi.modelindex ("models/objects/debris2/tris.md2");
835 
836  gi.setmodel (self, self->model);
837 
838  if (self->spawnflags & 1)
839  {
840  self->svflags |= SVF_NOCLIENT;
841  self->solid = SOLID_NOT;
842  self->use = func_explosive_spawn;
843  }
844  else
845  {
846  self->solid = SOLID_BSP;
847  if (self->targetname)
848  self->use = func_explosive_use;
849  }
850 
851  if (self->spawnflags & 2)
852  self->s.effects |= EF_ANIM_ALL;
853  if (self->spawnflags & 4)
854  self->s.effects |= EF_ANIM_ALLFAST;
855 
856  if (self->use != func_explosive_use)
857  {
858  if (!self->health)
859  self->health = 100;
860  self->die = func_explosive_explode;
861  self->takedamage = DAMAGE_YES;
862  }
863 
864  gi.linkentity (self);
865 }

◆ SP_func_killbox()

void SP_func_killbox ( edict_t ent)

Definition at line 2042 of file g_func.c.

2043 {
2044  gi.setmodel (ent, ent->model);
2045  ent->use = use_killbox;
2046  ent->svflags = SVF_NOCLIENT;
2047 }

◆ SP_func_object()

void SP_func_object ( edict_t self)

Definition at line 692 of file g_misc.c.

693 {
694  gi.setmodel (self, self->model);
695 
696  self->mins[0] += 1;
697  self->mins[1] += 1;
698  self->mins[2] += 1;
699  self->maxs[0] -= 1;
700  self->maxs[1] -= 1;
701  self->maxs[2] -= 1;
702 
703  if (!self->dmg)
704  self->dmg = 100;
705 
706  if (self->spawnflags == 0)
707  {
708  self->solid = SOLID_BSP;
709  self->movetype = MOVETYPE_PUSH;
710  self->think = func_object_release;
711  self->nextthink = level.time + 2 * FRAMETIME;
712  }
713  else
714  {
715  self->solid = SOLID_NOT;
716  self->movetype = MOVETYPE_PUSH;
717  self->use = func_object_use;
718  self->svflags |= SVF_NOCLIENT;
719  }
720 
721  if (self->spawnflags & 2)
722  self->s.effects |= EF_ANIM_ALL;
723  if (self->spawnflags & 4)
724  self->s.effects |= EF_ANIM_ALLFAST;
725 
726  self->clipmask = MASK_MONSTERSOLID;
727 
728  gi.linkentity (self);
729 }

◆ SP_func_plat()

void SP_func_plat ( edict_t ent)

Definition at line 513 of file g_func.c.

514 {
515  VectorClear (ent->s.angles);
516  ent->solid = SOLID_BSP;
517  ent->movetype = MOVETYPE_PUSH;
518 
519  gi.setmodel (ent, ent->model);
520 
521  ent->blocked = plat_blocked;
522 
523  if (!ent->speed)
524  ent->speed = 20;
525  else
526  ent->speed *= 0.1;
527 
528  if (!ent->accel)
529  ent->accel = 5;
530  else
531  ent->accel *= 0.1;
532 
533  if (!ent->decel)
534  ent->decel = 5;
535  else
536  ent->decel *= 0.1;
537 
538  if (!ent->dmg)
539  ent->dmg = 2;
540 
541  if (!st.lip)
542  st.lip = 8;
543 
544  // pos1 is the top position, pos2 is the bottom
545  VectorCopy (ent->s.origin, ent->pos1);
546  VectorCopy (ent->s.origin, ent->pos2);
547  if (st.height)
548  ent->pos2[2] -= st.height;
549  else
550  ent->pos2[2] -= (ent->maxs[2] - ent->mins[2]) - st.lip;
551 
552  ent->use = Use_Plat;
553 
554  plat_spawn_inside_trigger (ent); // the "start moving" trigger
555 
556  if (ent->targetname)
557  {
558  ent->moveinfo.state = STATE_UP;
559  }
560  else
561  {
562  VectorCopy (ent->pos2, ent->s.origin);
563  gi.linkentity (ent);
564  ent->moveinfo.state = STATE_BOTTOM;
565  }
566 
567  ent->moveinfo.speed = ent->speed;
568  ent->moveinfo.accel = ent->accel;
569  ent->moveinfo.decel = ent->decel;
570  ent->moveinfo.wait = ent->wait;
571  VectorCopy (ent->pos1, ent->moveinfo.start_origin);
572  VectorCopy (ent->s.angles, ent->moveinfo.start_angles);
573  VectorCopy (ent->pos2, ent->moveinfo.end_origin);
574  VectorCopy (ent->s.angles, ent->moveinfo.end_angles);
575 
576  ent->moveinfo.sound_start = gi.soundindex ("plats/pt1_strt.wav");
577  ent->moveinfo.sound_middle = gi.soundindex ("plats/pt1_mid.wav");
578  ent->moveinfo.sound_end = gi.soundindex ("plats/pt1_end.wav");
579 }

◆ SP_func_rotating()

void SP_func_rotating ( edict_t ent)

Definition at line 623 of file g_func.c.

624 {
625  ent->solid = SOLID_BSP;
626  if (ent->spawnflags & 32)
627  ent->movetype = MOVETYPE_STOP;
628  else
629  ent->movetype = MOVETYPE_PUSH;
630 
631  // set the axis of rotation
632  VectorClear(ent->movedir);
633  if (ent->spawnflags & 4)
634  ent->movedir[2] = 1.0;
635  else if (ent->spawnflags & 8)
636  ent->movedir[0] = 1.0;
637  else // Z_AXIS
638  ent->movedir[1] = 1.0;
639 
640  // check for reverse rotation
641  if (ent->spawnflags & 2)
642  VectorNegate (ent->movedir, ent->movedir);
643 
644  if (!ent->speed)
645  ent->speed = 100;
646  if (!ent->dmg)
647  ent->dmg = 2;
648 
649 // ent->moveinfo.sound_middle = "doors/hydro1.wav";
650 
651  ent->use = rotating_use;
652  if (ent->dmg)
653  ent->blocked = rotating_blocked;
654 
655  if (ent->spawnflags & 1)
656  ent->use (ent, NULL, NULL);
657 
658  if (ent->spawnflags & 64)
659  ent->s.effects |= EF_ANIM_ALL;
660  if (ent->spawnflags & 128)
661  ent->s.effects |= EF_ANIM_ALLFAST;
662 
663  gi.setmodel (ent, ent->model);
664  gi.linkentity (ent);
665 }

◆ SP_func_timer()

void SP_func_timer ( edict_t self)

Definition at line 1795 of file g_func.c.

1796 {
1797  if (!self->wait)
1798  self->wait = 1.0;
1799 
1800  self->use = func_timer_use;
1801  self->think = func_timer_think;
1802 
1803  if (self->random >= self->wait)
1804  {
1805  self->random = self->wait - FRAMETIME;
1806  gi.dprintf("func_timer at %s has random >= wait\n", vtos(self->s.origin));
1807  }
1808 
1809  if (self->spawnflags & 1)
1810  {
1811  self->nextthink = level.time + 1.0 + st.pausetime + self->delay + self->wait + crandom() * self->random;
1812  self->activator = self;
1813  }
1814 
1815  self->svflags = SVF_NOCLIENT;
1816 }

◆ SP_func_train()

void SP_func_train ( edict_t ent)

Definition at line 1654 of file g_func.c.

1655 {
1656  self->movetype = MOVETYPE_PUSH;
1657 
1658  VectorClear (self->s.angles);
1659  self->blocked = train_blocked;
1660  if (self->spawnflags & TRAIN_BLOCK_STOPS)
1661  self->dmg = 0;
1662  else
1663  {
1664  if (!self->dmg)
1665  self->dmg = 100;
1666  }
1667  self->solid = SOLID_BSP;
1668  gi.setmodel (self, self->model);
1669 
1670  if (st.noise)
1671  self->moveinfo.sound_middle = gi.soundindex (st.noise);
1672 
1673  if (!self->speed)
1674  self->speed = 100;
1675 
1676  self->moveinfo.speed = self->speed;
1677  self->moveinfo.accel = self->moveinfo.decel = self->moveinfo.speed;
1678 
1679  self->use = train_use;
1680 
1681  gi.linkentity (self);
1682 
1683  if (self->target)
1684  {
1685  // start trains on the second frame, to make sure their targets have had
1686  // a chance to spawn
1687  self->nextthink = level.time + FRAMETIME;
1688  self->think = func_train_find;
1689  }
1690  else
1691  {
1692  gi.dprintf ("func_train without a target at %s\n", vtos(self->absmin));
1693  }
1694 }

◆ SP_func_wall()

void SP_func_wall ( edict_t self)

Definition at line 612 of file g_misc.c.

613 {
614  self->movetype = MOVETYPE_PUSH;
615  gi.setmodel (self, self->model);
616 
617  if (self->spawnflags & 8)
618  self->s.effects |= EF_ANIM_ALL;
619  if (self->spawnflags & 16)
620  self->s.effects |= EF_ANIM_ALLFAST;
621 
622  // just a wall
623  if ((self->spawnflags & 7) == 0)
624  {
625  self->solid = SOLID_BSP;
626  gi.linkentity (self);
627  return;
628  }
629 
630  // it must be TRIGGER_SPAWN
631  if (!(self->spawnflags & 1))
632  {
633 // gi.dprintf("func_wall missing TRIGGER_SPAWN\n");
634  self->spawnflags |= 1;
635  }
636 
637  // yell if the spawnflags are odd
638  if (self->spawnflags & 4)
639  {
640  if (!(self->spawnflags & 2))
641  {
642  gi.dprintf("func_wall START_ON without TOGGLE\n");
643  self->spawnflags |= 2;
644  }
645  }
646 
647  self->use = func_wall_use;
648  if (self->spawnflags & 4)
649  {
650  self->solid = SOLID_BSP;
651  }
652  else
653  {
654  self->solid = SOLID_NOT;
655  self->svflags |= SVF_NOCLIENT;
656  }
657  gi.linkentity (self);
658 }

◆ SP_func_water()

void SP_func_water ( edict_t ent)

Definition at line 1378 of file g_func.c.

1379 {
1380  vec3_t abs_movedir;
1381 
1382  G_SetMovedir (self->s.angles, self->movedir);
1383  self->movetype = MOVETYPE_PUSH;
1384  self->solid = SOLID_BSP;
1385  gi.setmodel (self, self->model);
1386 
1387  switch (self->sounds)
1388  {
1389  default:
1390  break;
1391 
1392  case 1: // water
1393  self->moveinfo.sound_start = gi.soundindex ("world/mov_watr.wav");
1394  self->moveinfo.sound_end = gi.soundindex ("world/stp_watr.wav");
1395  break;
1396 
1397  case 2: // lava
1398  self->moveinfo.sound_start = gi.soundindex ("world/mov_watr.wav");
1399  self->moveinfo.sound_end = gi.soundindex ("world/stp_watr.wav");
1400  break;
1401  }
1402 
1403  // calculate second position
1404  VectorCopy (self->s.origin, self->pos1);
1405  abs_movedir[0] = fabs(self->movedir[0]);
1406  abs_movedir[1] = fabs(self->movedir[1]);
1407  abs_movedir[2] = fabs(self->movedir[2]);
1408  self->moveinfo.distance = abs_movedir[0] * self->size[0] + abs_movedir[1] * self->size[1] + abs_movedir[2] * self->size[2] - st.lip;
1409  VectorMA (self->pos1, self->moveinfo.distance, self->movedir, self->pos2);
1410 
1411  // if it starts open, switch the positions
1412  if (self->spawnflags & DOOR_START_OPEN)
1413  {
1414  VectorCopy (self->pos2, self->s.origin);
1415  VectorCopy (self->pos1, self->pos2);
1416  VectorCopy (self->s.origin, self->pos1);
1417  }
1418 
1419  VectorCopy (self->pos1, self->moveinfo.start_origin);
1420  VectorCopy (self->s.angles, self->moveinfo.start_angles);
1421  VectorCopy (self->pos2, self->moveinfo.end_origin);
1422  VectorCopy (self->s.angles, self->moveinfo.end_angles);
1423 
1424  self->moveinfo.state = STATE_BOTTOM;
1425 
1426  if (!self->speed)
1427  self->speed = 25;
1428  self->moveinfo.accel = self->moveinfo.decel = self->moveinfo.speed = self->speed;
1429 
1430  if (!self->wait)
1431  self->wait = -1;
1432  self->moveinfo.wait = self->wait;
1433 
1434  self->use = door_use;
1435 
1436  if (self->wait == -1)
1437  self->spawnflags |= DOOR_TOGGLE;
1438 
1439  self->classname = "func_door";
1440 
1441  gi.linkentity (self);
1442 }

◆ SP_info_notnull()

void SP_info_notnull ( edict_t self)

Definition at line 528 of file g_misc.c.

529 {
530  VectorCopy (self->s.origin, self->absmin);
531  VectorCopy (self->s.origin, self->absmax);
532 }

◆ SP_info_null()

void SP_info_null ( edict_t self)

Definition at line 519 of file g_misc.c.

520 {
521  G_FreeEdict (self);
522 }

◆ SP_info_player_coop()

void SP_info_player_coop ( edict_t ent)

Definition at line 137 of file p_client.c.

138 {
139  if (!coop->value)
140  {
141  G_FreeEdict (self);
142  return;
143  }
144 
145  if((Q_stricmp(level.mapname, "jail2") == 0) ||
146  (Q_stricmp(level.mapname, "jail4") == 0) ||
147  (Q_stricmp(level.mapname, "mine1") == 0) ||
148  (Q_stricmp(level.mapname, "mine2") == 0) ||
149  (Q_stricmp(level.mapname, "mine3") == 0) ||
150  (Q_stricmp(level.mapname, "mine4") == 0) ||
151  (Q_stricmp(level.mapname, "lab") == 0) ||
152  (Q_stricmp(level.mapname, "boss1") == 0) ||
153  (Q_stricmp(level.mapname, "fact3") == 0) ||
154  (Q_stricmp(level.mapname, "biggun") == 0) ||
155  (Q_stricmp(level.mapname, "space") == 0) ||
156  (Q_stricmp(level.mapname, "command") == 0) ||
157  (Q_stricmp(level.mapname, "power2") == 0) ||
158  (Q_stricmp(level.mapname, "strike") == 0))
159  {
160  // invoke one of our gross, ugly, disgusting hacks
161  self->think = SP_FixCoopSpots;
162  self->nextthink = level.time + FRAMETIME;
163  }
164 }

◆ SP_info_player_deathmatch()

void SP_info_player_deathmatch ( edict_t ent)

Definition at line 123 of file p_client.c.

124 {
125  if (!deathmatch->value)
126  {
127  G_FreeEdict (self);
128  return;
129  }
131 }

◆ SP_info_player_intermission()

void SP_info_player_intermission ( edict_t ent)

◆ SP_info_player_start()

void SP_info_player_start ( edict_t ent)

Definition at line 108 of file p_client.c.

109 {
110  if (!coop->value)
111  return;
112  if(Q_stricmp(level.mapname, "security") == 0)
113  {
114  // invoke one of our gross, ugly, disgusting hacks
115  self->think = SP_CreateCoopSpots;
116  self->nextthink = level.time + FRAMETIME;
117  }
118 }

◆ SP_item_health()

void SP_item_health ( edict_t self)

Definition at line 2121 of file g_items.c.

2122 {
2123  if ( deathmatch->value && ((int)dmflags->value & DF_NO_HEALTH) )
2124  {
2125  G_FreeEdict (self);
2126  return;
2127  }
2128 
2129  self->model = "models/items/healing/medium/tris.md2";
2130  self->count = 10;
2131  SpawnItem (self, FindItem ("Health"));
2132  gi.soundindex ("items/n_health.wav");
2133 }

◆ SP_item_health_large()

void SP_item_health_large ( edict_t self)

Definition at line 2154 of file g_items.c.

2155 {
2156  if ( deathmatch->value && ((int)dmflags->value & DF_NO_HEALTH) )
2157  {
2158  G_FreeEdict (self);
2159  return;
2160  }
2161 
2162  self->model = "models/items/healing/large/tris.md2";
2163  self->count = 25;
2164  SpawnItem (self, FindItem ("Health"));
2165  gi.soundindex ("items/l_health.wav");
2166 }

◆ SP_item_health_mega()

void SP_item_health_mega ( edict_t self)

Definition at line 2170 of file g_items.c.

2171 {
2172  if ( deathmatch->value && ((int)dmflags->value & DF_NO_HEALTH) )
2173  {
2174  G_FreeEdict (self);
2175  return;
2176  }
2177 
2178  self->model = "models/items/mega_h/tris.md2";
2179  self->count = 100;
2180  SpawnItem (self, FindItem ("Health"));
2181  gi.soundindex ("items/m_health.wav");
2182  self->style = HEALTH_IGNORE_MAX|HEALTH_TIMED;
2183 }

◆ SP_item_health_small()

void SP_item_health_small ( edict_t self)

Definition at line 2137 of file g_items.c.

2138 {
2139  if ( deathmatch->value && ((int)dmflags->value & DF_NO_HEALTH) )
2140  {
2141  G_FreeEdict (self);
2142  return;
2143  }
2144 
2145  self->model = "models/items/healing/stimpack/tris.md2";
2146  self->count = 2;
2147  SpawnItem (self, FindItem ("Health"));
2148  self->style = HEALTH_IGNORE_MAX;
2149  gi.soundindex ("items/s_health.wav");
2150 }

◆ SP_light()

void SP_light ( edict_t self)

Definition at line 559 of file g_misc.c.

560 {
561  // no targeted lights in deathmatch, because they cause global messages
562  if (!self->targetname || deathmatch->value)
563  {
564  G_FreeEdict (self);
565  return;
566  }
567 
568  if (self->style >= 32)
569  {
570  self->use = light_use;
571  if (self->spawnflags & START_OFF)
572  gi.configstring (CS_LIGHTS+self->style, "a");
573  else
574  gi.configstring (CS_LIGHTS+self->style, "m");
575  }
576 }

◆ SP_light_mine1()

void SP_light_mine1 ( edict_t ent)

Definition at line 1473 of file g_misc.c.

1474 {
1475  ent->movetype = MOVETYPE_NONE;
1476  ent->solid = SOLID_BBOX;
1477  ent->s.modelindex = gi.modelindex ("models/objects/minelite/light1/tris.md2");
1478  gi.linkentity (ent);
1479 }

◆ SP_light_mine2()

void SP_light_mine2 ( edict_t ent)

Definition at line 1484 of file g_misc.c.

1485 {
1486  ent->movetype = MOVETYPE_NONE;
1487  ent->solid = SOLID_BBOX;
1488  ent->s.modelindex = gi.modelindex ("models/objects/minelite/light2/tris.md2");
1489  gi.linkentity (ent);
1490 }

◆ SP_misc_actor()

void SP_misc_actor ( edict_t self)

Definition at line 425 of file m_actor.c.

426 {
427  if (deathmatch->value)
428  {
429  G_FreeEdict (self);
430  return;
431  }
432 
433  if (!self->targetname)
434  {
435  gi.dprintf("untargeted %s at %s\n", self->classname, vtos(self->s.origin));
436  G_FreeEdict (self);
437  return;
438  }
439 
440  if (!self->target)
441  {
442  gi.dprintf("%s with no target at %s\n", self->classname, vtos(self->s.origin));
443  G_FreeEdict (self);
444  return;
445  }
446 
447  self->movetype = MOVETYPE_STEP;
448  self->solid = SOLID_BBOX;
449  self->s.modelindex = gi.modelindex("players/male/tris.md2");
450  VectorSet (self->mins, -16, -16, -24);
451  VectorSet (self->maxs, 16, 16, 32);
452 
453  if (!self->health)
454  self->health = 100;
455  self->mass = 200;
456 
457  self->pain = actor_pain;
458  self->die = actor_die;
459 
460  self->monsterinfo.stand = actor_stand;
461  self->monsterinfo.walk = actor_walk;
462  self->monsterinfo.run = actor_run;
463  self->monsterinfo.attack = actor_attack;
464  self->monsterinfo.melee = NULL;
465  self->monsterinfo.sight = NULL;
466 
467  self->monsterinfo.aiflags |= AI_GOOD_GUY;
468 
469  gi.linkentity (self);
470 
471  self->monsterinfo.currentmove = &actor_move_stand;
472  self->monsterinfo.scale = MODEL_SCALE;
473 
474  walkmonster_start (self);
475 
476  // actors always start in a dormant state, they *must* be used to get going
477  self->use = actor_use;
478 }

◆ SP_misc_banner()

void SP_misc_banner ( edict_t self)

Definition at line 1202 of file g_misc.c.

1203 {
1204  ent->movetype = MOVETYPE_NONE;
1205  ent->solid = SOLID_NOT;
1206  ent->s.modelindex = gi.modelindex ("models/objects/banner/tris.md2");
1207  ent->s.frame = rand() % 16;
1208  gi.linkentity (ent);
1209 
1210  ent->think = misc_banner_think;
1211  ent->nextthink = level.time + FRAMETIME;
1212 }

◆ SP_misc_bigviper()

void SP_misc_bigviper ( edict_t self)

Definition at line 1316 of file g_misc.c.

1317 {
1318  ent->movetype = MOVETYPE_NONE;
1319  ent->solid = SOLID_BBOX;
1320  VectorSet (ent->mins, -176, -120, -24);
1321  VectorSet (ent->maxs, 176, 120, 72);
1322  ent->s.modelindex = gi.modelindex ("models/ships/bigviper/tris.md2");
1323  gi.linkentity (ent);
1324 }

◆ SP_misc_blackhole()

void SP_misc_blackhole ( edict_t self)

Definition at line 1043 of file g_misc.c.

1044 {
1045  ent->movetype = MOVETYPE_NONE;
1046  ent->solid = SOLID_NOT;
1047  VectorSet (ent->mins, -64, -64, 0);
1048  VectorSet (ent->maxs, 64, 64, 8);
1049  ent->s.modelindex = gi.modelindex ("models/objects/black/tris.md2");
1050  ent->s.renderfx = RF_TRANSLUCENT;
1051  ent->use = misc_blackhole_use;
1052  ent->think = misc_blackhole_think;
1053  ent->nextthink = level.time + 2 * FRAMETIME;
1054  gi.linkentity (ent);
1055 }

◆ SP_misc_deadsoldier()

void SP_misc_deadsoldier ( edict_t self)

Definition at line 1230 of file g_misc.c.

1231 {
1232  if (deathmatch->value)
1233  { // auto-remove for deathmatch
1234  G_FreeEdict (ent);
1235  return;
1236  }
1237 
1238  ent->movetype = MOVETYPE_NONE;
1239  ent->solid = SOLID_BBOX;
1240  ent->s.modelindex=gi.modelindex ("models/deadbods/dude/tris.md2");
1241 
1242  // Defaults to frame 0
1243  if (ent->spawnflags & 2)
1244  ent->s.frame = 1;
1245  else if (ent->spawnflags & 4)
1246  ent->s.frame = 2;
1247  else if (ent->spawnflags & 8)
1248  ent->s.frame = 3;
1249  else if (ent->spawnflags & 16)
1250  ent->s.frame = 4;
1251  else if (ent->spawnflags & 32)
1252  ent->s.frame = 5;
1253  else
1254  ent->s.frame = 0;
1255 
1256  VectorSet (ent->mins, -16, -16, 0);
1257  VectorSet (ent->maxs, 16, 16, 16);
1258  ent->deadflag = DEAD_DEAD;
1259  ent->takedamage = DAMAGE_YES;
1260  ent->svflags |= SVF_MONSTER|SVF_DEADMONSTER;
1261  ent->die = misc_deadsoldier_die;
1262  ent->monsterinfo.aiflags |= AI_GOOD_GUY;
1263 
1264  gi.linkentity (ent);
1265 }

◆ SP_misc_easterchick()

void SP_misc_easterchick ( edict_t self)

Definition at line 1099 of file g_misc.c.

1100 {
1101  ent->movetype = MOVETYPE_NONE;
1102  ent->solid = SOLID_BBOX;
1103  VectorSet (ent->mins, -32, -32, 0);
1104  VectorSet (ent->maxs, 32, 32, 32);
1105  ent->s.modelindex = gi.modelindex ("models/monsters/bitch/tris.md2");
1106  ent->s.frame = 208;
1107  ent->think = misc_easterchick_think;
1108  ent->nextthink = level.time + 2 * FRAMETIME;
1109  gi.linkentity (ent);
1110 }

◆ SP_misc_easterchick2()

void SP_misc_easterchick2 ( edict_t self)

Definition at line 1127 of file g_misc.c.

1128 {
1129  ent->movetype = MOVETYPE_NONE;
1130  ent->solid = SOLID_BBOX;
1131  VectorSet (ent->mins, -32, -32, 0);
1132  VectorSet (ent->maxs, 32, 32, 32);
1133  ent->s.modelindex = gi.modelindex ("models/monsters/bitch/tris.md2");
1134  ent->s.frame = 248;
1135  ent->think = misc_easterchick2_think;
1136  ent->nextthink = level.time + 2 * FRAMETIME;
1137  gi.linkentity (ent);
1138 }

◆ SP_misc_eastertank()

void SP_misc_eastertank ( edict_t self)

Definition at line 1071 of file g_misc.c.

1072 {
1073  ent->movetype = MOVETYPE_NONE;
1074  ent->solid = SOLID_BBOX;
1075  VectorSet (ent->mins, -32, -32, -16);
1076  VectorSet (ent->maxs, 32, 32, 32);
1077  ent->s.modelindex = gi.modelindex ("models/monsters/tank/tris.md2");
1078  ent->s.frame = 254;
1079  ent->think = misc_eastertank_think;
1080  ent->nextthink = level.time + 2 * FRAMETIME;
1081  gi.linkentity (ent);
1082 }

◆ SP_misc_explobox()

void SP_misc_explobox ( edict_t self)

Definition at line 974 of file g_misc.c.

975 {
976  if (deathmatch->value)
977  { // auto-remove for deathmatch
978  G_FreeEdict (self);
979  return;
980  }
981 
982  gi.modelindex ("models/objects/debris1/tris.md2");
983  gi.modelindex ("models/objects/debris2/tris.md2");
984  gi.modelindex ("models/objects/debris3/tris.md2");
985 
986  self->solid = SOLID_BBOX;
987  self->movetype = MOVETYPE_STEP;
988 
989  self->model = "models/objects/barrels/tris.md2";
990  self->s.modelindex = gi.modelindex (self->model);
991  VectorSet (self->mins, -16, -16, 0);
992  VectorSet (self->maxs, 16, 16, 40);
993 
994  if (!self->mass)
995  self->mass = 400;
996  if (!self->health)
997  self->health = 10;
998  if (!self->dmg)
999  self->dmg = 150;
1000 
1001  self->die = barrel_delay;
1002  self->takedamage = DAMAGE_YES;
1003  self->monsterinfo.aiflags = AI_NOSTEP;
1004 
1005  self->touch = barrel_touch;
1006 
1007  self->think = M_droptofloor;
1008  self->nextthink = level.time + 2 * FRAMETIME;
1009 
1010  gi.linkentity (self);
1011 }

◆ SP_misc_gib_arm()

void SP_misc_gib_arm ( edict_t self)

Definition at line 1496 of file g_misc.c.

1497 {
1498  gi.setmodel (ent, "models/objects/gibs/arm/tris.md2");
1499  ent->solid = SOLID_NOT;
1500  ent->s.effects |= EF_GIB;
1501  ent->takedamage = DAMAGE_YES;
1502  ent->die = gib_die;
1503  ent->movetype = MOVETYPE_TOSS;
1504  ent->svflags |= SVF_MONSTER;
1505  ent->deadflag = DEAD_DEAD;
1506  ent->avelocity[0] = random()*200;
1507  ent->avelocity[1] = random()*200;
1508  ent->avelocity[2] = random()*200;
1509  ent->think = G_FreeEdict;
1510  ent->nextthink = level.time + 30;
1511  gi.linkentity (ent);
1512 }

◆ SP_misc_gib_head()

void SP_misc_gib_head ( edict_t self)

Definition at line 1538 of file g_misc.c.

1539 {
1540  gi.setmodel (ent, "models/objects/gibs/head/tris.md2");
1541  ent->solid = SOLID_NOT;
1542  ent->s.effects |= EF_GIB;
1543  ent->takedamage = DAMAGE_YES;
1544  ent->die = gib_die;
1545  ent->movetype = MOVETYPE_TOSS;
1546  ent->svflags |= SVF_MONSTER;
1547  ent->deadflag = DEAD_DEAD;
1548  ent->avelocity[0] = random()*200;
1549  ent->avelocity[1] = random()*200;
1550  ent->avelocity[2] = random()*200;
1551  ent->think = G_FreeEdict;
1552  ent->nextthink = level.time + 30;
1553  gi.linkentity (ent);
1554 }

◆ SP_misc_gib_leg()

void SP_misc_gib_leg ( edict_t self)

Definition at line 1517 of file g_misc.c.

1518 {
1519  gi.setmodel (ent, "models/objects/gibs/leg/tris.md2");
1520  ent->solid = SOLID_NOT;
1521  ent->s.effects |= EF_GIB;
1522  ent->takedamage = DAMAGE_YES;
1523  ent->die = gib_die;
1524  ent->movetype = MOVETYPE_TOSS;
1525  ent->svflags |= SVF_MONSTER;
1526  ent->deadflag = DEAD_DEAD;
1527  ent->avelocity[0] = random()*200;
1528  ent->avelocity[1] = random()*200;
1529  ent->avelocity[2] = random()*200;
1530  ent->think = G_FreeEdict;
1531  ent->nextthink = level.time + 30;
1532  gi.linkentity (ent);
1533 }

◆ SP_misc_insane()

void SP_misc_insane ( edict_t self)

Definition at line 623 of file m_insane.c.

624 {
625 // static int skin = 0; //@@
626 
627  if (deathmatch->value)
628  {
629  G_FreeEdict (self);
630  return;
631  }
632 
633  sound_fist = gi.soundindex ("insane/insane11.wav");
634  sound_shake = gi.soundindex ("insane/insane5.wav");
635  sound_moan = gi.soundindex ("insane/insane7.wav");
636  sound_scream[0] = gi.soundindex ("insane/insane1.wav");
637  sound_scream[1] = gi.soundindex ("insane/insane2.wav");
638  sound_scream[2] = gi.soundindex ("insane/insane3.wav");
639  sound_scream[3] = gi.soundindex ("insane/insane4.wav");
640  sound_scream[4] = gi.soundindex ("insane/insane6.wav");
641  sound_scream[5] = gi.soundindex ("insane/insane8.wav");
642  sound_scream[6] = gi.soundindex ("insane/insane9.wav");
643  sound_scream[7] = gi.soundindex ("insane/insane10.wav");
644 
645  self->movetype = MOVETYPE_STEP;
646  self->solid = SOLID_BBOX;
647  self->s.modelindex = gi.modelindex("models/monsters/insane/tris.md2");
648 
649  VectorSet (self->mins, -16, -16, -24);
650  VectorSet (self->maxs, 16, 16, 32);
651 
652  self->health = 100;
653  self->gib_health = -50;
654  self->mass = 300;
655 
656  self->pain = insane_pain;
657  self->die = insane_die;
658 
659  self->monsterinfo.stand = insane_stand;
660  self->monsterinfo.walk = insane_walk;
661  self->monsterinfo.run = insane_run;
662  self->monsterinfo.dodge = NULL;
663  self->monsterinfo.attack = NULL;
664  self->monsterinfo.melee = NULL;
665  self->monsterinfo.sight = NULL;
666  self->monsterinfo.aiflags |= AI_GOOD_GUY;
667 
668 //@@
669 // self->s.skinnum = skin;
670 // skin++;
671 // if (skin > 12)
672 // skin = 0;
673 
674  gi.linkentity (self);
675 
676  if (self->spawnflags & 16) // Stand Ground
677  self->monsterinfo.aiflags |= AI_STAND_GROUND;
678 
679  self->monsterinfo.currentmove = &insane_move_stand_normal;
680 
681  self->monsterinfo.scale = MODEL_SCALE;
682 
683  if (self->spawnflags & 8) // Crucified ?
684  {
685  VectorSet (self->mins, -16, 0, 0);
686  VectorSet (self->maxs, 16, 8, 32);
687  self->flags |= FL_NO_KNOCKBACK;
688  flymonster_start (self);
689  }
690  else
691  {
692  walkmonster_start (self);
693  self->s.skinnum = rand()%3;
694  }
695 }

◆ SP_misc_satellite_dish()

void SP_misc_satellite_dish ( edict_t self)

Definition at line 1459 of file g_misc.c.

1460 {
1461  ent->movetype = MOVETYPE_NONE;
1462  ent->solid = SOLID_BBOX;
1463  VectorSet (ent->mins, -64, -64, 0);
1464  VectorSet (ent->maxs, 64, 64, 128);
1465  ent->s.modelindex = gi.modelindex ("models/objects/satellite/tris.md2");
1466  ent->use = misc_satellite_dish_use;
1467  gi.linkentity (ent);
1468 }

◆ SP_misc_strogg_ship()

void SP_misc_strogg_ship ( edict_t self)

Definition at line 1415 of file g_misc.c.

1416 {
1417  if (!ent->target)
1418  {
1419  gi.dprintf ("%s without a target at %s\n", ent->classname, vtos(ent->absmin));
1420  G_FreeEdict (ent);
1421  return;
1422  }
1423 
1424  if (!ent->speed)
1425  ent->speed = 300;
1426 
1427  ent->movetype = MOVETYPE_PUSH;
1428  ent->solid = SOLID_NOT;
1429  ent->s.modelindex = gi.modelindex ("models/ships/strogg1/tris.md2");
1430  VectorSet (ent->mins, -16, -16, 0);
1431  VectorSet (ent->maxs, 16, 16, 32);
1432 
1433  ent->think = func_train_find;
1434  ent->nextthink = level.time + FRAMETIME;
1435  ent->use = misc_strogg_ship_use;
1436  ent->svflags |= SVF_NOCLIENT;
1437  ent->moveinfo.accel = ent->moveinfo.decel = ent->moveinfo.speed = ent->speed;
1438 
1439  gi.linkentity (ent);
1440 }

◆ SP_misc_teleporter()

void SP_misc_teleporter ( edict_t self)

Definition at line 1832 of file g_misc.c.

1833 {
1834  edict_t *trig;
1835 
1836  if (!ent->target)
1837  {
1838  gi.dprintf ("teleporter without a target.\n");
1839  G_FreeEdict (ent);
1840  return;
1841  }
1842 
1843  gi.setmodel (ent, "models/objects/dmspot/tris.md2");
1844  ent->s.skinnum = 1;
1845  ent->s.effects = EF_TELEPORTER;
1846  ent->s.sound = gi.soundindex ("world/amb10.wav");
1847  ent->solid = SOLID_BBOX;
1848 
1849  VectorSet (ent->mins, -32, -32, -24);
1850  VectorSet (ent->maxs, 32, 32, -16);
1851  gi.linkentity (ent);
1852 
1853  trig = G_Spawn ();
1854  trig->touch = teleporter_touch;
1855  trig->solid = SOLID_TRIGGER;
1856  trig->target = ent->target;
1857  trig->owner = ent;
1858  VectorCopy (ent->s.origin, trig->s.origin);
1859  VectorSet (trig->mins, -8, -8, 8);
1860  VectorSet (trig->maxs, 8, 8, 24);
1861  gi.linkentity (trig);
1862 
1863 }

◆ SP_misc_teleporter_dest()

void SP_misc_teleporter_dest ( edict_t self)

Definition at line 1868 of file g_misc.c.

1869 {
1870  gi.setmodel (ent, "models/objects/dmspot/tris.md2");
1871  ent->s.skinnum = 0;
1872  ent->solid = SOLID_BBOX;
1873 // ent->s.effects |= EF_FLIES;
1874  VectorSet (ent->mins, -32, -32, -24);
1875  VectorSet (ent->maxs, 32, 32, -16);
1876  gi.linkentity (ent);
1877 }

◆ SP_misc_viper()

void SP_misc_viper ( edict_t self)

Definition at line 1285 of file g_misc.c.

1286 {
1287  if (!ent->target)
1288  {
1289  gi.dprintf ("misc_viper without a target at %s\n", vtos(ent->absmin));
1290  G_FreeEdict (ent);
1291  return;
1292  }
1293 
1294  if (!ent->speed)
1295  ent->speed = 300;
1296 
1297  ent->movetype = MOVETYPE_PUSH;
1298  ent->solid = SOLID_NOT;
1299  ent->s.modelindex = gi.modelindex ("models/ships/viper/tris.md2");
1300  VectorSet (ent->mins, -16, -16, 0);
1301  VectorSet (ent->maxs, 16, 16, 32);
1302 
1303  ent->think = func_train_find;
1304  ent->nextthink = level.time + FRAMETIME;
1305  ent->use = misc_viper_use;
1306  ent->svflags |= SVF_NOCLIENT;
1307  ent->moveinfo.accel = ent->moveinfo.decel = ent->moveinfo.speed = ent->speed;
1308 
1309  gi.linkentity (ent);
1310 }

◆ SP_misc_viper_bomb()

void SP_misc_viper_bomb ( edict_t self)

Definition at line 1378 of file g_misc.c.

1379 {
1380  self->movetype = MOVETYPE_NONE;
1381  self->solid = SOLID_NOT;
1382  VectorSet (self->mins, -8, -8, -8);
1383  VectorSet (self->maxs, 8, 8, 8);
1384 
1385  self->s.modelindex = gi.modelindex ("models/objects/bomb/tris.md2");
1386 
1387  if (!self->dmg)
1388  self->dmg = 1000;
1389 
1390  self->use = misc_viper_bomb_use;
1391  self->svflags |= SVF_NOCLIENT;
1392 
1393  gi.linkentity (self);
1394 }

◆ SP_monster_berserk()

void SP_monster_berserk ( edict_t self)

Definition at line 413 of file m_berserk.c.

414 {
415  if (deathmatch->value)
416  {
417  G_FreeEdict (self);
418  return;
419  }
420 
421  // pre-caches
422  sound_pain = gi.soundindex ("berserk/berpain2.wav");
423  sound_die = gi.soundindex ("berserk/berdeth2.wav");
424  sound_idle = gi.soundindex ("berserk/beridle1.wav");
425  sound_punch = gi.soundindex ("berserk/attack.wav");
426  sound_search = gi.soundindex ("berserk/bersrch1.wav");
427  sound_sight = gi.soundindex ("berserk/sight.wav");
428 
429  self->s.modelindex = gi.modelindex("models/monsters/berserk/tris.md2");
430  VectorSet (self->mins, -16, -16, -24);
431  VectorSet (self->maxs, 16, 16, 32);
432  self->movetype = MOVETYPE_STEP;
433  self->solid = SOLID_BBOX;
434 
435  self->health = 240;
436  self->gib_health = -60;
437  self->mass = 250;
438 
439  self->pain = berserk_pain;
440  self->die = berserk_die;
441 
442  self->monsterinfo.stand = berserk_stand;
443  self->monsterinfo.walk = berserk_walk;
444  self->monsterinfo.run = berserk_run;
445  self->monsterinfo.dodge = NULL;
446  self->monsterinfo.attack = NULL;
447  self->monsterinfo.melee = berserk_melee;
448  self->monsterinfo.sight = berserk_sight;
449  self->monsterinfo.search = berserk_search;
450 
451  self->monsterinfo.currentmove = &berserk_move_stand;
452  self->monsterinfo.scale = MODEL_SCALE;
453 
454  gi.linkentity (self);
455 
456  walkmonster_start (self);
457 }

◆ SP_monster_boss2()

void SP_monster_boss2 ( edict_t self)

Definition at line 636 of file m_boss2.c.

637 {
638  if (deathmatch->value)
639  {
640  G_FreeEdict (self);
641  return;
642  }
643 
644  sound_pain1 = gi.soundindex ("bosshovr/bhvpain1.wav");
645  sound_pain2 = gi.soundindex ("bosshovr/bhvpain2.wav");
646  sound_pain3 = gi.soundindex ("bosshovr/bhvpain3.wav");
647  sound_death = gi.soundindex ("bosshovr/bhvdeth1.wav");
648  sound_search1 = gi.soundindex ("bosshovr/bhvunqv1.wav");
649 
650  self->s.sound = gi.soundindex ("bosshovr/bhvengn1.wav");
651 
652  self->movetype = MOVETYPE_STEP;
653  self->solid = SOLID_BBOX;
654  self->s.modelindex = gi.modelindex ("models/monsters/boss2/tris.md2");
655  VectorSet (self->mins, -56, -56, 0);
656  VectorSet (self->maxs, 56, 56, 80);
657 
658  self->health = 2000;
659  self->gib_health = -200;
660  self->mass = 1000;
661 
662  self->flags |= FL_IMMUNE_LASER;
663 
664  self->pain = boss2_pain;
665  self->die = boss2_die;
666 
667  self->monsterinfo.stand = boss2_stand;
668  self->monsterinfo.walk = boss2_walk;
669  self->monsterinfo.run = boss2_run;
670  self->monsterinfo.attack = boss2_attack;
671  self->monsterinfo.search = boss2_search;
672  self->monsterinfo.checkattack = Boss2_CheckAttack;
673  gi.linkentity (self);
674 
675  self->monsterinfo.currentmove = &boss2_move_stand;
676  self->monsterinfo.scale = MODEL_SCALE;
677 
678  flymonster_start (self);
679 }

◆ SP_monster_boss3_stand()

void SP_monster_boss3_stand ( edict_t self)

Definition at line 53 of file m_boss3.c.

54 {
55  if (deathmatch->value)
56  {
57  G_FreeEdict (self);
58  return;
59  }
60 
61  self->movetype = MOVETYPE_STEP;
62  self->solid = SOLID_BBOX;
63  self->model = "models/monsters/boss3/rider/tris.md2";
64  self->s.modelindex = gi.modelindex (self->model);
65  self->s.frame = FRAME_stand201;
66 
67  gi.soundindex ("misc/bigtele.wav");
68 
69  VectorSet (self->mins, -32, -32, 0);
70  VectorSet (self->maxs, 32, 32, 90);
71 
72  self->use = Use_Boss3;
73  self->think = Think_Boss3Stand;
74  self->nextthink = level.time + FRAMETIME;
75  gi.linkentity (self);
76 }

◆ SP_monster_brain()

void SP_monster_brain ( edict_t self)

Definition at line 621 of file m_brain.c.

622 {
623  if (deathmatch->value)
624  {
625  G_FreeEdict (self);
626  return;
627  }
628 
629  sound_chest_open = gi.soundindex ("brain/brnatck1.wav");
630  sound_tentacles_extend = gi.soundindex ("brain/brnatck2.wav");
631  sound_tentacles_retract = gi.soundindex ("brain/brnatck3.wav");
632  sound_death = gi.soundindex ("brain/brndeth1.wav");
633  sound_idle1 = gi.soundindex ("brain/brnidle1.wav");
634  sound_idle2 = gi.soundindex ("brain/brnidle2.wav");
635  sound_idle3 = gi.soundindex ("brain/brnlens1.wav");
636  sound_pain1 = gi.soundindex ("brain/brnpain1.wav");
637  sound_pain2 = gi.soundindex ("brain/brnpain2.wav");
638  sound_sight = gi.soundindex ("brain/brnsght1.wav");
639  sound_search = gi.soundindex ("brain/brnsrch1.wav");
640  sound_melee1 = gi.soundindex ("brain/melee1.wav");
641  sound_melee2 = gi.soundindex ("brain/melee2.wav");
642  sound_melee3 = gi.soundindex ("brain/melee3.wav");
643 
644  self->movetype = MOVETYPE_STEP;
645  self->solid = SOLID_BBOX;
646  self->s.modelindex = gi.modelindex ("models/monsters/brain/tris.md2");
647  VectorSet (self->mins, -16, -16, -24);
648  VectorSet (self->maxs, 16, 16, 32);
649 
650  self->health = 300;
651  self->gib_health = -150;
652  self->mass = 400;
653 
654  self->pain = brain_pain;
655  self->die = brain_die;
656 
657  self->monsterinfo.stand = brain_stand;
658  self->monsterinfo.walk = brain_walk;
659  self->monsterinfo.run = brain_run;
660  self->monsterinfo.dodge = brain_dodge;
661 // self->monsterinfo.attack = brain_attack;
662  self->monsterinfo.melee = brain_melee;
663  self->monsterinfo.sight = brain_sight;
664  self->monsterinfo.search = brain_search;
665  self->monsterinfo.idle = brain_idle;
666 
667  self->monsterinfo.power_armor_type = POWER_ARMOR_SCREEN;
668  self->monsterinfo.power_armor_power = 100;
669 
670  gi.linkentity (self);
671 
672  self->monsterinfo.currentmove = &brain_move_stand;
673  self->monsterinfo.scale = MODEL_SCALE;
674 
675  walkmonster_start (self);
676 }

◆ SP_monster_chick()

void SP_monster_chick ( edict_t self)

Definition at line 628 of file m_chick.c.

629 {
630  if (deathmatch->value)
631  {
632  G_FreeEdict (self);
633  return;
634  }
635 
636  sound_missile_prelaunch = gi.soundindex ("chick/chkatck1.wav");
637  sound_missile_launch = gi.soundindex ("chick/chkatck2.wav");
638  sound_melee_swing = gi.soundindex ("chick/chkatck3.wav");
639  sound_melee_hit = gi.soundindex ("chick/chkatck4.wav");
640  sound_missile_reload = gi.soundindex ("chick/chkatck5.wav");
641  sound_death1 = gi.soundindex ("chick/chkdeth1.wav");
642  sound_death2 = gi.soundindex ("chick/chkdeth2.wav");
643  sound_fall_down = gi.soundindex ("chick/chkfall1.wav");
644  sound_idle1 = gi.soundindex ("chick/chkidle1.wav");
645  sound_idle2 = gi.soundindex ("chick/chkidle2.wav");
646  sound_pain1 = gi.soundindex ("chick/chkpain1.wav");
647  sound_pain2 = gi.soundindex ("chick/chkpain2.wav");
648  sound_pain3 = gi.soundindex ("chick/chkpain3.wav");
649  sound_sight = gi.soundindex ("chick/chksght1.wav");
650  sound_search = gi.soundindex ("chick/chksrch1.wav");
651 
652  self->movetype = MOVETYPE_STEP;
653  self->solid = SOLID_BBOX;
654  self->s.modelindex = gi.modelindex ("models/monsters/bitch/tris.md2");
655  VectorSet (self->mins, -16, -16, 0);
656  VectorSet (self->maxs, 16, 16, 56);
657 
658  self->health = 175;
659  self->gib_health = -70;
660  self->mass = 200;
661 
662  self->pain = chick_pain;
663  self->die = chick_die;
664 
665  self->monsterinfo.stand = chick_stand;
666  self->monsterinfo.walk = chick_walk;
667  self->monsterinfo.run = chick_run;
668  self->monsterinfo.dodge = chick_dodge;
669  self->monsterinfo.attack = chick_attack;
670  self->monsterinfo.melee = chick_melee;
671  self->monsterinfo.sight = chick_sight;
672 
673  gi.linkentity (self);
674 
675  self->monsterinfo.currentmove = &chick_move_stand;
676  self->monsterinfo.scale = MODEL_SCALE;
677 
678  walkmonster_start (self);
679 }

◆ SP_monster_commander_body()

void SP_monster_commander_body ( edict_t self)

Definition at line 1170 of file g_misc.c.

1171 {
1172  self->movetype = MOVETYPE_NONE;
1173  self->solid = SOLID_BBOX;
1174  self->model = "models/monsters/commandr/tris.md2";
1175  self->s.modelindex = gi.modelindex (self->model);
1176  VectorSet (self->mins, -32, -32, 0);
1177  VectorSet (self->maxs, 32, 32, 48);
1178  self->use = commander_body_use;
1179  self->takedamage = DAMAGE_YES;
1180  self->flags = FL_GODMODE;
1181  self->s.renderfx |= RF_FRAMELERP;
1182  gi.linkentity (self);
1183 
1184  gi.soundindex ("tank/thud.wav");
1185  gi.soundindex ("tank/pain.wav");
1186 
1187  self->think = commander_body_drop;
1188  self->nextthink = level.time + 5 * FRAMETIME;
1189 }

◆ SP_monster_flipper()

void SP_monster_flipper ( edict_t self)

Definition at line 361 of file m_flipper.c.

362 {
363  if (deathmatch->value)
364  {
365  G_FreeEdict (self);
366  return;
367  }
368 
369  sound_pain1 = gi.soundindex ("flipper/flppain1.wav");
370  sound_pain2 = gi.soundindex ("flipper/flppain2.wav");
371  sound_death = gi.soundindex ("flipper/flpdeth1.wav");
372  sound_chomp = gi.soundindex ("flipper/flpatck1.wav");
373  sound_attack = gi.soundindex ("flipper/flpatck2.wav");
374  sound_idle = gi.soundindex ("flipper/flpidle1.wav");
375  sound_search = gi.soundindex ("flipper/flpsrch1.wav");
376  sound_sight = gi.soundindex ("flipper/flpsght1.wav");
377 
378  self->movetype = MOVETYPE_STEP;
379  self->solid = SOLID_BBOX;
380  self->s.modelindex = gi.modelindex ("models/monsters/flipper/tris.md2");
381  VectorSet (self->mins, -16, -16, 0);
382  VectorSet (self->maxs, 16, 16, 32);
383 
384  self->health = 50;
385  self->gib_health = -30;
386  self->mass = 100;
387 
388  self->pain = flipper_pain;
389  self->die = flipper_die;
390 
391  self->monsterinfo.stand = flipper_stand;
392  self->monsterinfo.walk = flipper_walk;
393  self->monsterinfo.run = flipper_start_run;
394  self->monsterinfo.melee = flipper_melee;
395  self->monsterinfo.sight = flipper_sight;
396 
397  gi.linkentity (self);
398 
399  self->monsterinfo.currentmove = &flipper_move_stand;
400  self->monsterinfo.scale = MODEL_SCALE;
401 
402  swimmonster_start (self);
403 }

◆ SP_monster_floater()

void SP_monster_floater ( edict_t self)

Definition at line 611 of file m_float.c.

612 {
613  if (deathmatch->value)
614  {
615  G_FreeEdict (self);
616  return;
617  }
618 
619  sound_attack2 = gi.soundindex ("floater/fltatck2.wav");
620  sound_attack3 = gi.soundindex ("floater/fltatck3.wav");
621  sound_death1 = gi.soundindex ("floater/fltdeth1.wav");
622  sound_idle = gi.soundindex ("floater/fltidle1.wav");
623  sound_pain1 = gi.soundindex ("floater/fltpain1.wav");
624  sound_pain2 = gi.soundindex ("floater/fltpain2.wav");
625  sound_sight = gi.soundindex ("floater/fltsght1.wav");
626 
627  gi.soundindex ("floater/fltatck1.wav");
628 
629  self->s.sound = gi.soundindex ("floater/fltsrch1.wav");
630 
631  self->movetype = MOVETYPE_STEP;
632  self->solid = SOLID_BBOX;
633  self->s.modelindex = gi.modelindex ("models/monsters/float/tris.md2");
634  VectorSet (self->mins, -24, -24, -24);
635  VectorSet (self->maxs, 24, 24, 32);
636 
637  self->health = 200;
638  self->gib_health = -80;
639  self->mass = 300;
640 
641  self->pain = floater_pain;
642  self->die = floater_die;
643 
644  self->monsterinfo.stand = floater_stand;
645  self->monsterinfo.walk = floater_walk;
646  self->monsterinfo.run = floater_run;
647 // self->monsterinfo.dodge = floater_dodge;
648  self->monsterinfo.attack = floater_attack;
649  self->monsterinfo.melee = floater_melee;
650  self->monsterinfo.sight = floater_sight;
651  self->monsterinfo.idle = floater_idle;
652 
653  gi.linkentity (self);
654 
655  if (random() <= 0.5)
656  self->monsterinfo.currentmove = &floater_move_stand1;
657  else
658  self->monsterinfo.currentmove = &floater_move_stand2;
659 
660  self->monsterinfo.scale = MODEL_SCALE;
661 
662  flymonster_start (self);
663 }

◆ SP_monster_flyer()

void SP_monster_flyer ( edict_t self)

Definition at line 573 of file m_flyer.c.

574 {
575  if (deathmatch->value)
576  {
577  G_FreeEdict (self);
578  return;
579  }
580 
581  // fix a map bug in jail5.bsp
582  if (!Q_stricmp(level.mapname, "jail5") && (self->s.origin[2] == -104))
583  {
584  self->targetname = self->target;
585  self->target = NULL;
586  }
587 
588  sound_sight = gi.soundindex ("flyer/flysght1.wav");
589  sound_idle = gi.soundindex ("flyer/flysrch1.wav");
590  sound_pain1 = gi.soundindex ("flyer/flypain1.wav");
591  sound_pain2 = gi.soundindex ("flyer/flypain2.wav");
592  sound_slash = gi.soundindex ("flyer/flyatck2.wav");
593  sound_sproing = gi.soundindex ("flyer/flyatck1.wav");
594  sound_die = gi.soundindex ("flyer/flydeth1.wav");
595 
596  gi.soundindex ("flyer/flyatck3.wav");
597 
598  self->s.modelindex = gi.modelindex ("models/monsters/flyer/tris.md2");
599  VectorSet (self->mins, -16, -16, -24);
600  VectorSet (self->maxs, 16, 16, 32);
601  self->movetype = MOVETYPE_STEP;
602  self->solid = SOLID_BBOX;
603 
604  self->s.sound = gi.soundindex ("flyer/flyidle1.wav");
605 
606  self->health = 50;
607  self->mass = 50;
608 
609  self->pain = flyer_pain;
610  self->die = flyer_die;
611 
612  self->monsterinfo.stand = flyer_stand;
613  self->monsterinfo.walk = flyer_walk;
614  self->monsterinfo.run = flyer_run;
615  self->monsterinfo.attack = flyer_attack;
616  self->monsterinfo.melee = flyer_melee;
617  self->monsterinfo.sight = flyer_sight;
618  self->monsterinfo.idle = flyer_idle;
619 
620  gi.linkentity (self);
621 
622  self->monsterinfo.currentmove = &flyer_move_stand;
623  self->monsterinfo.scale = MODEL_SCALE;
624 
625  flymonster_start (self);
626 }

◆ SP_monster_gladiator()

void SP_monster_gladiator ( edict_t self)

Definition at line 339 of file m_gladiator.c.

340 {
341  if (deathmatch->value)
342  {
343  G_FreeEdict (self);
344  return;
345  }
346 
347 
348  sound_pain1 = gi.soundindex ("gladiator/pain.wav");
349  sound_pain2 = gi.soundindex ("gladiator/gldpain2.wav");
350  sound_die = gi.soundindex ("gladiator/glddeth2.wav");
351  sound_gun = gi.soundindex ("gladiator/railgun.wav");
352  sound_cleaver_swing = gi.soundindex ("gladiator/melee1.wav");
353  sound_cleaver_hit = gi.soundindex ("gladiator/melee2.wav");
354  sound_cleaver_miss = gi.soundindex ("gladiator/melee3.wav");
355  sound_idle = gi.soundindex ("gladiator/gldidle1.wav");
356  sound_search = gi.soundindex ("gladiator/gldsrch1.wav");
357  sound_sight = gi.soundindex ("gladiator/sight.wav");
358 
359  self->movetype = MOVETYPE_STEP;
360  self->solid = SOLID_BBOX;
361  self->s.modelindex = gi.modelindex ("models/monsters/gladiatr/tris.md2");
362  VectorSet (self->mins, -32, -32, -24);
363  VectorSet (self->maxs, 32, 32, 64);
364 
365  self->health = 400;
366  self->gib_health = -175;
367  self->mass = 400;
368 
369  self->pain = gladiator_pain;
370  self->die = gladiator_die;
371 
372  self->monsterinfo.stand = gladiator_stand;
373  self->monsterinfo.walk = gladiator_walk;
374  self->monsterinfo.run = gladiator_run;
375  self->monsterinfo.dodge = NULL;
376  self->monsterinfo.attack = gladiator_attack;
377  self->monsterinfo.melee = gladiator_melee;
378  self->monsterinfo.sight = gladiator_sight;
379  self->monsterinfo.idle = gladiator_idle;
380  self->monsterinfo.search = gladiator_search;
381 
382  gi.linkentity (self);
383  self->monsterinfo.currentmove = &gladiator_move_stand;
384  self->monsterinfo.scale = MODEL_SCALE;
385 
386  walkmonster_start (self);
387 }

◆ SP_monster_gunner()

void SP_monster_gunner ( edict_t self)

Definition at line 581 of file m_gunner.c.

582 {
583  if (deathmatch->value)
584  {
585  G_FreeEdict (self);
586  return;
587  }
588 
589  sound_death = gi.soundindex ("gunner/death1.wav");
590  sound_pain = gi.soundindex ("gunner/gunpain2.wav");
591  sound_pain2 = gi.soundindex ("gunner/gunpain1.wav");
592  sound_idle = gi.soundindex ("gunner/gunidle1.wav");
593  sound_open = gi.soundindex ("gunner/gunatck1.wav");
594  sound_search = gi.soundindex ("gunner/gunsrch1.wav");
595  sound_sight = gi.soundindex ("gunner/sight1.wav");
596 
597  gi.soundindex ("gunner/gunatck2.wav");
598  gi.soundindex ("gunner/gunatck3.wav");
599 
600  self->movetype = MOVETYPE_STEP;
601  self->solid = SOLID_BBOX;
602  self->s.modelindex = gi.modelindex ("models/monsters/gunner/tris.md2");
603  VectorSet (self->mins, -16, -16, -24);
604  VectorSet (self->maxs, 16, 16, 32);
605 
606  self->health = 175;
607  self->gib_health = -70;
608  self->mass = 200;
609 
610  self->pain = gunner_pain;
611  self->die = gunner_die;
612 
613  self->monsterinfo.stand = gunner_stand;
614  self->monsterinfo.walk = gunner_walk;
615  self->monsterinfo.run = gunner_run;
616  self->monsterinfo.dodge = gunner_dodge;
617  self->monsterinfo.attack = gunner_attack;
618  self->monsterinfo.melee = NULL;
619  self->monsterinfo.sight = gunner_sight;
620  self->monsterinfo.search = gunner_search;
621 
622  gi.linkentity (self);
623 
624  self->monsterinfo.currentmove = &gunner_move_stand;
625  self->monsterinfo.scale = MODEL_SCALE;
626 
627  walkmonster_start (self);
628 }

◆ SP_monster_hover()

void SP_monster_hover ( edict_t self)

Definition at line 573 of file m_hover.c.

574 {
575  if (deathmatch->value)
576  {
577  G_FreeEdict (self);
578  return;
579  }
580 
581  sound_pain1 = gi.soundindex ("hover/hovpain1.wav");
582  sound_pain2 = gi.soundindex ("hover/hovpain2.wav");
583  sound_death1 = gi.soundindex ("hover/hovdeth1.wav");
584  sound_death2 = gi.soundindex ("hover/hovdeth2.wav");
585  sound_sight = gi.soundindex ("hover/hovsght1.wav");
586  sound_search1 = gi.soundindex ("hover/hovsrch1.wav");
587  sound_search2 = gi.soundindex ("hover/hovsrch2.wav");
588 
589  gi.soundindex ("hover/hovatck1.wav");
590 
591  self->s.sound = gi.soundindex ("hover/hovidle1.wav");
592 
593  self->movetype = MOVETYPE_STEP;
594  self->solid = SOLID_BBOX;
595  self->s.modelindex = gi.modelindex("models/monsters/hover/tris.md2");
596  VectorSet (self->mins, -24, -24, -24);
597  VectorSet (self->maxs, 24, 24, 32);
598 
599  self->health = 240;
600  self->gib_health = -100;
601  self->mass = 150;
602 
603  self->pain = hover_pain;
604  self->die = hover_die;
605 
606  self->monsterinfo.stand = hover_stand;
607  self->monsterinfo.walk = hover_walk;
608  self->monsterinfo.run = hover_run;
609 // self->monsterinfo.dodge = hover_dodge;
610  self->monsterinfo.attack = hover_start_attack;
611  self->monsterinfo.sight = hover_sight;
612  self->monsterinfo.search = hover_search;
613 
614  gi.linkentity (self);
615 
616  self->monsterinfo.currentmove = &hover_move_stand;
617  self->monsterinfo.scale = MODEL_SCALE;
618 
619  flymonster_start (self);
620 }

◆ SP_monster_infantry()

void SP_monster_infantry ( edict_t self)

Definition at line 556 of file m_infantry.c.

557 {
558  if (deathmatch->value)
559  {
560  G_FreeEdict (self);
561  return;
562  }
563 
564  sound_pain1 = gi.soundindex ("infantry/infpain1.wav");
565  sound_pain2 = gi.soundindex ("infantry/infpain2.wav");
566  sound_die1 = gi.soundindex ("infantry/infdeth1.wav");
567  sound_die2 = gi.soundindex ("infantry/infdeth2.wav");
568 
569  sound_gunshot = gi.soundindex ("infantry/infatck1.wav");
570  sound_weapon_cock = gi.soundindex ("infantry/infatck3.wav");
571  sound_punch_swing = gi.soundindex ("infantry/infatck2.wav");
572  sound_punch_hit = gi.soundindex ("infantry/melee2.wav");
573 
574  sound_sight = gi.soundindex ("infantry/infsght1.wav");
575  sound_search = gi.soundindex ("infantry/infsrch1.wav");
576  sound_idle = gi.soundindex ("infantry/infidle1.wav");
577 
578 
579  self->movetype = MOVETYPE_STEP;
580  self->solid = SOLID_BBOX;
581  self->s.modelindex = gi.modelindex("models/monsters/infantry/tris.md2");
582  VectorSet (self->mins, -16, -16, -24);
583  VectorSet (self->maxs, 16, 16, 32);
584 
585  self->health = 100;
586  self->gib_health = -40;
587  self->mass = 200;
588 
589  self->pain = infantry_pain;
590  self->die = infantry_die;
591 
592  self->monsterinfo.stand = infantry_stand;
593  self->monsterinfo.walk = infantry_walk;
594  self->monsterinfo.run = infantry_run;
595  self->monsterinfo.dodge = infantry_dodge;
596  self->monsterinfo.attack = infantry_attack;
597  self->monsterinfo.melee = NULL;
598  self->monsterinfo.sight = infantry_sight;
599  self->monsterinfo.idle = infantry_fidget;
600 
601  gi.linkentity (self);
602 
603  self->monsterinfo.currentmove = &infantry_move_stand;
604  self->monsterinfo.scale = MODEL_SCALE;
605 
606  walkmonster_start (self);
607 }

◆ SP_monster_jorg()

void SP_monster_jorg ( edict_t self)

Definition at line 696 of file m_boss31.c.

697 {
698  if (deathmatch->value)
699  {
700  G_FreeEdict (self);
701  return;
702  }
703 
704  sound_pain1 = gi.soundindex ("boss3/bs3pain1.wav");
705  sound_pain2 = gi.soundindex ("boss3/bs3pain2.wav");
706  sound_pain3 = gi.soundindex ("boss3/bs3pain3.wav");
707  sound_death = gi.soundindex ("boss3/bs3deth1.wav");
708  sound_attack1 = gi.soundindex ("boss3/bs3atck1.wav");
709  sound_attack2 = gi.soundindex ("boss3/bs3atck2.wav");
710  sound_search1 = gi.soundindex ("boss3/bs3srch1.wav");
711  sound_search2 = gi.soundindex ("boss3/bs3srch2.wav");
712  sound_search3 = gi.soundindex ("boss3/bs3srch3.wav");
713  sound_idle = gi.soundindex ("boss3/bs3idle1.wav");
714  sound_step_left = gi.soundindex ("boss3/step1.wav");
715  sound_step_right = gi.soundindex ("boss3/step2.wav");
716  sound_firegun = gi.soundindex ("boss3/xfire.wav");
717  sound_death_hit = gi.soundindex ("boss3/d_hit.wav");
718 
719  MakronPrecache ();
720 
721  self->movetype = MOVETYPE_STEP;
722  self->solid = SOLID_BBOX;
723  self->s.modelindex = gi.modelindex ("models/monsters/boss3/rider/tris.md2");
724  self->s.modelindex2 = gi.modelindex ("models/monsters/boss3/jorg/tris.md2");
725  VectorSet (self->mins, -80, -80, 0);
726  VectorSet (self->maxs, 80, 80, 140);
727 
728  self->health = 3000;
729  self->gib_health = -2000;
730  self->mass = 1000;
731 
732  self->pain = jorg_pain;
733  self->die = jorg_die;
734  self->monsterinfo.stand = jorg_stand;
735  self->monsterinfo.walk = jorg_walk;
736  self->monsterinfo.run = jorg_run;
737  self->monsterinfo.dodge = NULL;
738  self->monsterinfo.attack = jorg_attack;
739  self->monsterinfo.search = jorg_search;
740  self->monsterinfo.melee = NULL;
741  self->monsterinfo.sight = NULL;
742  self->monsterinfo.checkattack = Jorg_CheckAttack;
743  gi.linkentity (self);
744 
745  self->monsterinfo.currentmove = &jorg_move_stand;
746  self->monsterinfo.scale = MODEL_SCALE;
747 
748  walkmonster_start(self);
749 }

◆ SP_monster_medic()

void SP_monster_medic ( edict_t self)

Definition at line 718 of file m_medic.c.

719 {
720  if (deathmatch->value)
721  {
722  G_FreeEdict (self);
723  return;
724  }
725 
726  sound_idle1 = gi.soundindex ("medic/idle.wav");
727  sound_pain1 = gi.soundindex ("medic/medpain1.wav");
728  sound_pain2 = gi.soundindex ("medic/medpain2.wav");
729  sound_die = gi.soundindex ("medic/meddeth1.wav");
730  sound_sight = gi.soundindex ("medic/medsght1.wav");
731  sound_search = gi.soundindex ("medic/medsrch1.wav");
732  sound_hook_launch = gi.soundindex ("medic/medatck2.wav");
733  sound_hook_hit = gi.soundindex ("medic/medatck3.wav");
734  sound_hook_heal = gi.soundindex ("medic/medatck4.wav");
735  sound_hook_retract = gi.soundindex ("medic/medatck5.wav");
736 
737  gi.soundindex ("medic/medatck1.wav");
738 
739  self->movetype = MOVETYPE_STEP;
740  self->solid = SOLID_BBOX;
741  self->s.modelindex = gi.modelindex ("models/monsters/medic/tris.md2");
742  VectorSet (self->mins, -24, -24, -24);
743  VectorSet (self->maxs, 24, 24, 32);
744 
745  self->health = 300;
746  self->gib_health = -130;
747  self->mass = 400;
748 
749  self->pain = medic_pain;
750  self->die = medic_die;
751 
752  self->monsterinfo.stand = medic_stand;
753  self->monsterinfo.walk = medic_walk;
754  self->monsterinfo.run = medic_run;
755  self->monsterinfo.dodge = medic_dodge;
756  self->monsterinfo.attack = medic_attack;
757  self->monsterinfo.melee = NULL;
758  self->monsterinfo.sight = medic_sight;
759  self->monsterinfo.idle = medic_idle;
760  self->monsterinfo.search = medic_search;
761  self->monsterinfo.checkattack = medic_checkattack;
762 
763  gi.linkentity (self);
764 
765  self->monsterinfo.currentmove = &medic_move_stand;
766  self->monsterinfo.scale = MODEL_SCALE;
767 
768  walkmonster_start (self);
769 }

◆ SP_monster_mutant()

void SP_monster_mutant ( edict_t self)

Definition at line 611 of file m_mutant.c.

612 {
613  if (deathmatch->value)
614  {
615  G_FreeEdict (self);
616  return;
617  }
618 
619  sound_swing = gi.soundindex ("mutant/mutatck1.wav");
620  sound_hit = gi.soundindex ("mutant/mutatck2.wav");
621  sound_hit2 = gi.soundindex ("mutant/mutatck3.wav");
622  sound_death = gi.soundindex ("mutant/mutdeth1.wav");
623  sound_idle = gi.soundindex ("mutant/mutidle1.wav");
624  sound_pain1 = gi.soundindex ("mutant/mutpain1.wav");
625  sound_pain2 = gi.soundindex ("mutant/mutpain2.wav");
626  sound_sight = gi.soundindex ("mutant/mutsght1.wav");
627  sound_search = gi.soundindex ("mutant/mutsrch1.wav");
628  sound_step1 = gi.soundindex ("mutant/step1.wav");
629  sound_step2 = gi.soundindex ("mutant/step2.wav");
630  sound_step3 = gi.soundindex ("mutant/step3.wav");
631  sound_thud = gi.soundindex ("mutant/thud1.wav");
632 
633  self->movetype = MOVETYPE_STEP;
634  self->solid = SOLID_BBOX;
635  self->s.modelindex = gi.modelindex ("models/monsters/mutant/tris.md2");
636  VectorSet (self->mins, -32, -32, -24);
637  VectorSet (self->maxs, 32, 32, 48);
638 
639  self->health = 300;
640  self->gib_health = -120;
641  self->mass = 300;
642 
643  self->pain = mutant_pain;
644  self->die = mutant_die;
645 
646  self->monsterinfo.stand = mutant_stand;
647  self->monsterinfo.walk = mutant_walk;
648  self->monsterinfo.run = mutant_run;
649  self->monsterinfo.dodge = NULL;
650  self->monsterinfo.attack = mutant_jump;
651  self->monsterinfo.melee = mutant_melee;
652  self->monsterinfo.sight = mutant_sight;
653  self->monsterinfo.search = mutant_search;
654  self->monsterinfo.idle = mutant_idle;
655  self->monsterinfo.checkattack = mutant_checkattack;
656 
657  gi.linkentity (self);
658 
659  self->monsterinfo.currentmove = &mutant_move_stand;
660 
661  self->monsterinfo.scale = MODEL_SCALE;
662  walkmonster_start (self);
663 }

◆ SP_monster_parasite()

void SP_monster_parasite ( edict_t self)

Definition at line 506 of file m_parasite.c.

507 {
508  if (deathmatch->value)
509  {
510  G_FreeEdict (self);
511  return;
512  }
513 
514  sound_pain1 = gi.soundindex ("parasite/parpain1.wav");
515  sound_pain2 = gi.soundindex ("parasite/parpain2.wav");
516  sound_die = gi.soundindex ("parasite/pardeth1.wav");
517  sound_launch = gi.soundindex("parasite/paratck1.wav");
518  sound_impact = gi.soundindex("parasite/paratck2.wav");
519  sound_suck = gi.soundindex("parasite/paratck3.wav");
520  sound_reelin = gi.soundindex("parasite/paratck4.wav");
521  sound_sight = gi.soundindex("parasite/parsght1.wav");
522  sound_tap = gi.soundindex("parasite/paridle1.wav");
523  sound_scratch = gi.soundindex("parasite/paridle2.wav");
524  sound_search = gi.soundindex("parasite/parsrch1.wav");
525 
526  self->s.modelindex = gi.modelindex ("models/monsters/parasite/tris.md2");
527  VectorSet (self->mins, -16, -16, -24);
528  VectorSet (self->maxs, 16, 16, 24);
529  self->movetype = MOVETYPE_STEP;
530  self->solid = SOLID_BBOX;
531 
532  self->health = 175;
533  self->gib_health = -50;
534  self->mass = 250;
535 
536  self->pain = parasite_pain;
537  self->die = parasite_die;
538 
539  self->monsterinfo.stand = parasite_stand;
540  self->monsterinfo.walk = parasite_start_walk;
541  self->monsterinfo.run = parasite_start_run;
542  self->monsterinfo.attack = parasite_attack;
543  self->monsterinfo.sight = parasite_sight;
544  self->monsterinfo.idle = parasite_idle;
545 
546  gi.linkentity (self);
547 
548  self->monsterinfo.currentmove = &parasite_move_stand;
549  self->monsterinfo.scale = MODEL_SCALE;
550 
551  walkmonster_start (self);
552 }

◆ SP_monster_soldier()

void SP_monster_soldier ( edict_t self)

Definition at line 1261 of file m_soldier.c.

1262 {
1263  if (deathmatch->value)
1264  {
1265  G_FreeEdict (self);
1266  return;
1267  }
1268 
1269  SP_monster_soldier_x (self);
1270 
1271  sound_pain = gi.soundindex ("soldier/solpain1.wav");
1272  sound_death = gi.soundindex ("soldier/soldeth1.wav");
1273  gi.soundindex ("soldier/solatck1.wav");
1274 
1275  self->s.skinnum = 2;
1276  self->health = 30;
1277  self->gib_health = -30;
1278 }

◆ SP_monster_soldier_light()

void SP_monster_soldier_light ( edict_t self)

Definition at line 1238 of file m_soldier.c.

1239 {
1240  if (deathmatch->value)
1241  {
1242  G_FreeEdict (self);
1243  return;
1244  }
1245 
1246  SP_monster_soldier_x (self);
1247 
1248  sound_pain_light = gi.soundindex ("soldier/solpain2.wav");
1249  sound_death_light = gi.soundindex ("soldier/soldeth2.wav");
1250  gi.modelindex ("models/objects/laser/tris.md2");
1251  gi.soundindex ("misc/lasfly.wav");
1252  gi.soundindex ("soldier/solatck2.wav");
1253 
1254  self->s.skinnum = 0;
1255  self->health = 20;
1256  self->gib_health = -30;
1257 }

◆ SP_monster_soldier_ss()

void SP_monster_soldier_ss ( edict_t self)

Definition at line 1282 of file m_soldier.c.

1283 {
1284  if (deathmatch->value)
1285  {
1286  G_FreeEdict (self);
1287  return;
1288  }
1289 
1290  SP_monster_soldier_x (self);
1291 
1292  sound_pain_ss = gi.soundindex ("soldier/solpain3.wav");
1293  sound_death_ss = gi.soundindex ("soldier/soldeth3.wav");
1294  gi.soundindex ("soldier/solatck3.wav");
1295 
1296  self->s.skinnum = 4;
1297  self->health = 40;
1298  self->gib_health = -30;
1299 }

◆ SP_monster_supertank()

void SP_monster_supertank ( edict_t self)

Definition at line 672 of file m_supertank.c.

673 {
674  if (deathmatch->value)
675  {
676  G_FreeEdict (self);
677  return;
678  }
679 
680  sound_pain1 = gi.soundindex ("bosstank/btkpain1.wav");
681  sound_pain2 = gi.soundindex ("bosstank/btkpain2.wav");
682  sound_pain3 = gi.soundindex ("bosstank/btkpain3.wav");
683  sound_death = gi.soundindex ("bosstank/btkdeth1.wav");
684  sound_search1 = gi.soundindex ("bosstank/btkunqv1.wav");
685  sound_search2 = gi.soundindex ("bosstank/btkunqv2.wav");
686 
687 // self->s.sound = gi.soundindex ("bosstank/btkengn1.wav");
688  tread_sound = gi.soundindex ("bosstank/btkengn1.wav");
689 
690  self->movetype = MOVETYPE_STEP;
691  self->solid = SOLID_BBOX;
692  self->s.modelindex = gi.modelindex ("models/monsters/boss1/tris.md2");
693  VectorSet (self->mins, -64, -64, 0);
694  VectorSet (self->maxs, 64, 64, 112);
695 
696  self->health = 1500;
697  self->gib_health = -500;
698  self->mass = 800;
699 
700  self->pain = supertank_pain;
701  self->die = supertank_die;
702  self->monsterinfo.stand = supertank_stand;
703  self->monsterinfo.walk = supertank_walk;
704  self->monsterinfo.run = supertank_run;
705  self->monsterinfo.dodge = NULL;
706  self->monsterinfo.attack = supertank_attack;
707  self->monsterinfo.search = supertank_search;
708  self->monsterinfo.melee = NULL;
709  self->monsterinfo.sight = NULL;
710 
711  gi.linkentity (self);
712 
713  self->monsterinfo.currentmove = &supertank_move_stand;
714  self->monsterinfo.scale = MODEL_SCALE;
715 
716  walkmonster_start(self);
717 }

◆ SP_monster_tank()

void SP_monster_tank ( edict_t self)

Definition at line 792 of file m_tank.c.

793 {
794  if (deathmatch->value)
795  {
796  G_FreeEdict (self);
797  return;
798  }
799 
800  self->s.modelindex = gi.modelindex ("models/monsters/tank/tris.md2");
801  VectorSet (self->mins, -32, -32, -16);
802  VectorSet (self->maxs, 32, 32, 72);
803  self->movetype = MOVETYPE_STEP;
804  self->solid = SOLID_BBOX;
805 
806  sound_pain = gi.soundindex ("tank/tnkpain2.wav");
807  sound_thud = gi.soundindex ("tank/tnkdeth2.wav");
808  sound_idle = gi.soundindex ("tank/tnkidle1.wav");
809  sound_die = gi.soundindex ("tank/death.wav");
810  sound_step = gi.soundindex ("tank/step.wav");
811  sound_windup = gi.soundindex ("tank/tnkatck4.wav");
812  sound_strike = gi.soundindex ("tank/tnkatck5.wav");
813  sound_sight = gi.soundindex ("tank/sight1.wav");
814 
815  gi.soundindex ("tank/tnkatck1.wav");
816  gi.soundindex ("tank/tnkatk2a.wav");
817  gi.soundindex ("tank/tnkatk2b.wav");
818  gi.soundindex ("tank/tnkatk2c.wav");
819  gi.soundindex ("tank/tnkatk2d.wav");
820  gi.soundindex ("tank/tnkatk2e.wav");
821  gi.soundindex ("tank/tnkatck3.wav");
822 
823  if (strcmp(self->classname, "monster_tank_commander") == 0)
824  {
825  self->health = 1000;
826  self->gib_health = -225;
827  }
828  else
829  {
830  self->health = 750;
831  self->gib_health = -200;
832  }
833 
834  self->mass = 500;
835 
836  self->pain = tank_pain;
837  self->die = tank_die;
838  self->monsterinfo.stand = tank_stand;
839  self->monsterinfo.walk = tank_walk;
840  self->monsterinfo.run = tank_run;
841  self->monsterinfo.dodge = NULL;
842  self->monsterinfo.attack = tank_attack;
843  self->monsterinfo.melee = NULL;
844  self->monsterinfo.sight = tank_sight;
845  self->monsterinfo.idle = tank_idle;
846 
847  gi.linkentity (self);
848 
849  self->monsterinfo.currentmove = &tank_move_stand;
850  self->monsterinfo.scale = MODEL_SCALE;
851 
852  walkmonster_start(self);
853 
854  if (strcmp(self->classname, "monster_tank_commander") == 0)
855  self->s.skinnum = 2;
856 }

◆ SP_path_corner()

void SP_path_corner ( edict_t self)

Definition at line 399 of file g_misc.c.

400 {
401  if (!self->targetname)
402  {
403  gi.dprintf ("path_corner with no targetname at %s\n", vtos(self->s.origin));
404  G_FreeEdict (self);
405  return;
406  }
407 
408  self->solid = SOLID_TRIGGER;
409  self->touch = path_corner_touch;
410  VectorSet (self->mins, -8, -8, -8);
411  VectorSet (self->maxs, 8, 8, 8);
412  self->svflags |= SVF_NOCLIENT;
413  gi.linkentity (self);
414 }

◆ SP_point_combat()

void SP_point_combat ( edict_t self)

Definition at line 474 of file g_misc.c.

475 {
476  if (deathmatch->value)
477  {
478  G_FreeEdict (self);
479  return;
480  }
481  self->solid = SOLID_TRIGGER;
482  self->touch = point_combat_touch;
483  VectorSet (self->mins, -8, -8, -16);
484  VectorSet (self->maxs, 8, 8, 16);
485  self->svflags = SVF_NOCLIENT;
486  gi.linkentity (self);
487 }

◆ SP_target_actor()

void SP_target_actor ( edict_t ent)

Definition at line 585 of file m_actor.c.

586 {
587  if (!self->targetname)
588  gi.dprintf ("%s with no targetname at %s\n", self->classname, vtos(self->s.origin));
589 
590  self->solid = SOLID_TRIGGER;
591  self->touch = target_actor_touch;
592  VectorSet (self->mins, -8, -8, -8);
593  VectorSet (self->maxs, 8, 8, 8);
594  self->svflags = SVF_NOCLIENT;
595 
596  if (self->spawnflags & 1)
597  {
598  if (!self->speed)
599  self->speed = 200;
600  if (!st.height)
601  st.height = 200;
602  if (self->s.angles[YAW] == 0)
603  self->s.angles[YAW] = 360;
604  G_SetMovedir (self->s.angles, self->movedir);
605  self->movedir[2] = st.height;
606  }
607 
608  gi.linkentity (self);
609 }

◆ SP_target_blaster()

void SP_target_blaster ( edict_t ent)

Definition at line 431 of file g_target.c.

432 {
433  self->use = use_target_blaster;
434  G_SetMovedir (self->s.angles, self->movedir);
435  self->noise_index = gi.soundindex ("weapons/laser2.wav");
436 
437  if (!self->dmg)
438  self->dmg = 15;
439  if (!self->speed)
440  self->speed = 1000;
441 
442  self->svflags = SVF_NOCLIENT;
443 }

◆ SP_target_changelevel()

void SP_target_changelevel ( edict_t ent)

Definition at line 302 of file g_target.c.

303 {
304  if (!ent->map)
305  {
306  gi.dprintf("target_changelevel with no map at %s\n", vtos(ent->s.origin));
307  G_FreeEdict (ent);
308  return;
309  }
310 
311  // ugly hack because *SOMEBODY* screwed up their map
312  if((Q_stricmp(level.mapname, "fact1") == 0) && (Q_stricmp(ent->map, "fact3") == 0))
313  ent->map = "fact3$secret1";
314 
316  ent->svflags = SVF_NOCLIENT;
317 }

◆ SP_target_character()

void SP_target_character ( edict_t ent)

Definition at line 1563 of file g_misc.c.

1564 {
1565  self->movetype = MOVETYPE_PUSH;
1566  gi.setmodel (self, self->model);
1567  self->solid = SOLID_BSP;
1568  self->s.frame = 12;
1569  gi.linkentity (self);
1570  return;
1571 }

◆ SP_target_crosslevel_target()

void SP_target_crosslevel_target ( edict_t ent)

Definition at line 478 of file g_target.c.

479 {
480  if (! self->delay)
481  self->delay = 1;
482  self->svflags = SVF_NOCLIENT;
483 
484  self->think = target_crosslevel_target_think;
485  self->nextthink = level.time + self->delay;
486 }

◆ SP_target_crosslevel_trigger()

void SP_target_crosslevel_trigger ( edict_t ent)

Definition at line 457 of file g_target.c.

458 {
459  self->svflags = SVF_NOCLIENT;
460  self->use = trigger_crosslevel_trigger_use;
461 }

◆ SP_target_earthquake()

void SP_target_earthquake ( edict_t ent)

Definition at line 793 of file g_target.c.

794 {
795  if (!self->targetname)
796  gi.dprintf("untargeted %s at %s\n", self->classname, vtos(self->s.origin));
797 
798  if (!self->count)
799  self->count = 5;
800 
801  if (!self->speed)
802  self->speed = 200;
803 
804  self->svflags |= SVF_NOCLIENT;
805  self->think = target_earthquake_think;
806  self->use = target_earthquake_use;
807 
808  self->noise_index = gi.soundindex ("world/quake.wav");
809 }

◆ SP_target_explosion()

void SP_target_explosion ( edict_t ent)

Definition at line 258 of file g_target.c.

259 {
260  ent->use = use_target_explosion;
261  ent->svflags = SVF_NOCLIENT;
262 }

◆ SP_target_goal()

void SP_target_goal ( edict_t ent)

Definition at line 202 of file g_target.c.

203 {
204  if (deathmatch->value)
205  { // auto-remove for deathmatch
206  G_FreeEdict (ent);
207  return;
208  }
209 
210  ent->use = use_target_goal;
211  if (!st.noise)
212  st.noise = "misc/secret.wav";
213  ent->noise_index = gi.soundindex (st.noise);
214  ent->svflags = SVF_NOCLIENT;
215  level.total_goals++;
216 }

◆ SP_target_help()

void SP_target_help ( edict_t ent)

Definition at line 131 of file g_target.c.

132 {
133  if (deathmatch->value)
134  { // auto-remove for deathmatch
135  G_FreeEdict (ent);
136  return;
137  }
138 
139  if (!ent->message)
140  {
141  gi.dprintf ("%s with no message at %s\n", ent->classname, vtos(ent->s.origin));
142  G_FreeEdict (ent);
143  return;
144  }
145  ent->use = Use_Target_Help;
146 }

◆ SP_target_laser()

void SP_target_laser ( edict_t self)

Definition at line 642 of file g_target.c.

643 {
644  // let everything else get spawned before we start firing
645  self->think = target_laser_start;
646  self->nextthink = level.time + 1;
647 }

◆ SP_target_lightramp()

void SP_target_lightramp ( edict_t self)

Definition at line 715 of file g_target.c.

716 {
717  if (!self->message || strlen(self->message) != 2 || self->message[0] < 'a' || self->message[0] > 'z' || self->message[1] < 'a' || self->message[1] > 'z' || self->message[0] == self->message[1])
718  {
719  gi.dprintf("target_lightramp has bad ramp (%s) at %s\n", self->message, vtos(self->s.origin));
720  G_FreeEdict (self);
721  return;
722  }
723 
724  if (deathmatch->value)
725  {
726  G_FreeEdict (self);
727  return;
728  }
729 
730  if (!self->target)
731  {
732  gi.dprintf("%s with no target at %s\n", self->classname, vtos(self->s.origin));
733  G_FreeEdict (self);
734  return;
735  }
736 
737  self->svflags |= SVF_NOCLIENT;
738  self->use = target_lightramp_use;
739  self->think = target_lightramp_think;
740 
741  self->movedir[0] = self->message[0] - 'a';
742  self->movedir[1] = self->message[1] - 'a';
743  self->movedir[2] = (self->movedir[1] - self->movedir[0]) / (self->speed / FRAMETIME);
744 }

◆ SP_target_secret()

void SP_target_secret ( edict_t ent)

Definition at line 164 of file g_target.c.

165 {
166  if (deathmatch->value)
167  { // auto-remove for deathmatch
168  G_FreeEdict (ent);
169  return;
170  }
171 
172  ent->use = use_target_secret;
173  if (!st.noise)
174  st.noise = "misc/secret.wav";
175  ent->noise_index = gi.soundindex (st.noise);
176  ent->svflags = SVF_NOCLIENT;
177  level.total_secrets++;
178  // map bug hack
179  if (!Q_stricmp(level.mapname, "mine3") && ent->s.origin[0] == 280 && ent->s.origin[1] == -2048 && ent->s.origin[2] == -624)
180  ent->message = "You have found a secret area.";
181 }

◆ SP_target_spawner()

void SP_target_spawner ( edict_t ent)

Definition at line 396 of file g_target.c.

397 {
398  self->use = use_target_spawner;
399  self->svflags = SVF_NOCLIENT;
400  if (self->speed)
401  {
402  G_SetMovedir (self->s.angles, self->movedir);
403  VectorScale (self->movedir, self->speed, self->movedir);
404  }
405 }

◆ SP_target_speaker()

void SP_target_speaker ( edict_t ent)

Definition at line 81 of file g_target.c.

82 {
83  char buffer[MAX_QPATH];
84 
85  if(!st.noise)
86  {
87  gi.dprintf("target_speaker with no noise set at %s\n", vtos(ent->s.origin));
88  return;
89  }
90  if (!strstr (st.noise, ".wav"))
91  Com_sprintf (buffer, sizeof(buffer), "%s.wav", st.noise);
92  else
93  strncpy (buffer, st.noise, sizeof(buffer));
95 
96  if (!ent->volume)
97  ent->volume = 1.0;
98 
99  if (!ent->attenuation)
100  ent->attenuation = 1.0;
101  else if (ent->attenuation == -1) // use -1 so 0 defaults to 1
102  ent->attenuation = 0;
103 
104  // check for prestarted looping sound
105  if (ent->spawnflags & 1)
106  ent->s.sound = ent->noise_index;
107 
108  ent->use = Use_Target_Speaker;
109 
110  // must link the entity so we get areas and clusters so
111  // the server can determine who to send updates to
112  gi.linkentity (ent);
113 }

◆ SP_target_splash()

void SP_target_splash ( edict_t ent)

Definition at line 352 of file g_target.c.

353 {
354  self->use = use_target_splash;
355  G_SetMovedir (self->s.angles, self->movedir);
356 
357  if (!self->count)
358  self->count = 32;
359 
360  self->svflags = SVF_NOCLIENT;
361 }

◆ SP_target_string()

void SP_target_string ( edict_t ent)

Definition at line 1607 of file g_misc.c.

1608 {
1609  if (!self->message)
1610  self->message = "";
1611  self->use = target_string_use;
1612 }

◆ SP_target_temp_entity()

void SP_target_temp_entity ( edict_t ent)

Definition at line 34 of file g_target.c.

35 {
36  ent->use = Use_Target_Tent;
37 }

◆ SP_trigger_always()

void SP_trigger_always ( edict_t ent)

Definition at line 373 of file g_trigger.c.

374 {
375  // we must have some delay to make sure our use targets are present
376  if (ent->delay < 0.2)
377  ent->delay = 0.2;
378  G_UseTargets(ent, ent);
379 }

◆ SP_trigger_counter()

void SP_trigger_counter ( edict_t ent)

Definition at line 352 of file g_trigger.c.

353 {
354  self->wait = -1;
355  if (!self->count)
356  self->count = 2;
357 
358  self->use = trigger_counter_use;
359 }

◆ SP_trigger_elevator()

void SP_trigger_elevator ( edict_t ent)

Definition at line 1750 of file g_func.c.

1751 {
1752  self->think = trigger_elevator_init;
1753  self->nextthink = level.time + FRAMETIME;
1754 }

◆ SP_trigger_gravity()

void SP_trigger_gravity ( edict_t ent)

Definition at line 537 of file g_trigger.c.

538 {
539  if (st.gravity == 0)
540  {
541  gi.dprintf("trigger_gravity without gravity set at %s\n", vtos(self->s.origin));
542  G_FreeEdict (self);
543  return;
544  }
545 
546  InitTrigger (self);
547  self->gravity = atoi(st.gravity);
548  self->touch = trigger_gravity_touch;
549 }

◆ SP_trigger_hurt()

void SP_trigger_hurt ( edict_t ent)

Definition at line 496 of file g_trigger.c.

497 {
498  InitTrigger (self);
499 
500  self->noise_index = gi.soundindex ("world/electro.wav");
501  self->touch = hurt_touch;
502 
503  if (!self->dmg)
504  self->dmg = 5;
505 
506  if (self->spawnflags & 1)
507  self->solid = SOLID_NOT;
508  else
509  self->solid = SOLID_TRIGGER;
510 
511  if (self->spawnflags & 2)
512  self->use = hurt_use;
513 
514  gi.linkentity (self);
515 }

◆ SP_trigger_key()

void SP_trigger_key ( edict_t ent)

Definition at line 282 of file g_trigger.c.

283 {
284  if (!st.item)
285  {
286  gi.dprintf("no key item for trigger_key at %s\n", vtos(self->s.origin));
287  return;
288  }
289  self->item = FindItemByClassname (st.item);
290 
291  if (!self->item)
292  {
293  gi.dprintf("item %s not found for trigger_key at %s\n", st.item, vtos(self->s.origin));
294  return;
295  }
296 
297  if (!self->target)
298  {
299  gi.dprintf("%s at %s has no target\n", self->classname, vtos(self->s.origin));
300  return;
301  }
302 
303  gi.soundindex ("misc/keytry.wav");
304  gi.soundindex ("misc/keyuse.wav");
305 
306  self->use = trigger_key_use;
307 }

◆ SP_trigger_monsterjump()

void SP_trigger_monsterjump ( edict_t ent)

Definition at line 586 of file g_trigger.c.

587 {
588  if (!self->speed)
589  self->speed = 200;
590  if (!st.height)
591  st.height = 200;
592  if (self->s.angles[YAW] == 0)
593  self->s.angles[YAW] = 360;
594  InitTrigger (self);
595  self->touch = trigger_monsterjump_touch;
596  self->movedir[2] = st.height;
597 }

◆ SP_trigger_multiple()

void SP_trigger_multiple ( edict_t ent)

Definition at line 118 of file g_trigger.c.

119 {
120  if (ent->sounds == 1)
121  ent->noise_index = gi.soundindex ("misc/secret.wav");
122  else if (ent->sounds == 2)
123  ent->noise_index = gi.soundindex ("misc/talk.wav");
124  else if (ent->sounds == 3)
125  ent->noise_index = gi.soundindex ("misc/trigger1.wav");
126 
127  if (!ent->wait)
128  ent->wait = 0.2;
129  ent->touch = Touch_Multi;
130  ent->movetype = MOVETYPE_NONE;
131  ent->svflags |= SVF_NOCLIENT;
132 
133 
134  if (ent->spawnflags & 4)
135  {
136  ent->solid = SOLID_NOT;
137  ent->use = trigger_enable;
138  }
139  else
140  {
141  ent->solid = SOLID_TRIGGER;
142  ent->use = Use_Multi;
143  }
144 
145  if (!VectorCompare(ent->s.angles, vec3_origin))
146  G_SetMovedir (ent->s.angles, ent->movedir);
147 
148  gi.setmodel (ent, ent->model);
149  gi.linkentity (ent);
150 }

Referenced by SP_trigger_once().

◆ SP_trigger_once()

void SP_trigger_once ( edict_t ent)

Definition at line 168 of file g_trigger.c.

169 {
170  // make old maps work because I messed up on flag assignments here
171  // triggered was on bit 1 when it should have been on bit 4
172  if (ent->spawnflags & 1)
173  {
174  vec3_t v;
175 
176  VectorMA (ent->mins, 0.5, ent->size, v);
177  ent->spawnflags &= ~1;
178  ent->spawnflags |= 4;
179  gi.dprintf("fixed TRIGGERED flag on %s at %s\n", ent->classname, vtos(v));
180  }
181 
182  ent->wait = -1;
183  SP_trigger_multiple (ent);
184 }

◆ SP_trigger_push()

void SP_trigger_push ( edict_t ent)

Definition at line 424 of file g_trigger.c.

425 {
426  InitTrigger (self);
427  windsound = gi.soundindex ("misc/windfly.wav");
428  self->touch = trigger_push_touch;
429  if (!self->speed)
430  self->speed = 1000;
431  gi.linkentity (self);
432 }

◆ SP_trigger_relay()

void SP_trigger_relay ( edict_t ent)

Definition at line 194 of file g_trigger.c.

195 {
196  self->use = trigger_relay_use;
197 }

◆ SP_turret_base()

void SP_turret_base ( edict_t self)

Definition at line 259 of file g_turret.c.

260 {
261  self->solid = SOLID_BSP;
262  self->movetype = MOVETYPE_PUSH;
263  gi.setmodel (self, self->model);
264  self->blocked = turret_blocked;
265  gi.linkentity (self);
266 }

◆ SP_turret_breach()

void SP_turret_breach ( edict_t self)

Definition at line 220 of file g_turret.c.

221 {
222  self->solid = SOLID_BSP;
223  self->movetype = MOVETYPE_PUSH;
224  gi.setmodel (self, self->model);
225 
226  if (!self->speed)
227  self->speed = 50;
228  if (!self->dmg)
229  self->dmg = 10;
230 
231  if (!st.minpitch)
232  st.minpitch = -30;
233  if (!st.maxpitch)
234  st.maxpitch = 30;
235  if (!st.maxyaw)
236  st.maxyaw = 360;
237 
238  self->pos1[PITCH] = -1 * st.minpitch;
239  self->pos1[YAW] = st.minyaw;
240  self->pos2[PITCH] = -1 * st.maxpitch;
241  self->pos2[YAW] = st.maxyaw;
242 
243  self->ideal_yaw = self->s.angles[YAW];
244  self->move_angles[YAW] = self->ideal_yaw;
245 
246  self->blocked = turret_blocked;
247 
248  self->think = turret_breach_finish_init;
249  self->nextthink = level.time + FRAMETIME;
250  gi.linkentity (self);
251 }

◆ SP_turret_driver()

void SP_turret_driver ( edict_t self)

Definition at line 387 of file g_turret.c.

388 {
389  if (deathmatch->value)
390  {
391  G_FreeEdict (self);
392  return;
393  }
394 
395  self->movetype = MOVETYPE_PUSH;
396  self->solid = SOLID_BBOX;
397  self->s.modelindex = gi.modelindex("models/monsters/infantry/tris.md2");
398  VectorSet (self->mins, -16, -16, -24);
399  VectorSet (self->maxs, 16, 16, 32);
400 
401  self->health = 100;
402  self->gib_health = 0;
403  self->mass = 200;
404  self->viewheight = 24;
405 
406  self->die = turret_driver_die;
407  self->monsterinfo.stand = infantry_stand;
408 
409  self->flags |= FL_NO_KNOCKBACK;
410 
411  level.total_monsters++;
412 
413  self->svflags |= SVF_MONSTER;
414  self->s.renderfx |= RF_FRAMELERP;
415  self->takedamage = DAMAGE_AIM;
416  self->use = monster_use;
417  self->clipmask = MASK_MONSTERSOLID;
418  VectorCopy (self->s.origin, self->s.old_origin);
419  self->monsterinfo.aiflags |= AI_STAND_GROUND|AI_DUCKED;
420 
421  if (st.item)
422  {
423  self->item = FindItemByClassname (st.item);
424  if (!self->item)
425  gi.dprintf("%s at %s has bad item: %s\n", self->classname, vtos(self->s.origin), st.item);
426  }
427 
428  self->think = turret_driver_link;
429  self->nextthink = level.time + FRAMETIME;
430 
431  gi.linkentity (self);
432 }

◆ SP_viewthing()

void SP_viewthing ( edict_t ent)

Definition at line 499 of file g_misc.c.

500 {
501  gi.dprintf ("viewthing spawned\n");
502 
503  ent->movetype = MOVETYPE_NONE;
504  ent->solid = SOLID_BBOX;
505  ent->s.renderfx = RF_FRAMELERP;
506  VectorSet (ent->mins, -16, -16, -24);
507  VectorSet (ent->maxs, 16, 16, 32);
508  ent->s.modelindex = gi.modelindex ("models/objects/banner/tris.md2");
509  gi.linkentity (ent);
510  ent->nextthink = level.time + 0.5;
511  ent->think = TH_viewthing;
512  return;
513 }

◆ SP_worldspawn()

void SP_worldspawn ( edict_t ent)

Definition at line 798 of file g_spawn.c.

799 {
800  ent->movetype = MOVETYPE_PUSH;
801  ent->solid = SOLID_BSP;
802  ent->inuse = true; // since the world doesn't use G_Spawn()
803  ent->s.modelindex = 1; // world model is always index 1
804 
805  //---------------
806 
807  // reserve some spots for dead player bodies for coop / deathmatch
808  InitBodyQue ();
809 
810  // set configstrings for items
811  SetItemNames ();
812 
813  if (st.nextmap)
814  strcpy (level.nextmap, st.nextmap);
815 
816  // make some data visible to the server
817 
818  if (ent->message && ent->message[0])
819  {
820  gi.configstring (CS_NAME, ent->message);
821  strncpy (level.level_name, ent->message, sizeof(level.level_name));
822  }
823  else
824  strncpy (level.level_name, level.mapname, sizeof(level.level_name));
825 
826  if (st.sky && st.sky[0])
828  else
829  gi.configstring (CS_SKY, "unit1_");
830 
832 
833  gi.configstring (CS_SKYAXIS, va("%f %f %f",
834  st.skyaxis[0], st.skyaxis[1], st.skyaxis[2]) );
835 
836  gi.configstring (CS_CDTRACK, va("%i", ent->sounds) );
837 
838  gi.configstring (CS_MAXCLIENTS, va("%i", (int)(maxclients->value) ) );
839 
840  // status bar program
841  if (deathmatch->value)
843  else
845 
846  //---------------
847 
848 
849  // help icon for statusbar
850  gi.imageindex ("i_help");
851  level.pic_health = gi.imageindex ("i_health");
852  gi.imageindex ("help");
853  gi.imageindex ("field_3");
854 
855  if (!st.gravity)
856  gi.cvar_set("sv_gravity", "800");
857  else
858  gi.cvar_set("sv_gravity", st.gravity);
859 
860  snd_fry = gi.soundindex ("player/fry.wav"); // standing in lava / slime
861 
862  PrecacheItem (FindItem ("Blaster"));
863 
864  gi.soundindex ("player/lava1.wav");
865  gi.soundindex ("player/lava2.wav");
866 
867  gi.soundindex ("misc/pc_up.wav");
868  gi.soundindex ("misc/talk1.wav");
869 
870  gi.soundindex ("misc/udeath.wav");
871 
872  // gibs
873  gi.soundindex ("items/respawn1.wav");
874 
875  // sexed sounds
876  gi.soundindex ("*death1.wav");
877  gi.soundindex ("*death2.wav");
878  gi.soundindex ("*death3.wav");
879  gi.soundindex ("*death4.wav");
880  gi.soundindex ("*fall1.wav");
881  gi.soundindex ("*fall2.wav");
882  gi.soundindex ("*gurp1.wav"); // drowning damage
883  gi.soundindex ("*gurp2.wav");
884  gi.soundindex ("*jump1.wav"); // player jump
885  gi.soundindex ("*pain25_1.wav");
886  gi.soundindex ("*pain25_2.wav");
887  gi.soundindex ("*pain50_1.wav");
888  gi.soundindex ("*pain50_2.wav");
889  gi.soundindex ("*pain75_1.wav");
890  gi.soundindex ("*pain75_2.wav");
891  gi.soundindex ("*pain100_1.wav");
892  gi.soundindex ("*pain100_2.wav");
893 
894  // sexed models
895  // THIS ORDER MUST MATCH THE DEFINES IN g_local.h
896  // you can add more, max 15
897  gi.modelindex ("#w_blaster.md2");
898  gi.modelindex ("#w_shotgun.md2");
899  gi.modelindex ("#w_sshotgun.md2");
900  gi.modelindex ("#w_machinegun.md2");
901  gi.modelindex ("#w_chaingun.md2");
902  gi.modelindex ("#a_grenades.md2");
903  gi.modelindex ("#w_glauncher.md2");
904  gi.modelindex ("#w_rlauncher.md2");
905  gi.modelindex ("#w_hyperblaster.md2");
906  gi.modelindex ("#w_railgun.md2");
907  gi.modelindex ("#w_bfg.md2");
908 
909  //-------------------
910 
911  gi.soundindex ("player/gasp1.wav"); // gasping for air
912  gi.soundindex ("player/gasp2.wav"); // head breaking surface, not gasping
913 
914  gi.soundindex ("player/watr_in.wav"); // feet hitting water
915  gi.soundindex ("player/watr_out.wav"); // feet leaving water
916 
917  gi.soundindex ("player/watr_un.wav"); // head going underwater
918 
919  gi.soundindex ("player/u_breath1.wav");
920  gi.soundindex ("player/u_breath2.wav");
921 
922  gi.soundindex ("items/pkup.wav"); // bonus item pickup
923  gi.soundindex ("world/land.wav"); // landing thud
924  gi.soundindex ("misc/h2ohit1.wav"); // landing splash
925 
926  gi.soundindex ("items/damage.wav");
927  gi.soundindex ("items/protect.wav");
928  gi.soundindex ("items/protect4.wav");
929  gi.soundindex ("weapons/noammo.wav");
930 
931  gi.soundindex ("infantry/inflies1.wav");
932 
933  sm_meat_index = gi.modelindex ("models/objects/gibs/sm_meat/tris.md2");
934  gi.modelindex ("models/objects/gibs/arm/tris.md2");
935  gi.modelindex ("models/objects/gibs/bone/tris.md2");
936  gi.modelindex ("models/objects/gibs/bone2/tris.md2");
937  gi.modelindex ("models/objects/gibs/chest/tris.md2");
938  gi.modelindex ("models/objects/gibs/skull/tris.md2");
939  gi.modelindex ("models/objects/gibs/head2/tris.md2");
940 
941 //
942 // Setup light animation tables. 'a' is total darkness, 'z' is doublebright.
943 //
944 
945  // 0 normal
946  gi.configstring(CS_LIGHTS+0, "m");
947 
948  // 1 FLICKER (first variety)
949  gi.configstring(CS_LIGHTS+1, "mmnmmommommnonmmonqnmmo");
950 
951  // 2 SLOW STRONG PULSE
952  gi.configstring(CS_LIGHTS+2, "abcdefghijklmnopqrstuvwxyzyxwvutsrqponmlkjihgfedcba");
953 
954  // 3 CANDLE (first variety)
955  gi.configstring(CS_LIGHTS+3, "mmmmmaaaaammmmmaaaaaabcdefgabcdefg");
956 
957  // 4 FAST STROBE
958  gi.configstring(CS_LIGHTS+4, "mamamamamama");
959 
960  // 5 GENTLE PULSE 1
961  gi.configstring(CS_LIGHTS+5,"jklmnopqrstuvwxyzyxwvutsrqponmlkj");
962 
963  // 6 FLICKER (second variety)
964  gi.configstring(CS_LIGHTS+6, "nmonqnmomnmomomno");
965 
966  // 7 CANDLE (second variety)
967  gi.configstring(CS_LIGHTS+7, "mmmaaaabcdefgmmmmaaaammmaamm");
968 
969  // 8 CANDLE (third variety)
970  gi.configstring(CS_LIGHTS+8, "mmmaaammmaaammmabcdefaaaammmmabcdefmmmaaaa");
971 
972  // 9 SLOW STROBE (fourth variety)
973  gi.configstring(CS_LIGHTS+9, "aaaaaaaazzzzzzzz");
974 
975  // 10 FLUORESCENT FLICKER
976  gi.configstring(CS_LIGHTS+10, "mmamammmmammamamaaamammma");
977 
978  // 11 SLOW PULSE NOT FADE TO BLACK
979  gi.configstring(CS_LIGHTS+11, "abcdefghijklmnopqrrqponmlkjihgfedcba");
980 
981  // styles 32-62 are assigned by the light program for switchable lights
982 
983  // 63 testing
984  gi.configstring(CS_LIGHTS+63, "a");
985 }

◆ SpawnEntities()

void SpawnEntities ( char *  mapname,
char *  entities,
char *  spawnpoint 
)

Definition at line 522 of file g_spawn.c.

523 {
524  edict_t *ent;
525  int inhibit;
526  char *com_token;
527  int i;
528  float skill_level;
529 
530  skill_level = floor (skill->value);
531  if (skill_level < 0)
532  skill_level = 0;
533  if (skill_level > 3)
534  skill_level = 3;
535  if (skill->value != skill_level)
536  gi.cvar_forceset("skill", va("%f", skill_level));
537 
538  SaveClientData ();
539 
541 
542  memset (&level, 0, sizeof(level));
543  memset (g_edicts, 0, game.maxentities * sizeof (g_edicts[0]));
544 
545  strncpy (level.mapname, mapname, sizeof(level.mapname)-1);
546  strncpy (game.spawnpoint, spawnpoint, sizeof(game.spawnpoint)-1);
547 
548  // set client fields on player ents
549  for (i=0 ; i<game.maxclients ; i++)
550  g_edicts[i+1].client = game.clients + i;
551 
552  ent = NULL;
553  inhibit = 0;
554 
555 // parse ents
556  while (1)
557  {
558  // parse the opening brace
559  com_token = COM_Parse (&entities);
560  if (!entities)
561  break;
562  if (com_token[0] != '{')
563  gi.error ("ED_LoadFromFile: found %s when expecting {",com_token);
564 
565  if (!ent)
566  ent = g_edicts;
567  else
568  ent = G_Spawn ();
569  entities = ED_ParseEdict (entities, ent);
570 
571  // yet another map hack
572  if (!Q_stricmp(level.mapname, "command") && !Q_stricmp(ent->classname, "trigger_once") && !Q_stricmp(ent->model, "*27"))
574 
575  // remove things (except the world) from different skill levels or deathmatch
576  if (ent != g_edicts)
577  {
578  if (deathmatch->value)
579  {
581  {
582  G_FreeEdict (ent);
583  inhibit++;
584  continue;
585  }
586  }
587  else
588  {
589  if ( /* ((coop->value) && (ent->spawnflags & SPAWNFLAG_NOT_COOP)) || */
590  ((skill->value == 0) && (ent->spawnflags & SPAWNFLAG_NOT_EASY)) ||
591  ((skill->value == 1) && (ent->spawnflags & SPAWNFLAG_NOT_MEDIUM)) ||
592  (((skill->value == 2) || (skill->value == 3)) && (ent->spawnflags & SPAWNFLAG_NOT_HARD))
593  )
594  {
595  G_FreeEdict (ent);
596  inhibit++;
597  continue;
598  }
599  }
600 
602  }
603 
604  ED_CallSpawn (ent);
605  }
606 
607  gi.dprintf ("%i entities inhibited\n", inhibit);
608 
609 #ifdef DEBUG
610  i = 1;
611  ent = EDICT_NUM(i);
612  while (i < globals.num_edicts) {
613  if (ent->inuse != 0 || ent->inuse != 1)
614  Com_DPrintf("Invalid entity %d\n", i);
615  i++, ent++;
616  }
617 #endif
618 
619  G_FindTeams ();
620 
621  PlayerTrail_Init ();
622 }

Referenced by GetGameAPI().

Variable Documentation

◆ dm_statusbar

char* dm_statusbar

Definition at line 708 of file g_spawn.c.

Referenced by SP_worldspawn().

◆ single_statusbar

char* single_statusbar

Definition at line 650 of file g_spawn.c.

Referenced by SP_worldspawn().

◆ spawns

spawn_t spawns[]

Definition at line 148 of file g_spawn.c.

Referenced by ED_CallSpawn().

FindItem
gitem_t * FindItem(char *pickup_name)
Definition: g_items.c:100
sound_pain2
static int sound_pain2
Definition: m_gunner.c:33
entity_state_s::old_origin
vec3_t old_origin
Definition: q_shared.h:1175
gi
game_import_t gi
Definition: g_main.c:25
RF_TRANSLUCENT
#define RF_TRANSLUCENT
Definition: q_shared.h:618
supertank_move_stand
mmove_t supertank_move_stand
Definition: m_supertank.c:131
moveinfo_t::decel
float decel
Definition: g_local.h:384
gladiator_die
void gladiator_die(edict_t *self, edict_t *inflictor, edict_t *attacker, int damage, vec3_t point)
Definition: m_gladiator.c:308
misc_strogg_ship_use
void misc_strogg_ship_use(edict_t *self, edict_t *other, edict_t *activator)
Definition: g_misc.c:1408
train_use
void train_use(edict_t *self, edict_t *other, edict_t *activator)
Definition: g_func.c:1633
flyer_sight
void flyer_sight(edict_t *self, edict_t *other)
Definition: m_flyer.c:52
trigger_counter_use
void trigger_counter_use(edict_t *self, edict_t *other, edict_t *activator)
Definition: g_trigger.c:326
gladiator_melee
void gladiator_melee(edict_t *self)
Definition: m_gladiator.c:162
sound_search1
static int sound_search1
Definition: m_supertank.c:37
misc_deadsoldier_die
void misc_deadsoldier_die(edict_t *self, edict_t *inflictor, edict_t *attacker, int damage, vec3_t point)
Definition: g_misc.c:1217
CS_MAXCLIENTS
#define CS_MAXCLIENTS
Definition: q_shared.h:1133
sound_sight
static int sound_sight
Definition: m_berserk.c:36
gunner_sight
void gunner_sight(edict_t *self, edict_t *other)
Definition: m_gunner.c:46
chick_sight
void chick_sight(edict_t *self, edict_t *other)
Definition: m_chick.c:621
game_import_t::dprintf
void(* dprintf)(char *fmt,...)
Definition: game.h:106
edict_s::s
entity_state_t s
Definition: g_local.h:964
use_target_changelevel
void use_target_changelevel(edict_t *self, edict_t *other, edict_t *activator)
Definition: g_target.c:270
sound_sight
static int sound_sight
Definition: m_flipper.c:39
EF_TELEPORTER
#define EF_TELEPORTER
Definition: q_shared.h:574
func_train_find
void func_train_find(edict_t *self)
Definition: g_func.c:1601
deathmatch
cvar_t * deathmatch
Definition: g_main.c:35
flipper_melee
void flipper_melee(edict_t *self)
Definition: m_flipper.c:218
hover_die
void hover_die(edict_t *self, edict_t *inflictor, edict_t *attacker, int damage, vec3_t point)
Definition: m_hover.c:541
PlayerTrail_Init
void PlayerTrail_Init(void)
Definition: p_trail.c:49
insane_walk
void insane_walk(edict_t *self)
Definition: m_insane.c:442
medic_attack
void medic_attack(edict_t *self)
Definition: m_medic.c:696
sound_gunshot
static int sound_gunshot
Definition: m_infantry.c:39
sound_chomp
static int sound_chomp
Definition: m_flipper.c:32
edict_s::volume
float volume
Definition: g_local.h:1083
button_use
void button_use(edict_t *self, edict_t *other, edict_t *activator)
Definition: g_func.c:737
value
GLfloat value
Definition: qgl_win.c:63
tank_die
void tank_die(edict_t *self, edict_t *inflictor, edict_t *attacker, int damage, vec3_t point)
Definition: m_tank.c:753
moveinfo_t::sound_end
int sound_end
Definition: g_local.h:380
misc_viper_bomb_use
void misc_viper_bomb_use(edict_t *self, edict_t *other, edict_t *activator)
Definition: g_misc.c:1358
YAW
#define YAW
Definition: q_shared.h:66
DEAD_DEAD
#define DEAD_DEAD
Definition: g_local.h:113
edict_s::pos2
vec3_t pos2
Definition: g_local.h:1022
CS_SKY
#define CS_SKY
Definition: q_shared.h:1127
sound_melee2
static int sound_melee2
Definition: m_brain.c:44
DOOR_Y_AXIS
#define DOOR_Y_AXIS
Definition: g_func.c:69
mutant_sight
void mutant_sight(edict_t *self, edict_t *other)
Definition: m_mutant.c:62
sound_melee1
static int sound_melee1
Definition: m_brain.c:43
MAX_QPATH
#define MAX_QPATH
Definition: q_shared.h:73
MASK_MONSTERSOLID
#define MASK_MONSTERSOLID
Definition: q_shared.h:394
trigger_relay_use
void trigger_relay_use(edict_t *self, edict_t *other, edict_t *activator)
Definition: g_trigger.c:189
barrel_delay
void barrel_delay(edict_t *self, edict_t *inflictor, edict_t *attacker, int damage, vec3_t point)
Definition: g_misc.c:966
sound_die
static int sound_die
Definition: m_medic.c:37
turret_breach_finish_init
void turret_breach_finish_init(edict_t *self)
Definition: g_turret.c:201
tank_idle
void tank_idle(edict_t *self)
Definition: m_tank.c:70
edict_s::model
char * model
Definition: g_local.h:998
insane_pain
void insane_pain(edict_t *self, edict_t *other, float kick, int damage)
Definition: m_insane.c:477
sound_scream
static int sound_scream[8]
Definition: m_insane.c:35
G_Spawn
edict_t * G_Spawn(void)
Definition: g_utils.c:420
func_timer_think
void func_timer_think(edict_t *self)
Definition: g_func.c:1771
func_object_use
void func_object_use(edict_t *self, edict_t *other, edict_t *activator)
Definition: g_misc.c:683
sound_missile_reload
static int sound_missile_reload
Definition: m_chick.c:43
field_t
Definition: g_local.h:583
medic_checkattack
qboolean medic_checkattack(edict_t *self)
Definition: m_medic.c:704
sound_pain1
static int sound_pain1
Definition: m_float.c:36
light_use
static void light_use(edict_t *self, edict_t *other, edict_t *activator)
Definition: g_misc.c:545
func_conveyor_use
void func_conveyor_use(edict_t *self, edict_t *other, edict_t *activator)
Definition: g_func.c:1825
sound_reelin
static int sound_reelin
Definition: m_parasite.c:38
hover_sight
void hover_sight(edict_t *self, edict_t *other)
Definition: m_hover.c:43
tank_stand
void tank_stand(edict_t *self)
Definition: m_tank.c:115
edict_s::absmax
vec3_t absmax
Definition: g_local.h:985
F_IGNORE
@ F_IGNORE
Definition: g_local.h:580
parasite_idle
void parasite_idle(edict_t *self)
Definition: m_parasite.c:137
mutant_run
void mutant_run(edict_t *self)
Definition: m_mutant.c:242
AI_GOOD_GUY
#define AI_GOOD_GUY
Definition: g_local.h:135
FindItemByClassname
gitem_t * FindItemByClassname(char *classname)
Definition: g_items.c:77
flipper_move_stand
mmove_t flipper_move_stand
Definition: m_flipper.c:49
actor_pain
void actor_pain(edict_t *self, edict_t *other, float kick, int damage)
Definition: m_actor.c:230
maxclients
cvar_t * maxclients
Definition: g_main.c:44
barrel_touch
void barrel_touch(edict_t *self, edict_t *other, cplane_t *plane, csurface_t *surf)
Definition: g_misc.c:873
edict_s::count
int count
Definition: g_local.h:1067
infantry_die
void infantry_die(edict_t *self, edict_t *inflictor, edict_t *attacker, int damage, vec3_t point)
Definition: m_infantry.c:386
SOLID_BBOX
@ SOLID_BBOX
Definition: game.h:37
spawn_t::spawn
void(* spawn)(edict_t *ent)
Definition: g_spawn.c:26
sound_die
static int sound_die
Definition: m_flyer.c:41
sound_sight
static int sound_sight
Definition: m_gunner.c:38
sound_death1
static int sound_death1
Definition: m_float.c:34
sound_hook_heal
static int sound_hook_heal
Definition: m_medic.c:42
flyer_stand
void flyer_stand(edict_t *self)
Definition: m_flyer.c:232
sound_pain1
static int sound_pain1
Definition: m_infantry.c:34
jorg_attack
void jorg_attack(edict_t *self)
Definition: m_boss31.c:539
button_killed
void button_killed(edict_t *self, edict_t *inflictor, edict_t *attacker, int damage, vec3_t point)
Definition: g_func.c:755
flipper_stand
void flipper_stand(edict_t *self)
Definition: m_flipper.c:51
mutant_pain
void mutant_pain(edict_t *self, edict_t *other, float kick, int damage)
Definition: m_mutant.c:496
sound_step1
static int sound_step1
Definition: m_mutant.c:41
Use_Plat
void Use_Plat(edict_t *ent, edict_t *other, edict_t *activator)
Definition: g_func.c:428
hurt_use
void hurt_use(edict_t *self, edict_t *other, edict_t *activator)
Definition: g_trigger.c:455
use_target_goal
void use_target_goal(edict_t *ent, edict_t *other, edict_t *activator)
Definition: g_target.c:189
TH_viewthing
void TH_viewthing(edict_t *ent)
Definition: g_misc.c:493
misc_viper_use
void misc_viper_use(edict_t *self, edict_t *other, edict_t *activator)
Definition: g_misc.c:1278
sound_pain2
static int sound_pain2
Definition: m_parasite.c:33
FRAMETIME
#define FRAMETIME
Definition: g_local.h:73
floater_move_stand2
mmove_t floater_move_stand2
Definition: m_float.c:195
sound_idle1
static int sound_idle1
Definition: m_chick.c:47
sound_death
static int sound_death
Definition: m_soldier.c:39
door_secret_die
void door_secret_die(edict_t *self, edict_t *inflictor, edict_t *attacker, int damage, vec3_t point)
Definition: g_func.c:1960
InitBodyQue
void InitBodyQue(void)
Definition: p_client.c:918
spawn_temp_t::gravity
char * gravity
Definition: g_local.h:361
snd_fry
int snd_fry
Definition: g_main.c:30
sound_search
static int sound_search
Definition: m_medic.c:39
jorg_move_stand
mmove_t jorg_move_stand
Definition: m_boss31.c:137
medic_sight
void medic_sight(edict_t *self, edict_t *other)
Definition: m_medic.c:116
entity_state_s::renderfx
int renderfx
Definition: q_shared.h:1181
turret_driver_link
void turret_driver_link(edict_t *self)
Definition: g_turret.c:354
v
GLdouble v
Definition: qgl_win.c:143
F_VECTOR
@ F_VECTOR
Definition: g_local.h:573
sound_death_hit
static int sound_death_hit
Definition: m_boss31.c:47
st
spawn_temp_t st
Definition: g_main.c:27
sound_search
static int sound_search
Definition: m_mutant.c:40
actor_run
void actor_run(edict_t *self)
Definition: m_actor.c:136
infantry_move_stand
mmove_t infantry_move_stand
Definition: m_infantry.c:73
CS_SKYROTATE
#define CS_SKYROTATE
Definition: q_shared.h:1129
floater_stand
void floater_stand(edict_t *self)
Definition: m_float.c:197
sound_death1
static int sound_death1
Definition: m_hover.c:36
SP_monster_soldier_x
void SP_monster_soldier_x(edict_t *self)
Definition: m_soldier.c:1200
path_corner_touch
void path_corner_touch(edict_t *self, edict_t *other, cplane_t *plane, csurface_t *surf)
Definition: g_misc.c:342
func_clock_think
void func_clock_think(edict_t *self)
Definition: g_misc.c:1675
use_target_blaster
void use_target_blaster(edict_t *self, edict_t *other, edict_t *activator)
Definition: g_target.c:416
sound_fist
static int sound_fist
Definition: m_insane.c:32
actor_walk
void actor_walk(edict_t *self)
Definition: m_actor.c:113
SP_misc_teleporter_dest
void SP_misc_teleporter_dest(edict_t *ent)
Definition: g_misc.c:1868
sound_pain
static int sound_pain
Definition: m_tank.c:37
MOVETYPE_STOP
@ MOVETYPE_STOP
Definition: g_local.h:191
plat_blocked
void plat_blocked(edict_t *self, edict_t *other)
Definition: g_func.c:407
chick_stand
void chick_stand(edict_t *self)
Definition: m_chick.c:143
SPAWNFLAG_NOT_EASY
#define SPAWNFLAG_NOT_EASY
Definition: g_local.h:50
entity_state_s::origin
vec3_t origin
Definition: q_shared.h:1173
sound_pain_ss
static int sound_pain_ss
Definition: m_soldier.c:37
sound_thud
static int sound_thud
Definition: m_mutant.c:44
SVF_NOCLIENT
#define SVF_NOCLIENT
Definition: game.h:27
mutant_jump
void mutant_jump(edict_t *self)
Definition: m_mutant.c:389
CS_CDTRACK
#define CS_CDTRACK
Definition: q_shared.h:1126
sound_gun
static int sound_gun
Definition: m_gladiator.c:35
edict_s::map
char * map
Definition: g_local.h:1059
sound_attack3
static int sound_attack3
Definition: m_float.c:33
spawn_temp_t::maxyaw
float maxyaw
Definition: g_local.h:364
boss2_pain
void boss2_pain(edict_t *self, edict_t *other, float kick, int damage)
Definition: m_boss2.c:470
sound_idle
static int sound_idle
Definition: m_flipper.c:37
FRAME_stand201
#define FRAME_stand201
Definition: m_actor.h:192
sound_death
static int sound_death
Definition: m_gunner.c:34
EF_ANIM01
#define EF_ANIM01
Definition: q_shared.h:567
sound_sight
static int sound_sight
Definition: m_mutant.c:39
misc_banner_think
void misc_banner_think(edict_t *ent)
Definition: g_misc.c:1196
target_string_use
void target_string_use(edict_t *self, edict_t *other, edict_t *activator)
Definition: g_misc.c:1577
floater_walk
void floater_walk(edict_t *self)
Definition: m_float.c:510
sound_hook_hit
static int sound_hook_hit
Definition: m_medic.c:41
AI_STAND_GROUND
#define AI_STAND_GROUND
Definition: g_local.h:127
sound_pain3
static int sound_pain3
Definition: m_chick.c:51
ED_NewString
char * ED_NewString(char *string)
Definition: g_spawn.c:319
sound_die2
static int sound_die2
Definition: m_infantry.c:37
sound_pain2
static int sound_pain2
Definition: m_boss31.c:35
com_token
char com_token[MAX_TOKEN_CHARS]
Definition: q_shared.c:1063
VectorScale
void VectorScale(vec3_t in, vec_t scale, vec3_t out)
Definition: q_shared.c:782
qboolean
qboolean
Definition: q_shared.h:56
edict_s::inuse
qboolean inuse
Definition: g_local.h:970
moveinfo_t::start_angles
vec3_t start_angles
Definition: g_local.h:374
sound_launch
static int sound_launch
Definition: m_parasite.c:35
edict_s::targetname
char * targetname
Definition: g_local.h:1012
SpawnItem
void SpawnItem(edict_t *ent, gitem_t *item)
Definition: g_items.c:1061
Use_Target_Speaker
void Use_Target_Speaker(edict_t *ent, edict_t *other, edict_t *activator)
Definition: g_target.c:58
sound_missile_prelaunch
static int sound_missile_prelaunch
Definition: m_chick.c:39
VectorClear
#define VectorClear(a)
Definition: q_shared.h:159
i
int i
Definition: q_shared.c:305
sound_idle
static int sound_idle
Definition: m_gladiator.c:39
MOVETYPE_PUSH
@ MOVETYPE_PUSH
Definition: g_local.h:190
sound_pain1
static int sound_pain1
Definition: m_hover.c:34
sound_sproing
static int sound_sproing
Definition: m_flyer.c:40
func_train_find
void func_train_find(edict_t *self)
Definition: g_func.c:1601
flipper_walk
void flipper_walk(edict_t *self)
Definition: m_flipper.c:140
MODEL_SCALE
#define MODEL_SCALE
Definition: m_actor.h:506
edict_s::max_health
int max_health
Definition: g_local.h:1052
sound_firegun
static int sound_firegun
Definition: m_boss31.c:44
train_blocked
void train_blocked(edict_t *self, edict_t *other)
Definition: g_func.c:1461
sound_punch_swing
static int sound_punch_swing
Definition: m_infantry.c:41
sound_pain2
static int sound_pain2
Definition: m_infantry.c:35
rotating_use
void rotating_use(edict_t *self, edict_t *other, edict_t *activator)
Definition: g_func.c:606
sound_death_ss
static int sound_death_ss
Definition: m_soldier.c:40
gunner_pain
void gunner_pain(edict_t *self, edict_t *other, float kick, int damage)
Definition: m_gunner.c:283
medic_run
void medic_run(edict_t *self)
Definition: m_medic.c:259
hover_move_stand
mmove_t hover_move_stand
Definition: m_hover.c:98
sound_shake
static int sound_shake
Definition: m_insane.c:33
SOLID_TRIGGER
@ SOLID_TRIGGER
Definition: game.h:36
DAMAGE_YES
@ DAMAGE_YES
Definition: g_local.h:87
buffer
GLenum GLfloat * buffer
Definition: qgl_win.c:151
brain_die
void brain_die(edict_t *self, edict_t *inflictor, edict_t *attacker, int damage, vec3_t point)
Definition: m_brain.c:586
PITCH
#define PITCH
Definition: q_shared.h:65
moveinfo_t::sound_start
int sound_start
Definition: g_local.h:378
sound_impact
static int sound_impact
Definition: m_parasite.c:36
floater_idle
void floater_idle(edict_t *self)
Definition: m_float.c:46
sound_pain3
static int sound_pain3
Definition: m_boss31.c:36
edict_s::movedir
vec3_t movedir
Definition: g_local.h:1021
edict_s::blocked
void(* blocked)(edict_t *self, edict_t *other)
Definition: g_local.h:1039
edict_s::wait
float wait
Definition: g_local.h:1087
actor_attack
void actor_attack(edict_t *self)
Definition: m_actor.c:391
M_droptofloor
void M_droptofloor(edict_t *ent)
Definition: g_monster.c:310
turret_driver_die
void turret_driver_die(edict_t *self, edict_t *inflictor, edict_t *attacker, int damage, vec3_t point)
Definition: g_turret.c:278
FL_NO_KNOCKBACK
#define FL_NO_KNOCKBACK
Definition: g_local.h:68
sound_pain2
static int sound_pain2
Definition: m_gladiator.c:33
TAG_LEVEL
#define TAG_LEVEL
Definition: g_local.h:77
hover_stand
void hover_stand(edict_t *self)
Definition: m_hover.c:458
width
GLint GLsizei width
Definition: qgl_win.c:115
target_lightramp_use
void target_lightramp_use(edict_t *self, edict_t *other, edict_t *activator)
Definition: g_target.c:679
dm_statusbar
char * dm_statusbar
Definition: g_spawn.c:708
gladiator_sight
void gladiator_sight(edict_t *self, edict_t *other)
Definition: m_gladiator.c:49
commander_body_use
void commander_body_use(edict_t *self, edict_t *other, edict_t *activator)
Definition: g_misc.c:1157
edict_s::mins
vec3_t mins
Definition: g_local.h:984
CS_NAME
#define CS_NAME
Definition: q_shared.h:1125
parasite_sight
void parasite_sight(edict_t *self, edict_t *other)
Definition: m_parasite.c:65
infantry_walk
void infantry_walk(edict_t *self)
Definition: m_infantry.c:158
DOOR_X_AXIS
#define DOOR_X_AXIS
Definition: g_func.c:68
door_use
void door_use(edict_t *self, edict_t *other, edict_t *activator)
Definition: g_func.c:949
misc_easterchick2_think
void misc_easterchick2_think(edict_t *self)
Definition: g_misc.c:1116
jorg_pain
void jorg_pain(edict_t *self, edict_t *other, float kick, int damage)
Definition: m_boss31.c:416
insane_die
void insane_die(edict_t *self, edict_t *inflictor, edict_t *attacker, int damage, vec3_t point)
Definition: m_insane.c:583
SPAWNFLAG_NOT_MEDIUM
#define SPAWNFLAG_NOT_MEDIUM
Definition: g_local.h:51
sound_sight
static int sound_sight
Definition: m_tank.c:41
sound_death
static int sound_death
Definition: m_boss2.c:38
game_locals_t::spawnpoint
char spawnpoint[512]
Definition: g_local.h:281
mutant_search
void mutant_search(edict_t *self)
Definition: m_mutant.c:67
sound_idle
static int sound_idle
Definition: m_boss31.c:37
sound_chest_open
static int sound_chest_open
Definition: m_brain.c:32
monster_use
void monster_use(edict_t *self, edict_t *other, edict_t *activator)
Definition: g_monster.c:440
sound_pain3
static int sound_pain3
Definition: m_supertank.c:35
g_edicts
edict_t * g_edicts
Definition: g_main.c:33
jorg_walk
void jorg_walk(edict_t *self)
Definition: m_boss31.c:229
sound_weapon_cock
static int sound_weapon_cock
Definition: m_infantry.c:40
flyer_move_stand
mmove_t flyer_move_stand
Definition: m_flyer.c:116
sound_search
static int sound_search
Definition: m_chick.c:53
sound_attack
static int sound_attack
Definition: m_flipper.c:33
itemlist
gitem_t itemlist[]
Definition: g_items.c:1134
PrecacheItem
void PrecacheItem(gitem_t *it)
Definition: g_items.c:993
sound_step2
static int sound_step2
Definition: m_mutant.c:42
walkmonster_start
void walkmonster_start(edict_t *self)
Definition: g_monster.c:692
edict_s::movetype
int movetype
Definition: g_local.h:995
MOVETYPE_STEP
@ MOVETYPE_STEP
Definition: g_local.h:194
flipper_start_run
void flipper_start_run(edict_t *self)
Definition: m_flipper.c:155
moveinfo_t::end_origin
vec3_t end_origin
Definition: g_local.h:375
sound_pain1
static int sound_pain1
Definition: m_flyer.c:37
trigger_enable
void trigger_enable(edict_t *self, edict_t *other, edict_t *activator)
Definition: g_trigger.c:111
entity_state_s::effects
unsigned int effects
Definition: q_shared.h:1180
commander_body_drop
void commander_body_drop(edict_t *self)
Definition: g_misc.c:1164
sound_idle
static int sound_idle
Definition: m_tank.c:38
flyer_pain
void flyer_pain(edict_t *self, edict_t *other, float kick, int damage)
Definition: m_flyer.c:531
game_import_t::imageindex
int(* imageindex)(char *name)
Definition: game.h:123
TRAIN_BLOCK_STOPS
#define TRAIN_BLOCK_STOPS
Definition: g_func.c:1447
button_touch
void button_touch(edict_t *self, edict_t *other, cplane_t *plane, csurface_t *surf)
Definition: g_func.c:743
berserk_move_stand
mmove_t berserk_move_stand
Definition: m_berserk.c:59
gunner_search
void gunner_search(edict_t *self)
Definition: m_gunner.c:51
j
GLint j
Definition: qgl_win.c:150
F_FLOAT
@ F_FLOAT
Definition: g_local.h:570
brain_sight
void brain_sight(edict_t *self, edict_t *other)
Definition: m_brain.c:48
brain_walk
void brain_walk(edict_t *self)
Definition: m_brain.c:234
sound_windup
static int sound_windup
Definition: m_tank.c:42
entity_state_s::sound
int sound
Definition: q_shared.h:1185
teleporter_touch
void teleporter_touch(edict_t *self, edict_t *other, cplane_t *plane, csurface_t *surf)
Definition: g_misc.c:1783
func_wall_use
void func_wall_use(edict_t *self, edict_t *other, edict_t *activator)
Definition: g_misc.c:593
va
char * va(char *format,...)
Definition: q_shared.c:1050
supertank_walk
void supertank_walk(edict_t *self)
Definition: m_supertank.c:195
Use_Target_Tent
void Use_Target_Tent(edict_t *ent, edict_t *other, edict_t *activator)
Definition: g_target.c:26
SetItemNames
void SetItemNames(void)
Definition: g_items.c:2200
sound_pain2
static int sound_pain2
Definition: m_medic.c:36
FFL_NOSPAWN
#define FFL_NOSPAWN
Definition: g_local.h:566
SVF_DEADMONSTER
#define SVF_DEADMONSTER
Definition: game.h:28
edict_s::message
char * message
Definition: g_local.h:1004
AngleVectors
void AngleVectors(vec3_t angles, vec3_t forward, vec3_t right, vec3_t up)
Definition: q_shared.c:93
DF_NO_HEALTH
#define DF_NO_HEALTH
Definition: q_shared.h:1048
sound_idle
static int sound_idle
Definition: m_mutant.c:36
sound_idle
static int sound_idle
Definition: m_float.c:35
berserk_stand
void berserk_stand(edict_t *self)
Definition: m_berserk.c:61
sound_pain2
static int sound_pain2
Definition: m_boss2.c:36
POWER_ARMOR_SCREEN
#define POWER_ARMOR_SCREEN
Definition: g_local.h:158
brain_stand
void brain_stand(edict_t *self)
Definition: m_brain.c:104
edict_s::svflags
int svflags
Definition: g_local.h:983
SP_CreateCoopSpots
static void SP_CreateCoopSpots(edict_t *self)
Definition: p_client.c:70
SECRET_1ST_LEFT
#define SECRET_1ST_LEFT
Definition: g_func.c:1875
sound_idle
static int sound_idle
Definition: m_infantry.c:45
gunner_move_stand
mmove_t gunner_move_stand
Definition: m_gunner.c:167
game_import_t::cvar_set
cvar_t *(* cvar_set)(char *var_name, char *value)
Definition: game.h:163
edict_s::item
gitem_t * item
Definition: g_local.h:1104
STATE_UP
#define STATE_UP
Definition: g_func.c:60
boss2_stand
void boss2_stand(edict_t *self)
Definition: m_boss2.c:414
gladiator_pain
void gladiator_pain(edict_t *self, edict_t *other, float kick, int damage)
Definition: m_gladiator.c:240
field_t::name
char * name
Definition: g_local.h:585
edict_s::classname
char * classname
Definition: g_local.h:1005
ED_CallSpawn
void ED_CallSpawn(edict_t *ent)
Definition: g_spawn.c:278
sound_death1
static int sound_death1
Definition: m_chick.c:44
edict_s::speed
float speed
Definition: g_local.h:1020
flipper_sight
void flipper_sight(edict_t *self, edict_t *other)
Definition: m_flipper.c:327
sound_sight
static int sound_sight
Definition: m_brain.c:41
edict_s
Definition: g_local.h:962
spawn_temp_t::height
int height
Definition: g_local.h:357
medic_walk
void medic_walk(edict_t *self)
Definition: m_medic.c:241
Jorg_CheckAttack
qboolean Jorg_CheckAttack(edict_t *self)
Definition: m_boss31.c:599
edict_s::mass
int mass
Definition: g_local.h:1026
ED_ParseField
void ED_ParseField(char *key, char *value, edict_t *ent)
Definition: g_spawn.c:358
DOOR_TOGGLE
#define DOOR_TOGGLE
Definition: g_func.c:67
sound_cleaver_swing
static int sound_cleaver_swing
Definition: m_gladiator.c:36
G_FreeEdict
void G_FreeEdict(edict_t *e)
Definition: g_utils.c:452
Touch_Multi
void Touch_Multi(edict_t *self, edict_t *other, cplane_t *plane, csurface_t *surf)
Definition: g_trigger.c:72
edict_s::moveinfo
moveinfo_t moveinfo
Definition: g_local.h:1107
supertank_stand
void supertank_stand(edict_t *self)
Definition: m_supertank.c:133
sound_thud
static int sound_thud
Definition: m_tank.c:36
mutant_melee
void mutant_melee(edict_t *self)
Definition: m_mutant.c:298
sound_search3
static int sound_search3
Definition: m_boss31.c:41
sound_search
static int sound_search
Definition: m_brain.c:42
MOVETYPE_NONE
@ MOVETYPE_NONE
Definition: g_local.h:188
floater_attack
void floater_attack(edict_t *self)
Definition: m_float.c:551
infantry_dodge
void infantry_dodge(edict_t *self, edict_t *attacker, float eta)
Definition: m_infantry.c:466
gladiator_search
void gladiator_search(edict_t *self)
Definition: m_gladiator.c:54
sound_sight
static int sound_sight
Definition: m_gladiator.c:41
medic_pain
void medic_pain(edict_t *self, edict_t *other, float kick, int damage)
Definition: m_medic.c:317
sound_missile_launch
static int sound_missile_launch
Definition: m_chick.c:40
actor_move_stand
mmove_t actor_move_stand
Definition: m_actor.c:85
sound_idle2
static int sound_idle2
Definition: m_chick.c:48
sound_idle
static int sound_idle
Definition: m_flyer.c:36
sound_death_light
static int sound_death_light
Definition: m_soldier.c:38
floater_run
void floater_run(edict_t *self)
Definition: m_float.c:502
berserk_melee
void berserk_melee(edict_t *self)
Definition: m_berserk.c:249
sound_idle1
static int sound_idle1
Definition: m_medic.c:34
sound_search
static int sound_search
Definition: m_gladiator.c:40
game_locals_t::num_items
int num_items
Definition: g_local.h:291
use_target_spawner
void use_target_spawner(edict_t *self, edict_t *other, edict_t *activator)
Definition: g_target.c:380
Use_Boss3
void Use_Boss3(edict_t *ent, edict_t *other, edict_t *activator)
Definition: m_boss3.c:31
point_combat_touch
void point_combat_touch(edict_t *self, edict_t *other, cplane_t *plane, csurface_t *surf)
Definition: g_misc.c:422
game_import_t::cvar_forceset
cvar_t *(* cvar_forceset)(char *var_name, char *value)
Definition: game.h:164
sound_step3
static int sound_step3
Definition: m_mutant.c:43
use_killbox
void use_killbox(edict_t *self, edict_t *other, edict_t *activator)
Definition: g_func.c:2037
target_earthquake_use
void target_earthquake_use(edict_t *self, edict_t *other, edict_t *activator)
Definition: g_target.c:785
sound_sight
static int sound_sight
Definition: m_flyer.c:35
infantry_attack
void infantry_attack(edict_t *self)
Definition: m_infantry.c:545
game_import_t::configstring
void(* configstring)(int num, char *string)
Definition: game.h:116
moveinfo_t::distance
float distance
Definition: g_local.h:385
rotating_blocked
void rotating_blocked(edict_t *self, edict_t *other)
Definition: g_func.c:595
func_object_release
void func_object_release(edict_t *self)
Definition: g_misc.c:677
HEALTH_TIMED
#define HEALTH_TIMED
Definition: g_items.c:50
game_import_t::soundindex
int(* soundindex)(char *name)
Definition: game.h:122
forward
static vec3_t forward
Definition: p_view.c:29
edict_s::spawnflags
int spawnflags
Definition: g_local.h:1006
edict_s::sounds
int sounds
Definition: g_local.h:1066
spawn_temp_t::nextmap
char * nextmap
Definition: g_local.h:353
chick_pain
void chick_pain(edict_t *self, edict_t *other, float kick, int damage)
Definition: m_chick.c:266
crandom
#define crandom()
Definition: g_local.h:510
spawn_temp_t::lip
int lip
Definition: g_local.h:355
FL_GODMODE
#define FL_GODMODE
Definition: g_local.h:61
sound_open
static int sound_open
Definition: m_gunner.c:36
brain_idle
void brain_idle(edict_t *self)
Definition: m_brain.c:151
edict_s::owner
edict_t * owner
Definition: g_local.h:988
medic_move_stand
mmove_t medic_move_stand
Definition: m_medic.c:216
sound_pain1
static int sound_pain1
Definition: m_flipper.c:34
field_t::type
fieldtype_t type
Definition: g_local.h:587
boss2_walk
void boss2_walk(edict_t *self)
Definition: m_boss2.c:427
sound_fall_down
static int sound_fall_down
Definition: m_chick.c:46
mutant_idle
void mutant_idle(edict_t *self)
Definition: m_mutant.c:177
game_import_t::modelindex
int(* modelindex)(char *name)
Definition: game.h:121
moveinfo_t::wait
float wait
Definition: g_local.h:387
gladiator_attack
void gladiator_attack(edict_t *self)
Definition: m_gladiator.c:198
sound_search
static int sound_search
Definition: m_flipper.c:38
swimmonster_start
void swimmonster_start(edict_t *self)
Definition: g_monster.c:735
sound_pain2
static int sound_pain2
Definition: m_chick.c:50
EF_GIB
#define EF_GIB
Definition: q_shared.h:559
sound_attack1
static int sound_attack1
Definition: m_boss31.c:42
sound_swing
static int sound_swing
Definition: m_mutant.c:32
actor_die
void actor_die(edict_t *self, edict_t *inflictor, edict_t *attacker, int damage, vec3_t point)
Definition: m_actor.c:339
sound_pain1
static int sound_pain1
Definition: m_supertank.c:33
edict_s::decel
float decel
Definition: g_local.h:1020
sound_step
static int sound_step
Definition: m_tank.c:40
DotProduct
#define DotProduct(x, y)
Definition: q_shared.h:155
sound_die
static int sound_die
Definition: m_berserk.c:33
game_locals_t::clients
gclient_t * clients
Definition: g_local.h:277
sound_sight
static int sound_sight
Definition: m_float.c:38
sound_die
static int sound_die
Definition: m_parasite.c:34
misc_eastertank_think
void misc_eastertank_think(edict_t *self)
Definition: g_misc.c:1060
sound_punch
static int sound_punch
Definition: m_berserk.c:35
supertank_run
void supertank_run(edict_t *self)
Definition: m_supertank.c:200
edict_s::nextthink
float nextthink
Definition: g_local.h:1036
berserk_walk
void berserk_walk(edict_t *self)
Definition: m_berserk.c:120
Use_Areaportal
void Use_Areaportal(edict_t *ent, edict_t *other, edict_t *activator)
Definition: g_misc.c:31
gladiator_idle
void gladiator_idle(edict_t *self)
Definition: m_gladiator.c:44
parasite_attack
void parasite_attack(edict_t *self)
Definition: m_parasite.c:433
sound_hit2
static int sound_hit2
Definition: m_mutant.c:34
cvar_s::value
float value
Definition: q_shared.h:324
parasite_move_stand
mmove_t parasite_move_stand
Definition: m_parasite.c:163
sound_search2
static int sound_search2
Definition: m_supertank.c:38
vtos
char * vtos(vec3_t v)
Definition: g_utils.c:293
jorg_run
void jorg_run(edict_t *self)
Definition: m_boss31.c:234
ED_ParseEdict
char * ED_ParseEdict(char *data, edict_t *ent)
Definition: g_spawn.c:416
spawn_t::name
char * name
Definition: g_spawn.c:25
sound_scratch
static int sound_scratch
Definition: m_parasite.c:41
game
game_locals_t game
Definition: g_main.c:23
edict_s::think
void(* think)(edict_t *self)
Definition: g_local.h:1038
func_clock_use
void func_clock_use(edict_t *self, edict_t *other, edict_t *activator)
Definition: g_misc.c:1740
random
#define random()
Definition: g_local.h:509
sound_step_right
static int sound_step_right
Definition: m_boss31.c:46
sound_pain1
static int sound_pain1
Definition: m_parasite.c:32
chick_walk
void chick_walk(edict_t *self)
Definition: m_chick.c:196
sound_sight
static int sound_sight
Definition: m_parasite.c:39
EF_ANIM_ALLFAST
#define EF_ANIM_ALLFAST
Definition: q_shared.h:570
edict_s::noise_index
int noise_index
Definition: g_local.h:1081
field_t::ofs
int ofs
Definition: g_local.h:586
NULL
#define NULL
Definition: q_shared.h:60
floater_pain
void floater_pain(edict_t *self, edict_t *other, float kick, int damage)
Definition: m_float.c:566
globals
game_export_t globals
Definition: g_main.c:26
flyer_melee
void flyer_melee(edict_t *self)
Definition: m_flyer.c:513
tank_walk
void tank_walk(edict_t *self)
Definition: m_tank.c:167
edict_s::solid
solid_t solid
Definition: g_local.h:986
game_import_t::TagMalloc
void *(* TagMalloc)(int size, int tag)
Definition: game.h:157
medic_idle
void medic_idle(edict_t *self)
Definition: m_medic.c:80
sound_pain2
static int sound_pain2
Definition: m_brain.c:40
berserk_search
void berserk_search(edict_t *self)
Definition: m_berserk.c:44
sound_search1
static int sound_search1
Definition: m_hover.c:39
spawn_t
Definition: g_spawn.c:23
sound_hook_launch
static int sound_hook_launch
Definition: m_medic.c:40
edict_s::pos1
vec3_t pos1
Definition: g_local.h:1022
parasite_stand
void parasite_stand(edict_t *self)
Definition: m_parasite.c:165
sound_attack2
static int sound_attack2
Definition: m_boss31.c:43
func_clock_reset
static void func_clock_reset(edict_t *self)
Definition: g_misc.c:1633
gladiator_move_stand
mmove_t gladiator_move_stand
Definition: m_gladiator.c:74
sound_death
static int sound_death
Definition: m_supertank.c:36
hover_run
void hover_run(edict_t *self)
Definition: m_hover.c:463
sound_tap
static int sound_tap
Definition: m_parasite.c:40
door_secret_blocked
void door_secret_blocked(edict_t *self, edict_t *other)
Definition: g_func.c:1941
parasite_start_walk
void parasite_start_walk(edict_t *self)
Definition: m_parasite.c:248
flyer_walk
void flyer_walk(edict_t *self)
Definition: m_flyer.c:227
FFL_SPAWNTEMP
#define FFL_SPAWNTEMP
Definition: g_local.h:565
turret_blocked
void turret_blocked(edict_t *self, edict_t *other)
Definition: g_turret.c:48
sm_meat_index
int sm_meat_index
Definition: g_main.c:29
hover_pain
void hover_pain(edict_t *self, edict_t *other, float kick, int damage)
Definition: m_hover.c:487
tread_sound
static int tread_sound
Definition: m_supertank.c:40
misc_blackhole_use
void misc_blackhole_use(edict_t *ent, edict_t *other, edict_t *activator)
Definition: g_misc.c:1021
actor_use
void actor_use(edict_t *self, edict_t *other, edict_t *activator)
Definition: m_actor.c:401
flipper_pain
void flipper_pain(edict_t *self, edict_t *other, float kick, int damage)
Definition: m_flipper.c:223
sound_search
static int sound_search
Definition: m_infantry.c:44
boss2_run
void boss2_run(edict_t *self)
Definition: m_boss2.c:419
misc_blackhole_think
void misc_blackhole_think(edict_t *self)
Definition: g_misc.c:1032
edict_s::attenuation
float attenuation
Definition: g_local.h:1084
Think_SpawnDoorTrigger
void Think_SpawnDoorTrigger(edict_t *ent)
Definition: g_func.c:1038
field_t::flags
int flags
Definition: g_local.h:588
mutant_walk
void mutant_walk(edict_t *self)
Definition: m_mutant.c:221
sound_die
static int sound_die
Definition: m_tank.c:39
sound_sight
static int sound_sight
Definition: m_medic.c:38
DOOR_REVERSE
#define DOOR_REVERSE
Definition: g_func.c:64
CS_SKYAXIS
#define CS_SKYAXIS
Definition: q_shared.h:1128
door_blocked
void door_blocked(edict_t *self, edict_t *other)
Definition: g_func.c:1076
moveinfo_t::sound_middle
int sound_middle
Definition: g_local.h:379
floater_sight
void floater_sight(edict_t *self, edict_t *other)
Definition: m_float.c:41
moveinfo_t::start_origin
vec3_t start_origin
Definition: g_local.h:373
flipper_die
void flipper_die(edict_t *self, edict_t *inflictor, edict_t *attacker, int damage, vec3_t point)
Definition: m_flipper.c:332
sound_hit
static int sound_hit
Definition: m_mutant.c:33
infantry_pain
void infantry_pain(edict_t *self, edict_t *other, float kick, int damage)
Definition: m_infantry.c:215
chick_die
void chick_die(edict_t *self, edict_t *inflictor, edict_t *attacker, int damage, vec3_t point)
Definition: m_chick.c:353
chick_attack
void chick_attack(edict_t *self)
Definition: m_chick.c:616
Q_stricmp
int Q_stricmp(char *s1, char *s2)
Definition: q_shared.c:1192
edict_s::team
char * team
Definition: g_local.h:1014
door_killed
void door_killed(edict_t *self, edict_t *inflictor, edict_t *attacker, int damage, vec3_t point)
Definition: g_func.c:1113
gunner_attack
void gunner_attack(edict_t *self)
Definition: m_gunner.c:547
brain_pain
void brain_pain(edict_t *self, edict_t *other, float kick, int damage)
Definition: m_brain.c:542
skill
cvar_t * skill
Definition: g_main.c:38
SOLID_NOT
@ SOLID_NOT
Definition: game.h:35
edict_s::dmg
int dmg
Definition: g_local.h:1063
trigger_gravity_touch
void trigger_gravity_touch(edict_t *self, edict_t *other, cplane_t *plane, csurface_t *surf)
Definition: g_trigger.c:532
sound_search
static int sound_search
Definition: m_gunner.c:37
sound_tentacles_retract
static int sound_tentacles_retract
Definition: m_brain.c:34
tank_run
void tank_run(edict_t *self)
Definition: m_tank.c:219
sound_death2
static int sound_death2
Definition: m_chick.c:45
DOOR_START_OPEN
#define DOOR_START_OPEN
Definition: g_func.c:63
STATE_BOTTOM
#define STATE_BOTTOM
Definition: g_func.c:59
door_secret_use
void door_secret_use(edict_t *self, edict_t *other, edict_t *activator)
Definition: g_func.c:1886
game_import_t::setmodel
void(* setmodel)(edict_t *ent, char *name)
Definition: game.h:125
sound_search2
static int sound_search2
Definition: m_hover.c:40
Use_Multi
void Use_Multi(edict_t *ent, edict_t *other, edict_t *activator)
Definition: g_trigger.c:66
edict_s::accel
float accel
Definition: g_local.h:1020
spawn_temp_t::minpitch
float minpitch
Definition: g_local.h:365
CS_STATUSBAR
#define CS_STATUSBAR
Definition: q_shared.h:1130
SECRET_ALWAYS_SHOOT
#define SECRET_ALWAYS_SHOOT
Definition: g_func.c:1874
target_laser_start
void target_laser_start(edict_t *self)
Definition: g_target.c:585
game_import_t::error
void(* error)(char *fmt,...)
Definition: game.h:118
gunner_walk
void gunner_walk(edict_t *self)
Definition: m_gunner.c:193
flyer_idle
void flyer_idle(edict_t *self)
Definition: m_flyer.c:57
sound_melee3
static int sound_melee3
Definition: m_brain.c:45
hover_walk
void hover_walk(edict_t *self)
Definition: m_hover.c:471
func_explosive_use
void func_explosive_use(edict_t *self, edict_t *other, edict_t *activator)
Definition: g_misc.c:809
gunner_dodge
void gunner_dodge(edict_t *self, edict_t *attacker, float eta)
Definition: m_gunner.c:409
sound_melee_hit
static int sound_melee_hit
Definition: m_chick.c:42
sound_pain2
static int sound_pain2
Definition: m_supertank.c:34
VectorCopy
#define VectorCopy(a, b)
Definition: q_shared.h:158
coop
cvar_t * coop
Definition: g_main.c:36
brain_melee
void brain_melee(edict_t *self)
Definition: m_brain.c:503
use_target_secret
void use_target_secret(edict_t *ent, edict_t *other, edict_t *activator)
Definition: g_target.c:154
MakronPrecache
void MakronPrecache(void)
Definition: m_boss32.c:810
func_explosive_spawn
void func_explosive_spawn(edict_t *self, edict_t *other, edict_t *activator)
Definition: g_misc.c:814
sound_death
static int sound_death
Definition: m_boss31.c:38
edict_s::use
void(* use)(edict_t *self, edict_t *other, edict_t *activator)
Definition: g_local.h:1041
sound_search
static int sound_search
Definition: m_berserk.c:37
sound_strike
static int sound_strike
Definition: m_tank.c:43
medic_search
void medic_search(edict_t *self)
Definition: m_medic.c:96
HEALTH_IGNORE_MAX
#define HEALTH_IGNORE_MAX
Definition: g_items.c:49
SPAWNFLAG_NOT_DEATHMATCH
#define SPAWNFLAG_NOT_DEATHMATCH
Definition: g_local.h:53
SPAWNFLAG_NOT_HARD
#define SPAWNFLAG_NOT_HARD
Definition: g_local.h:52
windsound
static int windsound
Definition: g_trigger.c:392
vec3_origin
vec3_t vec3_origin
Definition: q_shared.c:24
sound_idle
static int sound_idle
Definition: m_gunner.c:35
chick_melee
void chick_melee(edict_t *self)
Definition: m_chick.c:610
hurt_touch
void hurt_touch(edict_t *self, edict_t *other, cplane_t *plane, csurface_t *surf)
Definition: g_trigger.c:468
DAMAGE_AIM
@ DAMAGE_AIM
Definition: g_local.h:88
gib_die
void gib_die(edict_t *self, edict_t *inflictor, edict_t *attacker, int damage, vec3_t point)
Definition: g_misc.c:130
FL_IMMUNE_LASER
#define FL_IMMUNE_LASER
Definition: g_local.h:59
up
static vec3_t up
Definition: p_view.c:29
sound_die1
static int sound_die1
Definition: m_infantry.c:36
spawn_temp_t::item
char * item
Definition: g_local.h:360
Think_CalcMoveSpeed
void Think_CalcMoveSpeed(edict_t *self)
Definition: g_func.c:998
edict_s::style
int style
Definition: g_local.h:1102
sound_sight
static int sound_sight
Definition: m_chick.c:52
jorg_search
void jorg_search(edict_t *self)
Definition: m_boss31.c:53
edict_s::takedamage
int takedamage
Definition: g_local.h:1062
level
GLint level
Definition: qgl_win.c:116
insane_stand
void insane_stand(edict_t *self)
Definition: m_insane.c:548
supertank_attack
void supertank_attack(edict_t *self)
Definition: m_supertank.c:551
jorg_stand
void jorg_stand(edict_t *self)
Definition: m_boss31.c:161
G_UseTargets
void G_UseTargets(edict_t *ent, edict_t *activator)
Definition: g_utils.c:173
edict_s::flags
int flags
Definition: g_local.h:996
target_lightramp_think
void target_lightramp_think(edict_t *self)
Definition: g_target.c:656
sound_search1
static int sound_search1
Definition: m_boss31.c:39
chick_move_stand
mmove_t chick_move_stand
Definition: m_chick.c:141
flyer_die
void flyer_die(edict_t *self, edict_t *inflictor, edict_t *attacker, int damage, vec3_t point)
Definition: m_flyer.c:564
spawn_temp_t::minyaw
float minyaw
Definition: g_local.h:363
FL_TEAMSLAVE
#define FL_TEAMSLAVE
Definition: g_local.h:67
trigger_crosslevel_trigger_use
void trigger_crosslevel_trigger_use(edict_t *self, edict_t *other, edict_t *activator)
Definition: g_target.c:451
CLOCK_MESSAGE_SIZE
#define CLOCK_MESSAGE_SIZE
Definition: g_misc.c:1628
sound_pain2
static int sound_pain2
Definition: m_flipper.c:35
sound_death
static int sound_death
Definition: m_flipper.c:36
VectorMA
void VectorMA(vec3_t veca, float scale, vec3_t vecb, vec3_t vecc)
Definition: q_shared.c:719
SP_trigger_multiple
void SP_trigger_multiple(edict_t *ent)
Definition: g_trigger.c:118
medic_dodge
void medic_dodge(edict_t *self, edict_t *attacker, float eta)
Definition: m_medic.c:494
mutant_stand
void mutant_stand(edict_t *self)
Definition: m_mutant.c:143
trigger_key_use
void trigger_key_use(edict_t *self, edict_t *other, edict_t *activator)
Definition: g_trigger.c:212
SECRET_1ST_DOWN
#define SECRET_1ST_DOWN
Definition: g_func.c:1876
SOLID_BSP
@ SOLID_BSP
Definition: game.h:38
edict_s::maxs
vec3_t maxs
Definition: g_local.h:984
tank_pain
void tank_pain(edict_t *self, edict_t *other, float kick, int damage)
Definition: m_tank.c:288
sound_pain1
static int sound_pain1
Definition: m_boss31.c:34
COM_Parse
char * COM_Parse(char **data_p)
Definition: q_shared.c:1072
SPAWNFLAG_NOT_COOP
#define SPAWNFLAG_NOT_COOP
Definition: g_local.h:54
tank_attack
void tank_attack(edict_t *self)
Definition: m_tank.c:655
flyer_attack
void flyer_attack(edict_t *self)
Definition: m_flyer.c:489
Boss2_CheckAttack
qboolean Boss2_CheckAttack(edict_t *self)
Definition: m_boss2.c:540
sound_search1
static int sound_search1
Definition: m_boss2.c:39
edict_s::teammaster
edict_t * teammaster
Definition: g_local.h:1076
sound_melee_swing
static int sound_melee_swing
Definition: m_chick.c:41
game_import_t::FreeTags
void(* FreeTags)(int tag)
Definition: game.h:159
entity_state_s::modelindex
int modelindex
Definition: q_shared.h:1176
spawn_temp_t::distance
int distance
Definition: g_local.h:356
moveinfo_t::accel
float accel
Definition: g_local.h:382
sound_pain2
static int sound_pain2
Definition: m_hover.c:35
target_crosslevel_target_think
void target_crosslevel_target_think(edict_t *self)
Definition: g_target.c:469
SP_FixCoopSpots
static void SP_FixCoopSpots(edict_t *self)
Definition: p_client.c:39
door_touch
void door_touch(edict_t *self, edict_t *other, cplane_t *plane, csurface_t *surf)
Definition: g_func.c:1125
sound_tentacles_extend
static int sound_tentacles_extend
Definition: m_brain.c:33
spawns
spawn_t spawns[]
Definition: g_spawn.c:148
hover_start_attack
void hover_start_attack(edict_t *self)
Definition: m_hover.c:476
G_SetMovedir
void G_SetMovedir(vec3_t angles, vec3_t movedir)
Definition: g_utils.c:314
boss2_attack
void boss2_attack(edict_t *self)
Definition: m_boss2.c:432
sound_hook_retract
static int sound_hook_retract
Definition: m_medic.c:43
gladiator_walk
void gladiator_walk(edict_t *self)
Definition: m_gladiator.c:103
Com_DPrintf
void Com_DPrintf(char *fmt,...)
Definition: common.c:155
SVF_MONSTER
#define SVF_MONSTER
Definition: game.h:29
sound_pain1
static int sound_pain1
Definition: m_chick.c:49
tank_sight
void tank_sight(edict_t *self, edict_t *other)
Definition: m_tank.c:49
edict_s::touch
void(* touch)(edict_t *self, edict_t *other, cplane_t *plane, csurface_t *surf)
Definition: g_local.h:1040
infantry_stand
void infantry_stand(edict_t *self)
Definition: m_infantry.c:75
misc_easterchick_think
void misc_easterchick_think(edict_t *self)
Definition: g_misc.c:1088
medic_stand
void medic_stand(edict_t *self)
Definition: m_medic.c:218
infantry_run
void infantry_run(edict_t *self)
Definition: m_infantry.c:176
sound_idle
static int sound_idle
Definition: m_berserk.c:34
chick_dodge
void chick_dodge(edict_t *self, edict_t *attacker, float eta)
Definition: m_chick.c:430
sound_idle3
static int sound_idle3
Definition: m_brain.c:38
sound_pain1
static int sound_pain1
Definition: m_medic.c:35
sound_death
static int sound_death
Definition: m_brain.c:35
parasite_die
void parasite_die(edict_t *self, edict_t *inflictor, edict_t *attacker, int damage, vec3_t point)
Definition: m_parasite.c:471
insane_move_stand_normal
mmove_t insane_move_stand_normal
Definition: m_insane.c:77
func_explosive_explode
void func_explosive_explode(edict_t *self, edict_t *inflictor, edict_t *attacker, int damage, vec3_t point)
Definition: g_misc.c:745
sound_pain2
static int sound_pain2
Definition: m_float.c:37
sound_pain2
static int sound_pain2
Definition: m_mutant.c:38
spawn_temp_t::skyaxis
vec3_t skyaxis
Definition: g_local.h:352
func_timer_use
void func_timer_use(edict_t *self, edict_t *other, edict_t *activator)
Definition: g_func.c:1777
spawn_temp_t::sky
char * sky
Definition: g_local.h:350
sound_cleaver_hit
static int sound_cleaver_hit
Definition: m_gladiator.c:37
boss2_move_stand
mmove_t boss2_move_stand
Definition: m_boss2.c:178
MOVETYPE_TOSS
@ MOVETYPE_TOSS
Definition: g_local.h:196
RF_FRAMELERP
#define RF_FRAMELERP
Definition: q_shared.h:619
sound_slash
static int sound_slash
Definition: m_flyer.c:39
VectorSet
#define VectorSet(v, x, y, z)
Definition: q_shared.h:161
sound_step_left
static int sound_step_left
Definition: m_boss31.c:45
right
GLdouble right
Definition: qgl_win.c:159
use_target_splash
void use_target_splash(edict_t *self, edict_t *other, edict_t *activator)
Definition: g_target.c:338
EDICT_NUM
#define EDICT_NUM(n)
Definition: server.h:69
gunner_run
void gunner_run(edict_t *self)
Definition: m_gunner.c:212
G_FindTeams
void G_FindTeams(void)
Definition: g_spawn.c:472
moveinfo_t::state
int state
Definition: g_local.h:390
InitTrigger
void InitTrigger(edict_t *self)
Definition: g_trigger.c:23
CS_LIGHTS
#define CS_LIGHTS
Definition: q_shared.h:1139
gladiator_stand
void gladiator_stand(edict_t *self)
Definition: m_gladiator.c:76
sound_search2
static int sound_search2
Definition: m_boss31.c:40
berserk_sight
void berserk_sight(edict_t *self, edict_t *other)
Definition: m_berserk.c:39
dmflags
cvar_t * dmflags
Definition: g_main.c:37
insane_run
void insane_run(edict_t *self)
Definition: m_insane.c:459
mutant_checkattack
qboolean mutant_checkattack(edict_t *self)
Definition: m_mutant.c:433
F_LSTRING
@ F_LSTRING
Definition: g_local.h:571
edict_s::delay
float delay
Definition: g_local.h:1088
infantry_sight
void infantry_sight(edict_t *self, edict_t *other)
Definition: m_infantry.c:299
SaveClientData
void SaveClientData(void)
Definition: p_client.c:650
gunner_stand
void gunner_stand(edict_t *self)
Definition: m_gunner.c:169
Use_Target_Help
void Use_Target_Help(edict_t *ent, edict_t *other, edict_t *activator)
Definition: g_target.c:118
VectorCompare
int VectorCompare(vec3_t v1, vec3_t v2)
Definition: q_shared.c:672
floater_melee
void floater_melee(edict_t *self)
Definition: m_float.c:557
medic_die
void medic_die(edict_t *self, edict_t *inflictor, edict_t *attacker, int damage, vec3_t point)
Definition: m_medic.c:413
game_locals_t::maxentities
int maxentities
Definition: g_local.h:285
plat_spawn_inside_trigger
void plat_spawn_inside_trigger(edict_t *ent)
Definition: g_func.c:451
sound_cleaver_miss
static int sound_cleaver_miss
Definition: m_gladiator.c:38
sound_pain1
static int sound_pain1
Definition: m_mutant.c:37
brain_run
void brain_run(edict_t *self)
Definition: m_brain.c:532
berserk_pain
void berserk_pain(edict_t *self, edict_t *other, float kick, int damage)
Definition: m_berserk.c:315
EF_ANIM_ALL
#define EF_ANIM_ALL
Definition: q_shared.h:569
boss2_search
void boss2_search(edict_t *self)
Definition: m_boss2.c:41
fields
field_t fields[]
Definition: g_save.c:27
sound_search
static int sound_search
Definition: m_parasite.c:42
boss2_die
void boss2_die(edict_t *self, edict_t *inflictor, edict_t *attacker, int damage, vec3_t point)
Definition: m_boss2.c:507
use_target_explosion
void use_target_explosion(edict_t *self, edict_t *other, edict_t *activator)
Definition: g_target.c:244
sound_suck
static int sound_suck
Definition: m_parasite.c:37
sound_die
static int sound_die
Definition: m_gladiator.c:34
sound_pain1
static int sound_pain1
Definition: m_gladiator.c:32
Think_Boss3Stand
void Think_Boss3Stand(edict_t *ent)
Definition: m_boss3.c:40
sound_idle2
static int sound_idle2
Definition: m_brain.c:37
edict_s::random
float random
Definition: g_local.h:1089
spawn_temp_t::noise
char * noise
Definition: g_local.h:358
sound_pain2
static int sound_pain2
Definition: m_flyer.c:38
edict_s::teamchain
edict_t * teamchain
Definition: g_local.h:1075
trigger_push_touch
void trigger_push_touch(edict_t *self, edict_t *other, cplane_t *plane, csurface_t *surf)
Definition: g_trigger.c:394
AI_DUCKED
#define AI_DUCKED
Definition: g_local.h:138
game_import_t::linkentity
void(* linkentity)(edict_t *ent)
Definition: game.h:138
actor_stand
void actor_stand(edict_t *self)
Definition: m_actor.c:87
sound_sight
static int sound_sight
Definition: m_hover.c:38
edict_s::size
vec3_t size
Definition: g_local.h:985
gunner_die
void gunner_die(edict_t *self, edict_t *inflictor, edict_t *attacker, int damage, vec3_t point)
Definition: m_gunner.c:335
hover_search
void hover_search(edict_t *self)
Definition: m_hover.c:48
floater_die
void floater_die(edict_t *self, edict_t *inflictor, edict_t *attacker, int damage, vec3_t point)
Definition: m_float.c:603
sound_pain3
static int sound_pain3
Definition: m_boss2.c:37
spawn_temp_t::skyrotate
float skyrotate
Definition: g_local.h:351
sound_idle1
static int sound_idle1
Definition: m_brain.c:36
brain_move_stand
mmove_t brain_move_stand
Definition: m_brain.c:102
flyer_run
void flyer_run(edict_t *self)
Definition: m_flyer.c:219
gladiator_run
void gladiator_run(edict_t *self)
Definition: m_gladiator.c:120
sound_sight
static int sound_sight
Definition: m_infantry.c:43
spawn_temp_t::pausetime
float pausetime
Definition: g_local.h:359
entity_state_s::angles
vec3_t angles
Definition: q_shared.h:1174
mutant_die
void mutant_die(edict_t *self, edict_t *inflictor, edict_t *attacker, int damage, vec3_t point)
Definition: m_mutant.c:574
target_earthquake_think
void target_earthquake_think(edict_t *self)
Definition: g_target.c:755
chick_run
void chick_run(edict_t *self)
Definition: m_chick.c:201
sound_death
static int sound_death
Definition: m_mutant.c:35
single_statusbar
char * single_statusbar
Definition: g_spawn.c:650
F_INT
@ F_INT
Definition: g_local.h:569
sound_pain_light
static int sound_pain_light
Definition: m_soldier.c:35
misc_satellite_dish_use
void misc_satellite_dish_use(edict_t *self, edict_t *other, edict_t *activator)
Definition: g_misc.c:1452
spawn_temp_t::maxpitch
float maxpitch
Definition: g_local.h:366
edict_s::die
void(* die)(edict_t *self, edict_t *inflictor, edict_t *attacker, int damage, vec3_t point)
Definition: g_local.h:1043
supertank_search
void supertank_search(edict_t *self)
Definition: m_supertank.c:49
sound_death2
static int sound_death2
Definition: m_hover.c:37
START_OFF
#define START_OFF
Definition: g_misc.c:543
parasite_start_run
void parasite_start_run(edict_t *self)
Definition: m_parasite.c:201
F_ANGLEHACK
@ F_ANGLEHACK
Definition: g_local.h:574
berserk_die
void berserk_die(edict_t *self, edict_t *inflictor, edict_t *attacker, int damage, vec3_t point)
Definition: m_berserk.c:381
vec3_t
vec_t vec3_t[3]
Definition: q_shared.h:127
brain_dodge
void brain_dodge(edict_t *self, edict_t *attacker, float eta)
Definition: m_brain.c:352
trigger_monsterjump_touch
void trigger_monsterjump_touch(edict_t *self, edict_t *other, cplane_t *plane, csurface_t *surf)
Definition: g_trigger.c:566
brain_search
void brain_search(edict_t *self)
Definition: m_brain.c:53
Com_sprintf
void Com_sprintf(char *dest, int size, char *fmt,...)
Definition: q_shared.c:1236
edict_s::absmin
vec3_t absmin
Definition: g_local.h:985
floater_move_stand1
mmove_t floater_move_stand1
Definition: m_float.c:138
infantry_stand
void infantry_stand(edict_t *self)
Definition: m_infantry.c:75
supertank_pain
void supertank_pain(edict_t *self, edict_t *other, float kick, int damage)
Definition: m_supertank.c:452
target_actor_touch
void target_actor_touch(edict_t *self, edict_t *other, cplane_t *plane, csurface_t *surf)
Definition: m_actor.c:496
edict_s::target
char * target
Definition: g_local.h:1011
supertank_die
void supertank_die(edict_t *self, edict_t *inflictor, edict_t *attacker, int damage, vec3_t point)
Definition: m_supertank.c:657
sound_attack2
static int sound_attack2
Definition: m_float.c:32
VectorNegate
#define VectorNegate(a, b)
Definition: q_shared.h:160
sound_moan
static int sound_moan
Definition: m_insane.c:34
game_export_t::num_edicts
int num_edicts
Definition: game.h:231
sound_pain
static int sound_pain
Definition: m_berserk.c:32
trigger_elevator_init
void trigger_elevator_init(edict_t *self)
Definition: g_func.c:1726
mutant_move_stand
mmove_t mutant_move_stand
Definition: m_mutant.c:141
sound_punch_hit
static int sound_punch_hit
Definition: m_infantry.c:42
sound_pain
static int sound_pain
Definition: m_gunner.c:32
sound_pain1
static int sound_pain1
Definition: m_brain.c:39
sound_pain
static int sound_pain
Definition: m_soldier.c:36
moveinfo_t::speed
float speed
Definition: g_local.h:383
parasite_pain
void parasite_pain(edict_t *self, edict_t *other, float kick, int damage)
Definition: m_parasite.c:275
tank_move_stand
mmove_t tank_move_stand
Definition: m_tank.c:113
sound_pain1
static int sound_pain1
Definition: m_boss2.c:35
infantry_fidget
void infantry_fidget(edict_t *self)
Definition: m_infantry.c:135
berserk_run
void berserk_run(edict_t *self)
Definition: m_berserk.c:161
flymonster_start
void flymonster_start(edict_t *self)
Definition: g_monster.c:715
moveinfo_t::end_angles
vec3_t end_angles
Definition: g_local.h:376
edict_s::health
int health
Definition: g_local.h:1051
gitem_s::classname
char * classname
Definition: g_local.h:236
gitem_s
Definition: g_local.h:234
AI_NOSTEP
#define AI_NOSTEP
Definition: g_local.h:137
jorg_die
void jorg_die(edict_t *self, edict_t *inflictor, edict_t *attacker, int damage, vec3_t point)
Definition: m_boss31.c:589
game_locals_t::maxclients
int maxclients
Definition: g_local.h:284