vkQuake2 doxygen  1.0 dev
m_boss31.c File Reference
#include "g_local.h"
#include "m_boss31.h"

Go to the source code of this file.

Functions

void SP_monster_makron (edict_t *self)
 
qboolean visible (edict_t *self, edict_t *other)
 
void BossExplode (edict_t *self)
 
void MakronToss (edict_t *self)
 
void jorg_search (edict_t *self)
 
void jorg_dead (edict_t *self)
 
void jorgBFG (edict_t *self)
 
void jorgMachineGun (edict_t *self)
 
void jorg_firebullet (edict_t *self)
 
void jorg_reattack1 (edict_t *self)
 
void jorg_attack1 (edict_t *self)
 
void jorg_idle (edict_t *self)
 
void jorg_step_left (edict_t *self)
 
void jorg_step_right (edict_t *self)
 
void jorg_death_hit (edict_t *self)
 
void jorg_stand (edict_t *self)
 
void jorg_walk (edict_t *self)
 
void jorg_run (edict_t *self)
 
void jorg_pain (edict_t *self, edict_t *other, float kick, int damage)
 
void jorg_firebullet_right (edict_t *self)
 
void jorg_firebullet_left (edict_t *self)
 
void jorg_attack (edict_t *self)
 
void jorg_die (edict_t *self, edict_t *inflictor, edict_t *attacker, int damage, vec3_t point)
 
qboolean Jorg_CheckAttack (edict_t *self)
 
void MakronPrecache (void)
 
void SP_monster_jorg (edict_t *self)
 

Variables

static int sound_pain1
 
static int sound_pain2
 
static int sound_pain3
 
static int sound_idle
 
static int sound_death
 
static int sound_search1
 
static int sound_search2
 
static int sound_search3
 
static int sound_attack1
 
static int sound_attack2
 
static int sound_firegun
 
static int sound_step_left
 
static int sound_step_right
 
static int sound_death_hit
 
mframe_t jorg_frames_stand []
 
mmove_t jorg_move_stand = {FRAME_stand01, FRAME_stand51, jorg_frames_stand, NULL}
 
mframe_t jorg_frames_run []
 
mmove_t jorg_move_run = {FRAME_walk06, FRAME_walk19, jorg_frames_run, NULL}
 
mframe_t jorg_frames_start_walk []
 
mmove_t jorg_move_start_walk = {FRAME_walk01, FRAME_walk05, jorg_frames_start_walk, NULL}
 
mframe_t jorg_frames_walk []
 
mmove_t jorg_move_walk = {FRAME_walk06, FRAME_walk19, jorg_frames_walk, NULL}
 
mframe_t jorg_frames_end_walk []
 
mmove_t jorg_move_end_walk = {FRAME_walk20, FRAME_walk25, jorg_frames_end_walk, NULL}
 
mframe_t jorg_frames_pain3 []
 
mmove_t jorg_move_pain3 = {FRAME_pain301, FRAME_pain325, jorg_frames_pain3, jorg_run}
 
mframe_t jorg_frames_pain2 []
 
mmove_t jorg_move_pain2 = {FRAME_pain201, FRAME_pain203, jorg_frames_pain2, jorg_run}
 
mframe_t jorg_frames_pain1 []
 
mmove_t jorg_move_pain1 = {FRAME_pain101, FRAME_pain103, jorg_frames_pain1, jorg_run}
 
mframe_t jorg_frames_death1 []
 
mmove_t jorg_move_death = {FRAME_death01, FRAME_death50, jorg_frames_death1, jorg_dead}
 
mframe_t jorg_frames_attack2 []
 
mmove_t jorg_move_attack2 = {FRAME_attak201, FRAME_attak213, jorg_frames_attack2, jorg_run}
 
mframe_t jorg_frames_start_attack1 []
 
mmove_t jorg_move_start_attack1 = {FRAME_attak101, FRAME_attak108, jorg_frames_start_attack1, jorg_attack1}
 
mframe_t jorg_frames_attack1 []
 
mmove_t jorg_move_attack1 = {FRAME_attak109, FRAME_attak114, jorg_frames_attack1, jorg_reattack1}
 
mframe_t jorg_frames_end_attack1 []
 
mmove_t jorg_move_end_attack1 = {FRAME_attak115, FRAME_attak118, jorg_frames_end_attack1, jorg_run}
 

Function Documentation

◆ BossExplode()

void BossExplode ( edict_t self)

Definition at line 594 of file m_supertank.c.

595 {
596  vec3_t org;
597  int n;
598 
599  self->think = BossExplode;
600  VectorCopy (self->s.origin, org);
601  org[2] += 24 + (rand()&15);
602  switch (self->count++)
603  {
604  case 0:
605  org[0] -= 24;
606  org[1] -= 24;
607  break;
608  case 1:
609  org[0] += 24;
610  org[1] += 24;
611  break;
612  case 2:
613  org[0] += 24;
614  org[1] -= 24;
615  break;
616  case 3:
617  org[0] -= 24;
618  org[1] += 24;
619  break;
620  case 4:
621  org[0] -= 48;
622  org[1] -= 48;
623  break;
624  case 5:
625  org[0] += 48;
626  org[1] += 48;
627  break;
628  case 6:
629  org[0] -= 48;
630  org[1] += 48;
631  break;
632  case 7:
633  org[0] += 48;
634  org[1] -= 48;
635  break;
636  case 8:
637  self->s.sound = 0;
638  for (n= 0; n < 4; n++)
639  ThrowGib (self, "models/objects/gibs/sm_meat/tris.md2", 500, GIB_ORGANIC);
640  for (n= 0; n < 8; n++)
641  ThrowGib (self, "models/objects/gibs/sm_metal/tris.md2", 500, GIB_METALLIC);
642  ThrowGib (self, "models/objects/gibs/chest/tris.md2", 500, GIB_ORGANIC);
643  ThrowHead (self, "models/objects/gibs/gear/tris.md2", 500, GIB_METALLIC);
644  self->deadflag = DEAD_DEAD;
645  return;
646  }
647 
650  gi.WritePosition (org);
651  gi.multicast (self->s.origin, MULTICAST_PVS);
652 
653  self->nextthink = level.time + 0.1;
654 }

