3 self.ideal_yaw = vectoyaw(self.enemy.origin - self.origin);
\r
4 self.ideal_yaw = anglemod(self.ideal_yaw);
\r
8 void(float normal) SUB_AttackFinished =
\r
10 self.cnt = TF_FLARE_LIT;
\r
13 self.attack_finished = time + normal;
\r
17 float(entity targ) range =
\r
22 spot1 = self.origin + self.view_ofs;
\r
23 spot2 = targ.origin + targ.view_ofs;
\r
24 r = vlen(spot1 - spot2);
\r
27 return TF_FLARE_LIT;
\r
31 return TF_FLARE_OFF;
\r
40 float(entity targ) infront =
\r
44 makevectors(self.angles);
\r
45 vec = normalize(targ.origin - self.origin);
\r
46 dot = vec * v_forward;
\r
49 return TF_FLARE_OFF;
\r
51 return TF_FLARE_LIT;
\r
54 void() t_movetarget =
\r
57 if (other.movetarget != self)
\r
68 if (self.classname == "monster_ogre")
\r
70 sound(self, 2, "ogre/ogdrag.wav", TF_FLARE_OFF, 2);
\r
72 self.goalentity = self.movetarget = find(world, targetname, other.target);
\r
73 self.ideal_yaw = vectoyaw(self.goalentity.origin - self.origin);
\r
74 if (!(self.movetarget))
\r
76 self.pausetime = time + 999999;
\r
82 void() movetarget_f =
\r
84 if (!(self.targetname))
\r
86 objerror("monster_movetarget: no targetname");
\r
88 self.solid = TF_FLARE_OFF;
\r
89 self.touch = t_movetarget;
\r
90 setsize(self, '-8 -8 -8', '8 8 8');
\r
93 void() path_corner =
\r
95 if (CheckExistence() == TF_FLARE_LIT)
\r