Quake II RTX doxygen  1.0 dev
m_insane.c
Go to the documentation of this file.
1 /*
2 Copyright (C) 1997-2001 Id Software, Inc.
3 
4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by
6 the Free Software Foundation; either version 2 of the License, or
7 (at your option) any later version.
8 
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
13 
14 You should have received a copy of the GNU General Public License along
15 with this program; if not, write to the Free Software Foundation, Inc.,
16 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
17 */
18 /*
19 ==============================================================================
20 
21 insane
22 
23 ==============================================================================
24 */
25 
26 #include "g_local.h"
27 #include "m_insane.h"
28 
29 
30 static int sound_fist;
31 static int sound_shake;
32 static int sound_moan;
33 static int sound_scream[8];
34 
35 void insane_fist(edict_t *self)
36 {
37  gi.sound(self, CHAN_VOICE, sound_fist, 1, ATTN_IDLE, 0);
38 }
39 
40 void insane_shake(edict_t *self)
41 {
42  gi.sound(self, CHAN_VOICE, sound_shake, 1, ATTN_IDLE, 0);
43 }
44 
45 void insane_moan(edict_t *self)
46 {
47  gi.sound(self, CHAN_VOICE, sound_moan, 1, ATTN_IDLE, 0);
48 }
49 
50 void insane_scream(edict_t *self)
51 {
52  gi.sound(self, CHAN_VOICE, sound_scream[rand() % 8], 1, ATTN_IDLE, 0);
53 }
54 
55 
56 void insane_stand(edict_t *self);
57 void insane_dead(edict_t *self);
58 void insane_cross(edict_t *self);
59 void insane_walk(edict_t *self);
60 void insane_run(edict_t *self);
61 void insane_checkdown(edict_t *self);
62 void insane_checkup(edict_t *self);
63 void insane_onground(edict_t *self);
64 
65 
67  { ai_stand, 0, NULL },
68  { ai_stand, 0, NULL },
69  { ai_stand, 0, NULL },
70  { ai_stand, 0, NULL },
71  { ai_stand, 0, NULL },
73 };
75 
77  { ai_stand, 0, insane_shake },
78  { ai_stand, 0, NULL },
79  { ai_stand, 0, NULL },
80  { ai_stand, 0, NULL },
81  { ai_stand, 0, NULL },
82  { ai_stand, 0, NULL },
83  { ai_stand, 0, NULL },
84  { ai_stand, 0, NULL },
85  { ai_stand, 0, NULL },
86  { ai_stand, 0, NULL },
87  { ai_stand, 0, NULL },
88  { ai_stand, 0, NULL },
89  { ai_stand, 0, NULL },
90  { ai_stand, 0, NULL },
91  { ai_stand, 0, NULL },
92  { ai_stand, 0, NULL },
93  { ai_stand, 0, NULL },
94  { ai_stand, 0, NULL },
95  { ai_stand, 0, NULL },
96  { ai_stand, 0, NULL },
97  { ai_stand, 0, NULL },
98  { ai_stand, 0, NULL },
99  { ai_stand, 0, NULL },
100  { ai_stand, 0, NULL },
101  { ai_stand, 0, NULL },
102  { ai_stand, 0, NULL },
103  { ai_stand, 0, NULL },
104  { ai_stand, 0, NULL },
105  { ai_stand, 0, NULL },
106  { ai_stand, 0, insane_checkdown }
107 };
109 
111  { ai_move, 0, NULL },
112  { ai_move, 0, NULL },
113  { ai_move, 0, NULL },
114  { ai_move, 0, NULL },
115  { ai_move, 0, NULL },
116  { ai_move, 0, NULL },
117  { ai_move, 0, NULL },
118  { ai_move, 0, insane_moan },
119  { ai_move, 0, NULL },
120  { ai_move, 0, NULL },
121 
122  { ai_move, 0, NULL },
123  { ai_move, 0, NULL },
124  { ai_move, 0, NULL },
125  { ai_move, 0, NULL },
126  { ai_move, 0, NULL },
127  { ai_move, 0, NULL },
128  { ai_move, 0, NULL },
129  { ai_move, 0, NULL },
130  { ai_move, 0, NULL },
131  { ai_move, 0, NULL },
132 
133  { ai_move, 2.7, NULL },
134  { ai_move, 4.1, NULL },
135  { ai_move, 6, NULL },
136  { ai_move, 7.6, NULL },
137  { ai_move, 3.6, NULL },
138  { ai_move, 0, NULL },
139  { ai_move, 0, NULL },
140  { ai_move, 0, insane_fist },
141  { ai_move, 0, NULL },
142  { ai_move, 0, NULL },
143 
144  { ai_move, 0, NULL },
145  { ai_move, 0, NULL },
146  { ai_move, 0, NULL },
147  { ai_move, 0, insane_fist },
148  { ai_move, 0, NULL },
149  { ai_move, 0, NULL },
150  { ai_move, 0, NULL },
151  { ai_move, 0, NULL },
152  { ai_move, 0, NULL },
153  { ai_move, 0, NULL }
154 };
156 
157 
159  { ai_move, -0.7, NULL }, // 41
160  { ai_move, -1.2, NULL }, // 42
161  { ai_move, -1.5, NULL }, // 43
162  { ai_move, -4.5, NULL }, // 44
163  { ai_move, -3.5, NULL }, // 45
164  { ai_move, -0.2, NULL }, // 46
165  { ai_move, 0, NULL }, // 47
166  { ai_move, -1.3, NULL }, // 48
167  { ai_move, -3, NULL }, // 49
168  { ai_move, -2, NULL }, // 50
169  { ai_move, 0, NULL }, // 51
170  { ai_move, 0, NULL }, // 52
171  { ai_move, 0, NULL }, // 53
172  { ai_move, -3.3, NULL }, // 54
173  { ai_move, -1.6, NULL }, // 55
174  { ai_move, -0.3, NULL }, // 56
175  { ai_move, 0, NULL }, // 57
176  { ai_move, 0, NULL }, // 58
177  { ai_move, 0, NULL } // 59
178 };
180 
182  { ai_move, 0.2, NULL },
183  { ai_move, 11.5, NULL },
184  { ai_move, 5.1, NULL },
185  { ai_move, 7.1, NULL },
186  { ai_move, 0, NULL }
187 };
189 
190 
192  { ai_move, 0, NULL }, // 100
193  { ai_move, 0, NULL },
194  { ai_move, 0, NULL },
195  { ai_move, 0, NULL },
196  { ai_move, 0, NULL },
197  { ai_move, 0, NULL },
198  { ai_move, 0, NULL },
199  { ai_move, 0, NULL },
200  { ai_move, 0, NULL },
201  { ai_move, 0, NULL },
202  { ai_move, 0, NULL }, // 110
203  { ai_move, -1.7, NULL },
204  { ai_move, -1.6, NULL },
205  { ai_move, 0, NULL },
206  { ai_move, 0, NULL },
207  { ai_move, 0, NULL },
208  { ai_move, 0, insane_fist },
209  { ai_move, 0, NULL },
210  { ai_move, 0, NULL },
211  { ai_move, 0, NULL },
212  { ai_move, 0, NULL }, // 120
213  { ai_move, 0, NULL },
214  { ai_move, 0, NULL },
215  { ai_move, 0, NULL },
216  { ai_move, 0, NULL },
217  { ai_move, 0, NULL },
218  { ai_move, 0, NULL },
219  { ai_move, 0, NULL },
220  { ai_move, 0, NULL },
221  { ai_move, 0, NULL },
222  { ai_move, 0, NULL }, // 130
223  { ai_move, 0, NULL },
224  { ai_move, 0, NULL },
225  { ai_move, 0, insane_moan },
226  { ai_move, 0, NULL },
227  { ai_move, 0, NULL },
228  { ai_move, 0, NULL },
229  { ai_move, 0, NULL },
230  { ai_move, 0, NULL },
231  { ai_move, 0, NULL },
232  { ai_move, 0, NULL }, // 140
233  { ai_move, 0, NULL },
234  { ai_move, 0, NULL },
235  { ai_move, 0, NULL },
236  { ai_move, 0, NULL },
237  { ai_move, 0, NULL },
238  { ai_move, 0, NULL },
239  { ai_move, 0, NULL },
240  { ai_move, 0, NULL },
241  { ai_move, 0, NULL },
242  { ai_move, 0, NULL }, // 150
243  { ai_move, 0.5, NULL },
244  { ai_move, 0, NULL },
245  { ai_move, -0.2, insane_scream },
246  { ai_move, 0, NULL },
247  { ai_move, 0.2, NULL },
248  { ai_move, 0.4, NULL },
249  { ai_move, 0.6, NULL },
250  { ai_move, 0.8, NULL },
251  { ai_move, 0.7, NULL },
252  { ai_move, 0, insane_checkup } // 160
253 };
255 
257  { ai_walk, 0, insane_scream },
258  { ai_walk, 2.5, NULL },
259  { ai_walk, 3.5, NULL },
260  { ai_walk, 1.7, NULL },
261  { ai_walk, 2.3, NULL },
262  { ai_walk, 2.4, NULL },
263  { ai_walk, 2.2, NULL },
264  { ai_walk, 4.2, NULL },
265  { ai_walk, 5.6, NULL },
266  { ai_walk, 3.3, NULL },
267  { ai_walk, 2.4, NULL },
268  { ai_walk, 0.9, NULL },
269  { ai_walk, 0, NULL }
270 };
273 
275  { ai_walk, 0, insane_scream }, // walk 1
276  { ai_walk, 3.4, NULL }, // walk 2
277  { ai_walk, 3.6, NULL }, // 3
278  { ai_walk, 2.9, NULL }, // 4
279  { ai_walk, 2.2, NULL }, // 5
280  { ai_walk, 2.6, NULL }, // 6
281  { ai_walk, 0, NULL }, // 7
282  { ai_walk, 0.7, NULL }, // 8
283  { ai_walk, 4.8, NULL }, // 9
284  { ai_walk, 5.3, NULL }, // 10
285  { ai_walk, 1.1, NULL }, // 11
286  { ai_walk, 2, NULL }, // 12
287  { ai_walk, 0.5, NULL }, // 13
288  { ai_walk, 0, NULL }, // 14
289  { ai_walk, 0, NULL }, // 15
290  { ai_walk, 4.9, NULL }, // 16
291  { ai_walk, 6.7, NULL }, // 17
292  { ai_walk, 3.8, NULL }, // 18
293  { ai_walk, 2, NULL }, // 19
294  { ai_walk, 0.2, NULL }, // 20
295  { ai_walk, 0, NULL }, // 21
296  { ai_walk, 3.4, NULL }, // 22
297  { ai_walk, 6.4, NULL }, // 23
298  { ai_walk, 5, NULL }, // 24
299  { ai_walk, 1.8, NULL }, // 25
300  { ai_walk, 0, NULL } // 26
301 };
304 
306  { ai_move, 0, NULL },
307  { ai_move, 0, NULL },
308  { ai_move, 0, NULL },
309  { ai_move, 0, NULL },
310  { ai_move, 0, NULL },
311  { ai_move, 0, NULL },
312  { ai_move, 0, NULL },
313  { ai_move, 0, NULL },
314  { ai_move, 0, NULL },
315  { ai_move, 0, NULL },
316  { ai_move, 0, NULL }
317 };
319 
321  { ai_move, 0, NULL },
322  { ai_move, 0, NULL },
323  { ai_move, 0, NULL },
324  { ai_move, 0, NULL },
325  { ai_move, 0, NULL },
326  { ai_move, 0, NULL },
327  { ai_move, 0, NULL },
328  { ai_move, 0, NULL },
329  { ai_move, 0, NULL },
330  { ai_move, 0, NULL },
331  { ai_move, 0, NULL },
332  { ai_move, 0, NULL },
333  { ai_move, 0, NULL },
334  { ai_move, 0, NULL },
335  { ai_move, 0, NULL },
336  { ai_move, 0, NULL },
337  { ai_move, 0, NULL }
338 };
340 
342  { ai_walk, 0, insane_scream },
343  { ai_walk, 1.5, NULL },
344  { ai_walk, 2.1, NULL },
345  { ai_walk, 3.6, NULL },
346  { ai_walk, 2, NULL },
347  { ai_walk, 0.9, NULL },
348  { ai_walk, 3, NULL },
349  { ai_walk, 3.4, NULL },
350  { ai_walk, 2.4, NULL }
351 };
354 
356  { ai_move, 0, NULL },
357  { ai_move, 0, NULL },
358  { ai_move, 0, NULL },
359  { ai_move, 0, NULL },
360  { ai_move, 0, NULL },
361  { ai_move, 0, NULL },
362  { ai_move, 0, NULL },
363  { ai_move, 0, NULL },
364  { ai_move, 0, NULL }
365 };
367 
369  { ai_move, 0, NULL },
370  { ai_move, 0, NULL },
371  { ai_move, 0, NULL },
372  { ai_move, 0, NULL },
373  { ai_move, 0, NULL },
374  { ai_move, 0, NULL },
375  { ai_move, 0, NULL }
376 };
378 
380  { ai_move, 0, insane_moan },
381  { ai_move, 0, NULL },
382  { ai_move, 0, NULL },
383  { ai_move, 0, NULL },
384  { ai_move, 0, NULL },
385  { ai_move, 0, NULL },
386  { ai_move, 0, NULL },
387  { ai_move, 0, NULL },
388  { ai_move, 0, NULL },
389  { ai_move, 0, NULL },
390  { ai_move, 0, NULL },
391  { ai_move, 0, NULL },
392  { ai_move, 0, NULL },
393  { ai_move, 0, NULL },
394  { ai_move, 0, NULL }
395 };
397 
399  { ai_move, 0, insane_scream },
400  { ai_move, 0, NULL },
401  { ai_move, 0, NULL },
402  { ai_move, 0, NULL },
403  { ai_move, 0, NULL },
404  { ai_move, 0, NULL },
405  { ai_move, 0, NULL },
406  { ai_move, 0, NULL },
407  { ai_move, 0, NULL },
408  { ai_move, 0, NULL },
409  { ai_move, 0, NULL },
410  { ai_move, 0, NULL },
411  { ai_move, 0, NULL },
412  { ai_move, 0, NULL },
413  { ai_move, 0, NULL }
414 };
416 
417 void insane_cross(edict_t *self)
418 {
419  if (random() < 0.8)
420  self->monsterinfo.currentmove = &insane_move_cross;
421  else
422  self->monsterinfo.currentmove = &insane_move_struggle_cross;
423 }
424 
425 void insane_walk(edict_t *self)
426 {
427  if (self->spawnflags & 16) // Hold Ground?
428  if (self->s.frame == FRAME_cr_pain10) {
429  self->monsterinfo.currentmove = &insane_move_down;
430  return;
431  }
432  if (self->spawnflags & 4)
433  self->monsterinfo.currentmove = &insane_move_crawl;
434  else if (random() <= 0.5)
435  self->monsterinfo.currentmove = &insane_move_walk_normal;
436  else
437  self->monsterinfo.currentmove = &insane_move_walk_insane;
438 }
439 
440 void insane_run(edict_t *self)
441 {
442  if (self->spawnflags & 16) // Hold Ground?
443  if (self->s.frame == FRAME_cr_pain10) {
444  self->monsterinfo.currentmove = &insane_move_down;
445  return;
446  }
447  if (self->spawnflags & 4) // Crawling?
448  self->monsterinfo.currentmove = &insane_move_runcrawl;
449  else if (random() <= 0.5) // Else, mix it up
450  self->monsterinfo.currentmove = &insane_move_run_normal;
451  else
452  self->monsterinfo.currentmove = &insane_move_run_insane;
453 }
454 
455 
456 void insane_pain(edict_t *self, edict_t *other, float kick, int damage)
457 {
458  int l, r;
459 
460 // if (self->health < (self->max_health / 2))
461 // self->s.skinnum = 1;
462 
463  if (level.time < self->pain_debounce_time)
464  return;
465 
466  self->pain_debounce_time = level.time + 3;
467 
468  r = 1 + (rand() & 1);
469  if (self->health < 25)
470  l = 25;
471  else if (self->health < 50)
472  l = 50;
473  else if (self->health < 75)
474  l = 75;
475  else
476  l = 100;
477  gi.sound(self, CHAN_VOICE, gi.soundindex(va("player/male/pain%i_%i.wav", l, r)), 1, ATTN_IDLE, 0);
478 
479  if (skill->value == 3)
480  return; // no pain anims in nightmare
481 
482  // Don't go into pain frames if crucified.
483  if (self->spawnflags & 8) {
484  self->monsterinfo.currentmove = &insane_move_struggle_cross;
485  return;
486  }
487 
488  if (((self->s.frame >= FRAME_crawl1) && (self->s.frame <= FRAME_crawl9)) || ((self->s.frame >= FRAME_stand99) && (self->s.frame <= FRAME_stand160))) {
489  self->monsterinfo.currentmove = &insane_move_crawl_pain;
490  } else
491  self->monsterinfo.currentmove = &insane_move_stand_pain;
492 
493 }
494 
495 void insane_onground(edict_t *self)
496 {
497  self->monsterinfo.currentmove = &insane_move_down;
498 }
499 
500 void insane_checkdown(edict_t *self)
501 {
502 // if ( (self->s.frame == FRAME_stand94) || (self->s.frame == FRAME_stand65) )
503  if (self->spawnflags & 32) // Always stand
504  return;
505  if (random() < 0.3) {
506  if (random() < 0.5)
507  self->monsterinfo.currentmove = &insane_move_uptodown;
508  else
509  self->monsterinfo.currentmove = &insane_move_jumpdown;
510  }
511 }
512 
513 void insane_checkup(edict_t *self)
514 {
515  // If Hold_Ground and Crawl are set
516  if ((self->spawnflags & 4) && (self->spawnflags & 16))
517  return;
518  if (random() < 0.5)
519  self->monsterinfo.currentmove = &insane_move_downtoup;
520 
521 }
522 
523 void insane_stand(edict_t *self)
524 {
525  if (self->spawnflags & 8) { // If crucified
526  self->monsterinfo.currentmove = &insane_move_cross;
527  self->monsterinfo.aiflags |= AI_STAND_GROUND;
528  }
529  // If Hold_Ground and Crawl are set
530  else if ((self->spawnflags & 4) && (self->spawnflags & 16))
531  self->monsterinfo.currentmove = &insane_move_down;
532  else if (random() < 0.5)
533  self->monsterinfo.currentmove = &insane_move_stand_normal;
534  else
535  self->monsterinfo.currentmove = &insane_move_stand_insane;
536 }
537 
538 void insane_dead(edict_t *self)
539 {
540  if (self->spawnflags & 8) {
541  self->flags |= FL_FLY;
542  } else {
543  VectorSet(self->mins, -16, -16, -24);
544  VectorSet(self->maxs, 16, 16, -8);
545  self->movetype = MOVETYPE_TOSS;
546  }
547  self->svflags |= SVF_DEADMONSTER;
548  self->nextthink = 0;
549  gi.linkentity(self);
550 }
551 
552 
553 void insane_die(edict_t *self, edict_t *inflictor, edict_t *attacker, int damage, vec3_t point)
554 {
555  int n;
556 
557  if (self->health <= self->gib_health) {
558  gi.sound(self, CHAN_VOICE, gi.soundindex("misc/udeath.wav"), 1, ATTN_IDLE, 0);
559  for (n = 0; n < 2; n++)
560  ThrowGib(self, "models/objects/gibs/bone/tris.md2", damage, GIB_ORGANIC);
561  for (n = 0; n < 4; n++)
562  ThrowGib(self, "models/objects/gibs/sm_meat/tris.md2", damage, GIB_ORGANIC);
563  ThrowHead(self, "models/objects/gibs/head2/tris.md2", damage, GIB_ORGANIC);
564  self->deadflag = DEAD_DEAD;
565  return;
566  }
567 
568  if (self->deadflag == DEAD_DEAD)
569  return;
570 
571  gi.sound(self, CHAN_VOICE, gi.soundindex(va("player/male/death%i.wav", (rand() % 4) + 1)), 1, ATTN_IDLE, 0);
572 
573  self->deadflag = DEAD_DEAD;
574  self->takedamage = DAMAGE_YES;
575 
576  if (self->spawnflags & 8) {
577  insane_dead(self);
578  } else {
579  if (((self->s.frame >= FRAME_crawl1) && (self->s.frame <= FRAME_crawl9)) || ((self->s.frame >= FRAME_stand99) && (self->s.frame <= FRAME_stand160)))
580  self->monsterinfo.currentmove = &insane_move_crawl_death;
581  else
582  self->monsterinfo.currentmove = &insane_move_stand_death;
583  }
584 }
585 
586 
587 /*QUAKED misc_insane (1 .5 0) (-16 -16 -24) (16 16 32) Ambush Trigger_Spawn CRAWL CRUCIFIED STAND_GROUND ALWAYS_STAND
588 */
589 void SP_misc_insane(edict_t *self)
590 {
591 // static int skin = 0; //@@
592 
593  if (deathmatch->value) {
594  G_FreeEdict(self);
595  return;
596  }
597 
598  sound_fist = gi.soundindex("insane/insane11.wav");
599  sound_shake = gi.soundindex("insane/insane5.wav");
600  sound_moan = gi.soundindex("insane/insane7.wav");
601  sound_scream[0] = gi.soundindex("insane/insane1.wav");
602  sound_scream[1] = gi.soundindex("insane/insane2.wav");
603  sound_scream[2] = gi.soundindex("insane/insane3.wav");
604  sound_scream[3] = gi.soundindex("insane/insane4.wav");
605  sound_scream[4] = gi.soundindex("insane/insane6.wav");
606  sound_scream[5] = gi.soundindex("insane/insane8.wav");
607  sound_scream[6] = gi.soundindex("insane/insane9.wav");
608  sound_scream[7] = gi.soundindex("insane/insane10.wav");
609 
610  self->movetype = MOVETYPE_STEP;
611  self->solid = SOLID_BBOX;
612  self->s.modelindex = gi.modelindex("models/monsters/insane/tris.md2");
613 
614  VectorSet(self->mins, -16, -16, -24);
615  VectorSet(self->maxs, 16, 16, 32);
616 
617  self->health = 100;
618  self->gib_health = -50;
619  self->mass = 300;
620 
621  self->pain = insane_pain;
622  self->die = insane_die;
623 
624  self->monsterinfo.stand = insane_stand;
625  self->monsterinfo.walk = insane_walk;
626  self->monsterinfo.run = insane_run;
627  self->monsterinfo.dodge = NULL;
628  self->monsterinfo.attack = NULL;
629  self->monsterinfo.melee = NULL;
630  self->monsterinfo.sight = NULL;
631  self->monsterinfo.aiflags |= AI_GOOD_GUY;
632 
633 //@@
634 // self->s.skinnum = skin;
635 // skin++;
636 // if (skin > 12)
637 // skin = 0;
638 
639  gi.linkentity(self);
640 
641  if (self->spawnflags & 16) // Stand Ground
642  self->monsterinfo.aiflags |= AI_STAND_GROUND;
643 
644  self->monsterinfo.currentmove = &insane_move_stand_normal;
645 
646  self->monsterinfo.scale = MODEL_SCALE;
647 
648  if (self->spawnflags & 8) { // Crucified ?
649  VectorSet(self->mins, -16, 0, 0);
650  VectorSet(self->maxs, 16, 8, 32);
651  self->flags |= FL_NO_KNOCKBACK;
652  flymonster_start(self);
653  } else {
654  walkmonster_start(self);
655  self->s.skinnum = rand() % 3;
656  }
657 }
gi
game_import_t gi
Definition: g_main.c:23
insane_frames_struggle_cross
mframe_t insane_frames_struggle_cross[]
Definition: m_insane.c:398
deathmatch
cvar_t * deathmatch
Definition: g_main.c:33
insane_walk
void insane_walk(edict_t *self)
Definition: m_insane.c:425
insane_frames_crawl_death
mframe_t insane_frames_crawl_death[]
Definition: m_insane.c:368
insane_moan
void insane_moan(edict_t *self)
Definition: m_insane.c:45
DEAD_DEAD
#define DEAD_DEAD
Definition: g_local.h:112
insane_move_walk_insane
mmove_t insane_move_walk_insane
Definition: m_insane.c:302
insane_pain
void insane_pain(edict_t *self, edict_t *other, float kick, int damage)
Definition: m_insane.c:456
sound_scream
static int sound_scream[8]
Definition: m_insane.c:33
insane_frames_stand_death
mframe_t insane_frames_stand_death[]
Definition: m_insane.c:320
ThrowGib
void ThrowGib(edict_t *self, char *gibname, int damage, int type)
Definition: g_misc.c:130
AI_GOOD_GUY
#define AI_GOOD_GUY
Definition: g_local.h:134
insane_frames_down
mframe_t insane_frames_down[]
Definition: m_insane.c:191
FRAME_stand96
#define FRAME_stand96
Definition: m_insane.h:117
insane_move_crawl_death
mmove_t insane_move_crawl_death
Definition: m_insane.c:377
insane_scream
void insane_scream(edict_t *self)
Definition: m_insane.c:50
sound_fist
static int sound_fist
Definition: m_insane.c:30
insane_frames_cross
mframe_t insane_frames_cross[]
Definition: m_insane.c:379
FRAME_cr_death10
#define FRAME_cr_death10
Definition: m_insane.h:267
insane_move_stand_death
mmove_t insane_move_stand_death
Definition: m_insane.c:339
FRAME_stand100
#define FRAME_stand100
Definition: m_insane.h:121
AI_STAND_GROUND
#define AI_STAND_GROUND
Definition: g_local.h:126
insane_move_crawl
mmove_t insane_move_crawl
Definition: m_insane.c:352
FRAME_cross15
#define FRAME_cross15
Definition: m_insane.h:288
insane_move_walk_normal
mmove_t insane_move_walk_normal
Definition: m_insane.c:271
MODEL_SCALE
#define MODEL_SCALE
Definition: m_actor.h:504
insane_frames_downtoup
mframe_t insane_frames_downtoup[]
Definition: m_insane.c:158
sound_shake
static int sound_shake
Definition: m_insane.c:31
DAMAGE_YES
@ DAMAGE_YES
Definition: g_local.h:88
m_insane.h
FL_NO_KNOCKBACK
#define FL_NO_KNOCKBACK
Definition: g_local.h:70
FRAME_cr_death16
#define FRAME_cr_death16
Definition: m_insane.h:273
FRAME_walk27
#define FRAME_walk27
Definition: m_chick.h:229
SP_misc_insane
void SP_misc_insane(edict_t *self)
Definition: m_insane.c:589
insane_checkup
void insane_checkup(edict_t *self)
Definition: m_insane.c:513
insane_die
void insane_die(edict_t *self, edict_t *inflictor, edict_t *attacker, int damage, vec3_t point)
Definition: m_insane.c:553
FRAME_cross16
#define FRAME_cross16
Definition: m_insane.h:289
other
@ other
Definition: ogg.c:63
walkmonster_start
void walkmonster_start(edict_t *self)
Definition: g_monster.c:630
MOVETYPE_STEP
@ MOVETYPE_STEP
Definition: g_local.h:192
insane_move_run_insane
mmove_t insane_move_run_insane
Definition: m_insane.c:303
FRAME_walk39
#define FRAME_walk39
Definition: m_insane.h:194
FRAME_stand59
#define FRAME_stand59
Definition: m_brain.h:242
insane_cross
void insane_cross(edict_t *self)
Definition: m_insane.c:417
G_FreeEdict
void G_FreeEdict(edict_t *e)
Definition: g_utils.c:421
FRAME_st_death18
#define FRAME_st_death18
Definition: m_insane.h:248
insane_move_down
mmove_t insane_move_down
Definition: m_insane.c:254
FRAME_cr_pain10
#define FRAME_cr_pain10
Definition: m_insane.h:266
FRAME_cross1
#define FRAME_cross1
Definition: m_insane.h:274
insane_frames_crawl
mframe_t insane_frames_crawl[]
Definition: m_insane.c:341
insane_shake
void insane_shake(edict_t *self)
Definition: m_insane.c:40
FRAME_stand99
#define FRAME_stand99
Definition: m_insane.h:120
FRAME_st_pain12
#define FRAME_st_pain12
Definition: m_insane.h:231
va
char * va(const char *format,...)
Definition: shared.c:429
mframe_t
Definition: g_local.h:394
insane_dead
void insane_dead(edict_t *self)
Definition: m_insane.c:538
mmove_t
Definition: g_local.h:400
FRAME_crawl1
#define FRAME_crawl1
Definition: m_insane.h:249
insane_frames_uptodown
mframe_t insane_frames_uptodown[]
Definition: m_insane.c:110
FRAME_stand60
#define FRAME_stand60
Definition: m_brain.h:243
insane_move_downtoup
mmove_t insane_move_downtoup
Definition: m_insane.c:179
ai_walk
void ai_walk(edict_t *self, float dist)
Definition: g_ai.c:148
insane_move_cross
mmove_t insane_move_cross
Definition: m_insane.c:396
random
#define random()
Definition: g_local.h:504
FRAME_stand94
#define FRAME_stand94
Definition: m_insane.h:115
FRAME_cross30
#define FRAME_cross30
Definition: m_insane.h:303
FRAME_stand1
#define FRAME_stand1
Definition: m_berserk.h:22
FRAME_stand65
#define FRAME_stand65
Definition: m_gunner.h:86
insane_onground
void insane_onground(edict_t *self)
Definition: m_insane.c:495
skill
cvar_t * skill
Definition: g_main.c:36
FRAME_stand160
#define FRAME_stand160
Definition: m_insane.h:181
insane_frames_walk_insane
mframe_t insane_frames_walk_insane[]
Definition: m_insane.c:274
insane_frames_stand_normal
mframe_t insane_frames_stand_normal[]
Definition: m_insane.c:66
ai_move
void ai_move(edict_t *self, float dist)
Definition: g_ai.c:86
level_locals_t::time
float time
Definition: g_local.h:299
FRAME_walk1
#define FRAME_walk1
Definition: m_boss2.h:72
insane_frames_jumpdown
mframe_t insane_frames_jumpdown[]
Definition: m_insane.c:181
insane_move_crawl_pain
mmove_t insane_move_crawl_pain
Definition: m_insane.c:366
FRAME_stand40
#define FRAME_stand40
Definition: m_boss2.h:32
FRAME_stand41
#define FRAME_stand41
Definition: m_boss2.h:33
FRAME_st_pain2
#define FRAME_st_pain2
Definition: m_insane.h:221
insane_move_run_normal
mmove_t insane_move_run_normal
Definition: m_insane.c:272
insane_stand
void insane_stand(edict_t *self)
Definition: m_insane.c:523
insane_frames_walk_normal
mframe_t insane_frames_walk_normal[]
Definition: m_insane.c:256
insane_frames_stand_insane
mframe_t insane_frames_stand_insane[]
Definition: m_insane.c:76
GIB_ORGANIC
#define GIB_ORGANIC
Definition: g_local.h:122
insane_move_runcrawl
mmove_t insane_move_runcrawl
Definition: m_insane.c:353
level
level_locals_t level
Definition: g_main.c:22
FRAME_cr_pain2
#define FRAME_cr_pain2
Definition: m_insane.h:258
insane_move_stand_insane
mmove_t insane_move_stand_insane
Definition: m_insane.c:108
FL_FLY
#define FL_FLY
Definition: g_local.h:59
ThrowHead
void ThrowHead(edict_t *self, char *gibname, int damage, int type)
Definition: g_misc.c:175
insane_move_struggle_cross
mmove_t insane_move_struggle_cross
Definition: m_insane.c:415
FRAME_walk26
#define FRAME_walk26
Definition: m_chick.h:228
insane_checkdown
void insane_checkdown(edict_t *self)
Definition: m_insane.c:500
insane_move_stand_normal
mmove_t insane_move_stand_normal
Definition: m_insane.c:74
FRAME_st_death2
#define FRAME_st_death2
Definition: m_insane.h:232
MOVETYPE_TOSS
@ MOVETYPE_TOSS
Definition: g_local.h:194
insane_run
void insane_run(edict_t *self)
Definition: m_insane.c:440
insane_move_uptodown
mmove_t insane_move_uptodown
Definition: m_insane.c:155
insane_fist
void insane_fist(edict_t *self)
Definition: m_insane.c:35
insane_move_jumpdown
mmove_t insane_move_jumpdown
Definition: m_insane.c:188
FRAME_crawl9
#define FRAME_crawl9
Definition: m_insane.h:257
insane_frames_stand_pain
mframe_t insane_frames_stand_pain[]
Definition: m_insane.c:305
sound_moan
static int sound_moan
Definition: m_insane.c:32
ai_stand
void ai_stand(edict_t *self, float dist)
Definition: g_ai.c:100
g_local.h
flymonster_start
void flymonster_start(edict_t *self)
Definition: g_monster.c:653
insane_frames_crawl_pain
mframe_t insane_frames_crawl_pain[]
Definition: m_insane.c:355
insane_move_stand_pain
mmove_t insane_move_stand_pain
Definition: m_insane.c:318