◆ jorg_attack()

void jorg_attack ( edict_t self)

Definition at line 539 of file m_boss31.c.

540 {
541  vec3_t vec;
542  float range;
543 
544  VectorSubtract (self->enemy->s.origin, self->s.origin, vec);
545  range = VectorLength (vec);
546 
547  if (random() <= 0.75)
548  {
549  gi.sound (self, CHAN_VOICE, sound_attack1, 1, ATTN_NORM,0);
550  self->s.sound = gi.soundindex ("boss3/w_loop.wav");
551  self->monsterinfo.currentmove = &jorg_move_start_attack1;
552  }
553  else
554  {
555  gi.sound (self, CHAN_VOICE, sound_attack2, 1, ATTN_NORM,0);
556  self->monsterinfo.currentmove = &jorg_move_attack2;
557  }
558 }

Referenced by SP_monster_jorg().

◆ jorg_attack1()

void jorg_attack1 ( edict_t self)

Definition at line 411 of file m_boss31.c.

412 {
413  self->monsterinfo.currentmove = &jorg_move_attack1;
414 }

◆ Jorg_CheckAttack()

qboolean Jorg_CheckAttack ( edict_t self)

Definition at line 599 of file m_boss31.c.

600 {
601  vec3_t spot1, spot2;
602  vec3_t temp;
603  float chance;
604  trace_t tr;
606  int enemy_range;
607  float enemy_yaw;
608 
609  if (self->enemy->health > 0)
610  {
611  // see if any entities are in the way of the shot
612  VectorCopy (self->s.origin, spot1);
613  spot1[2] += self->viewheight;
614  VectorCopy (self->enemy->s.origin, spot2);
615  spot2[2] += self->enemy->viewheight;
616 
618 
619  // do we have a clear shot?
620  if (tr.ent != self->enemy)
621  return false;
622  }
623 
624  enemy_infront = infront(self, self->enemy);
625  enemy_range = range(self, self->enemy);
626  VectorSubtract (self->enemy->s.origin, self->s.origin, temp);
627  enemy_yaw = vectoyaw(temp);
628 
629  self->ideal_yaw = enemy_yaw;
630 
631 
632  // melee attack
633  if (enemy_range == RANGE_MELEE)
634  {
635  if (self->monsterinfo.melee)
636  self->monsterinfo.attack_state = AS_MELEE;
637  else
638  self->monsterinfo.attack_state = AS_MISSILE;
639  return true;
640  }
641 
642 // missile attack
643  if (!self->monsterinfo.attack)
644  return false;
645 
646  if (level.time < self->monsterinfo.attack_finished)
647  return false;
648 
649  if (enemy_range == RANGE_FAR)
650  return false;
651 
652  if (self->monsterinfo.aiflags & AI_STAND_GROUND)
653  {
654  chance = 0.4;
655  }
656  else if (enemy_range == RANGE_MELEE)
657  {
658  chance = 0.8;
659  }
660  else if (enemy_range == RANGE_NEAR)
661  {
662  chance = 0.4;
663  }
664  else if (enemy_range == RANGE_MID)
665  {
666  chance = 0.2;
667  }
668  else
669  {
670  return false;
671  }
672 
673  if (random () < chance)
674  {
675  self->monsterinfo.attack_state = AS_MISSILE;
676  self->monsterinfo.attack_finished = level.time + 2*random();
677  return true;
678  }
679 
680  if (self->flags & FL_FLY)
681  {
682  if (random() < 0.3)
683  self->monsterinfo.attack_state = AS_SLIDING;
684  else
685  self->monsterinfo.attack_state = AS_STRAIGHT;
686  }
687 
688  return false;
689 }

Referenced by SP_monster_jorg().

◆ jorg_dead()

void jorg_dead ( edict_t self)

Definition at line 560 of file m_boss31.c.

561 {
562 #if 0
563  edict_t *tempent;
564  /*
565  VectorSet (self->mins, -16, -16, -24);
566  VectorSet (self->maxs, 16, 16, -8);
567  */
568 
569  // Jorg is on modelindex2. Do not clear him.
570  VectorSet (self->mins, -60, -60, 0);
571  VectorSet (self->maxs, 60, 60, 72);
572  self->movetype = MOVETYPE_TOSS;
573  self->nextthink = 0;
574  gi.linkentity (self);
575 
576  tempent = G_Spawn();
577  VectorCopy (self->s.origin, tempent->s.origin);
578  VectorCopy (self->s.angles, tempent->s.angles);
579  tempent->killtarget = self->killtarget;
580  tempent->target = self->target;
581  tempent->activator = self->enemy;
582  self->killtarget = 0;
583  self->target = 0;
584  SP_monster_makron (tempent);
585 #endif
586 }

◆ jorg_death_hit()

void jorg_death_hit ( edict_t self)

Definition at line 144 of file m_boss31.c.

145 {
146  gi.sound (self, CHAN_BODY, sound_death_hit, 1, ATTN_NORM,0);
147 }

◆ jorg_die()

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

Definition at line 589 of file m_boss31.c.

590 {
591  gi.sound (self, CHAN_VOICE, sound_death, 1, ATTN_NORM, 0);
592  self->deadflag = DEAD_DEAD;
593  self->takedamage = DAMAGE_NO;
594  self->s.sound = 0;
595  self->count = 0;
596  self->monsterinfo.currentmove = &jorg_move_death;
597 }

Referenced by SP_monster_jorg().

◆ jorg_firebullet()

void jorg_firebullet ( edict_t self)

Definition at line 533 of file m_boss31.c.

534 {
535  jorg_firebullet_left(self);
536  jorg_firebullet_right(self);
537 };

◆ jorg_firebullet_left()

void jorg_firebullet_left ( edict_t self)

Definition at line 517 of file m_boss31.c.

518 {
519  vec3_t forward, right, target;
520  vec3_t start;
521 
522  AngleVectors (self->s.angles, forward, right, NULL);
524 
525  VectorMA (self->enemy->s.origin, -0.2, self->enemy->velocity, target);
526  target[2] += self->enemy->viewheight;
527  VectorSubtract (target, start, forward);
529 
531 }

Referenced by jorg_firebullet().

◆ jorg_firebullet_right()

void jorg_firebullet_right ( edict_t self)

Definition at line 501 of file m_boss31.c.

502 {
503  vec3_t forward, right, target;
504  vec3_t start;
505 
506  AngleVectors (self->s.angles, forward, right, NULL);
508 
509  VectorMA (self->enemy->s.origin, -0.2, self->enemy->velocity, target);
510  target[2] += self->enemy->viewheight;
511  VectorSubtract (target, start, forward);
513 
515 }

Referenced by jorg_firebullet().

◆ jorg_idle()

void jorg_idle ( edict_t self)

Definition at line 139 of file m_boss31.c.

140 {
141  gi.sound (self, CHAN_VOICE, sound_idle, 1, ATTN_NORM,0);
142 }

◆ jorg_pain()

void jorg_pain ( edict_t self,
edict_t other,
float  kick,
int  damage 
)

Definition at line 416 of file m_boss31.c.

417 {
418 
419  if (self->health < (self->max_health / 2))
420  self->s.skinnum = 1;
421 
422  self->s.sound = 0;
423 
424  if (level.time < self->pain_debounce_time)
425  return;
426 
427  // Lessen the chance of him going into his pain frames if he takes little damage
428  if (damage <= 40)
429  if (random()<=0.6)
430  return;
431 
432  /*
433  If he's entering his attack1 or using attack1, lessen the chance of him
434  going into pain
435  */
436 
437  if ( (self->s.frame >= FRAME_attak101) && (self->s.frame <= FRAME_attak108) )
438  if (random() <= 0.005)
439  return;
440 
441  if ( (self->s.frame >= FRAME_attak109) && (self->s.frame <= FRAME_attak114) )
442  if (random() <= 0.00005)
443  return;
444 
445 
446  if ( (self->s.frame >= FRAME_attak201) && (self->s.frame <= FRAME_attak208) )
447  if (random() <= 0.005)
448  return;
449 
450 
451  self->pain_debounce_time = level.time + 3;
452  if (skill->value == 3)
453  return; // no pain anims in nightmare
454 
455  if (damage <= 50)
456  {
457  gi.sound (self, CHAN_VOICE, sound_pain1, 1, ATTN_NORM,0);
458  self->monsterinfo.currentmove = &jorg_move_pain1;
459  }
460  else if (damage <= 100)
461  {
462  gi.sound (self, CHAN_VOICE, sound_pain2, 1, ATTN_NORM,0);
463  self->monsterinfo.currentmove = &jorg_move_pain2;
464  }
465  else
466  {
467  if (random() <= 0.3)
468  {
469  gi.sound (self, CHAN_VOICE, sound_pain3, 1, ATTN_NORM,0);
470  self->monsterinfo.currentmove = &jorg_move_pain3;
471  }
472  }
473 };

Referenced by SP_monster_jorg().

◆ jorg_reattack1()

void jorg_reattack1 ( edict_t self)

Definition at line 394 of file m_boss31.c.

395 {
396  if (visible(self, self->enemy))
397  if (random() < 0.9)
398  self->monsterinfo.currentmove = &jorg_move_attack1;
399  else
400  {
401  self->s.sound = 0;
402  self->monsterinfo.currentmove = &jorg_move_end_attack1;
403  }
404  else
405  {
406  self->s.sound = 0;
407  self->monsterinfo.currentmove = &jorg_move_end_attack1;
408  }
409 }

◆ jorg_run()

void jorg_run ( edict_t self)

Definition at line 234 of file m_boss31.c.

235 {
236  if (self->monsterinfo.aiflags & AI_STAND_GROUND)
237  self->monsterinfo.currentmove = &jorg_move_stand;
238  else
239  self->monsterinfo.currentmove = &jorg_move_run;
240 }

Referenced by SP_monster_jorg().

◆ jorg_search()

void jorg_search ( edict_t self)

Definition at line 53 of file m_boss31.c.

54 {
55  float r;
56 
57  r = random();
58 
59  if (r <= 0.3)
60  gi.sound (self, CHAN_VOICE, sound_search1, 1, ATTN_NORM, 0);
61  else if (r <= 0.6)
62  gi.sound (self, CHAN_VOICE, sound_search2, 1, ATTN_NORM, 0);
63  else
64  gi.sound (self, CHAN_VOICE, sound_search3, 1, ATTN_NORM, 0);
65 }

Referenced by SP_monster_jorg().

◆ jorg_stand()

void jorg_stand ( edict_t self)

Definition at line 161 of file m_boss31.c.

162 {
163  self->monsterinfo.currentmove = &jorg_move_stand;
164 }

Referenced by SP_monster_jorg().

◆ jorg_step_left()

void jorg_step_left ( edict_t self)

Definition at line 150 of file m_boss31.c.

151 {
152  gi.sound (self, CHAN_BODY, sound_step_left, 1, ATTN_NORM,0);
153 }

◆ jorg_step_right()

void jorg_step_right ( edict_t self)

Definition at line 155 of file m_boss31.c.

156 {
158 }

◆ jorg_walk()

void jorg_walk ( edict_t self)

Definition at line 229 of file m_boss31.c.

230 {
231  self->monsterinfo.currentmove = &jorg_move_walk;
232 }

Referenced by SP_monster_jorg().

◆ jorgBFG()

void jorgBFG ( edict_t self)

Definition at line 475 of file m_boss31.c.

476 {
478  vec3_t start;
479  vec3_t dir;
480  vec3_t vec;
481 
482  AngleVectors (self->s.angles, forward, right, NULL);
484 
485  VectorCopy (self->enemy->s.origin, vec);
486  vec[2] += self->enemy->viewheight;
487  VectorSubtract (vec, start, dir);
488  VectorNormalize (dir);
489  gi.sound (self, CHAN_VOICE, sound_attack2, 1, ATTN_NORM, 0);
490  /*void monster_fire_bfg (edict_t *self,
491  vec3_t start,
492  vec3_t aimdir,
493  int damage,
494  int speed,
495  int kick,
496  float damage_radius,
497  int flashtype)*/
498  monster_fire_bfg (self, start, dir, 50, 300, 100, 200, MZ2_JORG_BFG_1);
499 }

◆ jorgMachineGun()

void jorgMachineGun ( edict_t self)

◆ MakronPrecache()

void MakronPrecache ( void  )

Definition at line 808 of file m_boss32.c.

809 {
810  sound_pain4 = gi.soundindex ("makron/pain3.wav");
811  sound_pain5 = gi.soundindex ("makron/pain2.wav");
812  sound_pain6 = gi.soundindex ("makron/pain1.wav");
813  sound_death = gi.soundindex ("makron/death.wav");
814  sound_step_left = gi.soundindex ("makron/step1.wav");
815  sound_step_right = gi.soundindex ("makron/step2.wav");
816  sound_attack_bfg = gi.soundindex ("makron/bfg_fire.wav");
817  sound_brainsplorch = gi.soundindex ("makron/brain1.wav");
818  sound_prerailgun = gi.soundindex ("makron/rail_up.wav");
819  sound_popup = gi.soundindex ("makron/popup.wav");
820  sound_taunt1 = gi.soundindex ("makron/voice4.wav");
821  sound_taunt2 = gi.soundindex ("makron/voice3.wav");
822  sound_taunt3 = gi.soundindex ("makron/voice.wav");
823  sound_hit = gi.soundindex ("makron/bhit.wav");
824 
825  gi.modelindex ("models/monsters/boss3/rider/tris.md2");
826 }

Referenced by SP_monster_jorg(), and SP_monster_makron().

◆ MakronToss()

void MakronToss ( edict_t self)

Definition at line 904 of file m_boss32.c.

905 {
906  edict_t *ent;
907 
908  ent = G_Spawn ();
909  ent->nextthink = level.time + 0.8;
910  ent->think = MakronSpawn;
911  ent->target = self->target;
912  VectorCopy (self->s.origin, ent->s.origin);
913 }

◆ 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_makron()

void SP_monster_makron ( edict_t self)

Definition at line 830 of file m_boss32.c.

831 {
832  if (deathmatch->value)
833  {
834  G_FreeEdict (self);
835  return;
836  }
837 
838  MakronPrecache ();
839 
840  self->movetype = MOVETYPE_STEP;
841  self->solid = SOLID_BBOX;
842  self->s.modelindex = gi.modelindex ("models/monsters/boss3/rider/tris.md2");
843  VectorSet (self->mins, -30, -30, 0);
844  VectorSet (self->maxs, 30, 30, 90);
845 
846  self->health = 3000;
847  self->gib_health = -2000;
848  self->mass = 500;
849 
850  self->pain = makron_pain;
851  self->die = makron_die;
852  self->monsterinfo.stand = makron_stand;
853  self->monsterinfo.walk = makron_walk;
854  self->monsterinfo.run = makron_run;
855  self->monsterinfo.dodge = NULL;
856  self->monsterinfo.attack = makron_attack;
857  self->monsterinfo.melee = NULL;
858  self->monsterinfo.sight = makron_sight;
859  self->monsterinfo.checkattack = Makron_CheckAttack;
860 
861  gi.linkentity (self);
862 
863 // self->monsterinfo.currentmove = &makron_move_stand;
864  self->monsterinfo.currentmove = &makron_move_sight;
865  self->monsterinfo.scale = MODEL_SCALE;
866 
867  walkmonster_start(self);
868 }

Referenced by jorg_dead(), and MakronSpawn().

◆ visible()

qboolean visible ( edict_t self,
edict_t other 
)

Definition at line 287 of file g_ai.c.

288 {
289  vec3_t spot1;
290  vec3_t spot2;
291  trace_t trace;
292 
293  VectorCopy (self->s.origin, spot1);
294  spot1[2] += self->viewheight;
295  VectorCopy (other->s.origin, spot2);
296  spot2[2] += other->viewheight;
297  trace = gi.trace (spot1, vec3_origin, vec3_origin, spot2, self, MASK_OPAQUE);
298 
299  if (trace.fraction == 1.0)
300  return true;
301  return false;
302 }

Referenced by jorg_reattack1().

Variable Documentation

◆ jorg_frames_attack1

mframe_t jorg_frames_attack1[]

◆ jorg_frames_attack2

mframe_t jorg_frames_attack2[]
Initial value:

Definition at line 343 of file m_boss31.c.

◆ jorg_frames_death1

mframe_t jorg_frames_death1[]

Definition at line 288 of file m_boss31.c.

◆ jorg_frames_end_attack1

mframe_t jorg_frames_end_attack1[]
Initial value:
=
{
}

Definition at line 385 of file m_boss31.c.

◆ jorg_frames_end_walk

mframe_t jorg_frames_end_walk[]
Initial value:
=
{
ai_walk, 11, NULL,
}

Definition at line 218 of file m_boss31.c.

◆ jorg_frames_pain1

mframe_t jorg_frames_pain1[]
Initial value:
=
{
}

Definition at line 280 of file m_boss31.c.

◆ jorg_frames_pain2

mframe_t jorg_frames_pain2[]
Initial value:
=
{
}

Definition at line 272 of file m_boss31.c.

◆ jorg_frames_pain3

mframe_t jorg_frames_pain3[]
Initial value:

Definition at line 242 of file m_boss31.c.

◆ jorg_frames_run

mframe_t jorg_frames_run[]
Initial value:

Definition at line 166 of file m_boss31.c.

◆ jorg_frames_stand

mframe_t jorg_frames_stand[]

Definition at line 83 of file m_boss31.c.

◆ jorg_frames_start_attack1

mframe_t jorg_frames_start_attack1[]
Initial value:

Definition at line 361 of file m_boss31.c.

◆ jorg_frames_start_walk

mframe_t jorg_frames_start_walk[]
Initial value:
=
{
}

Definition at line 189 of file m_boss31.c.

◆ jorg_frames_walk

mframe_t jorg_frames_walk[]
Initial value:
=
{
ai_walk, 17, NULL,
ai_walk, 12, NULL,
ai_walk, 10, NULL,
ai_walk, 33, NULL,
}

Definition at line 199 of file m_boss31.c.

◆ jorg_move_attack1

Definition at line 383 of file m_boss31.c.

Referenced by jorg_attack1(), and jorg_reattack1().

◆ jorg_move_attack2

Definition at line 359 of file m_boss31.c.

Referenced by jorg_attack().

◆ jorg_move_death

Definition at line 341 of file m_boss31.c.

Referenced by jorg_die().

◆ jorg_move_end_attack1

Definition at line 392 of file m_boss31.c.

Referenced by jorg_reattack1().

◆ jorg_move_end_walk

Definition at line 227 of file m_boss31.c.

◆ jorg_move_pain1

Definition at line 286 of file m_boss31.c.

Referenced by jorg_pain().

◆ jorg_move_pain2

Definition at line 278 of file m_boss31.c.

Referenced by jorg_pain().

◆ jorg_move_pain3

Definition at line 270 of file m_boss31.c.

Referenced by jorg_pain().

◆ jorg_move_run

Definition at line 183 of file m_boss31.c.

Referenced by jorg_run().

◆ jorg_move_stand

Definition at line 137 of file m_boss31.c.

Referenced by jorg_run(), jorg_stand(), and SP_monster_jorg().

◆ jorg_move_start_attack1

Definition at line 372 of file m_boss31.c.

Referenced by jorg_attack().

◆ jorg_move_start_walk

Definition at line 197 of file m_boss31.c.

◆ jorg_move_walk

Definition at line 216 of file m_boss31.c.

Referenced by jorg_walk().

◆ sound_attack1

int sound_attack1
static

Definition at line 42 of file m_boss31.c.

Referenced by jorg_attack(), and SP_monster_jorg().

◆ sound_attack2

int sound_attack2
static

Definition at line 43 of file m_boss31.c.

Referenced by jorg_attack(), jorgBFG(), and SP_monster_jorg().

◆ sound_death

int sound_death
static

Definition at line 38 of file m_boss31.c.

Referenced by jorg_die(), and SP_monster_jorg().

◆ sound_death_hit

int sound_death_hit
static

Definition at line 47 of file m_boss31.c.

Referenced by jorg_death_hit(), and SP_monster_jorg().

◆ sound_firegun

int sound_firegun
static

Definition at line 44 of file m_boss31.c.

Referenced by SP_monster_jorg().

◆ sound_idle

int sound_idle
static

Definition at line 37 of file m_boss31.c.

Referenced by jorg_idle(), and SP_monster_jorg().

◆ sound_pain1

int sound_pain1
static

Definition at line 34 of file m_boss31.c.

Referenced by jorg_pain(), and SP_monster_jorg().

◆ sound_pain2

int sound_pain2
static

Definition at line 35 of file m_boss31.c.

Referenced by jorg_pain(), and SP_monster_jorg().

◆ sound_pain3

int sound_pain3
static

Definition at line 36 of file m_boss31.c.

Referenced by jorg_pain(), and SP_monster_jorg().

◆ sound_search1

int sound_search1
static

Definition at line 39 of file m_boss31.c.

Referenced by jorg_search(), and SP_monster_jorg().

◆ sound_search2

int sound_search2
static

Definition at line 40 of file m_boss31.c.

Referenced by jorg_search(), and SP_monster_jorg().

◆ sound_search3

int sound_search3
static

Definition at line 41 of file m_boss31.c.

Referenced by jorg_search(), and SP_monster_jorg().

◆ sound_step_left

int sound_step_left
static

Definition at line 45 of file m_boss31.c.

Referenced by jorg_step_left(), and SP_monster_jorg().

◆ sound_step_right

int sound_step_right
static

Definition at line 46 of file m_boss31.c.

Referenced by jorg_step_right(), and SP_monster_jorg().

gi
game_import_t gi
Definition: g_main.c:25
FRAME_attak109
#define FRAME_attak109
Definition: m_boss31.h:32
makron_attack
void makron_attack(edict_t *self)
Definition: m_boss32.c:606
G_ProjectSource
void G_ProjectSource(vec3_t point, vec3_t distance, vec3_t forward, vec3_t right, vec3_t result)
Definition: g_utils.c:25
jorg_move_death
mmove_t jorg_move_death
Definition: m_boss31.c:341
edict_s::s
entity_state_t s
Definition: g_local.h:970
RANGE_NEAR
#define RANGE_NEAR
Definition: g_local.h:120
deathmatch
cvar_t * deathmatch
Definition: g_main.c:35
jorg_firebullet
void jorg_firebullet(edict_t *self)
Definition: m_boss31.c:533
CONTENTS_MONSTER
#define CONTENTS_MONSTER
Definition: qfiles.h:359
DEAD_DEAD
#define DEAD_DEAD
Definition: g_local.h:115
game_import_t::trace
trace_t(* trace)(vec3_t start, vec3_t mins, vec3_t maxs, vec3_t end, edict_t *passent, int contentmask)
Definition: game.h:128
G_Spawn
edict_t * G_Spawn(void)
Definition: g_utils.c:420
MZ2_JORG_BFG_1
#define MZ2_JORG_BFG_1
Definition: q_shared.h:816
trace_t::fraction
float fraction
Definition: q_shared.h:457
DEFAULT_BULLET_HSPREAD
#define DEFAULT_BULLET_HSPREAD
Definition: g_local.h:670
ThrowGib
void ThrowGib(edict_t *self, char *gibname, int damage, int type)
Definition: g_misc.c:135
VectorSubtract
#define VectorSubtract(a, b, c)
Definition: q_shared.h:163
edict_s::activator
edict_t * activator
Definition: g_local.h:1078
entity_state_s::frame
int frame
Definition: q_shared.h:1154
ai_charge
void ai_charge(edict_t *self, float dist)
Definition: g_ai.c:194
TE_EXPLOSION1
@ TE_EXPLOSION1
Definition: q_shared.h:916
game_import_t::WritePosition
void(* WritePosition)(vec3_t pos)
Definition: game.h:152
game_import_t::multicast
void(* multicast)(vec3_t origin, multicast_t to)
Definition: game.h:144
edict_s::count
int count
Definition: g_local.h:1073
SOLID_BBOX
@ SOLID_BBOX
Definition: game.h:37
jorg_attack
void jorg_attack(edict_t *self)
Definition: m_boss31.c:539
jorg_step_left
void jorg_step_left(edict_t *self)
Definition: m_boss31.c:150
MZ2_JORG_MACHINEGUN_R1
#define MZ2_JORG_MACHINEGUN_R1
Definition: q_shared.h:810
sound_step_left
static int sound_step_left
Definition: m_boss32.c:45
jorg_move_stand
mmove_t jorg_move_stand
Definition: m_boss31.c:137
monsterinfo_t::attack
void(* attack)(edict_t *self)
Definition: g_local.h:431
MakronSpawn
void MakronSpawn(edict_t *self)
Definition: m_boss32.c:877
FRAME_attak114
#define FRAME_attak114
Definition: m_boss31.h:37
sound_death_hit
static int sound_death_hit
Definition: m_boss31.c:47
jorg_move_attack2
mmove_t jorg_move_attack2
Definition: m_boss31.c:359
entity_state_s::origin
vec3_t origin
Definition: q_shared.h:1149
AI_STAND_GROUND
#define AI_STAND_GROUND
Definition: g_local.h:129
sound_pain2
static int sound_pain2
Definition: m_boss31.c:35
qboolean
qboolean
Definition: q_shared.h:63
trace_t
Definition: q_shared.h:453
MODEL_SCALE
#define MODEL_SCALE
Definition: m_actor.h:506
edict_s::max_health
int max_health
Definition: g_local.h:1058
sound_firegun
static int sound_firegun
Definition: m_boss31.c:44
game_import_t::sound
void(* sound)(edict_t *ent, int channel, int soundindex, float volume, float attenuation, float timeofs)
Definition: game.h:109
sound_pain3
static int sound_pain3
Definition: m_boss31.c:36
vectoyaw
float vectoyaw(vec3_t vec)
Definition: g_utils.c:333
CONTENTS_SOLID
#define CONTENTS_SOLID
Definition: qfiles.h:333
jorg_move_end_attack1
mmove_t jorg_move_end_attack1
Definition: m_boss31.c:392
jorg_move_attack1
mmove_t jorg_move_attack1
Definition: m_boss31.c:383
edict_s::mins
vec3_t mins
Definition: g_local.h:990
range
GLsizei range
Definition: qgl_win.c:121
visible
qboolean visible(edict_t *self, edict_t *other)
Definition: g_ai.c:287
sound_step_right
static int sound_step_right
Definition: m_boss32.c:46
jorg_pain
void jorg_pain(edict_t *self, edict_t *other, float kick, int damage)
Definition: m_boss31.c:416
sound_attack_bfg
static int sound_attack_bfg
Definition: m_boss32.c:47
sound_idle
static int sound_idle
Definition: m_boss31.c:37
ATTN_NORM
#define ATTN_NORM
Definition: q_shared.h:995
jorg_walk
void jorg_walk(edict_t *self)
Definition: m_boss31.c:229
sound_prerailgun
static int sound_prerailgun
Definition: m_boss32.c:49
walkmonster_start
void walkmonster_start(edict_t *self)
Definition: g_monster.c:692
MOVETYPE_STEP
@ MOVETYPE_STEP
Definition: g_local.h:196
infront
qboolean infront(edict_t *self, edict_t *other)
Definition: g_ai.c:312
sound_taunt3
static int sound_taunt3
Definition: m_boss32.c:53
sound_pain4
static int sound_pain4
Definition: m_boss32.c:41
sound_taunt1
static int sound_taunt1
Definition: m_boss32.c:51
FRAME_attak201
#define FRAME_attak201
Definition: m_boss31.h:42
FRAME_attak208
#define FRAME_attak208
Definition: m_boss31.h:49
AngleVectors
void AngleVectors(vec3_t angles, vec3_t forward, vec3_t right, vec3_t up)
Definition: q_shared.c:93
monster_flash_offset
vec3_t monster_flash_offset[]
Definition: m_flash.c:27
CHAN_VOICE
#define CHAN_VOICE
Definition: q_shared.h:985
DEFAULT_BULLET_VSPREAD
#define DEFAULT_BULLET_VSPREAD
Definition: g_local.h:671
jorg_move_pain3
mmove_t jorg_move_pain3
Definition: m_boss31.c:270
makron_die
void makron_die(edict_t *self, edict_t *inflictor, edict_t *attacker, int damage, vec3_t point)
Definition: m_boss32.c:673
edict_s
Definition: g_local.h:968
Jorg_CheckAttack
qboolean Jorg_CheckAttack(edict_t *self)
Definition: m_boss31.c:599
jorg_firebullet_left
void jorg_firebullet_left(edict_t *self)
Definition: m_boss31.c:517
G_FreeEdict
void G_FreeEdict(edict_t *e)
Definition: g_utils.c:452
GIB_METALLIC
#define GIB_METALLIC
Definition: g_local.h:126
jorg_move_walk
mmove_t jorg_move_walk
Definition: m_boss31.c:216
r
GLdouble GLdouble r
Definition: qgl_win.c:336
sound_search3
static int sound_search3
Definition: m_boss31.c:41
MakronPrecache
void MakronPrecache(void)
Definition: m_boss32.c:808
AS_SLIDING
#define AS_SLIDING
Definition: g_local.h:147
edict_s::viewheight
int viewheight
Definition: g_local.h:1067
game_import_t::soundindex
int(* soundindex)(char *name)
Definition: game.h:122
forward
static vec3_t forward
Definition: p_view.c:29
VectorLength
vec_t VectorLength(vec3_t v)
Definition: q_shared.c:762
AS_MISSILE
#define AS_MISSILE
Definition: g_local.h:149
game_import_t::modelindex
int(* modelindex)(char *name)
Definition: game.h:121
sound_pain6
static int sound_pain6
Definition: m_boss32.c:43
sound_attack1
static int sound_attack1
Definition: m_boss31.c:42
makron_stand
void makron_stand(edict_t *self)
Definition: m_boss32.c:138
edict_s::nextthink
float nextthink
Definition: g_local.h:1042
cvar_s::value
float value
Definition: q_shared.h:331
jorg_run
void jorg_run(edict_t *self)
Definition: m_boss31.c:234
edict_s::think
void(* think)(edict_t *self)
Definition: g_local.h:1044
ai_walk
void ai_walk(edict_t *self, float dist)
Definition: g_ai.c:163
random
#define random()
Definition: g_local.h:515
sound_step_right
static int sound_step_right
Definition: m_boss31.c:46
DAMAGE_NO
@ DAMAGE_NO
Definition: g_local.h:88
VectorNormalize
vec_t VectorNormalize(vec3_t v)
Definition: q_shared.c:681
NULL
#define NULL
Definition: q_shared.h:67
sound_attack2
static int sound_attack2
Definition: m_boss31.c:43
sound_pain5
static int sound_pain5
Definition: m_boss32.c:42
monsterinfo_t::aiflags
int aiflags
Definition: g_local.h:421
monster_fire_bullet
void monster_fire_bullet(edict_t *self, vec3_t start, vec3_t dir, int damage, int kick, int hspread, int vspread, int flashtype)
Definition: g_monster.c:31
enemy_infront
qboolean enemy_infront
Definition: g_ai.c:30
skill
cvar_t * skill
Definition: g_main.c:38
makron_walk
void makron_walk(edict_t *self)
Definition: m_boss32.c:204
MASK_OPAQUE
#define MASK_OPAQUE
Definition: q_shared.h:400
edict_s::velocity
vec3_t velocity
Definition: g_local.h:1030
sound_brainsplorch
static int sound_brainsplorch
Definition: m_boss32.c:48
ai_move
void ai_move(edict_t *self, float dist)
Definition: g_ai.c:92
jorg_move_run
mmove_t jorg_move_run
Definition: m_boss31.c:183
monster_fire_bfg
void monster_fire_bfg(edict_t *self, vec3_t start, vec3_t aimdir, int damage, int speed, int kick, float damage_radius, int flashtype)
Definition: g_monster.c:91
jorgBFG
void jorgBFG(edict_t *self)
Definition: m_boss31.c:475
CONTENTS_SLIME
#define CONTENTS_SLIME
Definition: qfiles.h:337
jorg_step_right
void jorg_step_right(edict_t *self)
Definition: m_boss31.c:155
svc_temp_entity
@ svc_temp_entity
Definition: qcommon.h:227
BossExplode
void BossExplode(edict_t *self)
Definition: m_supertank.c:594
Makron_CheckAttack
qboolean Makron_CheckAttack(edict_t *self)
Definition: m_boss32.c:711
FRAME_attak108
#define FRAME_attak108
Definition: m_boss31.h:31
VectorCopy
#define VectorCopy(a, b)
Definition: q_shared.h:165
edict_s::pain_debounce_time
float pain_debounce_time
Definition: g_local.h:1052
MakronPrecache
void MakronPrecache(void)
Definition: m_boss32.c:808
sound_death
static int sound_death
Definition: m_boss31.c:38
sound_popup
static int sound_popup
Definition: m_boss32.c:50
edict_s::monsterinfo
monsterinfo_t monsterinfo
Definition: g_local.h:1114
vec3_origin
vec3_t vec3_origin
Definition: q_shared.c:24
RANGE_MELEE
#define RANGE_MELEE
Definition: g_local.h:119
jorg_search
void jorg_search(edict_t *self)
Definition: m_boss31.c:53
game_import_t::WriteByte
void(* WriteByte)(int c)
Definition: game.h:147
level
GLint level
Definition: qgl_win.c:116
ai_run
void ai_run(edict_t *self, float dist)
Definition: g_ai.c:914
jorg_stand
void jorg_stand(edict_t *self)
Definition: m_boss31.c:161
edict_s::flags
int flags
Definition: g_local.h:1002
enemy_range
int enemy_range
Definition: g_ai.c:31
GIB_ORGANIC
#define GIB_ORGANIC
Definition: g_local.h:125
sound_search1
static int sound_search1
Definition: m_boss31.c:39
VectorMA
void VectorMA(vec3_t veca, float scale, vec3_t vecb, vec3_t vecc)
Definition: q_shared.c:719
CONTENTS_LAVA
#define CONTENTS_LAVA
Definition: qfiles.h:336
edict_s::maxs
vec3_t maxs
Definition: g_local.h:990
sound_pain1
static int sound_pain1
Definition: m_boss31.c:34
RANGE_MID
#define RANGE_MID
Definition: g_local.h:121
trace_t::ent
struct edict_s * ent
Definition: q_shared.h:462
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:183
jorg_move_pain1
mmove_t jorg_move_pain1
Definition: m_boss31.c:286
jorg_firebullet_right
void jorg_firebullet_right(edict_t *self)
Definition: m_boss31.c:501
monsterinfo_t::attack_finished
float attack_finished
Definition: g_local.h:437
MOVETYPE_TOSS
@ MOVETYPE_TOSS
Definition: g_local.h:198
VectorSet
#define VectorSet(v, x, y, z)
Definition: q_shared.h:168
sound_taunt2
static int sound_taunt2
Definition: m_boss32.c:52
sound_step_left
static int sound_step_left
Definition: m_boss31.c:45
right
GLdouble right
Definition: qgl_win.c:159
makron_sight
void makron_sight(edict_t *self, edict_t *other)
Definition: m_boss32.c:601
MZ2_JORG_MACHINEGUN_L1
#define MZ2_JORG_MACHINEGUN_L1
Definition: q_shared.h:804
edict_s::killtarget
char * killtarget
Definition: g_local.h:1019
sound_search2
static int sound_search2
Definition: m_boss31.c:40
monsterinfo_t::melee
void(* melee)(edict_t *self)
Definition: g_local.h:432
CHAN_BODY
#define CHAN_BODY
Definition: q_shared.h:987
jorg_move_start_attack1
mmove_t jorg_move_start_attack1
Definition: m_boss31.c:372
edict_s::enemy
edict_t * enemy
Definition: g_local.h:1076
game_import_t::linkentity
void(* linkentity)(edict_t *ent)
Definition: game.h:138
entity_state_s::angles
vec3_t angles
Definition: q_shared.h:1150
sound_hit
static int sound_hit
Definition: m_boss32.c:54
AS_MELEE
#define AS_MELEE
Definition: g_local.h:148
RANGE_FAR
#define RANGE_FAR
Definition: g_local.h:122
MULTICAST_PVS
@ MULTICAST_PVS
Definition: q_shared.h:118
enemy_yaw
float enemy_yaw
Definition: g_ai.c:32
vec3_t
vec_t vec3_t[3]
Definition: q_shared.h:134
makron_pain
void makron_pain(edict_t *self, edict_t *other, float kick, int damage)
Definition: m_boss32.c:555
sound_death
static int sound_death
Definition: m_boss32.c:44
SP_monster_makron
void SP_monster_makron(edict_t *self)
Definition: m_boss32.c:830
edict_s::target
char * target
Definition: g_local.h:1017
jorg_move_pain2
mmove_t jorg_move_pain2
Definition: m_boss31.c:278
FRAME_attak101
#define FRAME_attak101
Definition: m_boss31.h:24
makron_move_sight
mmove_t makron_move_sight
Definition: m_boss32.c:408
makron_run
void makron_run(edict_t *self)
Definition: m_boss32.c:209
AS_STRAIGHT
#define AS_STRAIGHT
Definition: g_local.h:146
edict_s::health
int health
Definition: g_local.h:1057
jorg_die
void jorg_die(edict_t *self, edict_t *inflictor, edict_t *attacker, int damage, vec3_t point)
Definition: m_boss31.c:589